查看MySql慢查询日志是否开启
show variables like '%slow%';
查看 slow_query_log 选项
开启 慢查询 命令
set global slow_query_log = on;
查看慢查询写日志的阈值
show variables like '%long_query_time%';
设置慢查询写日志的阈值 1秒,配置文件也可以修改
配置文件设置:long_query_time=1
命令设置:set global long_query_time = 1;
慢查询日志 在 C:\ProgramData\MySQL\MySQL Server 5.7\Data 文件夹下
explain SELECT COUNT(1) FROM cards;
type
All 有优化控件,全盘扫描
eq_ref 用到了主键索引
force index
带头大哥不能死,中间兄弟不能乱,范围之后全完蛋
开启索引前缀下推(默认开启)
show variables like 'optimizer_switch';
表记录少不加索引
一个表索引数量不宜过多
频繁更新字段不加索引
区分度低的字段不建议加索引
主键使用整形或长整型
尽量使用组合索引,而不是单列索引
开启索引条件下推
深翻页会导致性能下降
select * from aa limt 10000000, 100 性能缓慢
优化 select * from aa where id > 12454566 limt 0, 100(id 是有序的,所以可以把上次查询的id最大值 当作查询条件,再查一百条数据会快很多)
小表驱动大表,关联的时候小数据集放前面
避免全盘扫描
关联字段都建索引
where 条件减少使用不等于,not in
缓冲池大小,物理内存的 50% - 80%
刷盘策略最好不要动,1 包子数据百分比不丢失
bin log 测率可以改大一点
脏页过多触发刷盘百分比
innodb_max_dirty_pages_pct=30
后台进程最大IO性能指标
机械硬盘推荐 200
innodb_io_capacity=200
SSD 推荐5000 到 20000
网友评论