Sie sind auf Seite 1von 22

Performance Tuning & Scale-Out mit MySQL

Erfa-Gruppe Internet Briefing 2. März 2010

Oli Sennhauser

Senior MySQL Consultant, FromDual

oli.sennhauser@fromdual.com

Briefing 2. März 2010 Oli Sennhauser Senior MySQL Consultant, FromDual oli.sennhauser@fromdual.com www.fromdual.com 1

www.fromdual.com

1

Inhalt

Allgemeines zu Performance Tuning

MySQL Performance Tuning

Scale-Out Architekturen

Und wie weiter?

Fragen & Antworten

MySQL Performance Tuning ● Scale-Out Architekturen ● Und wie weiter? ● Fragen & Antworten www.fromdual.com 2

www.fromdual.com

2

Szenarien

3 Entwicklungsszenarien:

Szenarien ● 3 Entwicklungsszenarien: www.fromdual.com 3

www.fromdual.com

3

Szenarien ● 3 Entwicklungsszenarien: www.fromdual.com 3

Die FromDual Performance-Wippe

Ursachen für schlechte Performance?

Die FromDual Performance-Wippe Ursachen für schlechte Performance? www.fromdual.com 4
Die FromDual Performance-Wippe Ursachen für schlechte Performance? www.fromdual.com 4

www.fromdual.com

4

Wo ist der Flaschenhals?

Wir haben 4 Möglichkeiten:

CPU (Taktrate, Single-Threading, SQL-Queries)

Memory (RAM, 32/64-bit OS)

Disk (RAID, SAN, I/O Cache)

Network (selten und wenn, dann Konfiguration)

Disk ( RAID, SAN, I/O Cache ) ● Network ( selten und wenn, dann Konfiguration )

Virtualisierung?

www.fromdual.com

5

Wie finde ich den Flaschenhals?

shell> free

shell> vmstat 1

shell> iostat -xk 1

shell> ifconfig

Nagios, Cacti, MySQL Enterprise Monitor, etc.

Windows: Performance Monitor

Siehe man-Pages.

● Nagios, Cacti, MySQL Enterprise Monitor, etc. ● Windows: Performance Monitor Siehe man-Pages. www.fromdual.com 6

www.fromdual.com

6

Wie messe ich MySQL?

mysql> SHOW PROCESSLIST;

mysql> SHOW GLOBAL STATUS;

mysql> SHOW ENGINE INNODB STATUS;

GLOBAL STATUS; ● mysql> SHOW ENGINE INNODB STATUS; ● MySQL Enterprise Montior [1] ● MyTop [2]

MySQL Enterprise Montior [1]

MyTop [2], InnoTop [3]

MySQL Activity Report [4]

● MyTop [2] , InnoTop [3] ● MySQL Activity Report [4] oder: MySQL Monitoring Solutions [5]
● MyTop [2] , InnoTop [3] ● MySQL Activity Report [4] oder: MySQL Monitoring Solutions [5]

oder: MySQL Monitoring Solutions [5]

www.fromdual.com

7

Die wichtigsten MySQL Datenbank Parameter [6]

key_buffer_size

innodb_buffer_pool_size

innodb_log_file_size

innodb_flush_log_at_trx_commit

sync_binlog

query_cache_size

(MyISAM: 25 – 33% RAM)

(InnoDB: 80% RAM)

(InnoDB: 32 – 256 Mbyte)

(InnoDB: 2)

(InnoDB: 0 oder >> 1)

(MySQL: 16 – 128 Mbyte)

Database Health Check for MySQL [7]

2) (InnoDB: 0 oder >> 1) (MySQL: 16 – 128 Mbyte) ● Database Health Check for

www.fromdual.com

8

SQL Query Tuning

Slow Query Log (slow_query_log, slow_query_log_file, long_query_time)

log_queries_not_using_indexes (deprecated!)

mysqldumpslow -s t slow.log

→ Profile

EXPLAIN SELECT

FROM

→ Execution Plan der Abfrage (nur SELECT)

-s t slow.log → Profile ● EXPLAIN SELECT FROM → Execution Plan der Abfrage ( nur

www.fromdual.com

9

Scale-Up vs. Scale-Out

Scale-Up vs. Scale-Out Scale-Up ● Kosten ● MySQL Design ● Physikalische Flaschenhälse Scale-Out 10 ●
Scale-Up vs. Scale-Out Scale-Up ● Kosten ● MySQL Design ● Physikalische Flaschenhälse Scale-Out 10 ●

Scale-Up

Scale-Up vs. Scale-Out Scale-Up ● Kosten ● MySQL Design ● Physikalische Flaschenhälse Scale-Out 10 ●
Scale-Up vs. Scale-Out Scale-Up ● Kosten ● MySQL Design ● Physikalische Flaschenhälse Scale-Out 10 ●
Scale-Up vs. Scale-Out Scale-Up ● Kosten ● MySQL Design ● Physikalische Flaschenhälse Scale-Out 10 ●

Kosten

MySQL Design

Physikalische Flaschenhälse

Scale-Out

● MySQL Design ● Physikalische Flaschenhälse Scale-Out 10 ● „Relaxation of Constraints“ www.fromdual.com

10

●

„Relaxation of Constraints“

www.fromdual.com

Was für Komponenten nehme ich idealerweise?

LAMP 3 evtl. Java?

„Mainstream“ → Linux (Solaris, Windows)

64-bit OS und Hardware (Intel, AMD, KEIN Sparc!) und viel RAM!

Dediziertes I/O System (KEIN SAN, KEIN RAID-5!), schnelle Disks, Write Cache.

>= 1 Gbit Netzwerk

KEINE Virtualisierung!

KEIN RAID-5!), schnelle Disks, Write Cache. ● >= 1 Gbit Netzwerk ● KEINE Virtualisierung! www.fromdual.com 11

www.fromdual.com

11

Der MySQL Scale-Out Ansatz

Der MySQL Scale-Out Ansatz Application DB www.fromdual.com 12

Application

DB

www.fromdual.com

12

Der MySQL Scale-Out Ansatz

Der MySQL Scale-Out Ansatz Application r t w Master ro Slave 1 www.fromdual.com 13

Application

r t w

Master

Master

Master
Master
Master
Master
Der MySQL Scale-Out Ansatz Application r t w Master ro Slave 1 www.fromdual.com 13

ro

Der MySQL Scale-Out Ansatz Application r t w Master ro Slave 1 www.fromdual.com 13

Slave 1

Der MySQL Scale-Out Ansatz Application r t w Master ro Slave 1 www.fromdual.com 13

www.fromdual.com

13

Der MySQL Scale-Out Ansatz

Der MySQL Scale-Out Ansatz Application r t w Master Slave 3 ro S l a v

Application

r t w

Master

Master

Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Der MySQL Scale-Out Ansatz Application r t w Master Slave 3 ro S l a v

Slave 3

ro

Der MySQL Scale-Out Ansatz Application r t w Master Slave 3 ro S l a v

Slave Reporting

Der MySQL Scale-Out Ansatz Application r t w Master Slave 3 ro S l a v
Der MySQL Scale-Out Ansatz Application r t w Master Slave 3 ro S l a v

www.fromdual.com

14

Der MySQL Scale-Out Ansatz

Der MySQL Scale-Out Ansatz Application r t w ro S l a v e Reporting Master

Application

r t w

ro

Der MySQL Scale-Out Ansatz Application r t w ro S l a v e Reporting Master

Slave Reporting

Master
Master
Master
Master
Master
Master
Master
Master
Master

Master

Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Application r t w ro S l a v e Reporting Master Slave 1 Slave 2
Application r t w ro S l a v e Reporting Master Slave 1 Slave 2
Application r t w ro S l a v e Reporting Master Slave 1 Slave 2
Application r t w ro S l a v e Reporting Master Slave 1 Slave 2
Slave 1 Slave 2 Slave 3
Slave 1
Slave 2
Slave 3
Application r t w ro S l a v e Reporting Master Slave 1 Slave 2

Load balancer

Application r t w ro S l a v e Reporting Master Slave 1 Slave 2

www.fromdual.com

15

Der MySQL Scale-Out Ansatz

Der MySQL Scale-Out Ansatz Application r t w ro Master S l a v e Reporting

Application

r t w

ro

Der MySQL Scale-Out Ansatz Application r t w ro Master S l a v e Reporting
Der MySQL Scale-Out Ansatz Application r t w ro Master S l a v e Reporting
Der MySQL Scale-Out Ansatz Application r t w ro Master S l a v e Reporting
Master
Master
Master
Master
Master
Master
Master
Master
Master

Master

Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Master
Master

S l a v e Reporting Slave Reporting

S l a v e Backup Slave Backup

w ro Master S l a v e Reporting S l a v e Backup Slave
w ro Master S l a v e Reporting S l a v e Backup Slave
w ro Master S l a v e Reporting S l a v e Backup Slave
Slave 1 Slave 2 Slave 3
Slave 1
Slave 2
Slave 3
w ro Master S l a v e Reporting S l a v e Backup Slave

Load balancer

w ro Master S l a v e Reporting S l a v e Backup Slave

www.fromdual.com

16

Weitere Möglichkeiten

Irgendwann stehen wir beim Schreib- Durchsatz an

Irgendwann stehen wir beim Schreib- Durchsatz an ● Stärkeres I/O system ● Solid State Drive/Disk (SSD)

Stärkeres I/O system

Solid State Drive/Disk (SSD)

Bis > 1 Tbyte, €€€, ca. 10-20 x schneller (Marketing: 100x!)

MySQL Cluster

In-Memory, Realtime, HP- und HA Datenbank

ca. 10-20 x schneller (Marketing: 100x!) ● MySQL Cluster In-Memory, Realtime, HP- und HA Datenbank www.fromdual.com

www.fromdual.com

17

MySQL Cluster

Application

NDB-API

Application

NDB-API

Application

Application

Application

Application NDB-API Application Application Application Load balancer SQL Node 1 SQL Node 2 Data Node 1
Application NDB-API Application Application Application Load balancer SQL Node 1 SQL Node 2 Data Node 1

Load balancer

SQL Node 1 SQL Node 2 Data Node 1 Data Node 2 Sw. Sw. Data
SQL Node 1
SQL Node 2
Data Node 1
Data Node 2
Sw.
Sw.
Data Node 3
Data Node 4
www.fromdual.com

SQL Node 3

Mgm Node 1

Mgm Node 2

2 Data Node 1 Data Node 2 Sw. Sw. Data Node 3 Data Node 4 www.fromdual.com

18

Und wenn das noch nicht reicht? - Sharding! [9]

„Horizontales Partitionieren“ der Daten

Separieren

Splitten

reicht? - Sharding! [9] „Horizontales Partitionieren“ der Daten ● Separieren ● Splitten www.fromdual.com 19
reicht? - Sharding! [9] „Horizontales Partitionieren“ der Daten ● Separieren ● Splitten www.fromdual.com 19

www.fromdual.com

19

Wie bereite ich meine Applikation darauf vor?

ro / rw Datenbank-Verbindungen

modularisieren / kapseln

Asynchron und lose gekoppelt, Anforderungen lockern, Cachen

Messen, messen, messen

Verschiedene Lasttest-Szenarios fahren.

Ich muss meine Applikation kennen!

messen, messen ● Verschiedene Lasttest-Szenarios fahren. ● Ich muss meine Applikation kennen! www.fromdual.com 20

www.fromdual.com

20

Literatur

Diese Präsentation:

[1] MySQL Enterprise Montior: http://dev.mysql.com/doc/refman/5.1/en/mem-introduction.html [2] MyTop: http://jeremy.zawodny.com/mysql/mytop/ [3] InnoTop: http://www.xaprb.com/blog/2006/07/02/innotop-mysql-innodb-monitor/ [4] MySQL Activity Report: http://gert.sos.be/en/projects/mysqlar/ [5] MySQL Monitoring Solutions: http://www.shinguz.ch/MySQL/mysql_monitoring.html [6] MySQL Datenbank Parameter: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html [7] Database Health Check for MySQL: http://www.shinguz.ch/database_health_check/ [8] MySQL Cluster: http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster.html [9] Sharding: http://en.wikipedia.org/wiki/Shard_%28database_architecture%29

[9] Sharding: http://en.wikipedia.org/wiki/Shard_%28database_architecture%29 www.fromdual.com 21

www.fromdual.com

21

Fragen & Antworten

?

und sonst →

oli.sennhauser@fromdual.com

Fragen & Antworten ? und sonst → oli.sennhauser@fromdual.com www.fromdual.com 22

www.fromdual.com

22