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.

Daniel Scott
quelle

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)
RolandoMySQLDBA
quelle
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
1

In MySQL werden in anderen Fällen -1 in einem UNSIGNED-Feld gespeichert. Melde es über http://bugs.mysql.com , dann mach dir keine Sorgen.

Rick James
quelle