MySQL性能优化
#MySQL8.0的速度要比MySQL5.7快2倍:1.读/写工作负载
2.IO密集型工作负载
3.高竞争工作负载
#MySQL进程和线程模式:
一个主进程->一个子进程->多线程
1.查看进程
pstree -aT|grep mysqld
2.查看进程和线程
pstree -at|grep mysqld
#如何查看mysql的配置参数和状态值:
1.show variables; (以小写字母开头)
2.show status; (以大写字母开头)
#MySQL连接优化:
1.连接参数
show variables like '%connect%';
{
1)max_connections
最大并发连接数。
2)max_connect_errors
当某台非法主机恶意连接MySQL服务端,遭到的错误达到设置值后,MySQL会结束来自该主机的所有连接。
}
2.连接状态
show status like '%connections%';
{
1)Connection_errors_max_connections
当MySQL的最大并发数大于max_connections最大值时被拒绝的次数,如果Connection_error_max_connections值比较大,则说明当前系统并发比较高,要考虑调大max_connections的值。
2)Connections
表示MySQL从启动至今,成功建立连接的连接数,这个值是不断累加的。
3)Max_used_connections
历史最高并发连接数,如果这个值大于max_connections则表明系统经常处于高并发的状态,应该考虑调大最大并发连接数。
}
3.线程参数
show variables like 'thread%';
{
1)thread_cache_size
设置连接线程缓存的数目。这个缓存相当于MySQL线程的缓存池,将空闲的连接线程放入连接池中缓存起来,而非立即销毁。当有新的连接请求时,如果连接池中有空闲的连接,则直接使用。
2)thread_handling
one-thread-per-connection表示为每个连接提供或者创建一个线程来处理请求,直至请求完毕,连接销毁或者存入缓存池。
}
4.查看线程状态信息
show status like 'Thread%';
{
1)Thread_cached
当前线程池的线程数。
2)Thread_connected
当前的连接数。
3)Thread_created
当前连接线程创建数, 如果这个值过高,可以调整threadcachesize 也就是调整线程缓存池的大小。
4)Threads_running
当前活跃的线程数。
}
5.连接异常
show status like 'Aborted%';
{
1)Aborted_clients
MySQL客户机被异常关闭的次数。
2)Aborted_connects
试图连接到MySQL服务器而失败的连接次数。
}
6.数据库连接闲置最大时间:wait-timeout
show variables like '%wait_timeout%';
wait_timeout默认为8小时。
7.slow慢查询日志
{
1)查看慢查询日志
show variables like '%slow_query_log%';
a.slow_query_log
就否开启,on为开启,off为关闭。
b.slow_query_log_file
慢查询日志文件路径。
2)慢查询时间设置
show variables like 'long_query_time%';
long_query_time的值为慢查询时间。
3)查看慢查询的次数
show status like '%Slow_queries%';
4)测试慢查询效果
select sleep(3);
}
页:
[1]