Heim Datenbank MySQL-Tutorial Zusammenfassung der MySQL-Datenbankoptimierungsmethoden (muss gelesen werden)

Zusammenfassung der MySQL-Datenbankoptimierungsmethoden (muss gelesen werden)

Aug 18, 2018 pm 05:52 PM
mysql 优化

Der Inhalt dieses Artikels ist eine Zusammenfassung der MySQL-Datenbankoptimierungsmethoden. Ich hoffe, dass er für Freunde hilfreich ist.

Das Lernen hat kein Ende und die Datenbankoptimierung ist in verschiedene Aspekte unterteilt. Hier habe ich eine relativ vollständige Zusammenfassung erstellt und sie mit Kollegen geteilt, die arbeiten oder studieren.

Datenbankoptimierung gliedert sich in die folgenden sieben Aspekte:

1 , Das Design der Tabelle muss den Drei Normalformen entsprechen (Geeignete umgekehrte drei Normalformen können ebenfalls verwendet werden);

2 Einen großen Einfluss auf die Abfragegeschwindigkeit haben Indizes (Primärschlüsselindex, gewöhnlicher Index, Volltextindex

3). Transaktionen usw.;

4, Lese- und Schreibtrennung (Master-Slave-Datenbank);

5 >

6. Tabellenpartitionierung (

Tabellenaufteilung: Teilen Sie eine große Tabelle in mehrere Tabellen. Partitionieren: Weisen Sie den Inhalt einer Tabelle verschiedenen Speicherbereichen zu

7 die MySQL-Server-Hardware.

Als nächstes werde ich die Optimierungsmethode im Detail erläutern.

Erste und dritte Normalform

Erste Normalform:

Atomizität: Die Felder in der Tabelle können nicht mehr geteilt werden. Solange es sich um eine relationale Datenbank handelt, entspricht sie natürlich der ersten Normalform

Relationale Datenbank (mit den Konzepten von Zeilen und Spalten). )

: MySQL, SQL Server, Oracle, DB2, Infomix, Sybase, Postgresql. Beim Entwerfen müssen Sie zuerst den bibliotheks-> tabellen-> feld-> spezifischen Datensatz (Inhalt) haben: Beim Speichern von Daten müssen die Felder entworfen werden .

Nicht relationale Datenbank (allgemein als NoSQL-Datenbank bezeichnet): Memcache, Redis, Momgodb usw.

Zweite Normalform:

Es gibt keine identischen Datensätze in einer Tabelle, die mithilfe eines Primärschlüssels gelöst werden können

Dritte Normalform:

Redundante Daten können nicht in der Tabelle gespeichert werden


Entwurf mit drei Paradigmen umkehren:

Albumtabelle tr>
ID Albumname
相册表
ID 相册名称 相册浏览量
1 生活 100
2 工作照 100
照片表
ID 照片名称 相册ID 浏览量
1 我的小狗 1 49
2 我的小猫 1 51
3 我的同事 2 100
Albumaufrufe
1 LebenFotos 100
2 Arbeitsfoto 100

Wenn wir die Aufrufe eines Albums berechnen möchten, können wir das Feld „Albumansichten“ zur Albumtabelle hinzufügen und beim Durchsuchen von Fotos gleichzeitig die Albumansichten aktualisieren.

2. Langsame Abfrage aktivieren

Die langsame MySQL-Abfrage ist standardmäßig deaktiviert, SQL-Anweisungen, die länger als 10 Sekunden dauern, ebenfalls standardmäßig aufgezeichnet.

1. Sehen Sie sich die langsame Abfragezeit an:

show variables like ‘long_query_time’;
Nach dem Login kopieren

2. Ändern Sie die langsame Abfragezeit :

set long_query_time=2;
Nach dem Login kopieren

3. Testen Sie die folgende Funktion:

benchmark(count,expr)   函数可以测试执行count次expr操作需要的时间
Nach dem Login kopieren

3. Index erstellen

1 Funktionen:

(1) Es gibt höchstens einen Primärschlüsselindex in einer Tabelle

(2) Ein Primärschlüsselindex kann auf mehrere Spalten verweisen

( 3) Die Spalten des Primärschlüsselindex dürfen weder doppelte Werte noch Nullwerte haben

(4) Der Primärschlüsselindex ist hocheffizient.

2. Merkmale eindeutiger Indizes:

(1) Eine Tabelle kann mehrere eindeutige Indizes enthalten

(2) Ein eindeutiger Index kann auf mehrere Spalten verweisen,

(3) Wenn nicht null im eindeutigen Index angegeben ist, kann die Spalte leer sein und es können mehrere Nullen gleichzeitig vorhanden sein ,

(4) Der eindeutige Index ist effizienter.

3. Gewöhnlicher Index:

Die Verwendung eines gewöhnlichen Index dient hauptsächlich der Verbesserung der Abfrageeffizienz

4, Volltextindex

Der mit MySQL gelieferte Volltextindex mysql5.5 unterstützt kein Chinesisch, sondern Englisch. Außerdem muss die Speicher-Engine der Tabelle myisam sein . Wenn Sie Chinesisch unterstützen möchten, gibt es zwei Möglichkeiten:

(1) Verwenden Sie die chinesische Aphinx-Version coreseek (um den Volltextindex zu ersetzen)

(2) Plug-in mysqlcft.

Hauptprobleme beim Hinzufügen eines Index:

(1) Für Felder, die häufig als Abfragebedingungen verwendet werden, sollten Indizes erstellt werden

Die Eindeutigkeit ist zu hoch. Schlechte Felder eignen sich nicht für die separate Erstellung von Indizes, auch wenn sie häufig als Abfragebedingungen verwendet werden, Felder, die sehr häufig aktualisiert werden, eignen sich nicht für die separate Erstellung von Indizes

(2) erscheint nicht in der WHERE-Klausel. Felder sollten nicht indiziert werden. Obwohl die Abfragegeschwindigkeit verbessert wird,

wird die Effizienz von Hinzufügungen und Löschungen beeinträchtigt . Und die Indexdatei wird Speicherplatz beanspruchen.

4. Tabellen und Partitionen

Vertikale Partitionstabelle (Inhaltshaupttabelle + zusätzliche Tabelle):

Inhaltshaupttabelle: speichert einige öffentliche Informationen verschiedener Daten, wie z. B. den Namen der Daten, die Hinzufügungszeit usw.

Sie können mehrere zusätzliche Tabellen verwenden, die eindeutige Informationen zu einigen Daten speichern.

Der Hauptgrund: Auf die Daten in der Inhaltsstammtabelle wird häufig zugegriffen.

Features: verschiedene Tabellenstrukturen

Horizontale Tabellenaufteilung:

Übersetzen Sie die Tabellendaten sind in verschiedenen Tabellen vorhanden .

Eigenschaften: Gleiche Tabellenstruktur

Partition:

besteht darin, eine Tabelle in verschiedenen Bereichen der Festplatte zu speichern, aber es ist immer noch eine Tabelle.

Grundkonzepte:

(1)Bereich – In diesem Modus können Daten in verschiedene Bereiche unterteilt werden. Beispielsweise kann eine Tabelle nach Jahr in mehrere Partitionen unterteilt werden.

(2)Liste (vordefinierte Liste) – In diesem Modus kann das System Daten nach dem Wert einer vordefinierten Liste aufteilen.

(3)Hash (Hash) – Dieser Modus ermöglicht die Berechnung des Hash-Schlüssels einer oder mehrerer Spalten der Tabelle und schließlich der Daten, die verschiedenen Werten von entsprechen Diese Hash-Code-Bereiche sind unterteilt. Sie können beispielsweise eine Tabelle erstellen, die den Primärschlüssel der Tabelle partitioniert.

(4)Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。

分区表的限制:

(1)只能对数据表的整型列进行分区,或者数据列可以通过分区函数转化成整型列。

(2)最大分区数目不能超过1024。

(3)如果含有唯一索引或者主键,则分区列必须包含在所有的唯一索引或者主键在内。

(4)按日期进行分区很非常适合,因为很多日期函数可以用。但是对于字符串来说合适的分区函数不太多。

五、并发处理的锁机制

锁机制:在执行时,只有一个用户获得锁,其他用户处于阻塞状态,需要等待解锁。

mysql 的锁有以下几种形式:

表级锁:开销小,加锁快,发生锁冲突的概率最高,并发度最低。myisam引擎属于这种类型。

行级锁:开销大,加锁慢,发生锁冲突的概率最低,并发度也最高。innodb属于这种类型。

表锁的演示:

1.对myisam表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其他进程的操作。

2.表添加读锁后,其他进程对该表只能查询操作,修改时会被阻塞。

3.当前进程,能够执行查询操作,不能执行修改操作。不能对没有锁定的表进行操作。

4.锁表的语法:

lock table 表名 read|write
Nach dem Login kopieren

5.也可以锁定多个表

6.对myisam表的写操作(加写锁),会阻塞其他进程对锁定表的任何操作,不能读写,

7.表加写锁后,则只有当前进程对锁定的表,可以执行任何操作。其他进程的操作会被阻塞。

 行锁的演示:

1.innodb存储引擎是通过给索引上的索引项加锁来实现的,这就意味着:只有通过索引条件检索数据,innodb才会使用行级锁,否则,innodb使用表锁。

2.开启行锁后,当前进程在针对某条记录执行操作时,其他进程不能操作和当前进程相同id的记录。

php里面有文件锁,在实际的项目中多数使用文件锁,因为表锁,会阻塞,当对一些表添加写锁后,其他进程就不能操作了。这样会阻塞整个网站,会拖慢网站的速度。

相关推荐:



Das obige ist der detaillierte Inhalt vonZusammenfassung der MySQL-Datenbankoptimierungsmethoden (muss gelesen werden). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen 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: Die einfache Datenverwaltung für Anfänger MySQL: Die einfache Datenverwaltung für Anfänger Apr 09, 2025 am 12:07 AM

MySQL ist für Anfänger geeignet, da es einfach zu installieren, leistungsfähig und einfach zu verwalten ist. 1. Einfache Installation und Konfiguration, geeignet für eine Vielzahl von Betriebssystemen. 2. Unterstützung grundlegender Vorgänge wie Erstellen von Datenbanken und Tabellen, Einfügen, Abfragen, Aktualisieren und Löschen von Daten. 3. Bereitstellung fortgeschrittener Funktionen wie Join Operations und Unterabfragen. 4. Die Leistung kann durch Indexierung, Abfrageoptimierung und Tabellenpartitionierung verbessert werden. 5. Backup-, Wiederherstellungs- und Sicherheitsmaßnahmen unterstützen, um die Datensicherheit und -konsistenz zu gewährleisten.

Kann ich das Datenbankkennwort in Navicat abrufen? Kann ich das Datenbankkennwort in Navicat abrufen? Apr 08, 2025 pm 09:51 PM

Navicat selbst speichert das Datenbankkennwort nicht und kann das verschlüsselte Passwort nur abrufen. Lösung: 1. Überprüfen Sie den Passwort -Manager. 2. Überprüfen Sie Navicats "Messnot Password" -Funktion; 3.. Setzen Sie das Datenbankkennwort zurück; 4. Kontaktieren Sie den Datenbankadministrator.

So erstellen Sie Navicat Premium So erstellen Sie Navicat Premium Apr 09, 2025 am 07:09 AM

Erstellen Sie eine Datenbank mit Navicat Premium: Stellen Sie eine Verbindung zum Datenbankserver her und geben Sie die Verbindungsparameter ein. Klicken Sie mit der rechten Maustaste auf den Server und wählen Sie Datenbank erstellen. Geben Sie den Namen der neuen Datenbank und den angegebenen Zeichensatz und die angegebene Kollektion ein. Stellen Sie eine Verbindung zur neuen Datenbank her und erstellen Sie die Tabelle im Objektbrowser. Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Daten einfügen, um die Daten einzufügen.

Wie kann ich das Datenbankkennwort in Navicat für Mariadb anzeigen? Wie kann ich das Datenbankkennwort in Navicat für Mariadb anzeigen? Apr 08, 2025 pm 09:18 PM

Navicat für MariADB kann das Datenbankkennwort nicht direkt anzeigen, da das Passwort in verschlüsselter Form gespeichert ist. Um die Datenbanksicherheit zu gewährleisten, gibt es drei Möglichkeiten, Ihr Passwort zurückzusetzen: Setzen Sie Ihr Passwort über Navicat zurück und legen Sie ein komplexes Kennwort fest. Zeigen Sie die Konfigurationsdatei an (nicht empfohlen, ein hohes Risiko). Verwenden Sie Systembefehlsleitungs -Tools (nicht empfohlen, Sie müssen die Befehlszeilen -Tools beherrschen).

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.

So führen Sie SQL in Navicat aus So führen Sie SQL in Navicat aus Apr 08, 2025 pm 11:42 PM

Schritte zur Durchführung von SQL in Navicat: Verbindung zur Datenbank herstellen. Erstellen Sie ein SQL -Editorfenster. Schreiben Sie SQL -Abfragen oder Skripte. Klicken Sie auf die Schaltfläche Ausführen, um eine Abfrage oder ein Skript auszuführen. Zeigen Sie die Ergebnisse an (wenn die Abfrage ausgeführt wird).

Navicat kann keine Verbindung zu MySQL/Mariadb/PostgreSQL und anderen Datenbanken herstellen Navicat kann keine Verbindung zu MySQL/Mariadb/PostgreSQL und anderen Datenbanken herstellen Apr 08, 2025 pm 11:00 PM

Häufige Gründe, warum Navicat keine Verbindung zur Datenbank und ihren Lösungen herstellen kann: 1. Überprüfen Sie den laufenden Status des Servers. 2. Überprüfen Sie die Verbindungsinformationen; 3. Passen Sie die Firewall -Einstellungen ein; 4. Konfigurieren Sie den Remote -Zugriff; 5. Fehlerbehebung mit Netzwerkproblemen; 6. Berechtigungen überprüfen; 7. Sicherheitskompatibilität sicherstellen; 8. Fehlerbehebung bei anderen Möglichkeiten.

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.

See all articles