Heim  >  Fragen und Antworten  >  Hauptteil

So löschen Sie den Datenbank-Cache in MySQL 8 Innodb

<p>Ich habe versucht, dieselbe Abfrage mehrmals für dieselbe MySQL 8-Datenbank und -Tabelle auszuführen. </p> <p>Ich muss Experimente durchführen, um festzustellen, ob die Optimierung der Abfrage und/oder der Tabelle selbst die Leistung verbessern kann. Allerdings ist die Antwortzeit nach dem ersten Versuch viel schneller, ich denke, weil die Daten zwischengespeichert werden. </p> <pre class="brush:php;toolbar:false;">mysql 8 innodb</pre> <p>Welche Optionen habe ich, um den Cache zu leeren, um die Daten von Grund auf zu erhalten? </p> <hr /> <p>Es scheint, dass sich die zuvor vorgeschlagenen Antworten alle auf MySQL 5 und nicht auf MySQL 8 beziehen. Die meisten Befehle scheinen mittlerweile veraltet zu sein. </p> <p>Löschen Sie den MySQL-Abfragecache, ohne den Server neu zu starten</p>
P粉571233520P粉571233520419 Tage vor577

Antworte allen(2)Ich werde antworten

  • P粉195402292

    P粉1954022922023-08-28 22:21:18

    如果查询是在生产中频繁运行的查询,那么我认为您的目标是落后的。我建议您应该运行查询两次,并使用第二次查询的计时。这样,它更接近生产将看到的内容——数据已在缓存中。

    (Bill 解释说“查询缓存”无关紧要,“缓冲池”相关。)

    这是我喜欢的一种测试查询的技术,无需构建足够大的表来查看时间变化:

    FLUSH STATUS;
    SELECT ...;
    SHOW SESSION STATUS LIKE 'Handler%';

    这些数字是数据或索引行的实际读/写次数。数字可能看起来像输出行数、表中的行数等。这可以让您了解是否存在例如全表(或索引)扫描。非零“Handler_write%”值表示需要一个临时表(或多个表)。

    如果您的版本可用,另请参阅EXPLAIN ANALYZE

    更多提示:索引食谱

    Antwort
    0
  • P粉805931281

    P粉8059312812023-08-28 15:59:55

    您链接到的问题是关于查询缓存的,该缓存在 MySQL 8.0 中已被删除,因此无需再清除它。

    您的措辞表明您正在询问缓冲池,这与查询缓存不同。缓冲池缓存数据和索引页,而查询缓存(如果存在)缓存查询结果。

    没有命令可以在不重新启动 MySQL 服务器的情况下清除缓冲池。页面一直缓存在缓冲池中,直到被其他页面驱逐。

    缓冲池位于 RAM 中,因此如果重新启动 MySQL 服务器进程,其内容将被清除。因此,如果您想从头开始,则需要重新启动该进程(不需要重新启动整个操作系统,只需重新启动 MySQL 服务)。

    需要注意的是,在 MySQL 8.0 中,重新启动时缓冲池的内容不会完全清除。缓冲池内容的一定百分比在关闭期间保存,并在启动时自动重新加载。此功能默认启用,但您可以选择禁用它。

    了解更多相关信息:

    Antwort
    0
  • StornierenAntwort