


Zusammenfassung der MySQL-Datenbankoptimierungsmethoden (muss gelesen werden)
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 zu7 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
ID | Albumname
|
|
|||||||||||||||||||||||||
1 | LebenFotos | 100 | tr>|||||||||||||||||||||||||
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’;
set long_query_time=2;
benchmark(count,expr) 函数可以测试执行count次expr操作需要的时间
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:
3. Gewöhnlicher Index:
Die Verwendung eines gewöhnlichen Index dient hauptsächlich der Verbesserung der Abfrageeffizienz4, 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 werdenDie 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):
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
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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.

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.

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 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.

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).

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.

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.
