mysql调优笔记怎么调 mysql怎么优化( 四 )


mysql调优技巧 增加线程缓存大小增加线程缓存大小
连接管理器线程处理服务器监听的网络接口上的客户端连接请求 。连接管理器线程将每个客户端连接与专用于它的线程关联,该线程负责处理该连接的身份验证和所有请求处理 。因此,线程和当前连接的客户端之间是一对一的比例 。确保线程缓存足够大以容纳所有传入请求是非常重要的 。
MySQL提供了许多与连接线程相关的服务器变量:
线程缓存大小由thread_cache_size系统变量决定 。默认值为0(无缓存),这将导致为每个新连接设置一个线程,并在连接终止时需要处理该线程 。如果希望服务器每秒接收数百个连接请求,那么应该将thread_cache_size设置的足够高,以便大多数新连接可以使用缓存线程 。可以在服务器启动或运行时设置max_connections的值 。
还应该监视缓存中的线程数(Threads_cached)以及创建了多少个线程,因为无法从缓存中获取线程(Threads_created) 。关于后者,如果Threads_created继续以每分钟多于几个线程的增加 , 请考虑增加thread_cache_size的值 。
使用MySQL show status命令显示MySQL的变量和状态信息 。这里有几个例子:
Monyog线程缓存监测
Monyog提供了一个监控线程缓存的屏幕,名为“线程” 。与MySQL线程相关的服务器变量映射到以下Monyog指标:
Monyog线程屏幕还包括“线程缓存命中率”指标 。这是一个提示线程缓存命中率的指标 。如果值较低,则应该考虑增加线程缓存 。在状态栏以百分比形式显示该值;它的值越接近100%越好 。
如果这些指标的值等于或超过指定值,则可以将每一个指标配置为发出警告和/或严重警报
mysql 参数调优(10)之 tmp_table_size 优化临时表 tmp_table_size默认16M 。tmp_table_size如果过小,存不下了就会存到磁盘上 。对于group by会有性能影响 。
下面的sql EXPLAIN 如下,出现了Using temporary 。表示查询会利用临时表 。
在默认tmp_table_size大小16M下执行:
查看临时表统计信息 , Created_tmp_disk_tables 为0,Created_tmp_tables 为1表示上诉sql执行后生产了一张内存里的临时表 。
将tmp_table_size 调从16M调整为16K
再次执行,查询时间从4变成了18秒
重新统计
再次查看status,这次有在磁盘上创建1个临时表 。
设置为32M
Percona Server中的临时表信息会记录到慢查询日志
由于MySQL慢查询日志里没有使用临时表的信息,这就给我们诊断性能问题带来了一些不便,第三方的版本如Percona Server,在慢查询里可以有更详细的信息,将会记录临时表使用的情况,从而有助于我们诊断和调优 。
mysql8中对临时表有较大的优化
临时表引擎使用innodb(default 磁盘)和temptable(default 内存)
MySQL性能调优 – 你必须了解的15个重要变量前言:
MYSQL 应该是最流行了 WEB 后端数据库 。虽然 NOSQL 最近越来越多的被提到,但是相信大部分架构师还是会选择 MYSQL 来做数据存储 。本文作者总结梳理MySQL性能调优的15个重要变量,又不足需要补充的还望大佬指出 。
1.DEFAULT_STORAGE_ENGINE
如果你已经在用MySQL 5.6或者5.7,并且你的数据表都是InnoDB , 那么表示你已经设置好了 。如果没有,确保把你的表转换为InnoDB并且设置default_storage_engine为InnoDB 。
为什么?简而言之,因为InnoDB是MySQL(包括Percona Server和MariaDB)最好的存储引擎 – 它支持事务,高并发,有着非常好的性能表现(当配置正确时) 。这里有详细的版本介绍为什么
2.INNODB_BUFFER_POOL_SIZE
这个是InnoDB最重要变量 。实际上,如果你的主要存储引擎是InnoDB,那么对于你 , 这个变量对于MySQL是最重要的 。

推荐阅读