mysql 性能优化
一。查询一些常用的性能参数
show STATUS like 'Show_queries';
CONNECTIONs:连接mysql服务器的次数;
Uptime:MYSQL服务器的上线时间;
Show_queries:慢查询的次数;
Com_select:查询操作的次数;
Com_insert:查询插入的次数;
Com_update:查询更新的次数;
Com_delete:查询删除的次数;
二。优化查询
1.分析查询语句 EXPLAIN 和 DESCRIBE
(1) EXPLAIN
语法:EXPLAIN + sql语句 (例如:explain SELECT * from aaa)
参数说明:请参考 https://www.cnblogs.com/anxbb/p/8809075.html
(2) DESCRIBE
语法:DESCRIBE + sql语句 (与EXPLAIN用法类似)
2. 索引优化查询速度
(1) like 语句只有****% 可以使用索引 %*****%这样的事无法使用索引的
(2) 使用组合索引的时候(一个索引可以包含16个字段),只有使用了定义组合索引的第一列 才能使用索引查询
(3) 使用 or查询的时候,只有 or的前后条件的列都事索引的时候,才能使用索引查询
3.优化子查询
(1)对于查询逻辑不强,且数据不是很大的时候可以用子查询,优化查询(新建内存表)
(2)但是逻辑很强或者数据很大的时候,采用 join加索引的方式比较好(避免内存表太大,影响查询速度)
二。优化数据库结构
1.将字段很多的表,不是频繁查询的字段拆标,放在一个新表之中
2.增加中间表,将经常联合查询的语句 新建一张表,等下次在查询 直接查询中间表就可以。
3.增加冗余字段,避免过多的联合查询
4.优化插入记录的速度
(1)使用批量插入
(2)数据量特别大的时候,建议使用 LOAD date INFILE
(3)数据量大时候,可以先禁用索引,插入成功之后在开启 语法: ALTER Table 表明 DISABLE KEYS; 开启: ALTER Table 表明 ENABLE KEYS;
5.分析表 ANALYZE TABLE aaa
6.检查表 CHECK TABLE aaa
7.优化表 table中存在varchar,blob或者Text OPTIMIZE TABLE aaa (表示可以消除删除和更新造成的碎片) (OPTIMIZE TABLE LOCAL 或者 NO_WRITE_TO_BINLOG aaa 表示不写入二进制日志)