Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

藏色散人
Freigeben: 2019-04-17 17:19:45
nach vorne
3767 Leute haben es durchsucht

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文章发布时间(时间戳形式)
Nach dem Login kopieren
表2 cate [ 文章分类表 引擎 myisam 字符集 utf-8 ]
-----------------------------------------------------
cate_idint11主键自动增加
cate_namevarchar200文章标题
Nach dem Login kopieren

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秒 很慢
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:hcoder.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!