MySQL Innodb_row_lock_current_waits ist 2 ^ 64 - 1


7

Ich habe einen MySQL 5.6-Server, den wir mit Nagios überwachen.

Über das Wochenende hat es angefangen, sich über die Innodb_row_lock_current_waits zu beschweren, die derzeit einen Wert von 18446744073709551615 haben, ja, das sind mehr als 10 ^ 19! Soweit ich weiß, ist dieser Wert die Anzahl der aktuellen Zeilensperren. Grundsätzlich glaube ich nicht, dass diese Zahl viel zu groß ist?

Wie Phil betonte, ist die Nummer 2 ^ 64 - 1, daher lautet meine Frage jetzt: Warum gibt MySQL diese Nummer zurück, es muss sich um einen Überlauf- / Fehlercode handeln.

Antworten:


2

Hierzu gibt es einen offenen Fehlerbericht für MySQL 5.6.14

Fehler # 71520 Den Wert von Innodb_row_lock_current_waits wird ständig erhöht

Notieren Sie diesen Eintrag im Fehlerbericht

[25 Jun 2015 6:58] Zhenye Xie in meiner Umgebung habe ich einen seltsamen Wert bekommen. (-1 als 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)

in lock0wait.cc srv_stats.n_lock_wait_current_count.inc () srv_stats.n_lock_wait_current_count.dec (); ist nicht threadsicher. srv_stats ist eine globale Variable, hat jedoch nur eine Sperre für trx-Umgebungen, die den Wert ändern.

Sie hatten Recht, als Sie sagten it must be an overflow/error code of some sort

Noch am 14. Juni dieses Jahres kann dieses Problem in MySQL 5.7.11 auftreten oder nicht

[14 Jun 9:55] Ángel ODER Guten Morgen,

Ich sehe dies in 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)

Es scheint nicht "ständig zuzunehmen". Es sprang plötzlich von 0 auf diesen Wert.
Daniel Scott

Sie haben gerade überprüft, dass der Fehler sehr lebendig ist und tritt.
RolandoMySQLDBA

Mein Fehler scheint sich von dem verknüpften zu unterscheiden - der Wert steigt nicht "kontinuierlich an", der Wert springt von 0 - "Überlauf", er hat keine Zwischenwerte durchlaufen. Ich sehe einen Kommentar im verknüpften Fehler, der das gleiche Verhalten erwähnt, das ich sehe, aber nicht das gleiche wie in der Fehlerbeschreibung angegeben.
Daniel Scott

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.