1.1配置文件的优化
参数设置贵在合适,而不是越高越好,看你的服务器性能结合压力测试来选择
设置缓存表大小
物理内存越大,设置就越大,默认为2402,调到512-1024最佳
该设置可以为连接用户提高查询速度
设置cpu数量
innodb_thread_concurrency = 8
你的服务器CPU有几个就设置为几,建议用默认一般为8
调整读缓冲区大小
如果对表的顺序扫描请求非常频繁,并且扫描还太慢,可以通过增加这个属性提高性能
设置单个查询能使用的缓存大小
如果查询结果却是量级较大,可以考虑调高这个属性
调整索引和行数据缓冲innodb
innodb_buffer_pool_size = 105M
innodb使用缓冲池来缓存索引和行数据,该值设置的越大,则磁盘IO越少,一般将该值设为物理内存的80%
设置查询缓存大小
这个属性用于缓存SELECT查询结果
如果有许多返回相同查询结果的SELECT查询,并且很少改变表
可以设置该属性大于0,可以极大改善查询效率
1.2 SQL语句的优化
SQL语句主要优化查询,而查询主要目的是要快,那么就得减少IO次数,多多利用索引
1.3表结构的优化
- 给字段选取最合适的数据类型
- 数据类型的宽度尽可能的小
- 允许部分数据冗余,可以节省连表查询的次数
- 字段要尽可能的设置为not null,特别是使用了索引的字段
1.4 索引的优化
全职匹配心上人(这是基本原则)、最左前缀要遵行(联合索引一般都围绕最左前缀优化)
带头大哥活才行(联合索引从最左边字段开始使用)、中间兄弟规矩行(不能跳过中间地段,跳过后索引无效)
索引列上少计算(索引列上尽量不要进行计算)、范围之后全完蛋(where后面使用范围查询的之后的索引无效)
like百分最右写(%号写最右边,写左边会导致索引失效)、覆盖索引别写星(尽量避免**select * 这样的语句,能写索引列最好)
空值不等还有or,索引失效最无情(is null、is not null、!=、<>、or会导致索引无效)