MySQL Performance Tuning für Entwickler



Ähnliche Dokumente
MySQL Performance Tuning für Entwickler

Performance Tuning & Scale-Out mit MySQL

Need for Speed: Indexierung unter MySQL

MySQL Performance Tuning

MySQL Cluster mit Galera

MySQL Replikation - Die Eier legende Wollmilchsau?

MySQL High Availability. DOAG 2013 Datenbank. 14. Mai 2013, Düsseldorf. Oli Sennhauser

MySQL Replikation Neue Features in 5.5 und 5.6

MySQL Query Tuning. DOAG K & A 2017, Nürnberg. Oli Sennhauser. Senior MySQL Berater, FromDual GmbH.

HA Architekturen mit MySQL

Einstieg in das SQL- und Datenbanktuning Loblied auf den Tabellen-Index!

Synchrone multi-master Replikation für MySQL

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

MySQL Security. DOAG 2013 Datenbank. 14. Mai 2013, Düsseldorf. Oli Sennhauser

MySQL Backup und Restore

MySQL Performance Tuning

Konsolidieren von MySQL Landschaften

Dokumentation für das Web-basierte Abkürzungsverzeichnis (Oracle mod_plsql / Apache)

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

MySQL 5.1. Kristian Köhntopp

Indexing und Performance Tuning

Partitionieren über Rechnergrenzen hinweg

Serverbetrieb überwachen Prozesse Protokolldateien. MySQL 4, 5. Kapitel 11: Logfiles. Marcel Noe

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

SEMINAR Modifikation für die Nutzung des Community Builders

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

MySQL Performance: Getting Started InnoDB

Datenbanken für Online Untersuchungen

MySQL New Features 5.6

PostgreSQL in großen Installationen

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Einführung in das Tuning von MySQL

Kurzanleitung OOVS. Reseller Interface. Allgemein

Well-Balanced. Performance Tuning

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Google Analytics einrichten

Beispiel 1: Filmdatenbank

Bei der Benutzung des NetWorker Client Configuration Wizards könnten Sie die Namen Ihrer Datenbanken verlieren

MySQL Cluster und MySQL Proxy

Labor 3 - Datenbank mit MySQL

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Performance Probleme aufspüren

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Leichte-Sprache-Bilder

Informatik 12 Datenbanken SQL-Einführung

SQL-Injection. Seite 1 / 16

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation.

Preisvergleich ProfitBricks - Amazon Web Services M3 Instanz

BBCode v2.0. Einleitung...2 Installation... 3 Bugfixliste Inhaltsverzeichnis. Überarbeiteter BBCode + neuem Interface.

Wir machen neue Politik für Baden-Württemberg

Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier)

Zeiterfassung-Konnektor Handbuch

SQL: statische Integrität

MySQL Installation. AnPr

SAP Memory Tuning. Erfahrungsbericht Fritz Egger GmbH & Co OG. Datenbanken sind unsere Welt

Typo 3 installieren. Schritt 1: Download von Typo3

Michaela Weiss 01. April Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

MySQL 101 Wie man einen MySQL-Server am besten absichert

Was passiert mit den Daten nach der Scheidung mit der Cloud Lösung?

MySQL Konfiguration - die wichtigsten Parameter

MySQL Replikation. Erkan Yanar linsenraum.de linsenraum.de

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

modern - sharp - elegant

Was meinen die Leute eigentlich mit: Grexit?

SQL Performance - Tips Do's & Don'ts

Tuning des Weblogic /Oracle Fusion Middleware 11g. Jan-Peter Timmermann Principal Consultant PITSS

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

MySQL für Oracle DBA's

HOW TO CREATE A FACEBOOK PAGE.

Welchen Weg nimmt Ihr Vermögen. Unsere Leistung zu Ihrer Privaten Vermögensplanung. Wir machen aus Zahlen Werte

MySQL Queries on "Nmap Results"

Installation MySQL Replikationsserver

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java.

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Warum Sie jetzt kein Onlinemarketing brauchen! Ab wann ist Onlinemarketing. So finden Sie heraus, wann Ihre Website bereit ist optimiert zu werden

Stud.IP Performance Testing

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Howto. Einrichten des TREX Monitoring mit SAP Solution Manager Diagnostics

RESTful Web. Representational State Transfer

SQL. Fortgeschrittene Konzepte Auszug

Monitoring und Datenmanagement: Eine Beziehung mit Tücken und großen Chancen Ansichten eines Monitors Katharina Thorn Vorsitzende DVMD e.v.

TeamSpeak3 Einrichten

INSTALLATION. Voraussetzungen

Installation SQL- Server 2012 Single Node

Inhalt. 1 Übersicht. 2 Anwendungsbeispiele. 3 Einsatzgebiete. 4 Systemanforderungen. 5 Lizenzierung. 6 Installation. 7 Key Features.

Apache HBase. A BigTable Column Store on top of Hadoop

OKB Die MS SQL-Volltextsuche für organice SQL einrichten

Anlegen eines SendAs/RecieveAs Benutzer unter Exchange 2003, 2007 und 2010

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

GSD-Radionik iradionics Android-App

Replikation auf einem Microsoft SQLServer 2000

Transkript:

MySQL Performance Tuning für Entwickler Cebit 2015, Hannover Oli Sennhauser Senior MySQL Consultant, FromDual GmbH oli.sennhauser@fromdual.com 1 / 18

FromDual GmbH Support Beratung remote-dba Schulung 2 / 18

Datenbank Performance Über was reden wir eigentlich genau? Durchsatz (throughput) z. B. Business-Transaktionen pro Minute Antwortzeit (Latenz, response time) z.b. Business-Transaktion dauert 7.2 Sekunden im Schnitt Über was redet Marketing? Durchsatz, Skalierbarkeit von DB-Queries Gap! 95% der Nutzer haben ein Latenz-Problem 5% ein Durchsatz/Skalierungs-Problem 3 / 18

Durchsatz nimmt zu 4 / 18

Antwortzeit nimmt zu! 5 / 18

Wo ist meine Zeit geblieben? Antwortzeit meiner Business-Transaktion d. h. Zeit messen!!! Applikation mit Probes versehen Profiler (PHP (XDebug), Java (Jprofiler),...) Profil erstellen: function x() { start = current_time(); count[x]++; end = current_time(); duration[x] += (end start); } a c e g h j function count time x 123 156.25 0.8% y 19 827.30 4.1% z 2 19280.00 95.1% Total 144 20263.55 100.0% b d f time i 6 / 18

End-to-End Profile Idealfall: End-to-End Profile: Round-Trip pro Business-Transaktion Web-Client Fat-Client % Anzahl Round-Trips? Network Connector % Menge der Daten? Web-Server Application % % Queries pro B-trx? NW-Latenz? Network % DB % 7 / 18

General Query Log Alle Queries werden gelogged: + + + Variable_name Value + + + general_log OFF general_log_file general.log + + + Gut bei: Frameworks Fremdapplikationen Beispiel: CMS: 1 Änderung (30 s) 30'000 Queries in der DB (ca. 1 ms/query) 8 / 18

Ist die Datenbank schuld? Angenommen die Business-Trx verbringt viel Zeit in der DB: Dann ist NICHT zwingend die DB schuld! SISO Prinzip? 1 Connection = 1 Query = 1 Thread = 1 Core Heute: Viel Memory, SSD Oft ist/wird wieder die CPU der Flaschenhals Wie gucken? vmstat, top, iostat 9 / 18

Performance-Waage Wo ansetzen? HW, OS, DB Konfiguration, Applikation Architektur und Design Typischerweise NICHT DB-Konfiguration (Defaults sind besser geworden!) DB Konfiguration: 9 Variablen, dann ist gut! 10 / 18

Des Admins Bazooka Wenig Reaktionszeit: SHOW [FULL] PROCESSLIST; System entspannen: KILL [CONNECTION QUERY] id; mysql> SHOW PROCESSLIST; + + + + + + + + Id User db Command Time State Info + + + + + + + + 146 live live Query 710 Sending data SELECT COUNT(*) FROM (SELECT DISTINCT(nid),... 240 live live Query 467 Sending data SELECT COUNT(*) FROM (SELECT DISTINCT(nid),... 272 live live Query 275 Sending data SELECT COUNT(*) FROM (SELECT DISTINCT(nid),... 323 live live Query 79 Sending data SELECT COUNT(*) FROM (SELECT DISTINCT(nid),... 374 admin NULL Query 0 NULL SHOW PROCESSLIST + + + + + + + + mysql> KILL CONNECTION 146 11 / 18

Slow Query Log Etwas systematischer: Slow Query Log + + + Variable_name Value + + + log_queries_not_using_indexes ON long_query_time 0.500000 slow_query_log OFF slow_query_log_file slow.log min_examined_row_limit 100 + + + Auswerten: mysqldumpslow s t slow.log > profile 12 / 18

Graphisch: Query Analyzer 13 / 18

Harte Arbeit Sammeln und Schauen (Slow Query Log) Verstehen (Query Execution Plan (QEP)) EXPLAIN SELECT COUNT(*) FROM... Denken Wo lege ich den Index an... Tipp 5.7: EXPLAIN anderer Connection: EXPLAIN FOR CONNECTION connection_id; 14 / 18

Query Execution Plan (QEP) EXPLAIN SELECT domain FROM newsite_domain AS nd JOIN newsite_main AS nm ON nd.id = nm.id WHERE nm.gbot_indexer = '62' AND (nm.state=2 OR nm.state=3 OR nm.state=9) ; + + + + + + + + table type possible_keys key ref rows Extra + + + + + + + + nm range PRIMARY,site_state site_state NULL 150298 Using where nd eq_ref PRIMARY PRIMARY jobads.nm.id 1 + + + + + + + + CREATE TABLE `newsite_main` (... PRIMARY KEY (`id`), KEY `site_state` (`state`) ); 15 / 18

Indexieren Der Schlüssel zur besseren Query Performance sind Indices Wo setzen wir Indices: Jede Tabelle hat einen Primary Key! Dort wo gejoined wird Wo gute Filter vorhanden sind (WHERE a =...) Spezialfälle Covering Index Index zu ORDER BY Optimierung PK zur Verbesserung der Lokalität der Daten 16 / 18

Wir suchen noch: MySQL Datenbank Enthusiast/in für Support / remote-dba / Beratung 17 / 18

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 /presentations 18 / 18