我有一个删除查询,需要很长时间。当我签入processlist时,状态显示为“结束表”。关门要花很长时间。
示例:
我运行一个查询,总时间为1:42秒,其中80-90秒用于关闭表。
load data、select和insert等所有查询都会出现这种情况。
下面是my.cnf设置:
key_buffer_size = 2G
sort_buffer_size = 8M
read_buffer_size = 10M
read_rnd_buffer_size = 10M
join_buffer_size = 2M
bulk_insert_buffer_size = 100M
myisam_sort_buffer_size = 64M
#tmp_table_size = 100M
#max_heap_table_size = 64M
#max_allowed_packet = 64M
table_cache=1024我的备忘录
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 7862 6686 1175 0 11 4091
-/+ buffers/cache: 2583 5278
Swap: 15998 18 15980请告诉我我需要在my.cnf文件中做什么样的更改?
发布于 2012-07-25 10:54:57
关闭表--此线程正在将已更改的表数据刷新到磁盘并关闭已使用的表。这应该是一个快速的行动。如果没有,则应该验证您没有完整的磁盘,并且磁盘没有被大量使用。
这个错误报告也是相关的。
MySQL关闭未使用的表,并在以下情况下从表缓存中删除它:
您可以通过检查mysqld状态变量Opened_tables来确定表缓存是否太小,该变量指示自服务器启动以来打开表的操作数:
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+如果该值非常大或增长很快,即使您还没有发出许多刷新表语句,您也应该增加表缓存大小,以获得更多信息--请参阅MySQL如何在这里打开和关闭表:
https://dba.stackexchange.com/questions/21446
复制相似问题