mysql性能优化
2017-08-25 18:39
197 查看
如何查询和开启慢查询
查看是否开启了慢查询日志show variables like ‘%query%’;
slow_query_log = off : 没开启
slow_query_log_file //log文件位置
long_query_time //记录执行超过多长时间的sql
linux环境:
在/etc/my.conf 文件的 [mysqld] 选项下设置 slow_query_log = true,其余两项根据个人需求设置windows环境:
找到my.ini 在[mysqld]下配置同上优化原则
mysql查询每次只能使用一个索引索引不会包含有 null 值的列,设置字段是尽量不要用null,可以默认0
一般情况下不鼓励使用 like 操作。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引
不要在列上进行运算
少使用not in
尽量用join 连接查询代替子查询
(子查询就是查询结果被当作外层条件的这样一个语句。)
什么情况下使用索引
表的字段需要唯一约束直接条件查询的字段(where 后)
查询中与其它表关联的字段 (a join b on a.uname = b.name )
查询中排序的字段 ( order by )
查询中统计或分组统计的字段 ( group by )
什么情况下应不建或少建索引
表记录太少经常插入、删除、修改的表
数据重复且分布平均的表字段
如果where条件中是OR关系,加索引不起作用。如果是and,则无论and左或右有索引都会用到索引,如果两边都有索引,则用到的是左边的(左右两边为联合索引除外)
联合索引符合最左原则,如 索引 a,b,c 则查询a / a,b/a,b,c都会用到索引,但是查询b,c 不会用到该索引
优化服务器硬件
配置大的内存配置高速磁盘
合理分配磁盘IO,把磁盘IO分散到多个设备上
配置多核处理器
优化mysql参数
(根据硬件,业务场景来设置参数,一般设置大点好)key_buffer_size :索引缓冲区大小
table_cache :同时打开表的个数
sort_buffer_size :排序缓冲区大小,大小影响排序分组速度
read_buffer_size:为扫描的每个表分配的缓冲区大小(字节)
read_md_buffer_size
innodb_buffer_pool_size:表示innoodb类型的表和索引的最大缓存
query_cache_size:查询缓冲区大小 与query_cache_type配合使用
部分内容参考文章: http://www.cnblogs.com/softidea/p/5977860.html
相关文章推荐
- MYSQL性能优化之Mysql服务器参数
- MySQL学习笔记 8 -性能优化
- MySQL性能优化的21个最佳实践(转)
- MySQL性能优化
- 二十条MySQL性能优化的经验
- Mysql 性能优化教程
- MySQL 数据库性能优化之表结构
- 干货之mysql性能优化建议
- MySQL性能优化的21条经验
- MySQL性能优化的最佳21条经验
- mysql性能优化
- Mysql 性能优化
- php导入大量数据到mysql性能优化技巧
- MySql 通过show status 优化数据库性能
- (总结)15个有用的MySQL/MariaDB性能调整和优化技巧
- MySQL性能优化的最佳21条经验
- MySQL 性能优化——「Explain 分析实践」
- mysql 性能优化方案
- mysql 性能优化方案
- mysql查询时,offset过大影响性能的原因与优化方法