根据status信息对MySQL服务器进行优化(二)

Wednesday, March 25th, 2009

续根据status信息对MySQL服务器进行优化(一),直入主题。 六、进程使用情况 mysql> show global status like 'Thread%'; +-------------------+-------+ | Variable_name     | Value | +-------------------+-------+ | Threads_cached    | 46    | | Threads_connected | 2     | | Threads_created   | 570   | | Threads_running   | 1     | +-------------------+-------+ 如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。Threads_created表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器thread_cache_size配置: mysql> show variables like 'thread_cache_size'; +-------------------+-------+ | Variable_name     | Value | +-------------------+-------+ | thread_cache_size | 64    | +-------------------+-------+ 示例中的服务器还是挺健康的。 七、查询缓存(query cache) mysql> show global status like 'qcache%'; +-------------------------+-----------+ | Variable_name           | Value     | +-------------------------+-----------+ | Qcache_free_blocks      ...

根据status信息对MySQL服务器进行优化(一)

Tuesday, March 24th, 2009

网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据服务器的"状态"进行优化。 mysql> show global status; 可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句: mysql> show variables; 一、慢查询 mysql> show variables like '%slow%'; +------------------+-------+ | Variable_name    | Value | +------------------+-------+ | log_slow_queries | ON    | | slow_launch_time | 2     | +------------------+-------+ mysql> show global status like '%slow%'; +---------------------+-------+ | Variable_name       | Value | +---------------------+-------+ | Slow_launch_threads | 0     | | Slow_queries        | 4148 | +---------------------+-------+ 配置中打开了记录慢查询,执行时间超过2秒的即为慢查询,系统显示有4148个慢查询,你可以分析慢查询日志,找出有问题的SQL语句,慢查询时间不宜设置过长,否则意义不大,最好在5秒以内,如果你需要微秒级别的慢查询,可以考虑给MySQL打补丁:http://www.percona.com/docs/wiki/release:start,记得找对应的版本。 打开慢查询日志可能会对系统性能有一点点影响,如果你的MySQL是主-从结构,可以考虑打开其中一台从服务器的慢查询日志,这样既可以监控慢查询,对系统性能影响又小。 二、连接数 经常会遇见"MySQL: ERROR 1040: Too many connections"的情况,一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配置文件中max_connections值过小: mysql> show variables like 'max_connections'; +-----------------+-------+ | Variable_name   | ...

你可能不知道的MySQL

Wednesday, March 11th, 2009

前言: 实验的数据表如下定义: mysql> desc tbl_name; +-------+--------------+------+-----+---------+-------+ | Field | Type         | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | uid   | int(11)      | NO   |     | NULL    |       | | sid   | mediumint(9) | NO   |     | NULL    |       | | times | mediumint(9) | NO   |     | NULL    |       | +-------+--------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) 存储引擎是MyISAM,里面有10,000条数据。 一、"\G"的作用 mysql> ...