Detaillierte Erläuterung der persistenten MySQL-Statistiken

Detaillierte Erläuterung der persistenten MySQL-Statistiken

1. Die Bedeutung persistenter statistischer Informationen:

Statistiken werden verwendet, um MySQL bei der Generierung von Ausführungsplänen zu unterstützen. Die Genauigkeit des Ausführungsplans wirkt sich direkt auf die Effizienz der SQL-Ausführung aus.

Die vorherigen Statistiken sind weg. Wenn also die SQL-Anweisung kommt, sammelt MySQL die Statistiken und generiert dann die Ausführung der SQL-Anweisung.

planen. Wenn Sie die Statistiken beim Herunterfahren von MySQL speichern können, müssen Sie sie beim Starten nicht erneut erfassen.

Hilft, die Effizienz zu verbessern.

Zweitens ist die Genauigkeit der statistischen Informationen ebenso wichtig:

Im ersten Abschnitt haben wir die Bedeutung persistenter Statistiken erläutert. Wir gehen davon aus, dass Statistiken nützlich und genau sind. Wenn die Statistiken selbst

Es ist veraltet. Wenn die Statistiken beispielsweise berechnet werden, wenn die Tabelle nur 100 Zeilen enthält, ist der vollständige Tabellenscan häufig kostengünstiger.

Wolltuch! Jetzt hat die Anzahl der Zeilen in der Tabelle 1 Million erreicht. Offensichtlich führen solche veralteten statistischen Informationen zu Leistungskatastrophen, sodass auch die Aktualität statistischer Informationen

sind gleichermaßen wichtig. Wann aktualisiert MySQL Statistiken automatisch? Standardmäßig wird die Tabelle aktualisiert, wenn 10 % der Daten geändert wurden.

3. MySQLs Verarbeitung statistischer Informationen:

MySQL bietet Lösungen für beide oben genannten Probleme und beide können durch eine einfache Konfiguration gelöst werden.

1. Ob statistische Informationen in MySQL gespeichert werden, kann über den Parameter innodb_stats_persistent gesteuert werden

2. In Bezug auf die Aktualität statistischer Informationen verwendet MySQL den Parameter innodb_stats_auto_recalc, um zu steuern, ob automatisch aktualisiert werden soll

3. Für die Genauigkeit statistischer Informationen steuert MySQL Aktualisierungen über den Parameter innodb_stats_persistent_sample_pages

Die Anzahl der Beispielseiten, die für die statistische Informationsstichprobe verwendet werden.

4. Statistiken manuell aktualisieren:

MySQL aktualisiert Statistiken manuell mithilfe der Anweisung „Analyze Table“

5. Überprüfen Sie, wann die Statistiken der Tabelle aktualisiert werden:

MySQL zeichnet Statistiken in den beiden Tabellen mysql.innodb_table_stats und mysql.innodb_index_stats auf.

mysql.innodb_table_stats zeichnet Statistiken nach Tabelle auf

mysql> wähle * aus innodb_table_stats;
+-----------------+-------------------------+---------------------+--------+----------------------+--------------------------+
| Datenbankname | Tabellenname | letztes Update | Anzahl Zeilen | Clusterindexgröße | Summe anderer Indexgrößen |
+-----------------+-------------------------+---------------------+--------+----------------------+--------------------------+
| fdb | auth_group | 10.08.2017 14:36:40 | 0 | 1 | 1 |
| fdb | auth_group_permissions | 10.08.2017 14:36:41 | 0 | 1 | 2 |
| fdb | auth_permission | 10.08.2017 14:36:41 | 30 | 1 | 1 |
| fdb | auth_user | 10.08.2017 14:36:41 | 0 | 1 | 1 |
| fdb | auth_user_groups | 10.08.2017 14:36:41 | 0 | 1 | 2 |
| fdb | auth_user_user_permissions | 10.08.2017 14:36:41 | 0 | 1 | 2 |
| fdb | cninfo_company | 10.08.2017 14:36:58 | 4996 | 161 | 6 |
| fdb | csindex_indexdetail | 17.09.2017 14:04:27 | 0 | 1 | 0 |
| fdb | csindex_indexoverview | 01.09.2017 12:44:18 | 11 | 1 | 0 |
| fdb | django_admin_log | 10.08.2017 14:36:47 | 0 | 1 | 2 |
| fdb | django_content_type | 10.08.2017 14:36:47 | 10 | 1 | 1 |
| fdb | django_migrations | 04.09.2017 14:04:09 | 37 | 1 | 0 |
| fdb | django_session | 10.08.2017 14:36:47 | 0 | 1 | 1 |
| fdb | glod_glodprice | 10.08.2017 14:36:48 | 2271 | 10 | 0 |
| fdb | pbc_moneysupply | 10.08.2017 14:37:08 | 78 | 1 | 0 |
| fdb | shibor_shiborrate | 10.08.2017 14:37:18 | 2711 | 14 | 0 |
| fdb | sse_marketoverview | 15.08.2017 16:06:12 | 0 | 1 | 0 |
| mysql | gtid_executed | 06.09.2017 11:02:14 | 2 | 1 | 0 |
| sys | sys_config | 10.08.2017 12:19:06 | 6 | 1 | 0 |
| tempdb | Person | 14.09.2017 11:18:15 | 1 | 1 | 0 |
| tmp | t | 15.08.2017 11:06:18 | 2 | 1 | 0 |
+-----------------+-------------------------+---------------------+--------+----------------------+--------------------------+
21 Zeilen im Satz (0,00 Sek.)

Die Bedeutung der einzelnen Spalten:

database_name Der Name der Datenbank, in der sich die Tabelle befindet

table_name Tabellenname

last_update Der Zeitpunkt der letzten Aktualisierung

n_rows Die Anzahl der Zeilen in der Tabelle

clustered_index_size Die Größe des Primärschlüssels

sum_of_other_index_sizes Die Größe aller sekundären Indizes

6. Einige Erfahrungen im Prozess der Tabellenanalyse:

Wenn wir die Explan-Anweisung verwenden, um den SQL-Ausführungsplan anzuzeigen, stellen wir fest, dass der Plan nicht genau ist, was hauptsächlich an veralteten statistischen Informationen liegt.

Manchmal müssen Sie eine Analysetabelle ausführen, um den Ausführungsplan neu zu generieren. Manchmal stellen Sie jedoch möglicherweise fest, dass die Neuerstellung des Ausführungsplans sinnlos ist.

SQL funktioniert immer noch nicht richtig. Der wahrscheinlichste Grund ist, dass die Anzahl der Beispielseiten beim Generieren des Ausführungsplans zu gering ist.

Der Wert dieses Parameters sollte nicht zu groß sein, da sonst die Ausführung der Anweisung zur Tabellenanalyse sehr lange dauert.

VII. Weitere Hinweise:

Das oben erwähnte MySQL bezieht sich tatsächlich auf die Innodb-Engine.

Oben finden Sie eine ausführliche Erläuterung der persistenten MySQL-Statistiken. Weitere Informationen zu persistenten MySQL-Statistiken finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Beispiel für einen Persistenzbetrieb mit Gearman + MySQL
  • Detaillierte Erläuterung der Bereitstellung von MySQL mit Docker (Datenpersistenz)
  • Detaillierte Erklärung der Java-Emoji-Persistenz in MySQL
  • Neue Funktionen von MySQL 8: So ändern Sie persistente globale Variablen
  • Neue Funktionen von MySQL 8: Detaillierte Erklärung der Persistenz des automatisch inkrementierten Primärschlüssels
  • Gründe, warum MySQL 8.0-Statistiken ungenau sind
  • Übersicht über MySQL-Statistiken

<<:  Docker nginx implementiert einen Host zum Bereitstellen mehrerer Sites

>>:  So verhindern Sie, dass Iframes in HTML zur Seite springen, und verwenden Iframes, um die WeChat-Webversion in die Seite einzubetten

Artikel empfehlen

MySQL-Abfragedaten für heute, diese Woche, diesen Monat und letzten Monat

Heute Wählen Sie * aus Tabellenname, wobei to_day...

So löschen Sie Dateinamen oder Verzeichnisse mit Sonderzeichen in Linux

Löschen einer Datei anhand ihrer Inode-Nummer Ver...

Was tun, wenn Sie Ihr MySQL-Passwort vergessen?

Lösung zum Vergessen des MySQL-Passworts: [root@l...

Zusammenfassung der MySQL-Nutzungsspezifikationen

1. Es muss die InnoDB-Speicher-Engine verwendet w...

Beschreibung des Meta-Viewport-Attributs in der HTML-Webseite

Beschreibung der HTML-Meta-Viewport-Attribute Was...

MySQL-Protokolleinstellungen und Anzeigemethoden

MySQL verfügt über die folgenden Protokolle: Fehl...

So stellen Sie nginx mit Docker bereit und ändern die Konfigurationsdatei

Nginx mit Docker bereitstellen, so einfach ist da...