MySQL Innodb_row_lock_cản_waits là 2 ^ 64 - 1


7

Tôi có một máy chủ MySQL 5.6 mà chúng tôi theo dõi bằng Nagios.

Cuối tuần qua, nó đã bắt đầu phàn nàn về Innodb_row_lock_cản_waits, hiện có giá trị 18446744073709551615, vâng, đó là hơn 10 ^ 19! Theo tôi hiểu, giá trị này là số lượng khóa hàng hiện tại. Về cơ bản, tôi không tin, con số đó quá lớn?

Như Phil đã chỉ ra, con số là 2 ^ 64 - 1, vì vậy bây giờ câu hỏi của tôi là: Tại sao MySQL trả lại số này, nó phải là một mã lỗi / lỗi nào đó.

Câu trả lời:


2

Có một báo cáo lỗi mở về điều này cho MySQL 5.6,14

Lỗi # 71520 Liên tục tăng giá trị Innodb_row_lock_cản_waits

Từ báo cáo lỗi, lưu ý mục này

[25 tháng 6 năm 2015 6:58] Zhenye Xie trong môi trường của tôi, tôi nhận được một giá trị kỳ lạ. (-1 như uint64)

mysql> show status where Variable_name = 'Innodb_row_lock_current_waits';

+-------------------------------+----------------------+
| Variable_name                 | Value                |
+-------------------------------+----------------------+
| Innodb_row_lock_current_waits | 18446744073709551615 |
+-------------------------------+----------------------+
1 row in set (0.06 sec)

trong lock0wait.cc, srv_stats.n_lock_wait_civerse_count.inc () srv_stats.n_lock_wait_cản_count.dec (); không phải là chủ đề an toàn. srv_stats là một biến toàn cục, nhưng nó chỉ có một khóa trên trx bao quanh thay đổi giá trị.

Bạn đã đúng khi bạn nói it must be an overflow/error code of some sort

Gần đây như ngày 14 tháng 6 năm nay, vấn đề này có thể tồn tại hoặc không tồn tại trong MySQL 5.7.11

[14 tháng 6 9:55] Ángel HOẶC Chào buổi sáng,

Tôi đang thấy điều này trong MySQL 5.7.11-log:

mysql> show status like '%Innodb_row_lock_current%';

+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| Innodb_row_lock_current_waits | 45    |
+-------------------------------+-------+
1 row in set (0.00 sec)

mysql> select count(*) from information_schema.innodb_lock_waits;

+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.11-log |
+------------+
1 row in set (0.00 sec)

Nó dường như không 'tăng liên tục'. Nó đột nhiên nhảy từ 0 đến giá trị này.
Daniel Scott

Bạn chỉ cần xác minh rằng lỗi rất sống và đá.
RolandoMySQLDBA

Lỗi của tôi có vẻ khác với lỗi được liên kết - giá trị không 'tăng liên tục', giá trị nhảy từ 0 'dòng chảy', nó không chuyển qua các giá trị trung gian. Tôi thấy một nhận xét trong lỗi được liên kết có đề cập đến hành vi tương tự mà tôi thấy, nhưng nó không giống như được báo cáo trong mô tả lỗi.
Daniel Scott

1

MySQL có các trường hợp -1 khác được lưu trữ vào trường KHÔNG ĐƯỢC KÝ. Báo cáo qua http://bugs.mysql.com , sau đó đừng lo lắng về điều đó.

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.