SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
MySQL Performance Tuning

 FrOSCon 2011, St. Augustin


         Oli Sennhauser
  Senior MySQL Consultant at FromDual GmbH

    oli.sennhauser@fromdual.com

               www.fromdual.com              1
Über FromDual GmbH
●   FromDual bietet neutral und unabhängig:
    ●   Beratung für MySQL (vor Ort und remote)
    ●   Remote-DBA Dienstleistungen / MySQL Betrieb
    ●   Premium Support (ex. MySQL Basic und Silber)
    ●   Schulung für MySQL
●   Consulting Partner der Open Database Alliance
    (ODBA.org)
●   Oracle Silber Partner (OPN)
●   Mehr Informationen unter:
                   http://www.fromdual.com
                           www.fromdual.com            2
Inhalt

 Performance Tuning
 ➢
     FromDual Perfromance Waage
 ➢
     Kritische Ressourcen
 ➢
     Hardware / OS
 ➢
     Datenbank Parameter
 ➢
     Applikations-Tuning
 ➢
     Architektur & Design
 ➢
     Messen




                                  www.fromdual.com   3
Der FromDual Weg des PT
●   Wer von Euch hat oder hatte Performance
    Probleme mit MySQL?
●   Wer von Euch hat ein systematisches
    Vorgehen für Performance Tuning?


    → Viele Wege führen nach Rom!

●   Ausgangslage: Kunde schreit, weil er ein
    Performance Problem hat!
                     www.fromdual.com          4
FromDual Performance Waage
Zusammentragen von Fakten
●   Wie sieht das Problem aus?
    ●   DB ist plötzlich, manchmal oder schon immer langsam?
    ●   Was ist genau langsam?
    ●   Neuer Release wurde eingespielt?
    ●   Jemand hat „rumgefummelt“?
    ●   Wir sind kurz vor Produktionseinführung und viel zu langsam?
●   Haben wir historische Messdaten?
●   Am besten wenn:
    ●   man das Problem (gezielt) simulieren kann
    ●   es vorhersagbar oder periodisch auftritt
→ Finde das Muster!

                                 www.fromdual.com                      6
Kritische Ressourcen

     Hardware

          OS



      www.fromdual.com   7
Kritische Ressourcen
●   Finde den Flaschenhals / die limitierende
    Ressource:

●   Zum Glück „nur“:
    ●   CPU
    ●   Speicher (RAM)
    ●   I/O (IOPS, Durchsatz)
    ●   Netzwerk (FpS, Durchsatz)


●   Aber wie? → finde die kritische Ressource!
                            www.fromdual.com     8
Messen: CPU
●   top


●   vmstat




●   oder mpstat
●   Welcher Prozess braucht denn CPU?
                   www.fromdual.com     9
Messen: Speicher (RAM)
●   free / top:
           #free
                        total   used    free shared buffers cached
           Mem:       1036016 983864   52152      0   35484 547432
           ­/+ buffers/cache: 400948  635068
           swap:      4202112  96148 4105964



●   ps
           # ps ­eo user,pid,%cpu,%mem,vsz,rsz,comm ­­sort ­vsz | 
            egrep 'mysql|COMMAND'
           USER       PID %CPU %MEM    VSZ   RSZ COMMAND
           mysql     1361  0.0  1.5 108368 16444 mysqld
           mysql     1210  0.0  0.1   4536  1956 bash
           mysql     1289  0.0  0.1   4060  1444 safe_mysqld
           mysql     1204  0.0  0.1   4048  1404 su


                          www.fromdual.com                            10
Messen: I/O
●   vmstat                     # vmstat 1
                               procs ­­­swap­­ ­­­­­io­­­­ ­­­­cpu­­­­
                                r  b   si   so    bi    bo us sy id wa
                                0  0    3    3    94   143 21 21 56  2
                                0  0    0    0     0     4  9 37 54  0



●   iostat (→ sysstat package)
              # iostat ­x 1
              avg­cpu:  %user   %nice %system %iowait  %steal   %idle
                         5.88    0.00   34.31    2.94    0.00   56.86

              Device:     r/s   w/s  rkB/s  wkB/s  await  svctm  %util
              hda        0.00  0.00   0.00   0.00   0.00   0.00   0.00
              hdc        0.00  2.94   0.00  23.53  14.67  12.00   3.53


●   pidstat
                           www.fromdual.com                             11
Messen: Netzwerk
●   dstat




●   watch ­d ­n 1 'ifconfig'


●   Frames pro Sekunde (80k – 1.5M) /
    Durchsatz (1 Gbit/s → 120 Mbyte/s)?
                    www.fromdual.com      12
Zusammenfassung
●   CPU                              ●   I/O
    ●   Welcher Prozess                  ●    Durchsatz oder IOPS
                                         ●    welches Device?
    ●   wie viele Cores?
                                         ●    Random oder Sequential
        → meist SQL Abfragen
                                         ●    Read oder Write
                                              → Caches zu klein, tmp
●   Speicher                                  Tabellen?

    ●   Welcher Prozess
                                     ●   Netzwerk
    ●   Swapping?                        ●    Errors / Drops?
        → Über- oder Unterallo-          ●    Durchsatz
        zierung von DB Caches!
                                         ●    FpS
                           www.fromdual.com                            13
Stellschrauben
●   CPU                                       ●   NW
        Schnellere Cores?
                                                       1 Gbit
    ●
                                                  ●

    ●   Mehr Cores


●   Speicher                                  ●   OS
    ●   Mehr RAM?                                 ●    Neue 64-bit Kernel
                                                  ●    XFS
●   I/O
    ●   RAID-5 :-(
                                                  ●    → I/O Scheduler
    ●   SAN :-(                                         –   noop
    ●   RAID-10, viele Spindeln, SSD?
                                                        –   Deadline
    ●   Batterie gepufferter I/O Cache!
                                              ●   Virtualisierung :-(
                                    www.fromdual.com                        14
Datenbank Tuning




    www.fromdual.com   15
MySQL Tuning
●   Welche Storage Engine verwendet Ihr zur
    Zeit?
●   Welchen MySQL Release? (→ 5.1 und neuer)
●   Zur Zeit: ca. 330 MySQL Parameter
      → aber nur ca. 8 davon sind primär signifikant!
      → Grob-Tuning
●   Alle anderen nur nach ausführlichem
    Benchmarken
      → Fine-Tuning
                       www.fromdual.com                 16
InnoDB Grob-Tuning
●   innodb_buffer_pool_size
    ●   ca. 80% vom RAM auf dedizierter Maschine
    ●   SHOW STATUS LIKE 'Innodb_buffer_pool_pages%';
●   innodb_log_file_size
    ●   Grösser = schneller, aber längere Recovery Zeiten → 2 x 256
        M
●   innodb_flush_log_at_trx_commit
    ●   0, 2 für Performance, 1 für Sicherheit
●   sync_binlog
    ●   != 0 → langsam(er)

                              www.fromdual.com                   17
MySQL Grob-Tuning
●   key_buffer_size
    ●   ca. 25 – 33% vom RAM auf dedizierter Maschine
    ●   SHOW STATUS LIKE 'Key_blocks_%';
●   table_open_cache
    ●   Running connections x used tables → 2 – 4k ist nicht
        ungewöhnlich! Siehe Open[ed]_tables.
●   table_definition_cache
    ●   Siehe Open[ed]_table_definitions → 512 – 4096 ist nicht
        ungewöhnlich!
●   query_cache_type/query_cache_size
    ●   Nicht zu gross machen (<= 128 M), bei sehr hoher Concurrency
        aber schädlich!
                               www.fromdual.com                        18
Weitere Hilfe
●   Wie messen?
    ●   SHOW GLOBAL STATUS;
    ●   SHOW ENGINE INNODB STATUSG
●   ca. 330 Variablen
●   ca. 310 Status Informationen
●   MySQL Database Health Check:
        http://www.fromdual.com/mysql-database-health-check
●   MySQL Doku, Server Status Variablen:
        http://dev.mysql.com/doc/refman/5.5/en/server-status-variables.html
●   Das wärs soweit!

                                  www.fromdual.com                            19
Applikations-Tuning




     www.fromdual.com   20
Applikations-Tuning
●   Index Tuning
    ●   Primary Key (InnoDB) → Länge der Sekundärindices!
    ●   (partiell) Redundante Indices weg
    ●   Indices mit einer geringen Kardinalität weg!?!
●   Query Tuning
    ●   SHOW PROCESSLIST;
    ●   Slow Query Log (ab 5.1 dynamisch!)
    ●   log_queries_not_using_indexes = 1
    ●   mysqldumpslow ­s t slow.log > slow.log.profile
    ●   EXPLAIN SELECT ...

                              www.fromdual.com              21
EXPLAIN
●    Der Schlüssel zur Wahrheit!
●    Query Tuning: x schneller möglich!

    EXPLAIN SELECT * FROM test;

    +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­+­­­­­­­+
    | id | select_type | table | type | possible_keys | key  | key_len | ref  | rows   | Extra |
    +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­+­­­­­­­+
    |  1 | SIMPLE      | test  | ALL  | NULL          | NULL | NULL    | NULL | 261369 |       |
    +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­+­­­­­­­+




●    EXPLAIN Output Format:
     http://dev.mysql.com/doc/refman/5.5/en/explain-output.html
                                         www.fromdual.com                                          22
Applikations-Tuning
●   Loslassen!
    ●   Spalten, welche nicht gebraucht werden → weg (char(0) oder
        ausNULLen)!
    ●   Alte Daten → weg (archivieren)!
●   Schema Tuning
    ●   mysqldump ­­no­data > structure_dump.sql
    ●   Richtige Datentypen und richtige Längen!
          int(1) → 4 byte int!
    ●   utf8 → nur wenn nötig
    ●   NULL or NOT NULL
●   Lokalität der Daten
    ●   InnoDB Primary Key
    ●   V-Partitioning / (H-)Partitioning
                                    www.fromdual.com                 23
Architektur & Design




      www.fromdual.com   24
MySQL Scale-Out vs Scale-Up

         ● Kosten
                             Scale-Up
         ● MySQL Design

         ● Phsikalische Flaschenhälse




     ●   „Relaxation of Constraints“
                               Scale-Out

                        www.fromdual.com   25
Der MySQL Scale-Out Ansatz

                        Applikation
                  ro
                                 rtw
                                              Slave Reporting
                            Master

                                                  Slave Backup

     Slave 1      Slave 2         Slave 3
                                            ...


               Load balancer




                       www.fromdual.com                          26
MySQL Architektur
             Applikation / Client

  Thread            Connection          mysqld
  Cache              Manager                                       Parser
                                             Optimizer
                      User Au-
                    thentication
                                        Access Control
                    Command                                           Table Open
  Logging
                    Dispatcher                                       Cache (.frm, fh)
                                         Table Manager
   Query            Query Cache                                      Table Definition
   Cache              Module                                         Cache (tbl def.)

                                     Handler Interface


  MyISAM   InnoDB    Memory   NDB      PBMS        Aria   XtraDB    Federated-X   ...


                                    www.fromdual.com                                    27
Architektonische Möglichkeiten
●   RDBMS sind eine langsame Technologie!
    ●   Daher: Cachen (heisse Daten in Cache!)
    ●   MySQL Memcached Plugin / Memcached
    ●   HandlerSocket
    ●   MySQL Cluster
●   Abstraktionslayer (ORM, Frameworks, etc.)
    ●   Schneller entwickeln aber
    ●   Standard == „nicht optimiert“ → schlecht für Performance!
●   BLOB sind ungeeignet für RDBMS
    ●   auf Filer legen
    ●   Blob Streaming (PBMS)
●   Sharding / verteilen
    ●   „von Hand“
    ●   Spider SE
    ●   MySQL Replikation (r/w Traffic Split)
    ●   MySQL Cluster
    ●   Synchrone Replikation mit Galera

                                                www.fromdual.com    28
Monitoring




 www.fromdual.com   29
Was passiert, wenn...?
●   Kunde fragt mich: Kann mein System 30% mehr
    Last vertragen?
●   Chemische Verfahrenstechnik:




●   Gibt es Unterschiede zu eine DB basierten
    System?
●   Was brauche ich um diese Frage zu beantworten?

                       www.fromdual.com           30
Messen, messen, messen...
●   Messen
●   Simulieren → Kapazitätsplanung




                   www.fromdual.com   31
Der Bogen schliesst sich...
●   Im Idealfall: Nur eine
    Änderung aufs Mal!




                      www.fromdual.com   32
Q&A


                Fragen ?

              Diskussion?


  Wir haben noch Zeit für persönliche und
         indviduelle Beratungen...


                 www.fromdual.com           33

Contenu connexe

Tendances

MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/RecoveryFromDual GmbH
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterFromDual GmbH
 
MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6FromDual GmbH
 
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?FromDual GmbH
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA'sFromDual GmbH
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sFromDual GmbH
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenLenz Grimmer
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLFromDual GmbH
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?FromDual GmbH
 
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQLInternet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQLFromDual GmbH
 
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationWeltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationFromDual GmbH
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLFromDual GmbH
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerFromDual GmbH
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenLenz Grimmer
 
MySQL HA and Security
MySQL HA and SecurityMySQL HA and Security
MySQL HA and SecurityFromDual GmbH
 
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo LatschnerNagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo LatschnerNETWAYS
 
Microservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OSMicroservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OSRalf Ernst
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability SolutionsFromDual GmbH
 

Tendances (20)

MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/Recovery
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und Cluster
 
MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6
 
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA's
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA's
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL Hochverfügbarkeitslösungen
 
MySQL Backup
MySQL BackupMySQL Backup
MySQL Backup
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQL
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?
 
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQLInternet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
 
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationWeltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQL
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für Entwickler
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL Hochverfügbarkeitslösungen
 
MySQL HA and Security
MySQL HA and SecurityMySQL HA and Security
MySQL HA and Security
 
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo LatschnerNagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
 
Microservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OSMicroservices and Container Management with Mesosphere DC/OS
Microservices and Container Management with Mesosphere DC/OS
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability Solutions
 

Similaire à FROSCON 2011: MySQL Performance Tuning

Data Warehouse (DWH) with MySQL
Data Warehouse (DWH) with MySQLData Warehouse (DWH) with MySQL
Data Warehouse (DWH) with MySQLFromDual GmbH
 
Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12Stefan Frömken
 
Back to Basics - Webinar 6: Produktivsetzung einer Anwendung
Back to Basics - Webinar 6: Produktivsetzung einer AnwendungBack to Basics - Webinar 6: Produktivsetzung einer Anwendung
Back to Basics - Webinar 6: Produktivsetzung einer AnwendungMongoDB
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDAJörn Dinkla
 
MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?FromDual GmbH
 
Hadoop aus IT-Operations-Sicht - Teil 2 (Hardware- und Netzwerkgrundlagen)
Hadoop aus IT-Operations-Sicht - Teil 2 (Hardware- und Netzwerkgrundlagen)Hadoop aus IT-Operations-Sicht - Teil 2 (Hardware- und Netzwerkgrundlagen)
Hadoop aus IT-Operations-Sicht - Teil 2 (Hardware- und Netzwerkgrundlagen)inovex GmbH
 
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...OPITZ CONSULTING Deutschland
 
20121008 io-performance
20121008 io-performance20121008 io-performance
20121008 io-performanceWerner Fischer
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als CodeJan Gehring
 
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...inovex GmbH
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsICS User Group
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015FromDual GmbH
 

Similaire à FROSCON 2011: MySQL Performance Tuning (17)

Froscon 2012 DWH
Froscon 2012 DWHFroscon 2012 DWH
Froscon 2012 DWH
 
Data Warehouse (DWH) with MySQL
Data Warehouse (DWH) with MySQLData Warehouse (DWH) with MySQL
Data Warehouse (DWH) with MySQL
 
Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12
 
Back to Basics - Webinar 6: Produktivsetzung einer Anwendung
Back to Basics - Webinar 6: Produktivsetzung einer AnwendungBack to Basics - Webinar 6: Produktivsetzung einer Anwendung
Back to Basics - Webinar 6: Produktivsetzung einer Anwendung
 
Raspberry Pi
Raspberry PiRaspberry Pi
Raspberry Pi
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
 
MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?
 
Hadoop aus IT-Operations-Sicht - Teil 2 (Hardware- und Netzwerkgrundlagen)
Hadoop aus IT-Operations-Sicht - Teil 2 (Hardware- und Netzwerkgrundlagen)Hadoop aus IT-Operations-Sicht - Teil 2 (Hardware- und Netzwerkgrundlagen)
Hadoop aus IT-Operations-Sicht - Teil 2 (Hardware- und Netzwerkgrundlagen)
 
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...Spezialitäten der Oracle Lizenzierung -  DOAG Konferenz 2010 - OPITZ CONSULTI...
Spezialitäten der Oracle Lizenzierung - DOAG Konferenz 2010 - OPITZ CONSULTI...
 
20121008 io-performance
20121008 io-performance20121008 io-performance
20121008 io-performance
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
Analyse und Evaluierung von Parameterabhängigkeiten anhand der Laufzeit von M...
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections Admins
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015
 
NUMA vs. Hugepages
NUMA vs. HugepagesNUMA vs. Hugepages
NUMA vs. Hugepages
 
Cache me if you can
Cache me if you canCache me if you can
Cache me if you can
 

Plus de FromDual GmbH

MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...FromDual GmbH
 
MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?FromDual GmbH
 
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopPXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopFromDual GmbH
 
IT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesIT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesFromDual GmbH
 
MariaDB 10.4 New Features
MariaDB 10.4 New FeaturesMariaDB 10.4 New Features
MariaDB 10.4 New FeaturesFromDual GmbH
 
MariaDB 10.2 New Features
MariaDB 10.2 New FeaturesMariaDB 10.2 New Features
MariaDB 10.2 New FeaturesFromDual GmbH
 
PERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schemaPERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schemaFromDual GmbH
 
Reading MySQL fingerprints
Reading MySQL fingerprintsReading MySQL fingerprints
Reading MySQL fingerprintsFromDual GmbH
 
High-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLHigh-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLFromDual GmbH
 
MySQL always-up with Galera Cluster
MySQL always-up with Galera ClusterMySQL always-up with Galera Cluster
MySQL always-up with Galera ClusterFromDual GmbH
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014FromDual GmbH
 
Need for Speed: Mysql indexing
Need for Speed: Mysql indexingNeed for Speed: Mysql indexing
Need for Speed: Mysql indexingFromDual GmbH
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAsFromDual GmbH
 
MySQL Performance Tuning Variables
MySQL Performance Tuning VariablesMySQL Performance Tuning Variables
MySQL Performance Tuning VariablesFromDual GmbH
 

Plus de FromDual GmbH (16)

MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...
 
MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?
 
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopPXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
 
IT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesIT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New Features
 
MariaDB 10.4 New Features
MariaDB 10.4 New FeaturesMariaDB 10.4 New Features
MariaDB 10.4 New Features
 
MariaDB 10.2 New Features
MariaDB 10.2 New FeaturesMariaDB 10.2 New Features
MariaDB 10.2 New Features
 
PERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schemaPERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schema
 
Reading MySQL fingerprints
Reading MySQL fingerprintsReading MySQL fingerprints
Reading MySQL fingerprints
 
High-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLHigh-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQL
 
MySQL always-up with Galera Cluster
MySQL always-up with Galera ClusterMySQL always-up with Galera Cluster
MySQL always-up with Galera Cluster
 
HA with Galera
HA with GaleraHA with Galera
HA with Galera
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014
 
Need for Speed: Mysql indexing
Need for Speed: Mysql indexingNeed for Speed: Mysql indexing
Need for Speed: Mysql indexing
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAs
 
MySQL Security
MySQL SecurityMySQL Security
MySQL Security
 
MySQL Performance Tuning Variables
MySQL Performance Tuning VariablesMySQL Performance Tuning Variables
MySQL Performance Tuning Variables
 

FROSCON 2011: MySQL Performance Tuning

  • 1. MySQL Performance Tuning FrOSCon 2011, St. Augustin Oli Sennhauser Senior MySQL Consultant at FromDual GmbH oli.sennhauser@fromdual.com www.fromdual.com 1
  • 2. Über FromDual GmbH ● FromDual bietet neutral und unabhängig: ● Beratung für MySQL (vor Ort und remote) ● Remote-DBA Dienstleistungen / MySQL Betrieb ● Premium Support (ex. MySQL Basic und Silber) ● Schulung für MySQL ● Consulting Partner der Open Database Alliance (ODBA.org) ● Oracle Silber Partner (OPN) ● Mehr Informationen unter: http://www.fromdual.com www.fromdual.com 2
  • 3. Inhalt Performance Tuning ➢ FromDual Perfromance Waage ➢ Kritische Ressourcen ➢ Hardware / OS ➢ Datenbank Parameter ➢ Applikations-Tuning ➢ Architektur & Design ➢ Messen www.fromdual.com 3
  • 4. Der FromDual Weg des PT ● Wer von Euch hat oder hatte Performance Probleme mit MySQL? ● Wer von Euch hat ein systematisches Vorgehen für Performance Tuning? → Viele Wege führen nach Rom! ● Ausgangslage: Kunde schreit, weil er ein Performance Problem hat! www.fromdual.com 4
  • 6. Zusammentragen von Fakten ● Wie sieht das Problem aus? ● DB ist plötzlich, manchmal oder schon immer langsam? ● Was ist genau langsam? ● Neuer Release wurde eingespielt? ● Jemand hat „rumgefummelt“? ● Wir sind kurz vor Produktionseinführung und viel zu langsam? ● Haben wir historische Messdaten? ● Am besten wenn: ● man das Problem (gezielt) simulieren kann ● es vorhersagbar oder periodisch auftritt → Finde das Muster! www.fromdual.com 6
  • 7. Kritische Ressourcen Hardware OS www.fromdual.com 7
  • 8. Kritische Ressourcen ● Finde den Flaschenhals / die limitierende Ressource: ● Zum Glück „nur“: ● CPU ● Speicher (RAM) ● I/O (IOPS, Durchsatz) ● Netzwerk (FpS, Durchsatz) ● Aber wie? → finde die kritische Ressource! www.fromdual.com 8
  • 9. Messen: CPU ● top ● vmstat ● oder mpstat ● Welcher Prozess braucht denn CPU? www.fromdual.com 9
  • 10. Messen: Speicher (RAM) ● free / top: #free              total   used    free shared buffers cached Mem:       1036016 983864   52152      0   35484 547432 ­/+ buffers/cache: 400948  635068 swap:      4202112  96148 4105964 ● ps # ps ­eo user,pid,%cpu,%mem,vsz,rsz,comm ­­sort ­vsz |   egrep 'mysql|COMMAND' USER       PID %CPU %MEM    VSZ   RSZ COMMAND mysql     1361  0.0  1.5 108368 16444 mysqld mysql     1210  0.0  0.1   4536  1956 bash mysql     1289  0.0  0.1   4060  1444 safe_mysqld mysql     1204  0.0  0.1   4048  1404 su www.fromdual.com 10
  • 11. Messen: I/O ● vmstat # vmstat 1 procs ­­­swap­­ ­­­­­io­­­­ ­­­­cpu­­­­  r  b   si   so    bi    bo us sy id wa  0  0    3    3    94   143 21 21 56  2  0  0    0    0     0     4  9 37 54  0 ● iostat (→ sysstat package) # iostat ­x 1 avg­cpu:  %user   %nice %system %iowait  %steal   %idle            5.88    0.00   34.31    2.94    0.00   56.86 Device:     r/s   w/s  rkB/s  wkB/s  await  svctm  %util hda        0.00  0.00   0.00   0.00   0.00   0.00   0.00 hdc        0.00  2.94   0.00  23.53  14.67  12.00   3.53 ● pidstat www.fromdual.com 11
  • 12. Messen: Netzwerk ● dstat ● watch ­d ­n 1 'ifconfig' ● Frames pro Sekunde (80k – 1.5M) / Durchsatz (1 Gbit/s → 120 Mbyte/s)? www.fromdual.com 12
  • 13. Zusammenfassung ● CPU ● I/O ● Welcher Prozess ● Durchsatz oder IOPS ● welches Device? ● wie viele Cores? ● Random oder Sequential → meist SQL Abfragen ● Read oder Write → Caches zu klein, tmp ● Speicher Tabellen? ● Welcher Prozess ● Netzwerk ● Swapping? ● Errors / Drops? → Über- oder Unterallo- ● Durchsatz zierung von DB Caches! ● FpS www.fromdual.com 13
  • 14. Stellschrauben ● CPU ● NW Schnellere Cores? 1 Gbit ● ● ● Mehr Cores ● Speicher ● OS ● Mehr RAM? ● Neue 64-bit Kernel ● XFS ● I/O ● RAID-5 :-( ● → I/O Scheduler ● SAN :-( – noop ● RAID-10, viele Spindeln, SSD? – Deadline ● Batterie gepufferter I/O Cache! ● Virtualisierung :-( www.fromdual.com 14
  • 15. Datenbank Tuning www.fromdual.com 15
  • 16. MySQL Tuning ● Welche Storage Engine verwendet Ihr zur Zeit? ● Welchen MySQL Release? (→ 5.1 und neuer) ● Zur Zeit: ca. 330 MySQL Parameter → aber nur ca. 8 davon sind primär signifikant! → Grob-Tuning ● Alle anderen nur nach ausführlichem Benchmarken → Fine-Tuning www.fromdual.com 16
  • 17. InnoDB Grob-Tuning ● innodb_buffer_pool_size ● ca. 80% vom RAM auf dedizierter Maschine ● SHOW STATUS LIKE 'Innodb_buffer_pool_pages%'; ● innodb_log_file_size ● Grösser = schneller, aber längere Recovery Zeiten → 2 x 256 M ● innodb_flush_log_at_trx_commit ● 0, 2 für Performance, 1 für Sicherheit ● sync_binlog ● != 0 → langsam(er) www.fromdual.com 17
  • 18. MySQL Grob-Tuning ● key_buffer_size ● ca. 25 – 33% vom RAM auf dedizierter Maschine ● SHOW STATUS LIKE 'Key_blocks_%'; ● table_open_cache ● Running connections x used tables → 2 – 4k ist nicht ungewöhnlich! Siehe Open[ed]_tables. ● table_definition_cache ● Siehe Open[ed]_table_definitions → 512 – 4096 ist nicht ungewöhnlich! ● query_cache_type/query_cache_size ● Nicht zu gross machen (<= 128 M), bei sehr hoher Concurrency aber schädlich! www.fromdual.com 18
  • 19. Weitere Hilfe ● Wie messen? ● SHOW GLOBAL STATUS; ● SHOW ENGINE INNODB STATUSG ● ca. 330 Variablen ● ca. 310 Status Informationen ● MySQL Database Health Check: http://www.fromdual.com/mysql-database-health-check ● MySQL Doku, Server Status Variablen: http://dev.mysql.com/doc/refman/5.5/en/server-status-variables.html ● Das wärs soweit! www.fromdual.com 19
  • 20. Applikations-Tuning www.fromdual.com 20
  • 21. Applikations-Tuning ● Index Tuning ● Primary Key (InnoDB) → Länge der Sekundärindices! ● (partiell) Redundante Indices weg ● Indices mit einer geringen Kardinalität weg!?! ● Query Tuning ● SHOW PROCESSLIST; ● Slow Query Log (ab 5.1 dynamisch!) ● log_queries_not_using_indexes = 1 ● mysqldumpslow ­s t slow.log > slow.log.profile ● EXPLAIN SELECT ... www.fromdual.com 21
  • 22. EXPLAIN ● Der Schlüssel zur Wahrheit! ● Query Tuning: x schneller möglich! EXPLAIN SELECT * FROM test; +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­+­­­­­­­+ | id | select_type | table | type | possible_keys | key  | key_len | ref  | rows   | Extra | +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­+­­­­­­­+ |  1 | SIMPLE      | test  | ALL  | NULL          | NULL | NULL    | NULL | 261369 |       | +­­­­+­­­­­­­­­­­­­+­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­+­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­+­­­­­­­+ ● EXPLAIN Output Format: http://dev.mysql.com/doc/refman/5.5/en/explain-output.html www.fromdual.com 22
  • 23. Applikations-Tuning ● Loslassen! ● Spalten, welche nicht gebraucht werden → weg (char(0) oder ausNULLen)! ● Alte Daten → weg (archivieren)! ● Schema Tuning ● mysqldump ­­no­data > structure_dump.sql ● Richtige Datentypen und richtige Längen! int(1) → 4 byte int! ● utf8 → nur wenn nötig ● NULL or NOT NULL ● Lokalität der Daten ● InnoDB Primary Key ● V-Partitioning / (H-)Partitioning www.fromdual.com 23
  • 24. Architektur & Design www.fromdual.com 24
  • 25. MySQL Scale-Out vs Scale-Up ● Kosten Scale-Up ● MySQL Design ● Phsikalische Flaschenhälse ● „Relaxation of Constraints“ Scale-Out www.fromdual.com 25
  • 26. Der MySQL Scale-Out Ansatz Applikation ro rtw Slave Reporting Master Slave Backup Slave 1 Slave 2 Slave 3 ... Load balancer www.fromdual.com 26
  • 27. MySQL Architektur Applikation / Client Thread Connection mysqld Cache Manager Parser Optimizer User Au- thentication Access Control Command Table Open Logging Dispatcher Cache (.frm, fh) Table Manager Query Query Cache Table Definition Cache Module Cache (tbl def.) Handler Interface MyISAM InnoDB Memory NDB PBMS Aria XtraDB Federated-X ... www.fromdual.com 27
  • 28. Architektonische Möglichkeiten ● RDBMS sind eine langsame Technologie! ● Daher: Cachen (heisse Daten in Cache!) ● MySQL Memcached Plugin / Memcached ● HandlerSocket ● MySQL Cluster ● Abstraktionslayer (ORM, Frameworks, etc.) ● Schneller entwickeln aber ● Standard == „nicht optimiert“ → schlecht für Performance! ● BLOB sind ungeeignet für RDBMS ● auf Filer legen ● Blob Streaming (PBMS) ● Sharding / verteilen ● „von Hand“ ● Spider SE ● MySQL Replikation (r/w Traffic Split) ● MySQL Cluster ● Synchrone Replikation mit Galera www.fromdual.com 28
  • 30. Was passiert, wenn...? ● Kunde fragt mich: Kann mein System 30% mehr Last vertragen? ● Chemische Verfahrenstechnik: ● Gibt es Unterschiede zu eine DB basierten System? ● Was brauche ich um diese Frage zu beantworten? www.fromdual.com 30
  • 31. Messen, messen, messen... ● Messen ● Simulieren → Kapazitätsplanung www.fromdual.com 31
  • 32. Der Bogen schliesst sich... ● Im Idealfall: Nur eine Änderung aufs Mal! www.fromdual.com 32
  • 33. Q&A Fragen ? Diskussion? Wir haben noch Zeit für persönliche und indviduelle Beratungen... www.fromdual.com 33