2017-07-22 1 views
0

Mein Verständnis ist, dass query_alloc_block_size die Blockgröße für den Abfragecache bestimmt. In meinem Fall ist es die Standardeinstellung 8Kquery_cache_size, Qcache_total_blocks und query_alloc_block_size

Wenn ich query_cache_size/Qcache_total_blocks berechnen, bekomme ich Zahlen, die von 1-4K reichen. Warum sollten sie sich im Laufe der Zeit ändern? Warum würden sie sich von query_alloc_block_size unterscheiden?

Auch der Standardwert für query_cache_min_res_unit ist 4K. Warum sollte das kleiner sein als query_alloc_block_size? Müsste es nicht ein Vielfaches von query_alloc_block_size sein?

Offensichtlich bin ich Missverständnis etwas ganz grundlegende

Antwort

1

Nun, ich kann nicht die spezifische Frage beantworten.

Meine Meinung über die QC: Schalten Sie es aus, wenn Sie auch nur eine bescheidene Anzahl von Schreibvorgängen in der Tabelle ausführen, gegen die Sie Abfragen ausführen.

Einige andere Metriken und Beratung (wenn Sie es einschalten):

  • Größe von QC - query_cache_size
    empfehlen 8E6 bis 100E6 MB. Wenn außerhalb des Bereichs, zu klein = nicht von großem Nutzen. Zu groß = zu viel Aufwand. Empfehlen Sie entweder 0 oder nicht mehr als 50M.
  • Pct Abfrage Cache frei - Qcache_free_memory/query_cache_size
    Empfehlen Sie 0 bis 100%. Wenn der Wert außerhalb des Bereichs liegt, wird der Wert von query_cache_size gesenkt. Dadurch wird der Arbeitsspeicher für andere Zwecke freigegeben, aber da der freie Speicherplatz im Laufe der Zeit variiert, kann dieser eine Messwert Sie täuschen.
  • Kein Platz mehr in QC - Qcache_lowmem_prunes/Uptime
    Empfehlen 0 bis 15/Sek. Wenn außerhalb des Bereichs, erhöhen Sie query_cache_size
  • SQL_CACHE versucht, aber ignoriert - Qcache_not_cached/Uptime
    Empfehlen 0 bis 40/Sek. Wenn außerhalb der Reichweite, überdenken Sie das Caching; tune qcache
  • Prozent der SELECTs, die nicht in der QC zwischengespeichert wurden. - Qcache_not_cached/(Qcache_hits + Com_select + Qcache_not_cached)
    Empfehlen Sie 0 bis 30%. Außerhalb des zulässigen Bereichs ist QC nicht sehr nützlich.
  • Fragmentation in Query Cache - Qcache_free_blocks * 4096/query_cache_size
    Empfehlen 0 bis 1. Wenn außerhalb des Bereichs, query_cache_min_res_unit
  • Hit-Verhältnis-Abnahme einzufügen - hoch ist gut - Qcache_hits/Qcache_inserts
    empfehlen (bevorzugen hohe Werte) 1 - 10 Wenn der Bereich außerhalb des Bereichs liegt, sollten Sie den Abfragecache deaktivieren.
  • Trefferquote - SELECTs die verwendet QC - Qcache_hits/(Qcache_hits + Com_select)
    Empfehlen (lieber hohe Werte) 25 - 100%. Wenn der Bereich außerhalb des Bereichs liegt, sollten Sie den Abfragecache deaktivieren.
  • Abfrage-Cache-Trefferrate - Qcache_hits/(Qcache_hits + Qcache_inserts + Qcache_not_cached)
    Empfehlen (lieber hohe Werte) 30 - 100%. Wenn außerhalb des zulässigen Bereichs, ist es wahrscheinlich am besten, den QC auszuschalten.
  • Abfragen zur Zeit im Cache - Qcache_queries_in_cache
    empfehlen (bevorzugen hohe Werte) 500 - 100000.
  • Fragmentation in Query Cache. - Qcache_free_blocks/Qcache_total_blocks
    Empfehlen Sie 0 bis 30%.Wenn außer Reichweite, verschiedene Dinge.
  • Ungültige Angaben/Sek. - Qcache_inserts - Qcache_queries_in_cache/Uptime
    Empfehlen Sie 0 bis 100/Sek.
  • query_alloc_block_size vs Formel - (query_cache_size - Qcache_free_memory) /Qcache_queries_in_cache/query_alloc_block_size
    empfohlen 0,5 bis 2 außerhalb des Bereichs Wenn query_alloc_block_size
  • Subquery Cache-Trefferrate einstellen - Subquery_cache_hit/(Subquery_cache_hit + Subquery_cache_miss)
    empfehlen (bevorzugen hohe Werte) 60-100%. Wenn es außerhalb des gültigen Bereichs liegt, setze SET optimizer_switch = 'subquery_cache = off';
0
  1. Wahre
  2. Wenn query_cache_size SET wurde entweder GLOBAL oder SESSION oder query_alloc_block_size eingestellt wurde entweder GLOBAL oder SESSION, das Ergebnis query_cache_size/query_alloc_block_size = Antwort könnte auch anders sein. Qcache_total_blocks ist im Moment immer das Ergebnis dieser Berechnung.
  3. Denken Sie an query_cache_min_res_unit als Mindest-Bytes zum Speichern Ihrer Abfrage-Ergebnis erforderlich. Sie können Tausende von Zählergebnissen in einer einzigen Abfrage speichern_alloc_block_size. Erwägen Sie die Verwendung von mindestens 512, um QC-Speicher zu sparen. Dieser Link wird Ihnen helfen. https://dev.mysql.com/doc/refman/5.7/en/query-cache-configuration.html