Mysql 5.7 vs. 5.5: Einfache Abfrage dauert 50-mal länger

Mysql 5.7 vs. 5.5: Einfache Abfrage dauert 50-mal länger

Ich habe eine Datenbank „Algebra“ mit einer Tabelle „Fragen“ mit 1.033.990 Zeilen. Die Datensätze haben ein Attribut „gelöst“, das INT ist. Ich habe eine einfache Abfrage

select count(*) from questions where solved = 0

Ich habe zwei Server mit ähnlichen CPUs. Auf beiden Servern sind die Tabellen gleich. (Die Datenbank ist eine Replik der Produktion). Sie befinden sich auf SSDs. Ein Server hat Ubuntu 14.04 mit MySQL 5.5.49 und ein anderer Server hat Ubuntu 16.04 mit MySQL 5.7.12.

Das Problem besteht darin, dass diese Abfrage bei MySQL 5.5 nur 0,009 s dauert, bei MySQL 5.7 jedoch 0,304 s. Das ist 34-mal LANGSAMER!!!

Die Abfragepläne sind ungefähr ähnlich:

Langsamer Server:

id      select_type     table   partitions      type    possible_keys   key     key_len ref     rows    filtered        Extra
1       SIMPLE  questions       NULL    index   NULL    by_topic_solved 97      NULL    1033990 10.00   Using where; Using index

Schneller Server:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  questions   index   NULL    by_topic_solved 97  NULL    1033989 Using where; Using index

Warum das so sein könnte, ist mir ein Rätsel. Ich habe bei diesem neuen 5.7-Setup andere, kompliziertere Leistungsprobleme gesehen, aber dies ist das einfachste Problem, das man in Bezug auf die zugrunde liegende Abfrage angehen muss.

Ich versuche, die Erklärung dafür zu finden oder wo ich anfangen soll. my.cnf war bei beiden ziemlich ähnlich. Für Vorschläge bin ich dankbar.

Antwort1

Ich habe dieses Problem vollständig verstanden. Was sich geändert hat, ist, dass im neuen MySQL der Abfragecache aufgrund der Standardeinstellung query_cache_type = OFF deaktiviert ist. Als ich den Abfragecache durch Festlegen von query_cache_type=1 wieder aktiviert habe, war die Leistung sofort wieder besser. Da meine Site 100-mal mehr SELECT-Abfragen als INSERT/UPDATE-Abfragen verwendet, ist die Verwendung des Abfragecaches für mich sinnvoll. Danke, dass Sie mich darauf hingewiesen haben!

verwandte Informationen