一般有以下重要的几点
1.数据库设计
一般需要满足三范式
合适的存储引擎
优化数据字段类型
2.sql语句优化
定位执行效率较低的sql语句(重点是select)
Show variables like ‘long_query_time‘; set long_query_time=2 修改为2秒
通过explain分析
explain select *from emp where ename = ‘张三‘;
确定问题并采取优化措施
建立索引
1.频繁作为查询条件的字段应该创建索引 (唯一性太差和更新频繁的不适合)
2.不会出现在where子句中的字段不该创建索引
可能会用到索引
1.多列索引, 只要查询条件用到了最左边的列, 索引一般会被使用
2.对于like查询, ‘%aaa‘不会使用索引, ‘aaa%‘会使用索引
不会使用到索引
1.条件中有or, 即使有条件带索引也不会使用
2.多列索引, 如果不使用第一部分, 则都不会使用
3.like查询以 %开头
4.字符串不加引号
5.如果mysql估计全表扫描比使用索引快, 则不会用.
分表技术
当一张表越来越大, 即使添加索引还慢的话, 可以考虑分表技术
水平切分, 将记录散列到不同的表中, 每次从分表中查询, 提高效率
垂直切分, 将表中大字段单独拆分到另外一张表, 形成一对一的关系
3.数据库参数配置
innodb_additional_mem_pool_size 内存池 大小, 默认为8M,数据库中的表数量越多,参数值应该越大,如果 InnoDB 用完了内存池中的内存,就会从操作系统中分配内存,同时在 error log 中打入报警信息
innodb-buffer-pool-size 缓冲池大小
对于myisam, 需要调整 keu_buffer_size
4.硬件资源和操作系统恰当
这四个顺序也表现了对性能影响的大小
时间: 2024-10-13 00:07:05