Heim >Datenbank >MySQL-Tutorial >Beispiele zur Erläuterung der Datenbankoptimierung

Beispiele zur Erläuterung der Datenbankoptimierung

angryTom
angryTomnach vorne
2019-11-27 13:36:022846Durchsuche

Bei der Suche nach Datenbankoptimierungen im Internet erfolgt die Optimierung grundsätzlich auf SQL-Ebene, und die Instanzoptimierung der Datenbank selbst wird selten erwähnt. Auch wenn dies der Fall ist, basiert alles auf der Instanzoptimierung einer bestimmten Datenbank. Dieser Artikel behandelt die Instanzoptimierung aller derzeit auf dem Markt befindlichen gängigen Datenbanken (Oralce, MySQL, POSTGRES, Dameng). Nutzen Sie 80 % oder mehr der oben genannten Datenbankleistung.

Beispiele zur Erläuterung der Datenbankoptimierung

Datenbankoptimierungsmethodik

Bei diesem Teil handelt es sich um theoretisches Wissen. Studierende, die nicht interessiert sind, können später direkt zum Parameterkonfigurationsteil springen .

Datenbankoptimierungsziele

Empfohlenes "MySQL-Video-Tutorial"

Je nach verschiedenen Rollen Die Datenbankoptimierung ist in die folgenden Ziele unterteilt:

Geschäftsperspektive (Hauptbenutzer):

Reaktionszeit der Benutzerseite reduzieren

Datenbankperspektive (Entwicklung):

Datenbank-SQL-Antwortzeit reduzieren

Datenbankserverperspektive (Betrieb). Dimension):

Physische Ressourcen des Datenbankservers voll ausnutzen

CPU-Auslastung des Datenbankservers reduzieren

Reduzieren Sie die E/A-Nutzung des Datenbankservers

Reduzieren Sie die Speichernutzung des Datenbankservers

Indikatoren

1 . Die durchschnittliche SQL-Antwortzeit wird kürzer

Vor der Optimierung: Die durchschnittliche Datenbank-Antwortzeit beträgt 500 ms

b 2. Datenbankserver Die CPU-Auslastung nimmt ab

Vor der Optimierung: Die CPU-Auslastung beträgt 70 % während der Datenbank-Spitzenzeit

b. Optimierungsziel: Die CPU-Auslastung beträgt 50 % während der Datenbank-Spitzenzeit

3 . Die IO-Auslastung des Datenbankservers wird geringer

Vor der Optimierung beträgt der Datenbank-IO-WAIT 30 %

b >

Missverständnisse bei der Datenbankoptimierung

Bei der Optimierung der Datenbank kann es zu folgenden Missverständnissen kommen:

1 Interne Prinzipien der Datenbank

Es gibt „Routinen“ zur Optimierung, und Sie können die Datenbankoptimierung auch gut abschließen, indem Sie diese „Routinen“ befolgen

2 Durch kontinuierliche Anpassung der Datenbankparameter kann letztendlich eine Optimierung erreicht werden

Manchmal funktioniert das Design nicht, egal wie unangemessen die Parameter angepasst werden

3. Durch kontinuierliche Anpassung der Betriebssystemparameter kann letztendlich eine Optimierung erzielt werden

Das Gleiche wie oben

4. Die Datenbankleistung wird durch die Anwendung und die Datenbankarchitektur bestimmt, und die Anwendungsentwicklung hat wenig damit zu tun

Im Gegenteil, die Anwendungsentwicklung hat viel damit zu tun

5. Lesen und Schreiben müssen getrennt werden, und Datenbanken und Tabellen müssen aufgeteilt werden

Datenvolumen Erst wenn das Niveau ein bestimmtes Verhältnis erreicht, ist es notwendig, Lesen und Schreiben zu trennen und die Tabellen in separate Datenbanken aufzuteilen , es wird nur die Komplexität erhöhen. Im Allgemeinen kann die Einzeltabellengröße von Oracle 100 Millionen und die von MySQL 10 bis 20 Millionen erreichen

Datenbankoptimierungsprozess

Die vollständige Datenbankoptimierung Der Prozess ist wie folgt:

Zunächst müssen Sie das Optimierungsproblem so gut wie möglich verstehen, während des Problems Systeminformationen sammeln und diese archivieren. Entwickeln Sie Optimierungsziele auf der Grundlage der aktuellen Systemproblemleistung und kommunizieren Sie mit Kunden, um eine Einigung über die Ziele zu erzielen. Analysieren Sie Systemprobleme mithilfe einer Reihe von Tools und formulieren Sie Optimierungspläne. Nach Abschluss der Planüberprüfung wird diese von jeder verantwortlichen Person umgesetzt. Wird das Optimierungsziel erreicht, wird ein Optimierungsbericht erstellt, andernfalls muss der Optimierungsplan neu formuliert werden. Beispiele zur Erläuterung der Datenbankoptimierung

Datenbankinstanzoptimierung

Datenbankinstanzoptimierung folgt drei Mantras: Das Protokoll darf nicht klein sein, der Cache muss groß genug sein und die Verbindung muss ausreichend sein .

Nachdem die Datenbanktransaktion übermittelt wurde, müssen die durch die Transaktion vorgenommenen Änderungen an der Datenseite auf die Festplatte geleert (fsync) werden, um die Haltbarkeit der Daten sicherzustellen. Bei diesem Festplattenleervorgang handelt es sich um einen zufälligen Schreibvorgang mit geringer Leistung. Wenn der Datenträger bei jeder Übermittlung einer Transaktion geleert wird, wirkt sich dies stark auf die Leistung der Datenbank aus. Die Datenbank übernimmt die folgenden zwei Optimierungstechniken im Architekturdesign:

a Schreiben Sie zuerst die Transaktion in die Protokolldatei RedoLog (WAL) und optimieren Sie das zufällige Schreiben in sequentielles Schreiben

b. Fügen Sie einen Layer-Cache-Strukturpuffer hinzu, der jeden Schreibvorgang in einen sequentiellen Schreibvorgang optimiert

, daher sind Protokollierung und Caching besonders wichtig für Datenbankinstanzen. Wenn nicht genügend Verbindungen vorhanden sind, löst die Datenbank direkt eine Ausnahme aus und das System ist nicht zugänglich.

Datenbankparameteroptimierung

Mainstream-Datenbankarchitekturen haben alle Folgendes gemeinsam:

Datencache

SQL-Analysebereich

Speicher sortieren

REDO und UNDO

Sperren, LATCH, MUTEX

Überwachung und Verbindung

Leistung beim Lesen und Schreiben von Dateien

Als nächstes passen wir die Parameter entsprechend den verschiedenen Datenbanken an, um die beste Leistung der Datenbank zu erreichen.

ORACLE

参数分类 参数名 参数值 备注
数据缓存 SGA_TAGET、MEMORY_TARGET 物理内存70-80% 越大越好
数据缓存 DB_CACHE_SIZE 物理内存70-80% 越大越好
SQL解析 SHARED_POOL_SIZE 4-16G 不建议设置过大
监听及连接 PROCESSES、SESSIONS、OPEN_CURSORS 根据业务需求设置 一般为业务预估连接数的120%
其他 SESSION_CACHED_CURSORS 大于200 软软解析

MYSQL(INNODB)

参数分类 参数名 参数值 备注
数据缓存 INNODB_BUFFER_POOL_SIZE 物理内存50-80% 一般来说越大性能越好
日志相关 Innodb_log_buffer_size 16-32M 根据运行情况调整
日志相关 sync_binlog 1、100、0 1安全性最好
监听及连接 max_connections 根据业务情况调整 可以预留一部分值
文件读写性能 innodb_flush_log_at_trx_commit 2 安全和性能的折中考虑
其他 wait_timeout,interactive_timeout 28800 避免应用连接定时中断

POSTGRES

参数分类 参数名 参数值 备注
数据缓存 SHARED_BUFFERS 物理内存10-25%
数据缓存 CACHE_BUFFER_SIZE 物理内存50-60%
日志相关 wal_buffer 8-64M 不建议设置过大过小
监听及连接 max_connections 根据业务情况调整 一般为业务预估连接数的120%
其他 maintenance_work_mem 512M或更大
其他 work_mem 8-16M 原始配置1M过小
其他 checkpoint_segments 32或者更大

Dameng Database

参数分类 参数名 参数值 备注
数据缓存 MEMROY_TARGET、MEMROY_POOL 物理内存90%
数据缓存 BUFFER 物理内存60% 数据缓存
数据缓存 MAX_BUFFER 物理内存70% 最大数据缓存
监听及连接 max_sessions 根据业务需求设置 一般为业务预估连接数的120%

Zusammenfassung

Es gibt zu viele Möglichkeiten, die Datenbank zu optimieren, einschließlich des Austauschs von Festplatten-Arrays und der Aufrüstung der Hardware, des Umschreibens von SQL-Skripts zum Hinzufügen von Indizes und der Anpassung von Datenbankparametern . Optimieren Sie die Leistung und passen Sie sogar das Datenbankschema an. Dieser Artikel optimiert die Parameter der Datenbank selbst. Durch Anpassen der Parameter in den obigen Tabellen können Sie grundsätzlich 80 % der besten Leistung der Datenbank erzielen.

Dieser Artikel stammt von der chinesischen PHP-Website, Spalte MySQL-Tutorial, willkommen zum Lernen!

Das obige ist der detaillierte Inhalt vonBeispiele zur Erläuterung der Datenbankoptimierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen