首页 > 代码库 > mysqk优化概述

mysqk优化概述

 

一般有以下重要的几点

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.硬件资源和操作系统恰当

 

这四个顺序也表现了对性能影响的大小

mysqk优化概述