通过查看mysql 配置参数、状态来优化你的mysql
2012-08-20 17:03:17 来源:WEB开发网核心提示:--open_tables 是当前打开的表的数量,Opened_tables 表示打开过的表数量--清空表缓存mysql> flush tables;如果发现 open_tables 接近 table_cache 的时候,通过查看mysql 配置参数、状态来优化你的mysql(3),如果 Opened_table
----------------------------------
open_tables 是当前打开的表的数量,
Opened_tables 表示打开过的表数量
----------------------------------
清空表缓存
mysql> flush tables;
如果发现 open_tables 接近 table_cache 的时候,如果 Opened_tables 随着重新运行 SHOW STATUS 命令快速增加,就说明缓存命中率不够。并且多次执行FLUSH TABLES(通过shell > mysqladmin -uroot -ppassword variables status ),那就说明可能 table_cache 设置的偏小,经常需要将缓存的表清出,将新的表放入缓存,这时可以考虑增加这个参数的大小来改善访问的效率。
如果 Open_tables 比 table_cache 设置小很多,就说明table_cache 设的太大了。
table_cache的值在2G内存以下的机器中的值默认时256到512,如果机器有4G内存,则默认这个值是2048,但这决意味着机器内存越大,这个值应该越大,因为table_cache加大后,使得mysql对SQL响应的速度更快了,不可避免的会产生更多的死锁(dead lock),这样反而使得数据库整个一套操作慢了下来,严重影响性能。
注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。
对于有1G内存的机器,推荐值是128-256。
--------------------------------------------------------------------
key_buffer_size 67108864(/1024/1024=64M)
Key_read_requests 40944 从缓存读键的数据块的请求数。
Key_reads 2711 从硬盘读取键的数据块的次数。
Key_write_requests 将键的数据块写入缓存的请求数。
Key_writes 向硬盘写入将键的数据块的物理写操作的次数。
(获得信息:
shell > mysqladmin -uroot -ppassword variables extended-status
shell>mysqladmin -uroot -ppassword variable status
mysql> show status like '%key_read%';
)
key_buffer_size设置索引块(index blocks)缓存的大小,保存了 MyISAM 表的索引块。它被所有线程共享,决定了数据库索引处理的速度,尤其是索引读的速度。理想情况下,对于这些块的请求应该来自于内存,而不是来自于磁盘。
只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。
key_buffer_size: 如果不使用MyISAM存储引擎,16MB足以,用来缓存一些系统表信息等。如果使用 MyISAM存储引擎,在内存允许的情况下,尽可能将所有索引放入内存,简单来说就是“越大越好”
合理设置key_buffer_size的方法:
查看Key_read_requests和Key_reads的比例,
Key_reads 代表命中磁盘的请求个数, Key_read_requests 是总数。命中磁盘的读请求数除以读请求总数就是不中比率。如果每 1,000 个请求中命中磁盘的数目超过 1 个,就应该考虑增大关键字缓冲区了。
key_reads / key_read_requests的值应该尽可能的低,比如1:100,1:1000 ,1:10000。
对于内存在4GB左右的服务器该参数可设置为256M或384M。
注意:该参数值设置的过大反而会是服务器整体效率降低!
--------------------------------------------------------------------------------------------------------
256MB内存和许多表,想要在中等数量的客户时获得最大性能,应使用:
shell> mysqld_safe --key_buffer_size=64M --table_cache=256 --sort_buffer_size=4M --read_buffer_size=1M &
-------------------------------------------------------------------------------------------------------------------------------------------------------
open_tables 是当前打开的表的数量,
Opened_tables 表示打开过的表数量
----------------------------------
清空表缓存
mysql> flush tables;
如果发现 open_tables 接近 table_cache 的时候,如果 Opened_tables 随着重新运行 SHOW STATUS 命令快速增加,就说明缓存命中率不够。并且多次执行FLUSH TABLES(通过shell > mysqladmin -uroot -ppassword variables status ),那就说明可能 table_cache 设置的偏小,经常需要将缓存的表清出,将新的表放入缓存,这时可以考虑增加这个参数的大小来改善访问的效率。
如果 Open_tables 比 table_cache 设置小很多,就说明table_cache 设的太大了。
table_cache的值在2G内存以下的机器中的值默认时256到512,如果机器有4G内存,则默认这个值是2048,但这决意味着机器内存越大,这个值应该越大,因为table_cache加大后,使得mysql对SQL响应的速度更快了,不可避免的会产生更多的死锁(dead lock),这样反而使得数据库整个一套操作慢了下来,严重影响性能。
注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。
对于有1G内存的机器,推荐值是128-256。
--------------------------------------------------------------------
key_buffer_size 67108864(/1024/1024=64M)
Key_read_requests 40944 从缓存读键的数据块的请求数。
Key_reads 2711 从硬盘读取键的数据块的次数。
Key_write_requests 将键的数据块写入缓存的请求数。
Key_writes 向硬盘写入将键的数据块的物理写操作的次数。
(获得信息:
shell > mysqladmin -uroot -ppassword variables extended-status
shell>mysqladmin -uroot -ppassword variable status
mysql> show status like '%key_read%';
)
key_buffer_size设置索引块(index blocks)缓存的大小,保存了 MyISAM 表的索引块。它被所有线程共享,决定了数据库索引处理的速度,尤其是索引读的速度。理想情况下,对于这些块的请求应该来自于内存,而不是来自于磁盘。
只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。
key_buffer_size: 如果不使用MyISAM存储引擎,16MB足以,用来缓存一些系统表信息等。如果使用 MyISAM存储引擎,在内存允许的情况下,尽可能将所有索引放入内存,简单来说就是“越大越好”
合理设置key_buffer_size的方法:
查看Key_read_requests和Key_reads的比例,
Key_reads 代表命中磁盘的请求个数, Key_read_requests 是总数。命中磁盘的读请求数除以读请求总数就是不中比率。如果每 1,000 个请求中命中磁盘的数目超过 1 个,就应该考虑增大关键字缓冲区了。
key_reads / key_read_requests的值应该尽可能的低,比如1:100,1:1000 ,1:10000。
对于内存在4GB左右的服务器该参数可设置为256M或384M。
注意:该参数值设置的过大反而会是服务器整体效率降低!
--------------------------------------------------------------------------------------------------------
256MB内存和许多表,想要在中等数量的客户时获得最大性能,应使用:
shell> mysqld_safe --key_buffer_size=64M --table_cache=256 --sort_buffer_size=4M --read_buffer_size=1M &
-------------------------------------------------------------------------------------------------------------------------------------------------------
更多精彩
赞助商链接