Inhaltsverzeichnis
Wählen Sie die richtige Speicher-Engine: InnoDB" >Wählen Sie die richtige Speicher-Engine: InnoDB
So konvertieren Sie eine vorhandene MyISAM-Datenbank in InnoDB:
Erstellen Sie eine InnoDB-DATEI für jede Tabelle:
Garantiert, um Daten aus dem Speicher zu lesen und Daten im Speicher zu speichern " >Garantiert, um Daten aus dem Speicher zu lesen und Daten im Speicher zu speichern
Eine ausreichend große innodb_buffer_pool_size
Wie kann sichergestellt werden, dass innodb_buffer_pool_size groß genug ist und die Daten aus dem Speicher statt von der Festplatte gelesen werden?
Ob auf dem Server genügend Speicher für die Planung vorhanden ist
Datenaufwärmphase
Lassen Sie die Daten nicht speichern in SWAP
Datenbank regelmäßig optimieren und neu erstellen" >Datenbank regelmäßig optimieren und neu erstellen
充分使用索引" >充分使用索引
查看现有表结构和索引
比如,优化用户验证表:
使用自动加索引的框架或者自动拆分表结构的框架
分析查询日志和慢查询日志" >分析查询日志和慢查询日志
Heim Schlagzeilen Wie optimiert man die MySQL-Leistung? Eine praktische Methode zur Leistungsoptimierung (als Referenz für Anfänger)

Wie optimiert man die MySQL-Leistung? Eine praktische Methode zur Leistungsoptimierung (als Referenz für Anfänger)

Jul 20, 2017 am 11:33 AM
mysql 实现 性能

MYSQL ist wahrscheinlich die beliebteste WEB-Backend-Datenbank. Die Web-Entwicklungssprachen PHP, Ruby, Python und Java haben jeweils ihre eigenen Eigenschaften. Obwohl NOSQL in letzter Zeit immer häufiger erwähnt wird, glaube ich, dass die meisten Architekten immer noch MYSQL für die Datenspeicherung wählen werden. Wie erreicht MySQL eine Leistungsoptimierung? Im folgenden Artikel werden einige nützliche Methoden zur MySQL-Leistungsoptimierung vorgestellt. Ich hoffe, dass er für alle hilfreich ist. .

Wie optimiert man die MySQL-Leistung? Eine praktische Methode zur Leistungsoptimierung (als Referenz für Anfänger)

Siehe das MySQL-Tutorial auf der chinesischen PHP-Website: „Führen Sie Sie in sechs Tagen durch MySQL, Video-Tutorial

Praktische MySQL-Methoden zur Leistungsoptimierung:

Verbessern Sie die Lese- und Schreibgeschwindigkeit der Festplatte

RAID0, insbesondere wenn Verwendung von EC2 Bei Verwendung dieser Art von virtueller Festplatte (EBS) ist es sehr wichtig, Soft-RAID0 zu verwenden.

MYSQL auf NOSQL-Art nutzen

B-TREE ist immer noch einer der effizientesten Indizes und das gesamte MYSQL ist immer noch zukunftssicher.

Verwenden Sie HandlerSocket, um die SQL-Parsing-Ebene von MYSQL zu überspringen, und MYSQL wird wirklich zu NOSQL.

Reduzieren Sie Schreibvorgänge auf der Festplatte

1 Verwenden Sie einen ausreichend großen Schreibcache innodb_log_file_size

Aber Sie müssen aufpassen, wenn Sie 1G innodb_log_file_size verwenden Servermaschine und die Wiederherstellung dauert 10 Minuten.

Es wird empfohlen, innodb_log_file_size auf 0,25 * innodb_buffer_pool_size zu setzen

2 innodb_flush_log_at_trx_commit

Diese Option steht in engem Zusammenhang mit Festplattenschreibvorgängen:

innodb_flush_log_at_trx_commit = 1 , dann wird jede Änderung geschrieben. Auf die Festplatte schreiben
innodb_flush_log_at_trx_commit = 0/2 Auf die Festplatte pro Sekunde schreiben

Wenn Ihre Anwendung keine hohe Sicherheit (Finanzsystem) beinhaltet oder die Infrastruktur sicher genug ist, oder die Transaktionen sind klein, beides. Sie können 0 oder 2 verwenden, um den Festplattenbetrieb zu verlangsamen.

3 Vermeiden Sie doppelte Schreibpufferung

innodb_flush_method=O_DIRECT
Nach dem Login kopieren

Wählen Sie die richtige Speicher-Engine: InnoDB

Es sei denn, Ihre Daten Die Tabelle für die schreibgeschützte Suche oder die Volltextsuche verwendet wird (ich glaube, dass jetzt niemand MYSQL verwenden wird, wenn es um die Volltextsuche geht), sollten Sie standardmäßig InnoDB wählen.

Möglicherweise stellen Sie bei Ihren eigenen Tests fest, dass MyISAM schneller ist als InnoDB. Dies liegt daran, dass MyISAM nur Indizes zwischenspeichert, während InnoDB keine Transaktionen unterstützt. Wenn Sie jedoch innodb_flush_log_at_trx_commit = 2 verwenden, können Sie eine nahezu gute Leseleistung erzielen (einen Hundertfachen Unterschied).

So konvertieren Sie eine vorhandene MyISAM-Datenbank in InnoDB:

mysql -u [USER_NAME] -p -e "SHOW TABLES IN [DATABASE_NAME];" | tail -n +2 | xargs -I '{}' echo "ALTER TABLE {} ENGINE=InnoDB;" > alter_table.sql
perl -p -i -e 's/(search_[a-z_]+ ENGINE=)InnoDB//1MyISAM/g' alter_table.sql
mysql -u [USER_NAME] -p [DATABASE_NAME] < alter_table.sql
Nach dem Login kopieren

Erstellen Sie eine InnoDB-DATEI für jede Tabelle:

innodb_file_per_table=1
Nach dem Login kopieren

Dadurch wird sichergestellt, dass die Datei ibdata1 nicht vorhanden ist Es wird zu groß und außer Kontrolle geraten. Besonders beim Ausführen von mysqlcheck -o –all-databases.

Garantiert, um Daten aus dem Speicher zu lesen und Daten im Speicher zu speichern

Eine ausreichend große innodb_buffer_pool_size

wird empfohlen. Die Daten sind vollständig in innodb_buffer_pool_size gespeichert, dh die Kapazität von innodb_buffer_pool_size wird entsprechend der Speichermenge geplant. Auf diese Weise können Sie Daten vollständig aus dem Speicher lesen und so die Festplattenvorgänge minimieren.

Wie kann sichergestellt werden, dass innodb_buffer_pool_size groß genug ist und die Daten aus dem Speicher statt von der Festplatte gelesen werden?

Methode 1

mysql> SHOW GLOBAL STATUS LIKE &#39;innodb_buffer_pool_pages_%&#39;;
+----------------------------------+--------+
| Variable_name                    | Value  |
+----------------------------------+--------+
| Innodb_buffer_pool_pages_data    | 129037 |
| Innodb_buffer_pool_pages_dirty   | 362    |
| Innodb_buffer_pool_pages_flushed | 9998   |
| Innodb_buffer_pool_pages_free    | 0      |  !!!!!!!!
| Innodb_buffer_pool_pages_misc    | 2035   |
| Innodb_buffer_pool_pages_total   | 131072 |
+----------------------------------+--------+
6 rows in set (0.00 sec)
Nach dem Login kopieren

Wenn Sie feststellen, dass Innodb_buffer_pool_pages_free 0 ist, bedeutet dies, dass der Pufferpool aufgebraucht ist und Sie innodb_buffer_pool_size erhöhen müssen

Mehrere andere Parameter von InnoDB:

innodb_additional_mem_pool_size = 1/200 of buffer_pool
innodb_max_dirty_pages_pct 80%
Nach dem Login kopieren

Methode 2

Oder verwenden Sie den Befehl iostat -d -x -k 1, um den Betrieb der Festplatte zu überprüfen.

Ob auf dem Server genügend Speicher für die Planung vorhanden ist

Führen Sie echo 1 > /proc/sys/vm/drop_caches aus, um den Dateicache des Betriebssystems zu löschen, und Sie können die tatsächliche Speichernutzung sehen .

Datenaufwärmphase

Standardmäßig werden Daten nur dann im innodb_buffer_pool zwischengespeichert, wenn sie einmal gelesen werden. Daher wurde die Datenbank gerade erst gestartet und muss die Daten aufwärmen und alle Daten auf der Festplatte im Speicher zwischenspeichern. Das Aufwärmen der Daten kann die Lesegeschwindigkeit erhöhen.

Für die InnoDB-Datenbank können Sie die folgende Methode verwenden, um die Daten aufzuwärmen:

1. Speichern Sie das folgende Skript als MakeSelectQueriesToLoad.sql

SELECT DISTINCT
    CONCAT(&#39;SELECT &#39;,ndxcollist,&#39; FROM &#39;,db,&#39;.&#39;,tb,
    &#39; ORDER BY &#39;,ndxcollist,&#39;;&#39;) SelectQueryToLoadCache
    FROM
    (
        SELECT
            engine,table_schema db,table_name tb,
            index_name,GROUP_CONCAT(column_name ORDER BY seq_in_index) ndxcollist
        FROM
        (
            SELECT
                B.engine,A.table_schema,A.table_name,
                A.index_name,A.column_name,A.seq_in_index
            FROM
                information_schema.statistics A INNER JOIN
                (
                    SELECT engine,table_schema,table_name
                    FROM information_schema.tables WHERE
                    engine=&#39;InnoDB&#39;
                ) B USING (table_schema,table_name)
            WHERE B.table_schema NOT IN (&#39;information_schema&#39;,&#39;mysql&#39;)
            ORDER BY table_schema,table_name,index_name,seq_in_index
        ) A
        GROUP BY table_schema,table_name,index_name
    ) AA
ORDER BY db,tb
;
Nach dem Login kopieren

2

mysql -uroot -AN < /root/MakeSelectQueriesToLoad.sql > /root/SelectQueriesToLoad.sql
Nach dem Login kopieren

3. Jedes Mal, wenn Sie die Datenbank neu starten oder wenn Sie sich vor dem Sichern der gesamten Datenbank aufwärmen müssen, führen Sie Folgendes aus:

mysql -uroot < /root/SelectQueriesToLoad.sql > /dev/null 2>&1
Nach dem Login kopieren

Lassen Sie die Daten nicht speichern in SWAP

Wenn ja, kann SWAP bei einem dedizierten MYSQL-Server deaktiviert werden. Wenn es sich um einen gemeinsam genutzten Server handelt, stellen Sie sicher, dass innodb_buffer_pool_size groß genug ist. Oder verwenden Sie einen festen Speicherplatz zum Caching und verwenden Sie die Memlock-Anweisung.

Datenbank regelmäßig optimieren und neu erstellen

mysqlcheck -o –all-databases sorgt dafür, dass ibdata1 weiter wächst. Die einzige wirkliche Optimierung besteht darin Erstellen Sie die Datentabellenstruktur neu:

CREATE TABLE mydb.mytablenew LIKE mydb.mytable;
INSERT INTO mydb.mytablenew SELECT * FROM mydb.mytable;
ALTER TABLE mydb.mytable RENAME mydb.mytablezap;
ALTER TABLE mydb.mytablenew RENAME mydb.mytable;
DROP TABLE mydb.mytablezap;
Nach dem Login kopieren

充分使用索引

查看现有表结构和索引

SHOW CREATE TABLE db1.tb1/G
Nach dem Login kopieren

添加必要的索引

索引是提高查询速度的唯一方法,比如搜索引擎用的倒排索引是一样的原理。

索引的添加需要根据查询来确定,比如通过慢查询日志或者查询日志,或者通过 EXPLAIN 命令分析查询。

ADD UNIQUE INDEX
ADD INDEX
Nach dem Login kopieren
比如,优化用户验证表:

添加索引

ALTER TABLE users ADD UNIQUE INDEX username_ndx (username);
ALTER TABLE users ADD UNIQUE INDEX username_password_ndx (username,password);
Nach dem Login kopieren

每次重启服务器进行数据预热

echo “select username,password from users;” > /var/lib/mysql/upcache.sql
Nach dem Login kopieren

添加启动脚本到 my.cnf

[mysqld]
init-file=/var/lib/mysql/upcache.sql
Nach dem Login kopieren
使用自动加索引的框架或者自动拆分表结构的框架

比如,Rails 这样的框架,会自动添加索引,Drupal 这样的框架会自动拆分表结构。会在你开发的初期指明正确的方向。所以,经验不太丰富的人一开始就追求从 0 开始构建,实际是不好的做法。

分析查询日志和慢查询日志

记录所有查询,这在用 ORM 系统或者生成查询语句的系统很有用。

log=/var/log/mysql.log
Nach dem Login kopieren

注意不要在生产环境用,否则会占满你的磁盘空间。

记录执行时间超过 1 秒的查询:

long_query_time=1
log-slow-queries=/var/log/mysql/log-slow-queries.log
Nach dem Login kopieren

相关推荐:

1. MySQL最新手册教程

2. MySQL 5.1参考手册

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MySQL: Einfache Konzepte für einfaches Lernen MySQL: Einfache Konzepte für einfaches Lernen Apr 10, 2025 am 09:29 AM

MySQL ist ein Open Source Relational Database Management System. 1) Datenbank und Tabellen erstellen: Verwenden Sie die Befehle erstellte und creatEtable. 2) Grundlegende Vorgänge: Einfügen, aktualisieren, löschen und auswählen. 3) Fortgeschrittene Operationen: Join-, Unterabfrage- und Transaktionsverarbeitung. 4) Debugging -Fähigkeiten: Syntax, Datentyp und Berechtigungen überprüfen. 5) Optimierungsvorschläge: Verwenden Sie Indizes, vermeiden Sie ausgewählt* und verwenden Sie Transaktionen.

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

So erstellen Sie eine neue Verbindung zu MySQL in Navicat So erstellen Sie eine neue Verbindung zu MySQL in Navicat Apr 09, 2025 am 07:21 AM

Sie können eine neue MySQL -Verbindung in Navicat erstellen, indem Sie den Schritten folgen: Öffnen Sie die Anwendung und wählen Sie eine neue Verbindung (Strg N). Wählen Sie "MySQL" als Verbindungstyp. Geben Sie die Hostname/IP -Adresse, den Port, den Benutzernamen und das Passwort ein. (Optional) Konfigurieren Sie erweiterte Optionen. Speichern Sie die Verbindung und geben Sie den Verbindungsnamen ein.

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

MySQL und SQL: Wesentliche Fähigkeiten für Entwickler MySQL und SQL: Wesentliche Fähigkeiten für Entwickler Apr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

So wiederherstellen Sie Daten nach dem Löschen von SQL Zeilen So wiederherstellen Sie Daten nach dem Löschen von SQL Zeilen Apr 09, 2025 pm 12:21 PM

Das Wiederherstellen von gelöschten Zeilen direkt aus der Datenbank ist normalerweise unmöglich, es sei denn, es gibt einen Backup- oder Transaktions -Rollback -Mechanismus. Schlüsselpunkt: Transaktionsrollback: Führen Sie einen Rollback aus, bevor die Transaktion Daten wiederherstellt. Sicherung: Regelmäßige Sicherung der Datenbank kann verwendet werden, um Daten schnell wiederherzustellen. Datenbank-Snapshot: Sie können eine schreibgeschützte Kopie der Datenbank erstellen und die Daten wiederherstellen, nachdem die Daten versehentlich gelöscht wurden. Verwenden Sie eine Löschanweisung mit Vorsicht: Überprüfen Sie die Bedingungen sorgfältig, um das Verhandlich von Daten zu vermeiden. Verwenden Sie die WHERE -Klausel: Geben Sie die zu löschenden Daten explizit an. Verwenden Sie die Testumgebung: Testen Sie, bevor Sie einen Löschvorgang ausführen.

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.