Wie lautet die Formel zur Berechnung der Schlüsseleffizienz, des verwendeten Schlüsselpuffers und des Abfrage-Cache-Hitrats in MySql?

7

Jetzt habe ich einige Daten aus der Tabelle 'GLOBAL_STATUS' und 'GLOBAL_VARIABLES' von MySQL DB mit dem Namen information_schema abgerufen.

Ich kann abrufen

  • key_buffer_size
  • key_cache_block_size
  • query_cache_limit
  • Query_cache_size ... und so weiter ...

    Ich weiß jedoch nicht, wie ich die Rate der Key-Trefferquote , des verwendeten Schlüsselpuffers und der Abfrage-Cache-Trefferquote berechnen soll

So kann jemand die Formel über diese erhalten, wie z
? / ? * 100% = ?

Xia Yu
quelle

Antworten:

11

Als Referenz versuche ich auch einige Konzepte zu erklären.

Schlüsseltrefferquote

Grundsätzlich gibt es zwei Arten der Schlüsseltrefferquote

1.Key Read Effizienz

Schlüssellesevorgänge: Die Anzahl der physischen Lesevorgänge eines Schlüsselblocks von der Festplatte.

Schlüsselleseanforderung: Die Anzahl der Anforderungen zum Lesen eines Schlüsselblocks aus dem Cache.

Key Read Efficiency = [1 - (Key_reads/Key_read_requests)]*100

Schlüsselleseeffizienz: Das Verhältnis der Anzahl der physischen Lesevorgänge eines Schlüsselblocks aus dem Cache zur Anzahl der Anforderungen zum Lesen eines Schlüsselblocks aus dem Cache in Prozent. Die MySQL-Leistung ist gut, wenn der Wert der Key Read-Effizienz 90 Prozent und mehr beträgt. Durch Erhöhen der Größe des Caches wird der Wert der Schlüsselleseeffizienz und damit die Leistung verbessert.

2. Schlüsselschreibeffizienz

Schlüsselschreibvorgänge: Die Anzahl der physischen Schreibvorgänge eines Schlüsselblocks auf die Festplatte.

Schlüsselschreibanforderung: Die Anzahl der Anforderungen zum Schreiben eines Schlüsselblocks in den Cache.

Key Write Efficiency=(Key_write/Key_write_requests)*100

Schlüsselschreibeffizienz: Das Verhältnis der Anzahl der physischen Schreibvorgänge eines Schlüsselblocks zum Cache zur Anzahl der Anforderungen zum Schreiben eines Schlüsselblocks in den Cache in Prozent. Für eine gute Leistung des MySQL-Servers muss der Wert der Key Write-Effizienz 90 Prozent und mehr betragen. Wenn weniger gefunden wird, können Sie den Cache vergrößern, um die Leistung zu verbessern.

Verwendeter Schlüsselpuffer

Suchen Sie den Wert von key_buffer_size als show variables like 'key_buffer_size';

konvertiere es in MB.

Finden Sie den All MyISAM-Index Größe:

SELECT SUM (INDEX_LENGTH) / (1024 * 1024) 'Indexgröße' FROM information_schema.TABLES wobei ENGINE = 'MyISAM' UND TABLE_SCHEMA NOT IN ('mysql', 'information_schema');

Finden

(Index Size)/key_buffer_size(in MB) * 100

Wenn das Ergebnis (<= 100) ist, werden alle Indizes in key_buffer zwischengespeichert

Wenn das Ergebnis (> 100) ist, werden nicht alle Indizes in key_buffer zwischengespeichert. Sie können die Leistung steigern, indem Sie key_buffer_size erhöhen.

Abfrage-Cache-Trefferquote

Trefferquote = Qcache_hits / (Qcache_hits + Com_select) * 100

Einfügerate = Qcache_inserts / (Qcache_hits + Com_select) * 100

Bereinigungsrate = (Qcache_lowmem_prunes / Qcache_inserts) * 100

Abdul Manaf
quelle
Sehr schön. Du lässt mich fragen. Vielen Dank, dies ist mein erstes Mal, dass ich eine Frage auf Englisch stelle!
Xia Yu
oh toll !!! Ich hoffe, diese Antwort wird dir helfen.
Abdul Manaf
Warum ist die Schlüsselleseeffizienz "1-", die Schlüsselschreibleistung jedoch nicht?
0

Für diejenigen, die MySQL Administrator verwenden, ist hier ein schönes Skript, das ich gefunden habe und das die wichtigsten interessanten Werte zeigt.

Funktionierte perfekt für mich (Win7 x64, MySQL 5.1.3 unter Debian).

Danke an den, der es geschrieben hat!

Benj
quelle
0

Ich bin hier nicht häufig, aber die Formel in der Top-Antwort für die Trefferquote ist nicht richtig. Die richtige Formel finden Sie unter Optimieren von MySQL query_cache_size .

mschuett
quelle
Ich schätze, dass Sie nicht den nötigen Ruf haben, um Kommentare zu schreiben, aber bald werden Sie es tun!
Max Vernon
0

(Jetzt ist es 2019.)

Ich schlage vor, dass die Frage strittig ist, da Sie MyISAM nicht verwenden sollten. Stattdessen sollten Sie InnoDB verwenden, das unterschiedliche Metriken aufweist.

Der Abfrage-Cache wurde aus MySQL 8.0 entfernt. Und es ist in vielen Multi-Master-Setups, einschließlich Galera und Gruppenreplikation, nicht verwendbar.

Rick James
quelle