Locked 상태의 테이블 플러시

Locked 상태의 테이블 플러시

항상 잠긴 상태의 테이블이 많이 있습니다. 예:

| 14442 | dbtable1 | localhost | dbname | Query   | 1291 | Locked       | SELECT  * FROM table1 WHERE topic_s='hooks-and-variables'                                   |
| 14443 | dbtable1  | localhost |           | Sleep   | 1291 |              |                                                                                                      |
| 14461 | dbtable1 | localhost | dbname | Query   | 1283 | Locked       | SELECT  table3.forum_id, forum_name, forum_slug, table4.topic_id, topic_name, topic_slug |

그러한 프로세스가 너무 많으면 모든 사이트에서 데이터베이스 연결 오류가 발생하기 시작하고 다시 작동하려면 MySQL 서버를 다시 시작해야 합니다.

중요한 경우 데이터베이스, CentOS 5.7, WordPress 및 MySQL 5.1에 MyISAM 엔진을 사용합니다.

나는 당신이 무엇을 제안하는지 알고 있습니다: InnoDB로 전환하거나 코드를 최적화하십시오. 불행히도 그것은 내 범위를 벗어납니다. 내가 가지고 있는 구성으로 작업해야 합니다.

그래서 당신에게 질문이 있습니다. 이러한 쿼리를 주기적으로 플러시하려면 어떻게 해야 합니까? 적어도 서버 과부하를 방지하는 데는 도움이 될 것이라고 확신합니다.

flush_time=300나는 운이 좋지 않게 노력했습니다 . 여기에 my.cnf가 필요합니까, 아니면 다른 구성이 필요합니까?

모두 감사합니다.

업데이트 1. my.cnf

[mysqld]
default-character-set=utf8
max_connections=100
set-variable        = long_query_time=10
query_cache_limit   = 32M
query_cache_size    = 128M
query_cache_type    = 1
table_cache=8K
key_buffer_size=100M
thread_cache_size=128
join_buffer_size = 1M
innodb_buffer_pool_size = 100M
join_buffer_size=4M
tmp_table_size=32M
max_heap_table_size=32M
flush_time=200

업데이트 2. 잠금 전 프로세스 목록의 첫 번째 쿼리

 | Id  | User | Host | db | Command | Time | State  | Info                                                                            
 | 1515 | dbtable1 | localhost | dbname | Query  | 2511 | Sending data | SELECT  table1.forum_id, forum_slug, forum_name, forum_status, group_id, topic_count, forum_ic |
 | 1571 | dbtable1 | localhost | dbname | Query  | 2478 | Sending data | SELECT  table1.forum_id, forum_slug, forum_name, forum_status, group_id, topic_count, forum_ic |

답변1

pt-killPercona 툴킷에서 사용할 수 있습니다 (http://www.percona.com/software/percona-toolkit/) 지정된 기준과 일치하는 쿼리를 종료합니다. 300초 이상 실행되는 쿼리를 종료 하기 위해 300초마다 실행되도록 크론 작업을 설정할 수 있습니다 pt-kill --busy-time 300.

관련 정보