MySQL geringe Table Cache Effizienz

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
xcomm
Beiträge: 804
Registriert: 21.09.2003 05:12:01
Wohnort: Europe
Kontaktdaten:

MySQL geringe Table Cache Effizienz

Beitrag von xcomm » 20.04.2010 13:54:01

Hi Gemeinde,

ich habe Folgendes in MySQL:

Code: Alles auswählen

| Open_tables             | 84     | 
| Opened_tables           | 5811   |
Mein table_cache ist schon Recht hoch:

Code: Alles auswählen

| table_cache                | 17900     | 
Tabellen habe ich nur ca. 100 und max_connections sind auch nur 100.

Code: Alles auswählen

mysql> SELECT COUNT(*) FROM information_schema.TABLES;
|       96 | 

Updates sind eher selten. Und FLUSH TABLES commands werden auch nicht wirklich verwendet.

Code: Alles auswählen

mysql> SHOW GLOBAL STATUS LIKE "Flush_commands%";

| Flush_commands | 1     | 

Was mysqltuner.pl dazu sagt:

Code: Alles auswählen

[!!] Table cache hit rate: 1% (84 open / 5K opened)
File Descriptors sollte das System genug haben:

Code: Alles auswählen

cat /proc/sys/fs/file-max
151959
Weiß jemand, warum so wenige Tabellen gecached werden?

Regards, xcomm

Benutzeravatar
dominator
Beiträge: 790
Registriert: 26.08.2003 10:05:37
Wohnort: Neuerdings meistens im Bierparadies Oberfranken

Re: MySQL geringe Table Cache Effizienz

Beitrag von dominator » 21.04.2010 08:35:10

Was liefert denn ein

Code: Alles auswählen

SHOW STATUS LIKE "Qcache%"
:?:
gruss + viel erfolg

Michael
--
Aus aktuellem Anlass :
"Der Glubb is a Depp" - Fränkische Weisheit

Benutzeravatar
xcomm
Beiträge: 804
Registriert: 21.09.2003 05:12:01
Wohnort: Europe
Kontaktdaten:

Re: MySQL geringe Table Cache Effizienz

Beitrag von xcomm » 21.04.2010 11:15:35

Hi Dominator,

danke für Deine Antwort!

Code: Alles auswählen

mysql> SHOW STATUS LIKE "Qcache%";
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 9         | 
| Qcache_free_memory      | 108674896 | 
| Qcache_hits             | 4877501   | 
| Qcache_inserts          | 634703    | 
| Qcache_lowmem_prunes    | 0         | 
| Qcache_not_cached       | 94094     | 
| Qcache_queries_in_cache | 10010     | 
| Qcache_total_blocks     | 20065     | 
+-------------------------+-----------+
8 rows in set (0.01 sec)
Regards, xcomm

Benutzeravatar
dominator
Beiträge: 790
Registriert: 26.08.2003 10:05:37
Wohnort: Neuerdings meistens im Bierparadies Oberfranken

Re: MySQL geringe Table Cache Effizienz

Beitrag von dominator » 22.04.2010 09:01:01

| Qcache_not_cached | 94094 |
Du hast viele Abfragen, die nicht zwischen gespeichert werden (können) :!:

Ich vermute mal, du hast viele Updates in deinen Tabellen, dann bringt ein Abfragen-Cache natürlich nicht viel :
If a table changes, all cached queries that use the table become invalid and are removed from the cache.
Alles Weitere findest du hier : http://dev.mysql.com/doc/refman/5.1/en/ ... ation.html :idea:
| Qcache_lowmem_prunes | 0 |
Bei deinem riesengroßen Cache kein Wunder ;-)
gruss + viel erfolg

Michael
--
Aus aktuellem Anlass :
"Der Glubb is a Depp" - Fränkische Weisheit

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: MySQL geringe Table Cache Effizienz

Beitrag von rendegast » 22.04.2010 20:44:24

Das Skript mysql tuning primer gibt auch Ratschläge für Änderungen:
https://launchpad.net/mysql-tuning-primer/+milestones
Das System sollte dazu schon einige Zeit gelaufen sein.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

filou
Beiträge: 190
Registriert: 02.02.2004 21:21:40

Re: MySQL geringe Table Cache Effizienz

Beitrag von filou » 22.04.2010 22:58:27

Hi xcomm,

erstmal - bisschen wenig an Informationen bzgl. deiner DB.
Hast du überhaupt Performance Probleme bei der DB, oder ist dir nur grad dieser Wert aufgefallen?
Wie auch immer... Setze den wert von

Code: Alles auswählen

table_open_cache 
table_cache 
auf einen vernünftigen Wert. Du sagst, du hast wenig Tabellen. Dann nimm Anzahl Tabellen * 2, oder 3. Runde ruhig großzügig auf..

Starte deine DB wieder mit den neuem Wert.

Code: Alles auswählen

open_tables
sollte jetzt schon einen Wert haben.

Code: Alles auswählen

opened_tables
sollte nicht wachsen.
Jetzt musst du beobachten - was macht deine Applikation mit der DB und wie verhält sich der Wert

Code: Alles auswählen

opened_tables
Steigt dieser Wert sehr schnell an, ist das eher schlecht und du musst genauer hinsehen, warum und wieso. Welche Abfragen laufen gerade, wie ist deine Systemauslastung, was passiert mit deinem RAM, mit SWAP, werden tmp Tabellen auf die Platten geschrieben....
Steigt der Wert alle 2 Monate mal an, würde ich mir nicht unbedingt Sorgen machen.

Warum jetzt der Query Cache hier genannt wird, kann ich nicht nach vollziehen. Dieser hat nichts mit dem table_cache zu tun und ist eine andere Baustelle.

Code: Alles auswählen

Qcache_lowmem_prunes
Ähem - Hier ist alles in Ordnung! Hier steht die Anzahl der Abfragen, die wegen Speichermangels aus dem QCache gelöscht wurden. Da bei dir der Wert 0 ist, sehe ich hier kein Problem.
Warum ein Query nicht gecached wird, kann mehrere Gründe haben. Aber ds war ja nicht die Intention deiner Frage.

Benutzeravatar
dominator
Beiträge: 790
Registriert: 26.08.2003 10:05:37
Wohnort: Neuerdings meistens im Bierparadies Oberfranken

Re: MySQL geringe Table Cache Effizienz

Beitrag von dominator » 23.04.2010 08:54:09

Warum jetzt der Query Cache hier genannt wird, kann ich nicht nach vollziehen. Dieser hat nichts mit dem table_cache zu tun und ist eine andere Baustelle.
Das stimmt, ich habe vorschnell den Topic ein bisschen erweitert :hail:
gruss + viel erfolg

Michael
--
Aus aktuellem Anlass :
"Der Glubb is a Depp" - Fränkische Weisheit

Antworten