Tạo bảng MySQL cực kỳ chậm


10

Việc tạo bảng đơn giản trên một trong các cơ sở dữ liệu MySQL của tôi sẽ mất mãi mãi:

mysql> CREATE TABLE blah (id BIGINT UNSIGNED NOT NULL PRIMARY KEY);
Query OK, 0 rows affected (16.58 sec)

Máy khá nhàn rỗi:

01:21:26 PM       CPU     %user     %nice   %system   %iowait    %steal     %idle
01:21:27 PM       all      0.50      0.00      0.21      0.00      0.00     99.29

Bất kỳ ý tưởng làm thế nào để điều tra này?

EDIT : Theo lời khuyên của DTest , đây là hồ sơ thực hiện:

mysql> SHOW PROFILE FOR QUERY 1;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000044 |
| checking permissions | 0.000024 |
| creating table       | 8.668129 |
| After create         | 0.000014 |
| query end            | 0.000005 |
| freeing items        | 0.000028 |
| logging slow query   | 0.000004 |
| logging slow query   | 0.000206 |
| cleaning up          | 0.000006 |
+----------------------+----------+

@Phil Một máy vật lý có bộ nhớ 16GB.
Adam Matan

@Phil Đó là một máy chủ sản xuất có nhiều hoạt động của MySQL, vì vậy đĩa không nên nhàn rỗi.
Adam Matan

Câu trả lời:


10

Tôi sẽ bật hồ sơ để có được một ý tưởng về những gì mất quá nhiều thời gian. Một ví dụ sử dụng CLI của mysql:

SET profiling = 1;
CREATE TABLE blah (id BIGINT UNSIGNED NOT NULL PRIMARY KEY);
SET profiling = 1;

Bạn sẽ nhận được phản hồi như thế này:

mysql> SHOW PROFILES;
| Query_ID | Duration   | Query |
+----------+------------+-------------------------------------------------------------+
|        1 | 0.00913800 | CREATE TABLE blah (id BIGINT UNSIGNED NOT NULL PRIMARY KEY) |
+----------+------------+-------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SHOW PROFILE FOR QUERY 1;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000071 |
| checking permissions | 0.000007 |
| Opening tables       | 0.001698 |
| System lock          | 0.000043 |
| creating table       | 0.007260 |
| After create         | 0.000004 |
| query end            | 0.000004 |
| closing tables       | 0.000015 |
| freeing items        | 0.000031 |
| logging slow query   | 0.000002 |
| cleaning up          | 0.000003 |
+----------------------+----------+
11 rows in set (0.00 sec)

1
@AdamMatan không chắc chắn nếu bạn đọc tài liệu lược tả, nhưng có các cờ khác để hiển thị hồ sơ của truy vấn CPU, BLOCK IOv.v có thể giúp bạn trong giai đoạn 'tạo bảng'.
Derek Downey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.