MySQL调优

来源:互联网 发布:几何画图软件 编辑:程序博客网 时间:2024/05/21 19:50

◆综述
可以从以下角度去优化mysql服务器的运行速度。
(1)升级硬件设备。
(2)对MySQL的设置进行调优。
(3)对查询进行优化。

FLUSH STATUS

◆记录慢查询
set global slow_query_log=on;
show variables Like '%slow%';
mysqldumpslow -s c -t 20 host-slow.log
slow_query_log(5.1以上版本) log-slow-queries <slow_query_log_file>(5.1及一下)(貌似)
long_query_time=5
log_queries_not_using_indexes

◆对查询进行缓存
query_cache_size:  总查询缓冲区大小
query_cache_type: 可以设置为0(OFF),1(ON)或者2(DEMOND),分别表示完全不使用query cache,除显式要求不使用query cache(使用sql_no_cache)之外的所有的select都使用query cache,只有显示要求才使用query cache(使用sql_cache)
query_cache_limit:  单个查询的缓冲区大小
SHOW STATUS LIKE 'qcache%';

Query Cache 也有一个致命的缺陷,那就是当某个表的数据有任何任何变化,都会导致所有引用了该表的select语句在Query Cache 中的缓存数据失效。所以,当我们的数据变化非常频繁的情况下,使用Query Cache 可能会得不偿失。


变量名     说明
Qcache_free_blocks  缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE 会对缓存中的碎片进行整理,从而得到一个空闲块。
Qcache_free_memory  缓存中的空闲内存。
Qcache_hits    每次查询在缓存中命中时就增大。
Qcache_inserts   插入次数。
Qcache_lowmem_prunes    缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks 和 free_memory 可以告诉您属于哪种情况)。
Qcache_not_cached  不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句。
Qcache_queries_in_cache 当前缓存的查询(和响应)的数量。
Qcache_total_blocks  缓存中块的数量

◆MySQL 资源设置
max_connections
max_connect_errors
wait_timeout

◆显示打开表的活动
SHOW STATUS LIKE 'open%tables';
如果 Opened_tables 随着重新运行 SHOW STATUS 命令快速增加,就说明缓存命中率不够。如果 Open_tables 比 table_cache 设置小很多,就说明该值太大了(不过有空间可以增长总不是什么坏事)。例如,使用 table_cache = 5000 可以调整表的缓存。

◆线程缓存
SHOW STATUS LIKE 'threads%';
此处重要的值是 Threads_created,每次 mysqld 需要创建一个新线程时,这个值都会增加。如果这个数字在连续执行 SHOW STATUS 命令时快速增加,就应该尝试增大线程缓存。例如,可以在 my.cnf 中使用 thread_cache = 40 来实现此目的。

◆关键字效率
Key_reads 代表命中磁盘的请求个数, Key_read_requests 是总数。命中磁盘的读请求数除以读请求总数就是不中比率 —— 在本例中每 1,000 个请求,大约有 0.6 个没有命中内存。如果每 1,000 个请求中命中磁盘的数目超过 1 个,就应该考虑增大关键字缓冲区了。例如,key_buffer = 384M 会将缓冲区设置为 384MB。

◆参考文献
LAMP系统性能调优,第3部分: MySQL服务器调优 http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-3.html
mysql调优学习笔记         http://blog.csdn.net/yananwang/article/details/7030029
关于缓存 http://www.searchtb.com/2013/04/%E5%85%B3%E4%BA%8E%E7%BC%93%E5%AD%98%EF%BC%88%E4%B8%8A%EF%BC%89.html?spm=0.0.0.0.VfYDfI
MySQL 数据库性能优化之缓存参数优化   http://isky000.com/database/mysql-perfornamce-tuning-cache-parameter
MySQL 数据库性能优化之表结构优化   http://isky000.com/database/mysql-perfornamce-tuning-schema
MySQL 数据库性能优化之索引优化    http://isky000.com/database/mysql-performance-tuning-index
MySQL 数据库性能优化之SQL优化    http://isky000.com/database/mysql-performance-tuning-sql
MySQL数据库性能优化之存储引擎选择   http://isky000.com/database/mysql-performance-tuning-storage-engine
MySQL数据库性能优化之硬件优化    http://isky000.com/database/mysql-performance-tuning-hardware

原创粉丝点击