MYSQL性能优化(1)
优化步骤
1.show status 查询服务器状态运行信息
根据增删改查统计信息可以知道数据库是查询为主还是更新为主,各类型业务大致比例(更新操作 执行与回滚都会计数)
对于事务,可以通过Com_commit 和Com_rollback 来看到情况,回滚频繁,说明 逻辑可能有问题
Connections 试图连接数据库次数
Uptime 工作时间
Slow_queries 慢查询次数
2.定位效率较低的SQL语句
2.1 慢查询日志定位 ,--log-slow-queries[=file_name]启动的时候,mysqld 写 查询时间超过阈值的 SQL语句日志
2.2 运行时,使用 show processlist 查看 线程,状态,锁等情况,能够实时发现瓶颈,对锁表操作优化
3 分析低效SQL的执行计划:
explain或者desc 可以获取 Mysql如何执行 SELECT语句的信息,包括 执行过程 表的连接 与 连接次序,索引使用情况等
4. 添加索引,优化
////////////////////////////
索引问题
1.数据文件 和 索引文件 分开存储 提高IO性能Myisam
2.对于varchar与char,使用前缀索引(不需要使用整个字段)提高性能
3.存在一些情况,mysql不会使用索引来查询
4. show status like 'Handle_read%'
handler_read_key 值表明一个行被索引读的次数,说明索引使用的情况
handle_read_rnd_next 高,表明 查询运行低效
////////////////////////////
定期分析表
analyze table ,check table ,check view,checksum table
优化表
optimize table 整理碎片问题
导入数据到有数据表中 关闭一些东西,可以提高效率(Myisam)
ALTER TABLE name DISABLE KEYS;
导入
ALTER TABLE name ENABLE KEYS;
导入数据到有数据表中 关闭一些东西,可以提高效率(Innodb)
set unique_check =0,set autocommit=0;
将数据按照主键排列,导入
set unique_check =1,set autocommit=1;