Mysql wird häufig als sehr gute kostenlose Datenbank verwendet. Normalerweise überschreiten die Daten der von uns entwickelten Projekte selten eine Million. In letzter Zeit habe ich viel Zeit damit verbracht, mich eingehend mit der Optimierung von MySQL bei Millionen von Daten zu befassen. Ich bin auf viele Probleme gestoßen und habe sie gelöst, und ich möchte sie gerne mit Ihnen teilen. Ihre wertvollen Meinungen sind willkommen!
Verwandte Empfehlungen: „MySQL-Tutorial“
Testumgebung
Die Gesamtzahl der Daten beträgt 3 Millionen und belegt etwa 3 Millionen 1 GB Speicherplatz
Datenstruktur
表1 news [ 文章表 引擎 myisam 字符集 utf-8 ] ----------------------------------------------------- idint11主键自动增加 cateint11索引 titlevarchar200标题(便于基础搜索做了索引) contenttext文章正文 dateint11文章发布时间(时间戳形式)
表2 cate [ 文章分类表 引擎 myisam 字符集 utf-8 ] ----------------------------------------------------- cate_idint11主键自动增加 cate_namevarchar200文章标题
Gesamtzahl der Abfragen
myIsam 引擎下 select count(*) as total from news //耗时 0.001秒 极快 //带上条件 select count(*) as total from news where cate = 1 耗时 0.046秒 可以接受的速度 innodb 引擎下 select count(*) as total from news //耗时 0.7秒 很慢 select count(*) as total from news where cate = 1 耗时 0.7秒 很慢
Warum? Sind die Abfragegeschwindigkeiten der beiden Motoren so unterschiedlich?
InnoDB speichert nicht die spezifische Anzahl von Zeilen in der Tabelle. Das heißt, wenn „select count(*) from table“ ausgeführt wird, muss InnoDB die gesamte Tabelle scannen, um zu berechnen, wie viele Zeilen vorhanden sind Sind.
MyISAM liest einfach die Anzahl der gespeicherten Zeilen.
Beachten Sie, dass die Operationen der beiden Tabellen vom Typ InnoDB etwas unterschiedlich sind, wenn die count(*)-Anweisung die where-Bedingung enthält . Die Spalte „col“ ist eine Spalte mit einem eindeutigen Einschränkungsindex, der sich vom Primärschlüssel der Tabelle unterscheidet. Auf diese Weise wird die Abfragegeschwindigkeit sehr hoch sein. Dadurch soll ein vollständiger Tabellenscan vermieden werden.
Zusammenfassung
MySQL verwendet count(*), um die Gesamtzahl der Daten mit 3 Millionen Datenelementen abzufragen (Myisam-Engine) und enthält Bedingungen (Indizes sind korrekt eingestellt). ) und die Laufzeit ist normal . Für häufig gelesene Daten empfehlen wir die Verwendung der myIsam-Engine.
Das obige ist der detaillierte Inhalt vonEinführung in die MySQL-Testumgebung mit Millionen von Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!