Heim  >  Artikel  >  Datenbank  >  Was ist die Überwachungsmethode der MySQL-Datenbank?

Was ist die Überwachungsmethode der MySQL-Datenbank?

WBOY
WBOYnach vorne
2023-06-03 13:22:131273Durchsuche

Es gibt viele Überwachungsmethoden für aktuelle Datenbanken, die in drei Kategorien unterteilt sind: integrierte Datenbank, kommerzielle Datenbank und Open Source.

Die MySQL-Datenbank hat aufgrund ihrer hohen Community-Aktivität die Überwachung Methoden Es ist noch vielfältiger, welche Überwachungsmethode verwendet wird. Nach der Erfassung umfassender Überwachungsdaten handelt es sich um den flexiblen Anzeigeteil.

1. Anzahl der Verbindungen (Verbindungen)

1.2. Anzahl der aktuell geöffneten Verbindungen

2.1. Anzahl der nicht aus dem Puffer gelesenen Verbindungen Pool

show status like 'Max_used_connections';

2.2. Anzahl der Lesevorgänge aus dem Pufferpool

show status like 'Threads_connected';

2.4. Anzahl der freien Seiten im Pufferpool

show status like 'Innodb_buffer_pool_reads';

show status like 'Innodb_buffer_pool_read_requests';

2.6. Die Cache-Pool-Nutzungsrate beträgt

rrree

3. Die Anzahl der Sperrwartestatistiken ist kumulativ und kann von den vorherigen Daten abgezogen werden, um die aktuelle Statistik zu erhalten Daten

3.1. Die Anzahl der Sperren

rrree

3.3. Überprüfen Sie, ob eine Tabellensperre vorhanden ist leer, es bedeutet, dass keine Tabellensperre vorhanden ist.

4.1. Überprüfen Sie, ob der MySQL-Slow-SQL-Schwellenwert aktiviert ist

show status like 'Innodb_buffer_pool_pages_total';

4.3. Überprüfen Sie das MySQL-Slow-SQL-Verzeichnis

show status like 'Innodb_buffer_pool_pages_free';

Hinweis: Diese Anweisung besteht jdbcexecute Nein, es gehört zur Befehlszeilenausführung.

Bedeutung: Zeigt die Ausführungsinformationen der 10 längsten SQL-Anweisungen an. 10 können auf die TOP-Nummer geändert werden. Die angezeigten Informationen sind: Anzahl der Ausführungen, durchschnittliche Ausführungszeit, SQL-Anweisung

(1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests)*100%

5, Anweisung

5.1, Menge einfügen

((Innodb_buffer_pool_pages_total-Innodb_buffer_pool_pages_free)/Innodb_buffer_pool_pages_total)*100%

5.2, Menge löschen

show status like 'Innodb_row_lock_waits';

5.3, Menge aktualisieren

show status like 'Innodb_row_lock_time_avg';

5.4, Menge auswählen

show open TABLES where in_use>0

6. Durchsatz (Datenbankdurchsätze)

6.1, Sendedurchsatz

show variables like 'slow_query_log'; --ON 为开启状态,OFF 为关闭状态
 
set global slow_query_log=1 -- 可进行开启

6.2, Empfangsdurchsatz

show variables like 'long_query_time';
 
set global long_query_time=0.1 -- 根据页面传递阈值参数,修改阈值

6.3, Gesamtdurchsatz

show variables like 'slow_query_log_file';

7, Datenbankparameter (Serverkonfiguration)

7.1, Variablen anzeigen

8. Schritte zur Fehlerbehebung bei langsamem SQL

Slow SQL bezieht sich auf langsame MySQL-Abfragen, insbesondere auf SQL, dessen Laufzeit den long_query_time-Wert überschreitet.

Wir hören oft, dass MySQL über Binärprotokoll Binlog, Relay Log Relaylog, Redo Rollback Log Redolog, Undolog usw. verfügt. Für langsame Abfragen gibt es auch ein langsames Abfrageprotokoll, Slowlog, mit dem Anweisungen aufgezeichnet werden, deren Antwortzeit den Schwellenwert in MySQL überschreitet. Langsames SQL hat fatale Auswirkungen auf das tatsächliche Produktionsgeschäft. Daher ist es für Tester besonders wichtig, die Ausführung von Datenbank-SQL-Anweisungen während des Leistungstestprozesses zu überwachen und genaue Vorschläge zur Leistungsoptimierung für die Entwicklung bereitzustellen. So verwenden Sie das von der MySQL-Datenbank bereitgestellte langsame Abfrageprotokoll, um die Ausführung von SQL-Anweisungen zu überwachen und SQL-Anweisungen mit hohem Verbrauch zu finden. Im Folgenden finden Sie eine detaillierte Beschreibung der Schritte zur Verwendung des langsamen Abfrageprotokolls:

8.1 Aktivieren Sie den slow_query_log-Schalter.

8.2. Legen Sie den langsamen SQL-Domänenwert long_query_time fest. Dieser long_query_time wird verwendet, um zu definieren, wie viele Sekunden als „langsame Abfrage“ gelten Wert durch Ausführen des SQL-Befehls set long_query_time=1. Das heißt, jede Abfrage, deren Ausführung länger als 1 Sekunde dauert, wird wie folgt als langsame Abfrage betrachtet:

8.3. Überprüfen Sie den langsamen SQL-Protokollpfad

Was ist die Überwachungsmethode der MySQL-Datenbank?

8.4. Formatieren und analysieren Sie das langsame SQL-Protokoll mit dem langsamen SQL-Analysetool mysqldumpslow


8.4.1. Häufige Verwendung zum Extrahieren der 10 am häufigsten verwendeten langsamen Abfragen.

mysqldumpslow -s at -t 10 /export/data/mysql/log/slow.log
, nur die Struktur von SQL; Zeilen=1000,0 (2000), vgos_dba[vgos_dba]@[10.130.229.196]SELECT FROM sms_send WHERE service_id =N GROUP BY content LIMIT N, N

8.4.2. Detaillierte Erläuterung der Analyseergebnisse von mysqldumpslowWas ist die Überwachungsmethode der MySQL-Datenbank?

Count : Gibt die Anzahl der Ausführungen dieses Anweisungstyps an. Die obige Abbildung zeigt an, dass die SELECT-Anweisung zweimal ausgeführt wurde.

Was ist die Überwachungsmethode der MySQL-Datenbank?Zeit: Gibt die durchschnittliche Ausführungszeit (Gesamtzeit) dieser Art von Anweisung an.

Sperre: Sperrzeit 0s. Was ist die Überwachungsmethode der MySQL-Datenbank?

  • Rows:单次返回的结果数是 1000 条记录,2 次总共返回 2000 条记录。

  • 通过这个工具就可以查询出来哪些 sql 语句是慢 SQL,从而反馈研发进行优化,比如加索引,该应用的实现方式等。

    8.5、常见慢 SQL 排查

    8.5.1、不使用子查询

    SELECT FROM t1 WHERE id (SELECT id FROM t2 WHERE name='hechunyang');

    子查询在 MySQL5.5 版本里,内部执行计划器是这样执行的:先查外表再匹配内表,而不是先查内表 t2,当外表的数据很大时,查询速度会非常慢。
    在 MariaDB10/MySQL5.6 版本里,采用 join 关联方式对其进行了优化,这条 SQL 会自动转换为

    SELECT t1. FROM t1 JOIN t2 ON t1.id = t2.id;

    但请注意的是:优化只针对 SELECT 有效,对 UPDATE/DELETE 子 查询无效, 生产环境尽量应避免使用子查询。

    8.5.2、避免函数索引

    SELECT FROM t WHERE YEAR(d) >= 2016;

    由于 MySQL 不像 Oracle 那样⽀持函数索引,即使 d 字段有索引,也会直接全表扫描。
    应改为 :

    SELECT FROM t WHERE d >= ‘2016-01-01';

    8.5.3、用 IN 来替换 OR 低效查询

    SELECT FROM t WHERE LOC_ID = 10 OR LOC_ID = 20 OR LOC_ID = 30;

    高效查询 

    SELECT FROM t WHERE LOC_IN IN (10,20,30);

    8.5.4、LIKE 双百分号无法使用到索引

    SELECT FROM t WHERE name LIKE '%de%';

    应改为 :

    SELECT FROM t WHERE name LIKE 'de%';

    8.5.5、分组统计可以禁止排序

    SELECT goods_id,count() FROM t GROUP BY goods_id;

    默认情况下,MySQL 对所有 GROUP BY col1,col2… 的字段进⾏排序。如果查询包括 GROUP BY,想要避免排序结果的消耗,则可以指定 ORDER BY NULL 禁止排序。
    应改为 :

    SELECT goods_id,count () FROM t GROUP BY goods_id ORDER BY NULL;

    8.5.6、禁止不必要的 ORDER BY 排序

    SELECT count(1) FROM user u LEFT JOIN user_info i ON u.id = i.user_id WHERE 1 = 1 ORDER BY u.create_time DESC;

    应改为 :

    SELECT count (1) FROM user u LEFT JOIN user_info i ON u.id = i.user_id;

    Das obige ist der detaillierte Inhalt vonWas ist die Überwachungsmethode der MySQL-Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen