MySQL을 사용하는 특정 데이터베이스의 모든 테이블에서 삽입, 업데이트 및 삭제 속도가 느린 것 같습니다. 이러한 테이블의 데이터는 많지 않습니다 (2k에서 20k까지). 작은 수의 열 (5 ~ 10), 인덱스 (두 개) 및 중복 인덱스 문제가 없습니다. MyISAM으로 MySQL 5.0.45를 돌리고 있습니다.느린 MySQL 업데이트/삽입/삭제
나는 다음 쿼리를 실행하고이 5-7 초 정도 걸립니다 : 선택은 바로 돌아올 것
UPDATE accounts SET updated_at = '2010-10-09 11:22:53' WHERE id = 8;
.
이+----+-------------+----------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+-------+---------------+---------+---------+------+------+-------------+
| 1 | SIMPLE | accounts | index | NULL | PRIMARY | 4 | NULL | 1841 | Using index |
+----+-------------+----------+-------+---------------+---------+---------+------+------+-------------+
프로파일 러는 상황의 겉으로는 높은 숫자 이외의 어떤 것도 의미있는 데이터를 표시하지 않는 스위치 : :이 또한 도움이 될 수
+----------------------+----------+-------------------+---------------------+
| Status | Duration | Context_voluntary | Context_involuntary |
+----------------------+----------+-------------------+---------------------+
| (initialization) | 0.000057 | 0 | 0 |
| checking permissions | 0.000008 | 0 | 0 |
| Opening tables | 0.000013 | 0 | 0 |
| System lock | 0.000005 | 0 | 0 |
| Table lock | 0.000005 | 0 | 0 |
| init | 0.000061 | 0 | 0 |
| Updating | 0.000101 | 0 | 0 |
| end | 7.957233 | 7951 | 2 |
| query end | 0.000008 | 0 | 0 |
| freeing items | 0.000011 | 0 | 0 |
| closing tables | 0.000007 | 1 | 0 |
| logging slow query | 0.000002 | 0 | 0 |
+----------------------+----------+-------------------+---------------------+
설명은 다음 날 수 있습니다 :
+----------------------+----------+-----------------------+---------------+-------------+
| Status | Duration | Source_function | Source_file | Source_line |
+----------------------+----------+-----------------------+---------------+-------------+
| (initialization) | 0.000057 | check_access | sql_parse.cc | 5306 |
| checking permissions | 0.000008 | open_tables | sql_base.cc | 2629 |
| Opening tables | 0.000013 | mysql_lock_tables | lock.cc | 153 |
| System lock | 0.000005 | mysql_lock_tables | lock.cc | 162 |
| Table lock | 0.000005 | mysql_update | sql_update.cc | 167 |
| init | 0.000061 | mysql_update | sql_update.cc | 429 |
| Updating | 0.000101 | mysql_update | sql_update.cc | 560 |
| end | 7.957233 | mysql_execute_command | sql_parse.cc | 5122 |
| query end | 0.000008 | mysql_parse | sql_parse.cc | 6116 |
| freeing items | 0.000011 | dispatch_command | sql_parse.cc | 2146 |
| closing tables | 0.000007 | log_slow_statement | sql_parse.cc | 2204 |
| logging slow query | 0.000002 | dispatch_command | sql_parse.cc | 2169 |
+----------------------+----------+-----------------------+---------------+-------------+
추가 정보 : 실행 중입니다. n 4 기가의 램이 보장 된 CentOS-5 VPS. updated_at 열에 색인이없고 어디서나 트리거되지 않습니다.
[I 시도 새로운 일]
- 새 테이블 (같은 사용) 실행 이노을 작성하고 영향을받는 테이블 중 하나에서 모든 기록을 삽입했다. (같은 문제)
- 데이터베이스를 백업하고 동일한 서버 인스턴스 내의 다른 데이터베이스로 복원했습니다. (같은 문제)
- 로컬 컴퓨터에 동일한 백업을 복원했는데 문제가 없었습니다.
- 문제 데이터베이스와 다른 데이터베이스 (A 워드 프레스 DB) 업데이트/삽입을 실행을 가지고 같은 MySQL 서버 인스턴스 내에서 다른 데이터베이스 를 시도/잘 삭제합니다.
- 을 다시 시작 mysqld를가와 (같은 문제) 버전 5.0.77 (같은 문제)
- 영향을받는 테이블 중 하나 (같은 문제)
어떤 아이디어가 다음에 보입니까? 아니면 어떤 것이 문제일까요? 그것이 최근에 언제 나타나는지는 말할 수 없지만 최근의 문제에 더 가깝습니다.
updated_at 열에 인덱스가 있습니까? –
이 컴퓨터는 어떤 종류의 컴퓨터입니까? 리소스가 제한적인 시스템 (예 : RAM이 많지 않음)에서 MySQL은 주 인덱스를 매번 디스크에서 강제로 읽을 수 있도록 메모리에 유지할 수 없습니다. –
updated_at 열에 색인이없고 2 기가 보장 된 VPS에 있습니다. 동일한 mysql 서버 인스턴스에있는 다른 데이터베이스 (WordPress)는 업데이트/삽입/삭제를 잘 처리하는 것 같습니다. – Ruben