关闭

MySQL优化

标签: mysql
76人阅读 评论(0) 收藏 举报
分类:

MySQL优化

优化方面:

1、SQL及索引
1)查看mysql是否开启慢查询日志
show variables like 'slow_query_log';
2)设置没有索引的记录到慢查询日志
set global log_queries_not_using_indexes=on;
3)查看超过多长时间的sql进行记录到慢查询日志
show variables like 'long_query_time'
4)开启慢查询日志
set global slow_query_log=on

慢查询日志分析工具:
1、mysqldumpslow mysql 自带工具
2、pt-query-digest

分析有问题的SQL

1、查询次数多且每次查询占用时间长

2、IO大的SQL

3、未命中索引的SQL(每次查询的行数多,命中的函数少)

如何优化

使用explain查询SQL的执行计划

Count()和Max()的优化方法:Max()建立索引,Count(*)与Count(某一列)值会不一样

将子查询优化位join时要注意是否存在一对多的关系(若存在,则会出现重复的可能,可用distinct去重)

group by优化:避免使用临时表查询

limit查询:order by主要为IO问题,主要使用主键或者索引列来进行order by操作


索引的建立:

1、在where从句,group by从句,on从句中出现的列

2、索引字段越小越好

3、离散度大的列放到联合索引的前面

索引维护及优化工具:pt-duplicate-key-checker工具

表结构优化:
如何选择合适的数据类型
最小的数据类型
使用简单数据类型,int比varchar类型在mysql处理上简单
尽可能使用not null 定义字段,设置默认值
尽量少用text类型
表的范式优化:符合第三范式
表的反范式优化
表的垂直拆分(多个字段拆分在不同的表中)
表的水平拆分(表中的行数过多)

配置向导:http://tools.percona.com/wizard


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13295次
    • 积分:732
    • 等级:
    • 排名:千里之外
    • 原创:56篇
    • 转载:26篇
    • 译文:3篇
    • 评论:0条
    文章分类