SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
www.fromdual.com
1 / 27
MySQL Performance Tuning
für Oracle-DBA's
DOAG Konferenz 2015, Nürnberg
Oli Sennhauser
Senior MySQL Consultant, FromDual GmbH
oli.sennhauser@fromdual.com
www.fromdual.com
2 / 27
Über FromDual GmbH
Support
remote-DBA
Schulung
Beratung
www.fromdual.com
3 / 27
Inhalt
HA Solutions
➢
Read scale-out
➢
Replication set-up for HA
➢
Active/passive fail-over
➢
MySQL Cluster
➢
Replication Cluster
➢
Storage-Engine-Replication
MySQL Performance Tuning
➢
Was ist Performance?
➢
Was kostet Performance?
➢
Tuning Massnahmen
➢
MySQL Konfiguration
➢
Wo schauen?
➢
Langsame Abfragen finden
➢
Optimiere das Query!
➢
Monitoring
www.fromdual.com
4 / 27
Was ist Performance?
● Es gibt 2 verschiedene Ansichten:
● Durchsatz
● Wie viel Operationen kriege ich pro Zeit durch? → Anzahl
● Abfragen pro Sekunde (DB Queries)
● Business Operationen pro Minute (Rechnungen, Bestellungen, Einkäufe, ...)
● Grösse: QPS, QPM, OPS
● Antwortzeit (Latenz)
● Wie lange dauert meine Operation? → Zeit
● Laufzeit einer SQL-Abfrage
● Zeitdauer eines Rechnungslaufs oder eines Backups
● Grösse: ms, s, min oder h
● Und diese beiden Ansichten sind typischerweise gegenläufig!!!
www.fromdual.com
5 / 27
Durchsatz (throughput)
● Grad der Parallelität eines Systems
● Concurrency, Nebenläufigkeit
● Design und Architektur einer Applikation
● Neue DB Versionen haben tendenziell mehr
Durchsatz
● Tummelplatz von
Marketing!!!
Dimitri Kravtchuk, MySQL
Performance Architect @ Oracle
Bester
Durchsatz!
Skaliert
mehr
www.fromdual.com
6 / 27
Antwortzeit (Latenz, latency)
● Hängt ab von
● der Implementierung und
● der Datenmenge
● Neue DB Versionen sind tendenziell langsamer!
● Durchsatz geht üblicherweise auf Kosten der
Antwortzeit (mehr Codepath)
● Wie optimal läuft mein Zeugs?
● Tummelplatz des DBA!!!
www.fromdual.com
7 / 27
Durchschnittlicher DB-Nutzer
● Wo liegen nun der durchschnittliche DB-Nutzer?
● Wir sind nicht
● Facebook,
● Twitter,
● LinkedIn...?
● SHOW GLOBAL STATUS LIKE 'threads_running';
● d.h. die Softwarehersteller arbeiten gegen uns!
www.fromdual.com
8 / 27
Was „kostet“ Performance?
● Was kostet mich Performance und Tuning?
● Es gibt nix um sonst im Leben! Irgendwie muss
ich immer dafür "bezahlen".
Dimitri Kravtchuk, MySQL
Performance Architect @ Oracle
Performance
Low costSecurity
www.fromdual.com
9 / 27
Tuning Massnahmen
www.fromdual.com
10 / 27
Hardware und O/S
● Tuning der Hardware
● Kosten vs Performance
● billig != performant (Latenz, Durchsatz)
● O/S (Linux)
● Für die meisten Fälle OK
● max. 20 – 50% mehr Durchsatz
● Lohnt meist nicht!
● Virtualisierung
● Gut für Konsolidieren
von Micky Maus DB's
● Schlecht für hohe Performance!
www.fromdual.com
11 / 27
VM vs rohes-Eisen
● Benchmark von vorletzter Woche:
● alte Hardware vs. neue Virtualisierung
● MySQL 5.5 vs 5.6
● Cluster vs. Single Node
● Lasttest mit JMeter
● Enterprise Webshop
● Tomcat/Java
● CPU-Bound ro-Workload
:-(
:-(
mehr = besser
weniger = besser
www.fromdual.com
12 / 27
MySQL Konfiguration
● Bis hierhin war praktisch alles nicht MySQL spezifisch!
● MySQL kennt verschiedene „Storage Engines“
● InnoDB, TokuDB, MyISAM, Memory
● → Heute v.a. InnoDB
● Crash-Safe → automatisches Crash Recovery
● Unterstützt Transaktionen
● Erlaubt konkurrierendes Lesen und Schreiben
SQL-Layer
Handler Interface
InnoDB MyISAM TokuDB Memory
default_storage_engine = InnoDB
www.fromdual.com
13 / 27
Wo konfiguriert man MySQL
● Konfigurationsdateien:
● RedHat + SuSE: /etc/my.cnf + /etc/my.cnf.d/*
● Debian + Ubuntu: /etc/mysql/my.cnf + /etc/mysql/conf.d/*
● Die Konfigurationsdatei ist unterteilt in verschiedene „Sections“:
● [client] [mysql] [mysqldump] [mysqld_safe] [mysqld] ...
● Richtige erwischen!
● Erfordert DB-Restart :-(
● shell> service mysql restart
●
Gutes Template unter:
● http://fromdual.com/mysql-configuration-file-sample
● Online Konfiguration ändern:
● mysql> SET GLOBAL variable = wert;
● Persistieren in my.cnf nicht vergessen!
● MySQL kennt KEINE spfiles!
●
http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
www.fromdual.com
14 / 27
Konfiguration SQL-Layer
● Was konfiguriert man?
● Query Cache
● Eigentlich: Result Cache
● Nicht zu gross machen!
● query_cache_size = ≤128M
● Schlecht bei hoher Parallelität!
● Achtung: in 5.6 default aus (query_cache_type = on)!
● Table Open Cache
● Handle auf Tabellen, pro Verbindung pro Tabelle je eine
● table_open_cache = 384 - 2048
● Table Definition Cache
● Tabellendefinitionen, → Anz. Tabellen in Instanz
● table_defintion_cache = 512
www.fromdual.com
15 / 27
InnoDB Konfiguration
● InnoDB Buffer Pool
● innodb_buffer_pool_size = 80% vom RAM
● innodb_buffer_pool_instances = 8 - 16
● InnoDB Log Files
● innodb_log_file_size = 30 Minuten Daten
● innodb_log_file_size = 32 – 512M
● InnoDB Transaktionsflushing
● innodb_flush_log_at_trx_comit = 1 für sicher
● innodb_flush_log_at_trx_comit = 0 oder 2 für schnell
● Transaktionslog und Binary Log syncing
● sync_binlog = 0 für schnell
● sync_binlog = 1 für sicher (neuer default in 5.7)
www.fromdual.com
16 / 27
Wo schauen?
● Variablen (Einstellungen):
● mysql> SHOW GLOBAL VARIABLES LIKE '...';
● Status (Messen was dabei raus kommt):
● mysql> SHOW GLOBAL STATUS LIKE '...';
● mysql> SHOW ENGINE INNODB STATUSG
● Monitoring Lösungen
● FromDual Performance Monitor für MySQL
● MySQL Enterprise Monitor
● etc.
www.fromdual.com
17 / 27
Langsame Abfragen finden
● Alle DB Variablen sind richtig eingestellt...
● Performance Tuning Regel #1:
● Tune the f... Query!
● Wie findet man diese Abfragen?
● Ohne Vorbereitung:
● SHOW PROCESSLIST;
● Mit wenig Vorbereitung
● Performance Schema
●
Mit mehr Vorbereitung
● Slow Query Log
www.fromdual.com
18 / 27
SHOW PROCESSLIST
● Wann?
● unvorbereitete und schnelle Intervention
● „Es klemmt jetzt gerade!“
● Wie?
● mysql> SHOW [FULL] PROCESSLIST;
● Oder alternativ übers INFORMATION_SCHEMA oder neu
PERFORMANCE_SCHEMA
● Was dann?
● System beruhigen:
mysql> KILL [QUERY|CONNECTION] <connection_id>;
● Nachhaltig: Query tunen!
www.fromdual.com
19 / 27
PERFORMANCE_SCHEMA
UPDATE setup_consumers SET enabled = 1 WHERE name = 'events_statements_history_long';
SELECT left(digest_text, 64) AS query
, ROUND(SUM(timer_end-timer_start)/1000000000, 1) AS tot_exec_ms
, ROUND(SUM(timer_wait)/1000000000, 1) AS tot_wait_ms
, ROUND(SUM(lock_time)/1000000000, 1) AS tot_lock_ms
, MIN(LEFT(DATE_SUB(NOW(), INTERVAL (isgs.VARIABLE_VALUE - TIMER_START*10e-13) second), 19)) AS first_seen
, MAX(LEFT(DATE_SUB(NOW(), INTERVAL (isgs.VARIABLE_VALUE - TIMER_START*10e-13) second), 19)) AS last_seen
, COUNT(*) as cnt
FROM events_statements_history_long
JOIN information_schema.global_status AS isgs
WHERE isgs.variable_name = 'UPTIME'
GROUP BY LEFT(digest_text,64)
ORDER BY tot_exec_ms DESC
LIMIT 10;
+------------------------------------------------------------------+---------+---------+---------+-------------+-------------+-----+
| query | exec_ms | wait_ms | lock_ms | first_seen | last_seen | cnt |
+------------------------------------------------------------------+---------+---------+---------+-------------+-------------+-----+
| INSERT INTO `test` SELECT ? , DATA , ? FROM `test` | 50493.5 | 50493.5 | 26.3 | 12 16:41:35 | 12 16:42:04 | 20 |
| SELECT LEFT ( `digest_text` , ? ) , `ROUND` ( SUM ( `timer_end` | 14434.6 | 14434.6 | 25.8 | 12 16:48:44 | 12 17:07:15 | 6 |
| SELECT * FROM `test` | 7483.0 | 7483.0 | 0.2 | 12 16:41:16 | 12 16:42:34 | 2 |
| SHOW ENGINE INNODB STATUS | 1912.4 | 1912.4 | 0.0 | 12 16:37:19 | 12 17:07:36 | 687 |
| SHOW GLOBAL VARIABLES | 1091.1 | 1091.1 | 68.8 | 12 16:37:19 | 12 17:07:36 | 687 |
| SHOW GLOBAL STATUS | 638.7 | 638.7 | 40.8 | 12 16:37:19 | 12 17:07:36 | 687 |
| SELECT LEFT ( `digest_text` , ? ) , SUM ( `timer_end` - `timer_s | 356.2 | 356.2 | 42.4 | 12 16:42:38 | 12 16:45:00 | 6 |
| SELECT `digest_text` , SUM ( `timer_end` - `timer_start` ) / ? A | 325.3 | 325.3 | 0.4 | 12 16:40:44 | 12 16:42:18 | 3 |
| SELECT `DIGEST_TEXT` , ( `TIMER_END` - `TIMER_START` ) / ? AS `e | 163.2 | 163.2 | 1.0 | 12 16:37:44 | 12 16:39:22 | 9 |
| SELECT LOWER ( REPLACE ( trx_state , ?, ... ) ) AS state , COUNT | 133.9 | 133.9 | 80.2 | 12 16:37:19 | 12 17:07:36 | 687 |
+------------------------------------------------------------------+---------+---------+---------+-------------+-------------+-----+
http://fromdual.com/mysql-performance-schema-hints#top_long_running_queries
www.fromdual.com
20 / 27
Slow Query Log
● Systematischer Ansatz mit etwas Vorlauf:
● Kann dynamisch eingeschaltet werden:
● SET GLOBAL slow_quey_log = 1;
● Profile vom Slow Query Log:
● shell> mysqldump_slow -s t slow.log > slow.profile
● shell> pt_query_digest slow.log > slow.digest
+-------------------------------+----------+
| Variable_name | Value |
+-------------------------------+----------+
| slow_query_log | OFF |
| slow_query_log_file | slow.log |
| log_queries_not_using_indexes | OFF |
| long_query_time | 0.500000 |
+-------------------------------+----------+
www.fromdual.com
21 / 27
Optimiere das Query!
● Was machen mit den langsamen Abfragen?
● Query Execution Pläne (QEP) erstellen!
● mysql> EXPLAIN SELECT ...
● Interpretieren von QEP:
EXPLAIN SELECT * FROM emp where name = 'Oli';
+-------------+-------+------+---------------+------+---------+------+--------+
| select_type | table | type | possible_keys | key | key_len | ref | rows |
+-------------+-------+------+---------------+------+---------+------+--------+
| SIMPLE | emp | ALL | last | NULL | NULL | NULL | 261369 |
+-------------+-------+------+---------------+------+---------+------+--------+
Operation Genutzter
Index
Angelangte
Zeilen
www.fromdual.com
22 / 27
EXPLAIN Type Operationen
const Höchstens eine passende Zeile, wird wie
Konstante behandelt
eq_ref Ein Zeile pro Zeile aus vorheriger Tabelle
(Primary Key- / Unique Key-Join)
ref Mehrere Zeilen pro Zeile aus vorheriger Tabelle
(non-Unique Key-Join, Datenmenge nimmt zu!)
fulltext Der Join wird mittels FULLTEXT Index gelöst
index_merge Mehrere Index-Suchen werden gemerged
xxx_subquery Subqueries
range Index Range Scan
index Full Index Scan (IFFS)
ALL Full Table Scan
billigteuer
www.fromdual.com
23 / 27
Monitoring
● Fiebermessen in der DB!
● Zwei Anforderungen:
● Alarmierung, wenn was kaputt ist
● Trends aufzeichnen, um Entwicklungen zu sehen
● FromDual Performance Monitor (fpmmm)
● MySQL Enterprise Monitor (MEM)
● Oracle Enterprise Monitor (OEM) + MySQL
Plug-In
● Munin, Cacti, MRTG, ...
www.fromdual.com
24 / 27
MySQL leckt Speicher?
www.fromdual.com
25 / 27
Table Open Cache gross genug?
www.fromdual.com
26 / 27
Schulung: MySQL Performance Tuning
ca. 6 x im Jahr (Berlin und Essen)
Stand 308
www.fromdual.com
27 / 27
Q & A
Fragen ?
Diskussion?
Wir haben Zeit für ein persönliches Gespräch...
● FromDual bietet neutral und unabhängig:
● Beratung
● Remote-DBA
● Support für MySQL, Galera, Percona Server und MariaDB
● Schulung
www.fromdual.com/presentations

Weitere ähnliche Inhalte

Was ist angesagt?

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
 
DOAG 2011: MySQL Replication
DOAG 2011: MySQL ReplicationDOAG 2011: MySQL Replication
DOAG 2011: MySQL ReplicationFromDual GmbH
 
MySQL Replication for Beginners
MySQL Replication for BeginnersMySQL Replication for Beginners
MySQL Replication for BeginnersFromDual 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
 
DOAG 2011: MySQL Performance Tuning
DOAG 2011: MySQL Performance TuningDOAG 2011: MySQL Performance Tuning
DOAG 2011: MySQL Performance TuningFromDual GmbH
 
DOAG 2010: MySQL Architekturen für Oracle DBA's
DOAG 2010: MySQL Architekturen für Oracle DBA'sDOAG 2010: MySQL Architekturen für Oracle DBA's
DOAG 2010: MySQL Architekturen für Oracle DBA'sFromDual GmbH
 
FROSCON 2011: MySQL Replication
FROSCON 2011: MySQL ReplicationFROSCON 2011: MySQL Replication
FROSCON 2011: MySQL ReplicationFromDual GmbH
 
FROSCON 2011: MySQL Performance Tuning
FROSCON 2011: MySQL Performance TuningFROSCON 2011: MySQL Performance Tuning
FROSCON 2011: MySQL Performance TuningFromDual GmbH
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLFromDual GmbH
 
DAOG SIG: HA Architekturen mit MySQL
DAOG SIG: HA Architekturen mit MySQLDAOG SIG: HA Architekturen mit MySQL
DAOG SIG: HA Architekturen mit MySQLFromDual GmbH
 
DOAG SIG: MySQL Replikation, Scale-Out, Master- Master Replikation, Backup
DOAG SIG: MySQL Replikation, Scale-Out, Master- Master Replikation, BackupDOAG SIG: MySQL Replikation, Scale-Out, Master- Master Replikation, Backup
DOAG SIG: MySQL Replikation, Scale-Out, Master- Master Replikation, BackupFromDual 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
 
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
 
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
 
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
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability SolutionsFromDual GmbH
 
MySQL Absicherung und Datensicherung
MySQL Absicherung und DatensicherungMySQL Absicherung und Datensicherung
MySQL Absicherung und DatensicherungLenz Grimmer
 

Was ist angesagt? (20)

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
 
MySQL Backup
MySQL BackupMySQL Backup
MySQL Backup
 
DOAG 2011: MySQL Replication
DOAG 2011: MySQL ReplicationDOAG 2011: MySQL Replication
DOAG 2011: MySQL Replication
 
MySQL Replication for Beginners
MySQL Replication for BeginnersMySQL Replication for Beginners
MySQL Replication for Beginners
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für Entwickler
 
DOAG 2011: MySQL Performance Tuning
DOAG 2011: MySQL Performance TuningDOAG 2011: MySQL Performance Tuning
DOAG 2011: MySQL Performance Tuning
 
DOAG 2010: MySQL Architekturen für Oracle DBA's
DOAG 2010: MySQL Architekturen für Oracle DBA'sDOAG 2010: MySQL Architekturen für Oracle DBA's
DOAG 2010: MySQL Architekturen für Oracle DBA's
 
FROSCON 2011: MySQL Replication
FROSCON 2011: MySQL ReplicationFROSCON 2011: MySQL Replication
FROSCON 2011: MySQL Replication
 
FROSCON 2011: MySQL Performance Tuning
FROSCON 2011: MySQL Performance TuningFROSCON 2011: MySQL Performance Tuning
FROSCON 2011: MySQL Performance Tuning
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQL
 
DAOG SIG: HA Architekturen mit MySQL
DAOG SIG: HA Architekturen mit MySQLDAOG SIG: HA Architekturen mit MySQL
DAOG SIG: HA Architekturen mit MySQL
 
DOAG SIG: MySQL Replikation, Scale-Out, Master- Master Replikation, Backup
DOAG SIG: MySQL Replikation, Scale-Out, Master- Master Replikation, BackupDOAG SIG: MySQL Replikation, Scale-Out, Master- Master Replikation, Backup
DOAG SIG: MySQL Replikation, Scale-Out, Master- Master Replikation, Backup
 
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
 
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
 
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
 
Hazelcast
HazelcastHazelcast
Hazelcast
 
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
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability Solutions
 
MySQL Absicherung und Datensicherung
MySQL Absicherung und DatensicherungMySQL Absicherung und Datensicherung
MySQL Absicherung und Datensicherung
 

Andere mochten auch (13)

Gesucht: HR-Outsourcing-Partner
Gesucht: HR-Outsourcing-Partner Gesucht: HR-Outsourcing-Partner
Gesucht: HR-Outsourcing-Partner
 
Info.ale
Info.aleInfo.ale
Info.ale
 
Visiòn
VisiònVisiòn
Visiòn
 
skydrive_word_doc
skydrive_word_docskydrive_word_doc
skydrive_word_doc
 
Foal RDDLC Paper
Foal RDDLC PaperFoal RDDLC Paper
Foal RDDLC Paper
 
Principios Ágiles para la Gestión de Proyectos TIC
Principios Ágiles para la Gestión de Proyectos TICPrincipios Ágiles para la Gestión de Proyectos TIC
Principios Ágiles para la Gestión de Proyectos TIC
 
SRG Conference April 2016
SRG Conference April 2016SRG Conference April 2016
SRG Conference April 2016
 
Caso analisiseeff
Caso analisiseeffCaso analisiseeff
Caso analisiseeff
 
Tech World Site Muhammad Muhaddis
Tech World Site Muhammad MuhaddisTech World Site Muhammad Muhaddis
Tech World Site Muhammad Muhaddis
 
1r ESO - Visual i Plàstica - La línia
1r ESO - Visual i Plàstica - La línia1r ESO - Visual i Plàstica - La línia
1r ESO - Visual i Plàstica - La línia
 
Internal Marketing
Internal MarketingInternal Marketing
Internal Marketing
 
CCSS 1ºESO Unidade 6 A Prehistoria
CCSS 1ºESO Unidade 6  A PrehistoriaCCSS 1ºESO Unidade 6  A Prehistoria
CCSS 1ºESO Unidade 6 A Prehistoria
 
Instalacion calefaccion
Instalacion calefaccionInstalacion calefaccion
Instalacion calefaccion
 

Ähnlich wie MySQL Performance Tuning für Oracle-DBA's

Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...Informatik Aktuell
 
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Ulrike Schwinn
 
Oracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im ÜberblickOracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im ÜberblickGFU Cyrus AG
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLFromDual GmbH
 
Oracle workshop sessiontracing
Oracle workshop sessiontracingOracle workshop sessiontracing
Oracle workshop sessiontracingciganek
 
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
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Ulrike Schwinn
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ulrike Schwinn
 
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
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenICS User Group
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthGerhard Lausser
 
Datenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerDatenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerMarkus Flechtner
 
OSMC 2008 | Nagios & OTRS Integration by Jens Bothe
OSMC 2008 | Nagios & OTRS Integration by Jens BotheOSMC 2008 | Nagios & OTRS Integration by Jens Bothe
OSMC 2008 | Nagios & OTRS Integration by Jens BotheNETWAYS
 
Oracle Performance-Analyse mit frei verfügbaren Mitteln
Oracle Performance-Analyse mit frei verfügbaren Mitteln Oracle Performance-Analyse mit frei verfügbaren Mitteln
Oracle Performance-Analyse mit frei verfügbaren Mitteln OPITZ CONSULTING Deutschland
 
AdminCamp 2011 Performance
AdminCamp 2011 PerformanceAdminCamp 2011 Performance
AdminCamp 2011 PerformanceUlrich Krause
 

Ähnlich wie MySQL Performance Tuning für Oracle-DBA's (20)

Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
Norbert Rieger – IT-Tage 2015 – Optimierung der Performance bei Oracle-Datenb...
 
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
 
Oracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im ÜberblickOracle 11g - Neuerungen im Überblick
Oracle 11g - Neuerungen im Überblick
 
Froscon 2012 DWH
Froscon 2012 DWHFroscon 2012 DWH
Froscon 2012 DWH
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQL
 
Oracle workshop sessiontracing
Oracle workshop sessiontracingOracle workshop sessiontracing
Oracle workshop sessiontracing
 
Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12
 
01 sqlplus
01 sqlplus01 sqlplus
01 sqlplus
 
Performance-Analyse mit Bordmitteln
Performance-Analyse mit BordmittelnPerformance-Analyse mit Bordmitteln
Performance-Analyse mit Bordmitteln
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
 
check_sap_health
check_sap_healthcheck_sap_health
check_sap_health
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)
 
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
 
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratorenIcsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
Icsug conf 14_tipps-und-skripts-fuer-ibm-connections-administratoren
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_health
 
Datenbank-Hausputz für Einsteiger
Datenbank-Hausputz für EinsteigerDatenbank-Hausputz für Einsteiger
Datenbank-Hausputz für Einsteiger
 
OSMC 2008 | Nagios & OTRS Integration by Jens Bothe
OSMC 2008 | Nagios & OTRS Integration by Jens BotheOSMC 2008 | Nagios & OTRS Integration by Jens Bothe
OSMC 2008 | Nagios & OTRS Integration by Jens Bothe
 
Oracle Performance-Analyse mit frei verfügbaren Mitteln
Oracle Performance-Analyse mit frei verfügbaren Mitteln Oracle Performance-Analyse mit frei verfügbaren Mitteln
Oracle Performance-Analyse mit frei verfügbaren Mitteln
 
AdminCamp 2011 Performance
AdminCamp 2011 PerformanceAdminCamp 2011 Performance
AdminCamp 2011 Performance
 

Mehr von 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
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015FromDual GmbH
 
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
 
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
 

Mehr von FromDual GmbH (18)

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
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015
 
MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?
 
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
 

MySQL Performance Tuning für Oracle-DBA's

  • 1. www.fromdual.com 1 / 27 MySQL Performance Tuning für Oracle-DBA's DOAG Konferenz 2015, Nürnberg Oli Sennhauser Senior MySQL Consultant, FromDual GmbH oli.sennhauser@fromdual.com
  • 2. www.fromdual.com 2 / 27 Über FromDual GmbH Support remote-DBA Schulung Beratung
  • 3. www.fromdual.com 3 / 27 Inhalt HA Solutions ➢ Read scale-out ➢ Replication set-up for HA ➢ Active/passive fail-over ➢ MySQL Cluster ➢ Replication Cluster ➢ Storage-Engine-Replication MySQL Performance Tuning ➢ Was ist Performance? ➢ Was kostet Performance? ➢ Tuning Massnahmen ➢ MySQL Konfiguration ➢ Wo schauen? ➢ Langsame Abfragen finden ➢ Optimiere das Query! ➢ Monitoring
  • 4. www.fromdual.com 4 / 27 Was ist Performance? ● Es gibt 2 verschiedene Ansichten: ● Durchsatz ● Wie viel Operationen kriege ich pro Zeit durch? → Anzahl ● Abfragen pro Sekunde (DB Queries) ● Business Operationen pro Minute (Rechnungen, Bestellungen, Einkäufe, ...) ● Grösse: QPS, QPM, OPS ● Antwortzeit (Latenz) ● Wie lange dauert meine Operation? → Zeit ● Laufzeit einer SQL-Abfrage ● Zeitdauer eines Rechnungslaufs oder eines Backups ● Grösse: ms, s, min oder h ● Und diese beiden Ansichten sind typischerweise gegenläufig!!!
  • 5. www.fromdual.com 5 / 27 Durchsatz (throughput) ● Grad der Parallelität eines Systems ● Concurrency, Nebenläufigkeit ● Design und Architektur einer Applikation ● Neue DB Versionen haben tendenziell mehr Durchsatz ● Tummelplatz von Marketing!!! Dimitri Kravtchuk, MySQL Performance Architect @ Oracle Bester Durchsatz! Skaliert mehr
  • 6. www.fromdual.com 6 / 27 Antwortzeit (Latenz, latency) ● Hängt ab von ● der Implementierung und ● der Datenmenge ● Neue DB Versionen sind tendenziell langsamer! ● Durchsatz geht üblicherweise auf Kosten der Antwortzeit (mehr Codepath) ● Wie optimal läuft mein Zeugs? ● Tummelplatz des DBA!!!
  • 7. www.fromdual.com 7 / 27 Durchschnittlicher DB-Nutzer ● Wo liegen nun der durchschnittliche DB-Nutzer? ● Wir sind nicht ● Facebook, ● Twitter, ● LinkedIn...? ● SHOW GLOBAL STATUS LIKE 'threads_running'; ● d.h. die Softwarehersteller arbeiten gegen uns!
  • 8. www.fromdual.com 8 / 27 Was „kostet“ Performance? ● Was kostet mich Performance und Tuning? ● Es gibt nix um sonst im Leben! Irgendwie muss ich immer dafür "bezahlen". Dimitri Kravtchuk, MySQL Performance Architect @ Oracle Performance Low costSecurity
  • 10. www.fromdual.com 10 / 27 Hardware und O/S ● Tuning der Hardware ● Kosten vs Performance ● billig != performant (Latenz, Durchsatz) ● O/S (Linux) ● Für die meisten Fälle OK ● max. 20 – 50% mehr Durchsatz ● Lohnt meist nicht! ● Virtualisierung ● Gut für Konsolidieren von Micky Maus DB's ● Schlecht für hohe Performance!
  • 11. www.fromdual.com 11 / 27 VM vs rohes-Eisen ● Benchmark von vorletzter Woche: ● alte Hardware vs. neue Virtualisierung ● MySQL 5.5 vs 5.6 ● Cluster vs. Single Node ● Lasttest mit JMeter ● Enterprise Webshop ● Tomcat/Java ● CPU-Bound ro-Workload :-( :-( mehr = besser weniger = besser
  • 12. www.fromdual.com 12 / 27 MySQL Konfiguration ● Bis hierhin war praktisch alles nicht MySQL spezifisch! ● MySQL kennt verschiedene „Storage Engines“ ● InnoDB, TokuDB, MyISAM, Memory ● → Heute v.a. InnoDB ● Crash-Safe → automatisches Crash Recovery ● Unterstützt Transaktionen ● Erlaubt konkurrierendes Lesen und Schreiben SQL-Layer Handler Interface InnoDB MyISAM TokuDB Memory default_storage_engine = InnoDB
  • 13. www.fromdual.com 13 / 27 Wo konfiguriert man MySQL ● Konfigurationsdateien: ● RedHat + SuSE: /etc/my.cnf + /etc/my.cnf.d/* ● Debian + Ubuntu: /etc/mysql/my.cnf + /etc/mysql/conf.d/* ● Die Konfigurationsdatei ist unterteilt in verschiedene „Sections“: ● [client] [mysql] [mysqldump] [mysqld_safe] [mysqld] ... ● Richtige erwischen! ● Erfordert DB-Restart :-( ● shell> service mysql restart ● Gutes Template unter: ● http://fromdual.com/mysql-configuration-file-sample ● Online Konfiguration ändern: ● mysql> SET GLOBAL variable = wert; ● Persistieren in my.cnf nicht vergessen! ● MySQL kennt KEINE spfiles! ● http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
  • 14. www.fromdual.com 14 / 27 Konfiguration SQL-Layer ● Was konfiguriert man? ● Query Cache ● Eigentlich: Result Cache ● Nicht zu gross machen! ● query_cache_size = ≤128M ● Schlecht bei hoher Parallelität! ● Achtung: in 5.6 default aus (query_cache_type = on)! ● Table Open Cache ● Handle auf Tabellen, pro Verbindung pro Tabelle je eine ● table_open_cache = 384 - 2048 ● Table Definition Cache ● Tabellendefinitionen, → Anz. Tabellen in Instanz ● table_defintion_cache = 512
  • 15. www.fromdual.com 15 / 27 InnoDB Konfiguration ● InnoDB Buffer Pool ● innodb_buffer_pool_size = 80% vom RAM ● innodb_buffer_pool_instances = 8 - 16 ● InnoDB Log Files ● innodb_log_file_size = 30 Minuten Daten ● innodb_log_file_size = 32 – 512M ● InnoDB Transaktionsflushing ● innodb_flush_log_at_trx_comit = 1 für sicher ● innodb_flush_log_at_trx_comit = 0 oder 2 für schnell ● Transaktionslog und Binary Log syncing ● sync_binlog = 0 für schnell ● sync_binlog = 1 für sicher (neuer default in 5.7)
  • 16. www.fromdual.com 16 / 27 Wo schauen? ● Variablen (Einstellungen): ● mysql> SHOW GLOBAL VARIABLES LIKE '...'; ● Status (Messen was dabei raus kommt): ● mysql> SHOW GLOBAL STATUS LIKE '...'; ● mysql> SHOW ENGINE INNODB STATUSG ● Monitoring Lösungen ● FromDual Performance Monitor für MySQL ● MySQL Enterprise Monitor ● etc.
  • 17. www.fromdual.com 17 / 27 Langsame Abfragen finden ● Alle DB Variablen sind richtig eingestellt... ● Performance Tuning Regel #1: ● Tune the f... Query! ● Wie findet man diese Abfragen? ● Ohne Vorbereitung: ● SHOW PROCESSLIST; ● Mit wenig Vorbereitung ● Performance Schema ● Mit mehr Vorbereitung ● Slow Query Log
  • 18. www.fromdual.com 18 / 27 SHOW PROCESSLIST ● Wann? ● unvorbereitete und schnelle Intervention ● „Es klemmt jetzt gerade!“ ● Wie? ● mysql> SHOW [FULL] PROCESSLIST; ● Oder alternativ übers INFORMATION_SCHEMA oder neu PERFORMANCE_SCHEMA ● Was dann? ● System beruhigen: mysql> KILL [QUERY|CONNECTION] <connection_id>; ● Nachhaltig: Query tunen!
  • 19. www.fromdual.com 19 / 27 PERFORMANCE_SCHEMA UPDATE setup_consumers SET enabled = 1 WHERE name = 'events_statements_history_long'; SELECT left(digest_text, 64) AS query , ROUND(SUM(timer_end-timer_start)/1000000000, 1) AS tot_exec_ms , ROUND(SUM(timer_wait)/1000000000, 1) AS tot_wait_ms , ROUND(SUM(lock_time)/1000000000, 1) AS tot_lock_ms , MIN(LEFT(DATE_SUB(NOW(), INTERVAL (isgs.VARIABLE_VALUE - TIMER_START*10e-13) second), 19)) AS first_seen , MAX(LEFT(DATE_SUB(NOW(), INTERVAL (isgs.VARIABLE_VALUE - TIMER_START*10e-13) second), 19)) AS last_seen , COUNT(*) as cnt FROM events_statements_history_long JOIN information_schema.global_status AS isgs WHERE isgs.variable_name = 'UPTIME' GROUP BY LEFT(digest_text,64) ORDER BY tot_exec_ms DESC LIMIT 10; +------------------------------------------------------------------+---------+---------+---------+-------------+-------------+-----+ | query | exec_ms | wait_ms | lock_ms | first_seen | last_seen | cnt | +------------------------------------------------------------------+---------+---------+---------+-------------+-------------+-----+ | INSERT INTO `test` SELECT ? , DATA , ? FROM `test` | 50493.5 | 50493.5 | 26.3 | 12 16:41:35 | 12 16:42:04 | 20 | | SELECT LEFT ( `digest_text` , ? ) , `ROUND` ( SUM ( `timer_end` | 14434.6 | 14434.6 | 25.8 | 12 16:48:44 | 12 17:07:15 | 6 | | SELECT * FROM `test` | 7483.0 | 7483.0 | 0.2 | 12 16:41:16 | 12 16:42:34 | 2 | | SHOW ENGINE INNODB STATUS | 1912.4 | 1912.4 | 0.0 | 12 16:37:19 | 12 17:07:36 | 687 | | SHOW GLOBAL VARIABLES | 1091.1 | 1091.1 | 68.8 | 12 16:37:19 | 12 17:07:36 | 687 | | SHOW GLOBAL STATUS | 638.7 | 638.7 | 40.8 | 12 16:37:19 | 12 17:07:36 | 687 | | SELECT LEFT ( `digest_text` , ? ) , SUM ( `timer_end` - `timer_s | 356.2 | 356.2 | 42.4 | 12 16:42:38 | 12 16:45:00 | 6 | | SELECT `digest_text` , SUM ( `timer_end` - `timer_start` ) / ? A | 325.3 | 325.3 | 0.4 | 12 16:40:44 | 12 16:42:18 | 3 | | SELECT `DIGEST_TEXT` , ( `TIMER_END` - `TIMER_START` ) / ? AS `e | 163.2 | 163.2 | 1.0 | 12 16:37:44 | 12 16:39:22 | 9 | | SELECT LOWER ( REPLACE ( trx_state , ?, ... ) ) AS state , COUNT | 133.9 | 133.9 | 80.2 | 12 16:37:19 | 12 17:07:36 | 687 | +------------------------------------------------------------------+---------+---------+---------+-------------+-------------+-----+ http://fromdual.com/mysql-performance-schema-hints#top_long_running_queries
  • 20. www.fromdual.com 20 / 27 Slow Query Log ● Systematischer Ansatz mit etwas Vorlauf: ● Kann dynamisch eingeschaltet werden: ● SET GLOBAL slow_quey_log = 1; ● Profile vom Slow Query Log: ● shell> mysqldump_slow -s t slow.log > slow.profile ● shell> pt_query_digest slow.log > slow.digest +-------------------------------+----------+ | Variable_name | Value | +-------------------------------+----------+ | slow_query_log | OFF | | slow_query_log_file | slow.log | | log_queries_not_using_indexes | OFF | | long_query_time | 0.500000 | +-------------------------------+----------+
  • 21. www.fromdual.com 21 / 27 Optimiere das Query! ● Was machen mit den langsamen Abfragen? ● Query Execution Pläne (QEP) erstellen! ● mysql> EXPLAIN SELECT ... ● Interpretieren von QEP: EXPLAIN SELECT * FROM emp where name = 'Oli'; +-------------+-------+------+---------------+------+---------+------+--------+ | select_type | table | type | possible_keys | key | key_len | ref | rows | +-------------+-------+------+---------------+------+---------+------+--------+ | SIMPLE | emp | ALL | last | NULL | NULL | NULL | 261369 | +-------------+-------+------+---------------+------+---------+------+--------+ Operation Genutzter Index Angelangte Zeilen
  • 22. www.fromdual.com 22 / 27 EXPLAIN Type Operationen const Höchstens eine passende Zeile, wird wie Konstante behandelt eq_ref Ein Zeile pro Zeile aus vorheriger Tabelle (Primary Key- / Unique Key-Join) ref Mehrere Zeilen pro Zeile aus vorheriger Tabelle (non-Unique Key-Join, Datenmenge nimmt zu!) fulltext Der Join wird mittels FULLTEXT Index gelöst index_merge Mehrere Index-Suchen werden gemerged xxx_subquery Subqueries range Index Range Scan index Full Index Scan (IFFS) ALL Full Table Scan billigteuer
  • 23. www.fromdual.com 23 / 27 Monitoring ● Fiebermessen in der DB! ● Zwei Anforderungen: ● Alarmierung, wenn was kaputt ist ● Trends aufzeichnen, um Entwicklungen zu sehen ● FromDual Performance Monitor (fpmmm) ● MySQL Enterprise Monitor (MEM) ● Oracle Enterprise Monitor (OEM) + MySQL Plug-In ● Munin, Cacti, MRTG, ...
  • 25. www.fromdual.com 25 / 27 Table Open Cache gross genug?
  • 26. www.fromdual.com 26 / 27 Schulung: MySQL Performance Tuning ca. 6 x im Jahr (Berlin und Essen) Stand 308
  • 27. www.fromdual.com 27 / 27 Q & A Fragen ? Diskussion? Wir haben Zeit für ein persönliches Gespräch... ● FromDual bietet neutral und unabhängig: ● Beratung ● Remote-DBA ● Support für MySQL, Galera, Percona Server und MariaDB ● Schulung www.fromdual.com/presentations