天天看点

mysql性能调优 会话数_MySQL性能调优

MySQL性能调优

提高MySQL系统的性能、影响速度

-替换硬件(CPU/磁盘/内存等)

-服务程序的运行参数调整

-对SQL查询进行优化

并发及连接控制

-连接数、连接超时

max_connections //允许的最大并发连接数

connect_timeout //等待建立连接的超时秒数,默认10秒,只在登录时有效

wait_timeout //等待关闭连接的不活动超时秒数,默认28800秒(8小时)

-产看当前已使用的连接数

mysql>flush status;

mysql>show globale status like "max_used_connections";

-查看默认的最大连接数

mysql>show variables like "max_connections";

-缓存参数控制

缓存区、线程数量、开表数量

key_buffer_size //用于MyISAM引擎的关键索引缓存大小

sort_buffer_size //为每个要排序的线程分配此大小的缓存空间

read_buffer_size //为顺序读取表记录保留的缓存大小

read_rnd_buffer_size //为按排序结果读取表记录保留的缓存大小

thread_cache_size //允许保存在缓存中被重用的线程数量

table_open_cache //为所有线程缓存的打开的表的数量

key_buffer_size=8M

当key_reads/key_read_requests较低时可适当加大此缓存值

mysql>show global status like "key_read%";

mysql>show variables like "key_buffer_size";

sort_buffer_size=256K

增大此值可提高ORDER和GROUP的速度

mysql>show variables like "sort_buffer_size";

查看表记录读取缓存

-此缓存值影响SQL查询的响应速度

mysql>show variables like "read_%_size";

查看可重用线程

mysql>show variables like "thread_%_size";

查看当前的线程重用状态

mysql>show global status like "threads_%";

查看已打开、打开过多少个表

mysql>show global status like "open%tables";

查看可缓存多少个打开的表

mysql>show variables like "table_open_cache";

SQL查询优化

MySQL日志类型,常用日志种类及选项:

错误日志 log_error[=name] //记录启用/运行/停止过程的错误消息

查询日志 general_log,general_log_file= //记录客户端连接和查询操作

慢查询日志 slow_query_log,slow_query_log_file=,long_query_time= //记录耗时较长或不使用索引的查询操作

记录慢查询:

slow-query-log //启用慢查询

slow-query-log-file //指定慢查询日志文件

long-query-time //超过指定秒数(默认10秒)的查询才被记录

log-queries-not-using-indexes //记录未使用索引的查询

调整服务配置:

vim /etc/my.cnf

[mysqld]

...

slow_query_log=1

slow_query_log_file=mysql-slow.log

long_query_time=5

log_queries_not_using_indexes=1

systemctl restart mysqld

查看慢查询日志,使用mysqldumpslow工具

mysqldumpslow /var/lib/mysql/mysql-slow.log

查看缓存的大小

mysql>show variables like "query_cache%";

查看当前的查询缓存统计

mysql>show global status like "qcache%";