san*_*uda 5 mysql performance mysql-5.5
我有一个需要很长时间的删除查询。当我办理登机手续时,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
Run Code Online (Sandbox Code Playgroud)
我的记忆信息
[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
Run Code Online (Sandbox Code Playgroud)
请告诉我需要在my.cnf文件中进行哪些更改?
关闭表此线程将更改的表数据刷新到磁盘并关闭使用的表。这应该是一个快速的操作。如果不是,您应该验证您的磁盘是否已满,并且该磁盘的使用率不是很高。
此错误报告也可能相关。
更远,
在以下情况下,MySQL 会关闭未使用的表并将其从表缓存中删除:
当缓存包含多于 table_cache 条目并且缓存中的表不再被任何线程使用时。
当发生表刷新操作时。当有人发出 FLUSH TABLES 语句或执行 mysqladmin flash-tables 或 mysqladmin refresh 命令时,就会发生这种情况。
您可以通过检查 mysqld 状态变量 Opened_tables 来确定您的表缓存是否太小,该变量指示自服务器启动以来的开表操作次数:
mysql> SHOW GLOBAL STATUS LIKE 'Opened_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Opened_tables | 2741 |
+---------------+-------+
Run Code Online (Sandbox Code Playgroud)
如果该值非常大或增加很快,即使您没有发出很多 FLUSH TABLES 语句,您也应该增加表缓存大小。有关详细信息,请参阅 MySQL 如何打开和关闭表:
http://dev.mysql.com/doc/refman/5.0/en/table-cache.html
归档时间: |
|
查看次数: |
6317 次 |
最近记录: |