Der SuperCluster M7 erhält seine be- [4] In-Memory Database: SPARC T7-1 Faster [11] Software in Silicon Cloud, https://swisdev. oracle.com sondere Leistungsfähigkeit für Datenban- Than x86 E5 v3, Performance & Best Practices Blog, Oktober 2015, [12] Oracle SPARC Servers, https://www.oracle. ken durch dieselben Extreme Flash bezie- https://blogs.oracle.com/BestPerf/en- com/servers hungsweise High Capacity Storage Server try/20151025_imdb_t7_1 [13] Oracle SPARC T7 and SPARC M7 Server wie die Exadata und kann zusätzlich mit [5] ESG Lab Review: Redefining Real-time Architecture – Software in Silicon Secure Database Performance with the SPARC Clouds for the Real-Time Enterprise, Ora- SQL in Silicon punkten. Dazu ist der Su- M7 Processor from Oracle, cle White Paper, Oktober 2015, perCluster von vornherein darauf ausge- http://www.esg-global.com/lab-reports/esg- http://www.oracle.com/technetwork/ legt, neben der Datenbank auch weitere lab-review-redefining-real-time-database- server-storage/sun--enterprise/docu- performance-with-the-sparc-m7-processor- mentation/sparc-t7-m7-server-architec- Lasten auszuführen. Der SuperCluster M7 from-oracle/ ture-2702877.pdf bietet durch flexiblere und kleinere Kon- [6] SPECjEnterprise2010: SPARC T7-1 World [14] IBM GSKit Supports SPARC M7 Hardware figurationsoptionen auch einen niedrige- Record with Single Application Server Encryption, Solaris and Systems Infor- Using 1 to 4 Chips, Performance & Best mation for ISVs Blog, Dezember 2015: ren Einstiegspunkt als der Vorgänger (sie- Practices Blog, Oktober 2015, https://blogs.oracle.com/partnertech/entry/ he Abbildung 3). https://blogs.oracle.com/BestPerf/en- ibm_gskit_supports_sparc_m7 try/20151025_jent_t7_1 [7] Studio, http://www.oracle.com/technetwork/server- Literatur storage/solarisstudio [8] Liang Chen, Raj Prakash, Ikroop Dhillon: [1] In-Memory, Oracle Dev Tip: Using Application Data Integrity White Paper, July 2015, and Oracle Solaris Studio to Find and Fix http://www.oracle.com/technetwork/data- Memory Access Errors, April 2015, base/in-memory/overview/twp-oracle-data- https://community.oracle.com/docs/DOC- base-in-memory-2245633.html 912448 [2] Juan Loaiza: Accelerate Database Pro- [9] Enrico Perla: Hardening allocators with cessing with SQL in Silicon, Video - 6min., ADI, Blog, November 2014, http://medianetwork.oracle.com/video/play- https://blogs.oracle.com/enrico/entry/hard- er/4574027564001 ening_allocators_with_adi [3] 12.1.0.2 Readme: 2.4 Data Analytics Ac- [10] Raj Prakash: Oh, no! What Have I Done celerators on SPARC for Oracle Database Now? - Common Types of Memory Ac- Overview, cess Errors, Blogreihe, Oktober 2015, http://docs.oracle.com/database/121/RE- Franz Haberhauer https://blogs.oracle.com/raj/entry/common_ ADM/chapter12102.htm#READM122 [email protected] types_of_memory_access

Was DBAs über das neue MySQL 5.7 wissen sollten

Mario Beck und Carsten Thalheimer, ORACLE Deutschland B.V. & Co. KG

Nach zweieinhalbjähriger Entwicklungszeit hat Oracle mit MySQL 5.7 das dritte große MySQL-Release seit der Über- nahme von veröffentlicht. Es bringt nicht nur zahlreiche neue Funktionalitäten rund um InnoDB, Replikation und den neuen Optimizer, sondern öffnet sich mit dem JSON-Datentyp auch weiteren Anwendungen.

Mit großer Spannung richtet sich alljährlich Veranstaltung im Oktober 2015 zum Anlass, zur Verfügung. Auch bei den unterstützten im Herbst der Blick auf die in San Franzis- um fast zwanzig MySQL-Produkt-Announce- Betriebssystemen (Linux, Windows, Solaris, co stattfindendeOracle OpenWorld. Oracle ments bekannt zu geben (siehe „http://fo- Apple OS X und FreeBSD) gibt es kaum Un- nimmt diese Veranstaltung traditionell zum rums..com/list.php?3“). Wie erwartet, terschiede zur Version 5.6. Anlass, um Produktneuheiten anzukündi- steht auch das Release 5.7 wieder im Source Die Neuerungen sind für Kenner des gen und ausführliche Details zu präsentie- Code unter dem Filehosting-Dienst GitHub Produkts nicht wirklich neu: Da MySQL ein ren. Auch die MySQL-Gruppe nahm diese oder direkt unter „http://www.mysql.com“ Open-Source-Projekt ist, werden sie schon

Red Stack Magazin 01/2016 67 Aktuell

sehr früh als „Labs Release“ zum Test und dardmäßig mittels „AES 256“ abgelegt und MySQL-Optimizer nicht zum gewünschten zum Sammeln von Feedback zur Verfügung können mit Richtlinien belegt sein, etwa mit Ergebnis führen, gibt es in der neuen MySQL- gestellt und fließen bei positiver Bewertung „Passwort Rotation”, Auto-Logout, komple- Version zusätzlich die Möglichkeit, mit einem nach und nach in die sogenannten „Develop- xen Passwörtern und anderen Kriterien. neuen „Query Rewrite Plug-in“ SQL-Anfragen ment Milestone Releases“ (Pre-Release-Ver- Auch initiale MySQL-Installationen sind zu überarbeiten („optimizer hints“) oder An- sionen) ein. Für MySQL gab es daher schon nun standardmäßig via SSL verfügbar; die fragen auszutauschen (siehe Listing 1). vor etwa zwei Jahren die erste Version (5.7.1). aus früheren Versionen bekannten „Ano- Mit dem neuen Release ist es nun auch Ihr folgten acht Updates im Abstand von nymus User“ und Test-Datenbank stehen möglich, SQL-Statements nach einer defi- etwa drei bis vier Monaten, in denen Fehler nicht mehr zur Verfügung. Das bei der In- nierten Zeit in Millisekunden automatisiert bereinigt und neue Labs-Funktionalitäten stallation automatisch angelegte, zufälli- zu terminieren. Dieser Timeout kann glo- eingebaut wurden, bis sie als Version 5.7.9 ge Passwort kann aus Logfile ausgelesen bal, für eine Sitzung oder pro Statement den Status einer offiziellen MySQL-Version werden und läuft in der Standard-Konfi- erfolgen. Gerade in Verbindung mit dem mit Produktions-Support erlangte. Beim Be- guration nach einem Jahr ab. Zum Manage- zuvor genannten „Query Rewrite Plug-in“ trachten der künftigen Labs-Releases ent- ment der Datensicherheit steht eine Reihe können bekannte, problematische SQL- steht schon ein erstes Gefühl für Neuerun- neuer Tools (wie „mysql_ssl_rsa_setup“) zur Statements beispielsweise in Legacy-Ap- gen der Nachfolge-Versionen von MySQL Verfügung, um das Absichern der Daten- plikationen deutlich entschärft werden: 5.7, die ebenfalls wieder als Development bank zu vereinfachen. „SELECT /*+ MAX_EXECUTION_TIME(1000) Milestone Release 1 beginnen werden. */ * FROM giant_table;“.

Neuer „cost based“-MySQL- MySQL 5.7 im Überblick Optimizer MySQL-Performance- und SYS- Schema Die Entwicklung der verschiedenen My- Eingangs wurde bereits auf die aktuellen SQL-5.7-Updates kann man sehr schön an- Benchmarks eingegangen. Für die Pra- Das Performance-Schema ist eine interne hand der MySQL-Entwickler-Team-Blogs xis ist es allerdings oftmals wichtiger, wie Datenbank, mit der man bereits seit Versi- nachverfolgen (siehe „http://mysqlserver- sich die Datenbank bei komplexen Abfra- on 5.5 interne MySQL-Prozesse analysieren team.com“). Insgesamt beinhaltet MySQL gen verhält und diese effizient abarbei- kann. Diese Daten lassen sich über SQL ab- mehr als 360 Worklogs (neue Funktionen). tet. Diese Aufgabe übernimmt in MySQL fragen. Das Performance-Schema wurde Obwohl es in allen MySQL-Komponenten der Optimizer, der gründlich überarbei- bereits in MySQL 5.6 umfassend erweitert; Erweiterungen gab, konzentriert sich dieser tet wurde. Konnte er bisher nur global auch MySQL 5.7 enthält erneut Erweiterun- Artikel auf einige der großen Änderungen mittels „optimizer_switch“ angepasst gen für die zusätzliche Instrumentierung (siehe Abbildung 1). Wie bei jedem neuen Re- werden, so gibt es nun die Möglichkeit, des verwendeten Speichers und der State- lease spielen Performance und Skalierung einzelne SQL-Anfragen über „optimizer ments, etwa für Stored Procedures oder eine wichtige Rolle. Zeitgleich zu dem Er- hints“ sehr granular für effizientere Da- Functions sowie für SQL-Transaktionen. scheinen von MySQL 5.7 veröffentliche die tenbank-Abfragen zu steuern. Die alten Die Verwendung dieser Instrumentie- MySQL-Benchmarkgruppe auf Basis eines Optimizer-Hints bestehen aus Kompati- rungen in MySQL und somit der Einsatz des aktuellen Vierfach-CPU-Servers (E7-8890v3) bilitäts-Gründen weiterhin. Performance-Schemas erfordert aufgrund eine Skalierung von mehr als 600.000 QPS Die neuen Optimizer-Entscheidungen der sehr großen zur Verfügung stehenden (Sysbench OLTP Read Write). Im Vergleich lassen sich nun in der MySQL-Workbench Datenmengen einige Erfahrung. Daher ver- zur älteren MySQL Version weist das neue grafisch visualisiert durch „Explain“ oder via einfachte MySQL bereits in der Version 5.6 MySQL somit einen etwa dreifach (gegen- JSON-Ausgabe nachvollziehen. Sollte der den Zugriff auf das Performance-Schema über MySQL 5.5) beziehungsweise einein- halbfach (gegenüber MySQL 5.6) höheren Durchsatz sowie eine annähernd lineare Skalierung von bis zu 72 CPU-Cores und 1024 gleichzeitigen Verbindungen auf.

Security-Updates

Bereits mit den letzten MySQL-5.6-Updates zeichnete sich mit der Freigabe der MySQL- Firewall und MySQL-Encryption ein weite- rer Schwerpunkt ab. MySQL 5.7 führt diese Erweiterungen fort und enthält in diesen Bereichen neue und überarbeitete Funk- tionalitäten. Passwörter werden nun stan- Abbildung 1: Zusammenfassung der MySQL-5.7-Änderung

68 www.aoug.at • www.doag.org • www.soug.ch mithilfe spezieller MySQL-Views zum einfa- MySQL unterstützt hierbei die nativen Replikations-Erweiterungen chen Auswerten der Daten mit „MySQL SYS“ JSON-Datentypen „Number“, „String“, „Bool“, (ähnlich Oracle „V$“). Diese Ansichten wur- „Date“ und „Time“ sowie Objects- und Array- Einer der Gründe für die große Popularität den bisher mit der MySQL-Workbench aus- Methoden. Mit Unterstützung von JSON wur- von MySQL ist die Replikation. Damit werden geliefert und standen in Dashboards nach de eine Reihe von neuen MySQL-Funktionen Datenbank-Änderungen von einer Daten- kurzer Installation in der verbundenen My- eingeführt, um mit JSON-Daten, Objects und bank auf beliebige andere Server-Instanzen SQL-Datenbank zur Verfügung. Eine opti- Arrays effektiv auf Basis von SQL zu arbeiten repliziert. Somit ist gerade für Lese-Anfra- mierte Version von „MySQL SYS“ wird nun (siehe Listing 4). In Verbindung mit der neu- gen eine praktisch unlimitierte Abfrageska- standardmäßig mit MySQL 5.7 unabhängig en Funktionalität der „Generated Columns“ lierung von MySQL möglich. Die Replikation von der MySQL-Workbench ausgeliefert. lassen sich nun basierend auf JSON-Daten erfolgt hierbei asynchron beziehungsweise funktionale, materialisierte oder virtuelle semisynchron, wobei bei letzterer geprüft Indizes auf Basis von „Generated Columns“ wird, ob eine SQL-Information auf dem Re- InnoDB-Erweiterungen abbilden. Der neue Optimizer nutzt diese In- lay-Log des Slaves existiert, um die Synchro- dizes übrigens automatisch, auch wenn die nität der Server zu gewährleisten. InnoDB ist bereits seit MySQL 5.5 der Stan- indizierte „Generated Column“ nicht explizit Eine Neuerung in der MySQL-5.7-Repli- dard für das Speicher-Subsystem; MyISAM in einer Query vorkommt (siehe Listing 5). kations-Architektur ist die zusätzliche Un- steht allerdings weiterhin zur Verfügung. Online-Operationen und Modifikationen für InnoDB-basierte Datenbanken sind bereits SELECT /*+ NO_RANGE_OPTIMIZATION(t3 PRIMARY, f2_idx) */ f1 seit MySQL 5.6 eine wesentliche Anforde- FROM t3 WHERE f1 > 30 AND f1 < 33; rung für unterbrechungsfreien Datenbank- SELECT /*+ BKA(t1) NO_BKA(t2) */ * FROM t1 INNER JOIN t2 WHERE ...; Betrieb und schon für einige „Alter Table“- SELECT /*+ NO_ICP(t1, t2) */ * FROM t1 INNER JOIN t2 WHERE ...; Kommandos realisiert. Dieser Vorsatz ist in SELECT /*+ SEMIJOIN(FIRSTMATCH, LOOSESCAN) */ * FROM t1 ...; MySQL 5.7 fortgesetzt („Rename Index“, „En- Listing 1 large Varchar“ etc.). Neu ist die Möglichkeit, erste InnoDB-Parameter („innodb_buffer_ pool_size“) während der Laufzeit zu ändern und MySQL an die neuen Datenbank-Anfor- CREATE TABLE gen_col_test (id INT NOT NULL PRIMARY KEY auto_increment, derungen ohne Neustart anzupassen. my_int INT, my_int_plus_one INT AS (my_int+1)) Eine weitere Änderung in InnoDB ist die Listing 2 neue Implementierung von GIS-Datentypen via „Boost.Geometry“ für zweidimensiona- le Berechnungen und Analysen. InnoDB unterstützt dabei ebenfalls R-Tree-Indizes beziehungsweise Indizes. Ebenfalls überar- beitet wurde die „Full Text Search“-Unter- stützung in InnoDB, die nun erheblich effi- zienter arbeitet und zusätzlich Chinesisch, Japanisch und Koreanisch unterstützt. Neu ist auch die Möglichkeit, mit generierten Spalten („Generated Columns“) zu arbeiten. Die Werte dieser Spalten werden hierbei aus anderen Spalten abgeleitet und sind so- mit „read only“ (siehe Listing 2).

Native JSON-Unterstützung

Das neue MySQL-Release unterstützt nun auch JSON als Datenformat. Natürlich konnte man auch vorher bereits JSON in einem Textfeld ablegen, allerdings erfolg- te keine Validierung der Daten. Mit Einfüh- rung des JSON-Datentyps werden Daten nun lese-optimiert als „Optimized JSON Binary“ („utf8mb4“-Character Set) abge- legt (siehe Listing 3). Abbildung 2: „Fan Out“-Replikation mit MySQL 5.7

Red Stack Magazin 01/2016 69 Aktuell

terstützung von mehreren 5.5-, 5.6- und 6.3.5 adressiert nun auch neue Funktiona- auf Basis von ACL-Listen im Multi-Tenan- 5.7-Master-Servern, die wiederum Daten litäten von MySQL 5.7 wie die Darstellung cy-Mode betrieben werden. auf einen zentralen 5.7-Slave-Server rep- von GIS-Daten, Visual Explain, Dashboard- Angepasste Dashboard/Query-Analyse- lizieren. Somit kann man sehr einfach Da- Daten oder den JSON-Datentyp. Ansichten für einzelne Server oder Server- ten aus unterschiedlichen Standorten auf Auch die kommerziellen Plug-ins und Farmen lassen sich nun für einzelne Benut- einen zentralen Server übertragen oder MySQL-Tools sind auf die Bedürfnisse von zer oder Benutzergruppen definieren und verschiedene MySQL-Server-Daten auf ei- MySQL 5.7 angepasst. Ein spezielles „My- begrenzen. Der Enterprise Monitor kann nem zentralen Server als Backup vorhal- SQL Enterprise Backup 4.0“ ist zeitgleich dafür aus Vereinfachungsgründen zur Zu- ten. Die Daten können insbesondere für für die neuen InnoDB-Funktionalitäten sammenarbeit mit existierenden LDAP- ein Backup auch zeitversetzt übertragen freigegeben worden. Gleiches gilt für den oder Microsoft-Active-Directory-Servern werden (siehe Abbildung 2). „MySQL Enterprise Monitor 3.1“, der zu- konfiguriert werden. Natürlich adressiert Eine wesentliche Optimierung in der sätzlich zur Unterstützung von MySQL 5.7 auch der MySQL Enterprise Monitor neu- 5.7-Replikation ist auch hier wieder die („MySQL SYS“) mit einigen neuen Funktio- este Security-Erweiterungen inklusive der Möglichkeit, Änderungen an der Replikati- nalitäten ausgeliefert wird. So kann dieser MySQL-Enterprise-Firewall. on im laufenden Betrieb durchzuführen. So können die GTID-Verwendung, Master/Sla- ve-Rollenänderungen sowie Filter-Anpas- sungen dynamisch ohne Unterbrechung erfolgen.Damit die Replikations-Farmen möglichst identisch sind, ist ein schnelles Nachvollziehen der Datenbank-Änderun- gen sowohl auf dem Master- als auch auf den Slave-Servern sehr wichtig. Bereits in früheren Versionen gab es daher die Mög- lichkeit, einen Thread pro Schema zu de- finieren. In der aktuellen MySQL-Version können nun auch mehrere Threads pro Schema konfiguriert werden, was in aktuel- len Replikations-Benchmarks bis zum zehn- fachen Durchsatz führt (siehe Abbildung 3). Wie zuvor erwähnt, wird bei der semi- Abbildung 3: Replikationsdurchsatz im Vergleich synchronen Replikation überprüft, ob eine Änderung im Relay-Log des Servers exis- tiert. Mit Version 5.7 ist es nun auch möglich, CREATE TABLE employees (data JSON); mehrere unterschiedliche Relay-Logs/Ser- INSERT INTO employees VALUES (‚{"id": 1, "name": "Mario"}‘); INSERT INTO employees VALUES (‚{"id": 2, "name": "Carsten"}‘); ver zu überprüfen. Dies gewährleistet, dass select * from employees; mehrere Slave-Systeme dem Master-Server +------+ entsprechen (Replica >= 2). Komplett neu ist | data die Möglichkeit, die Replikation mithilfe des +------+ Performance-Schemas zu instrumentalisie- | {"id": 1, "name": "Mario"} | {"id": 2, "name": "Carsten"} ren und somit via SQL zu überwachen. +------+

Listing 3 Weitere Updates der MySQL- Produktfamilie select data->‘$.id‘ from employees; +------+ Natürlich liegt das Hauptaugenmerk auf | data->$.id‘ den Neuerungen rund um die MySQL-Da- +------+ tenbank. Allerdings zieht das MySQL-5.7- |1 |2 Update auch wesentliche Änderungen +------+ aller anderen Tools aus der MySQL-Produkt- familie nach sich (siehe Abbildung 4). Als Ers- Listing 4 tes ist die grafische MySQL-Workbench zu nennen. Sie steht unterschiedlichen Be- ALTER TABLE employees ADD id varchar(3) AS (data->"$.id"); triebssystemen für die Administration und ALTER TABLE features ADD INDEX (feature_type); Entwicklung von MySQL-Datenbanken zur Verfügung. Die aktuelle MySQL-Workbench Listing 5

70 www.aoug.at • www.doag.org • www.soug.ch Ähnlich verhält es sich mit dem MySQL- nachfolgende MySQL-Versionen (wie New teilte Datenbank beliebig groß skaliert wer- Enterprise-Manager-12c-Plug-in. Dieses Data Dictionary) oder MySQL Fabric 1.6. den. Tomas Ulin, Vice President MySQL-Ent- steht über den automatischen OEM-12c- Interessant ist hier vor allem die MySQL wicklung, berichtet in seine Keynote auf der Update-Mechanismus als Update 3 zur Group Replication, die als Plug-in für My- Oracle OpenWorld und auf der DOAG 2015 Verfügung und ist mit der Verwendung SQL 5.7 zur Verfügung steht. Konferenz wiederholt, dass es noch kein von MySQL 5.7 freigegeben. Die Group Replication verhält sich anders Release-Datum für diese Technologie gibt, Neuigkeiten gibt es auch von der MySQL als die zuvor in diesem Artikel erwähnte versprach allerdings eine Implementierung Fabric. Diese erweitert die MySQL-Replika- klassische MySQL-Replikation: Es gibt keine noch im Release 5.7. tion um eine Hochverfügbarkeitsüberwa- Master- und keine Slave-Rollen. Alle invol- Traditionell kündigt das MySQL-Team chung und/oder eine automatisierte Shar- vierten Server arbeiten als aktiver Master neue Produkte während der Oracle Open- ding-Lösung. War man bisher für solch und replizieren synchron. Mit einer ungera- World (Herbst) oder während der Percona eine Lösung auf Fabric-fähige MySQL-Kon- den Anzahl von Servern arbeiten alle Server Live (Frühjahr) an. Es bleibt also spannend. nektoren angewiesen, so steht jetzt ein My- einer Farm auf Basis eines neuen Protokolls SQL-Router zur Verfügung, der die Kommu- „virtual synchron“. Es kann auf allen Server nikation mit der MySQL Fabric übernimmt. gelesen und geschrieben werden. Auftre- Der Router kann hierfür auf die Applikati- tende Konflikte werden hierbei auf Trans- onsserver mit installiert werden. aktionsbasis zurückgerollt. Ziel der Group Mit dem Erscheinen von MySQL 5.7 Replication ist es, kleine Server-Verbünde wurde gleichzeitig eine Reihe neuer Labs- zwecks einfacher Hochverfügbarkeit zu ver- Releases zur Verfügung gestellt. So gibt es knüpfen. Durch Integration in MySQL Fabric derzeit mehrere Labs-/Pre-Releases für können auch diese Verbünde wieder als ge-

Carsten Thalheimer [email protected]

Mario Beck Abbildung 4: MySQL-Enterprise-Produktfamilie [email protected]

Wir begrüßen unsere neuen Mitglieder

Persönliche Mitglieder Firmenmitglieder DOAG

Markus Flaisch Jörg Spilling Norbert Keller, Stadtwerke Karlsruhe GmbH Peter Kroll Ralf Schöndorf Delf Mannes, Struttgarter Strassenbahnen AG Bernd Dietrich Jan Hachenberger Hans-Joachim Hördt, SDV IT Thomas Neebe Harald Rogge Klaus Frischholz, Intelligent Solution Services AG Martin Licht Jacqueline Haefke Tibor Varga Kushtrim Krasniqi Jens Bleiholder Ivo Hegelbach Neumitglieder SOUG Robert Gazzia Anke Clever Markus Scherer Sven Loer Herr Willy Schaub, iRIX Software Engineering AG Dominic Severin Mette Juel Stephansen Herr René Nyffenegger, Passion for Data

Red Stack Magazin 01/2016 71