MySQL性能调优
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL性能调优相关的知识,希望对你有一定的参考价值。
1 mysql工作原理
1.1 mysql体系结构:
连接池
sql接口
分析器
优化器
查询缓存
存储引擎
文件系统
管理工具
1.2 永久定义:
修改配置文件/etc/my.cnf
[mysql]
变量名=值
1.3 临时定义:
mysql>set (global) 变量=
2 性能调优
2.1 访问数据时,出结果特别慢。分析可能是由哪些原因导致的?
(1)硬件配置低:查看应用设备的使用率CPU 内存 存储(硬盘)
利用top,sar,uptime,free等;
(2)网络带宽: 使用网络测速软件 网速;
(3)提供数据库服务软件版本低:
2.2 并发及连接控制
mysql> show variables like “max_connections”; #允许的最大并发连接数
mysql> show variables like "connect_timeout"; #建立连接时,三次握手的超时时间
mysql> show variables like "wait_timeout"; #建立连接后,等待断开连接的超时时间
查看当前已使用的连接数:
mysql>show global status like “max_used_connections”;
查看默认的最大连接数:
mysql> show variables like "max_connections";
理想比率:已使用的连接数/连接并发量<=85%
2.3 缓存参数控制
key_buffer_size #用于myisam引擎的关键索引缓存大小
sort_buffer_size #为每个要排序的线程分配此大小的缓存空间
read_buffer_size #为顺序读取表记录保留的缓存大小
read_rnd_buffer_size #为排序结果读取表记录保留的缓存大小
允许重复使用的线程的数量
mysql> show variables like "thread_cache_size";
为所有线程缓存打开表的数量。
table_open_cache=2000
mysql> show variables like "table_open_cache";
查询缓存相关参数设置?
MySQL> show variables like "query_cache%";
查询缓存写锁有效 存储引擎(MYISAM)
query_cache_wlock_invalidate | OFF
query_cache_type 0|1|2
0 关闭 不存储
1 开启 无条件存储
2 开启 指定存储才存储
查询缓存统计信息?
MySQL> show global status like "qcache%";
Qcache_hits 0 #查询缓存成功的次数(就是在缓存中找到查询的结果)
Qcache_inserts 0 #总的
Qcache_lowmem_prunes 0 #每次缓存达到一定数值,重新清空的次数,清空的次数越大代表缓存的使用不合理(总是被用完)
2.4 Mysql日志类型
(1)错误日志:记录数据库服务在启动和运行过程中产生的信息,默认启用
/etc/my.cnf中的log-error=/var/log/mysqld.log
(2)binlog日志:默认没有启用。
(3)查询日志:记录所有执行过的SQL命令,默认没有启用
vim /etc/my.cnf
[mysqld]
general-log #默认存储位置 /var/lib/mysql
默认名称:主机名.log
(4)慢查询日志:记录超过指定时间显示查询结果的SQL命令。默认超时时间10s。
slow-query-log #启用慢查询日志
slow-query-log-file=文件名 #指定日志名称
long-query-time=数字 #指定超时时间
默认存储位置 /var/lib/mysql
默认名称:主机名-slow.log
[[email protected] ~]# mysqldumpslow /var/lib/mysql/主机名-slow.log >sql.txt
#查看慢查询日志,并把查询超时的查询语句保存下来
log-queries-not-using-indexes #记录未使用索引的查询
以上是关于MySQL性能调优的主要内容,如果未能解决你的问题,请参考以下文章