Heim  >  Artikel  >  Datenbank  >  Einführung in die MySQL-Testumgebung mit Millionen von Daten

Einführung in die MySQL-Testumgebung mit Millionen von Daten

藏色散人
藏色散人nach vorne
2019-04-17 17:19:453771Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:hcoder.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen