Heim > Datenbank > MySQL-Tutorial > Hauptteil

MySQL-Optimierung: Vertiefte Kenntnisse über Speicher-Engines und Indexoptimierung

高洛峰
Freigeben: 2016-12-02 13:37:42
Original
1537 Leute haben es durchsucht

Vergleichen Sie die Speichermethoden der beiden Speicher-Engines in der Datenbank:

MyIsam: Wenn Sie genau hinschauen, werden Sie feststellen, dass Datenbanken, die diese Engine verwenden, im Allgemeinen mindestens drei Dateien enthalten, **.frm,* *.myi, (Put-Index) **.myd (Put-Daten), suchen Sie über den Index (**.myi-Datei) die Zeile in der Datendatei, in der die Daten gespeichert sind, wodurch eine Zeilenrückgabe generiert wird. Wenn es keine Zeilenrückgabe gibt, also keine Indexabdeckung, ist die Geschwindigkeit sehr hoch

InnoDb: Es handelt sich um eine Datei, der Index und die Daten werden zusammengestellt, was einen Clustered-Index darstellt Die Datei ist groß, die Festplatte dreht sich und die Suche ist relativ gering. Dies erzeugt auch eine ausgelagerte Blockdatei

Tabelle erstellen: Sie enthält den Primärschlüsselindex und den gemeinsamen Index unter Verwendung der Myisam-Engine bzw. der Innodb-Engine


Tabelle erstellen (
id int auto_increment ,
ver int(11) default null,
content varchar(1000) not null,
intro varchar(1000) not null,
Primary Key(id) ,
key idver(id,ver)

)engine = myisam default charset = utf8;



Tabelle smth1 erstellen (
id int auto_increment ,
ver int(11) default null,
content varchar(1000) not null,
intro varchar(1000) not null,
primär key(id),
key idver(id,ver)

)engine = innodb default charset = utf8;
Die Dateiverzeichnisanalyse erfolgt wie oben:

MySQL-Optimierung: Vertiefte Kenntnisse über Speicher-Engines und Indexoptimierung

Erstellen Sie nun zwei gespeicherte Prozeduren, um 10.000 Daten einzufügen


Erstellen Sie die Prozedur smthTest()
begin
deklarieren Sie num int default 1050 ;
while num set num := num +1;
insert into smth value (num ,num,'I am step','who am I');
end while ;

end;


create procedure smthTest1()
begin
num int default 0 deklarieren;
while num set num := num +1;
in smth1-Werte einfügen (num ,num,'Ich bin Schritt','Wer bin ich');
end while ;

end;


Profilerstellung = 1; detaillierte Informationen anzeigen


Ergebnisanalyse ausführen:

MySQL-Optimierung: Vertiefte Kenntnisse über Speicher-Engines und Indexoptimierung

Ergebnisse der Aussageanalyse:

mysql> erklären 
 wählen Sie ID, Version, Inhalt aus Smth aus, sortiert nach ID;  
+----+-------------+-------+------+------------ ---+------+---------+------+------+--------------- -+
| id | select_type | Tisch | Typ | mögliche_schlüssel | Schlüssel  | key_len | ref  | Reihen | Extra          |
+----+------------+-------+------+---------- -----+------+---------+------+------+------------- ---+
|  1 | EINFACH      | etw  | ALLE  | NULL          | NULL | NULL    | NULL | 9946 | Filesort verwenden |
+----+-------------+-------+------+--------- ------+------+---------+------+------+------------ ----+
1 Zeile im Satz
mysql> erklären
 wählen Sie id,ver,content aus smth Reihenfolge nach id,ver;
+----+-------------+-------+- -----+---------------+------+---------+------+---- ---+----------------+
| id | select_type | Tisch | Typ | mögliche_schlüssel | Schlüssel  | key_len | ref  | Reihen | Extra          |
+----+------------+-------+------+---------- -----+------+---------+------+------+------------- ---+
|  1 | EINFACH      | etw  | ALLE  | NULL          | NULL | NULL    | NULL | 9946 | Filesort verwenden |
+----+-------------+-------+------+--------- ------+------+---------+------+------+------------ ----+
1 Zeile im Satz
mysql> erklären
 wählen Sie ID, Version, Inhalt aus smth1 aus, sortieren Sie nach ID;
+----+-------------+-------+--- ----+---------------+---------+---------+------+-- ----+-------+
| id | select_type | Tisch | Geben Sie  | ein mögliche_schlüssel | Schlüssel     | key_len | ref  | Reihen | Extra |
+----+-------------+-------+-------+--------- ------+---------+---------+------+------+-------+
|  1 | EINFACH      | smth1 | Index | NULL          | PRIMÄR | 4       | NULL | 9932 | NULL  |
+----+-------------+-------+-------+--------- ------+---------+---------+------+------+-------+
1 Zeile im Satz
MySQL> erklären, id auswählen
,ver,Inhalt aus smth1 sortieren nach id,ver;
+----+-------------+-------+- -----+---------------+------+---------+------+---- ---+----------------+
| id | select_type | Tisch | Typ | mögliche_schlüssel | Schlüssel  | key_len | ref  | Reihen | Extra          |
+----+------------+-------+------+---------- -----+------+---------+------+------+------------- ---+
|  1 | EINFACH      | smth1 | ALLE  | NULL          | NULL | NULL    | NULL | 9932 | Filesort verwenden |
+----+-------------+-------+------+--------- ------+------+---------+------+------+------------ ----+

MySQL-Optimierung: Vertiefte Kenntnisse über Speicher-Engines und Indexoptimierung

mysql> erklären
 ID aus etw auswählen, Reihenfolge nach ID;
+----+-------------+-------+------- +---------------+---------+---------+------+------ +-------------+
| id | select_type | Tisch | Geben Sie  | ein mögliche_schlüssel | Schlüssel     | key_len | ref  | Reihen | Extra       |
+----+-------------+-------+-------+--------- ------+---------+---------+------+------+--------- ----+
|  1 | EINFACH      | etw  | Index | NULL          | PRIMÄR | 4       | NULL | 9946 | Index verwenden |
+----+-------------+-------+-------+-------- -------+---------+---------+------+------+-------- -----+
1 Zeile im Satz
mysql> erklären
 Wähle die ID aus der Reihenfolge nach ID aus, ver;
+----+-------------+-------+----- --+---------------+-------+---------+------+------ +-------------+
| id | select_type | Tisch | Geben Sie  | ein mögliche_schlüssel | Schlüssel   | key_len | ref  | Reihen | Extra       |
+----+-------------+-------+-------+--------- ------+-------+---------+------+------+----------- --+
|  1 | EINFACH      | etw  | Index | NULL          | idver | 9       | NULL | 9946 | Index verwenden |
+----+-------------+-------+-------+-------- -------+-------+---------+------+------+---------- ---+
1 Zeile im Satz
mysql> erklären
 ID aus smth1 auswählen und nach ID sortieren;
+----+-------------+-------+------- +---------------+---------+---------+------+------ +-------------+
| id | select_type | Tisch | Geben Sie  | ein mögliche_schlüssel | Schlüssel     | key_len | ref  | Reihen | Extra       |
+----+-------------+-------+-------+--------- ------+---------+---------+------+------+--------- ----+
|  1 | EINFACH      | smth1 | Index | NULL          | PRIMÄR | 4       | NULL | 9932 | Index verwenden |
+----+-------------+-------+-------+-------- -------+---------+---------+------+------+-------- -----+
1 Zeile im Satz
mysql> erklären
 ID aus smth1 auswählen, Reihenfolge nach ID,ver;
+----+-------------+-------+----- --+---------------+-------+---------+------+------ +-------------+
| id | select_type | Tisch | Geben Sie  | ein mögliche_schlüssel | Schlüssel   | key_len | ref  | Reihen | Extra       |
+----+-------------+-------+-------+--------- ------+-------+---------+------+------+----------- --+
|  1 | EINFACH      | smth1 | Index | NULL          | idver | 9       | NULL | 9932 | Index verwenden |
+----+-------------+-------+-------+-------- -------+-------+---------+------+------+---------- ---+
1 Reihe im Satz

Verwandte Etiketten:
Quelle:php.cn
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