MySQl索引

索引:索引相当于书签,为了帮助MySQl高效的查询数据的数据结构,使用的B+树。 使用索引可以降低I/O使用率,降低cpu的使用率,提高查询效率 但并不是所有的场景都适合索引,如过数据很少,或者字段经常修改,以及字段不经常使用都没必要使用索引,因为索引也是会占用资源的。并且它会降低增删改的效率,因为


性能优化-数据库缓存

什么是数据库缓存 MySQL等一些常见的关系型数据库的数据都存储在磁盘当中,在高并发场景下,业务应用对MySQL产生的增、删、改、查的操作造成巨大的I/O开销和查询压力,这无疑对数据库和服务器都是一种巨大的压力,为了解决此类问题,缓存数据的概念应运而生。 极大地解决数据库服务器压力 提高应用数据的响


mysql性能问题-explain

mysql性能问题-explain 可以通过分析sql执行计划:explain sql解析过程 from --- on join---where---group by--- having---select dinstinct---roder by limit--- 首先创建一个表: create t


musql分析海量数据

show profiles show profiles:默认关闭 show variables like '%profiling%' set profiling = on show profiles会记录所有所有sql查询语句所花的时间 缺点:只能看到全部的总时间 show profile all


MySQk主从复制

实现主从复制: master(主数据库)将改变的数据记录在本地的二进制日志中,该过程称之为二进制事件。 slave(从数据库)将master的二进制日志拷贝到自己的中继日志中。 将数据读取到自己的数据库中,中继日志事件。 MySQl主从复制是异步的,串行化的,有延迟 配置前 关闭防火墙,授权 1.


sql慢日志查询

MySQl提供了一种日志记录,终于记录响应时间超过阈值的sql语句(long_query_time,默认10s),默认关闭,开发时打开,部署时关闭 检查是否开启慢查询日志:show variables like '%slow_query_log%' 临时开启:set gloabl slow_quer


避免索引失效的一些原则

mysql内部:连接层(提供与客户的服务)-》服务层(1提供各种接口,2sql优化器)-》引擎层(提供各种存储数据的方式)-》存储层(存储数据) 服务层中有sql优化器可能会影响优化 复合索引 跨列使用 如果有>,则自身和右侧全部失效() 尽量使用覆盖索引 like尽量以常量开头,不要意思'%'开头


性能优化-Web服务器的负载均衡

七层负载均衡实现 基于URL等应用层信息的负载均衡 Nginx的proxy是他的一个很强大的功能,实现开了七层负载均衡 功能强大,心更卓越,运行稳定 配置灵活 能够自动剔除工作不正常的后端服务器 上传文件使用异步模式 支持多种分配策略,可以分配权重,分配方式灵活 Nginx负载均衡 内置策略 IP


性能优化-数据库层优化

数据表数据类型的优化 tinyint,smallint,bigint按需选择数据类型 使用整形存储IP地址 索引优化 建立合适的索引 索引并不是越多越好,在合适的自段上创建合适的索引 复合索引的前缀原则 like查询%的问题 全表扫描优化 or条件索引适用情况 字符串类型索引失效问题 SQl语句的优


mysql多表优化

小表驱动大表 小表驱动大表:程序原则,内层循环越大,外层循环越小,性能越好,所以 当编写。。。on t.cid = c.cid 时,将数据量小的表放左边 索引加到那张表 索引建立在经常使用的字段上 一般来说对于左外连接时,给左表加索引,右链接给右表加索引