TDWI Konferenz, München, 23.06.2014 LEISTUNG VON MODERNEN DATENBANKEN Aslı Yaman, Andreas Hauenstein, Andrej Vckovski, Simon Hefti"
Motivationen Konzept Methodik und Ergebnisse Diskussion Schlussfolgerung 2
MOTIVATIONEN
Hauptmotivation Entscheidungshilfe mittels einer Leistungsbewertung anbieten Tauglichkeit Der Schwerpunkt ist die Leistung auf nicht-transaktionalen Operationen mit in-memory, spalten-basierten DBs. Geschmack Vorlieben und Gewohnheiten definieren unsere Wahl. Geschwindigkeit Wie schnell kriegen wir die Ergebnisse? Belastbarkeit Wie passt sich die DB an Laständerungen bei höherer Anzahl von Benutzern an? Preis Die obigen Kriterien mit den Preisen normalisiert. 4
DB Auftritt Reihen- basiert In-memory, spaltenbasiert Gemischt (spalten- & reihen-basiert ) Jahre -10-5 Jetzt 5
Bewertete Produkte SQL 2012 : Solide reihen-basierte DB, verwendet als Stellvertreter für ähnliche Systeme SQL 2014 : Gemischte DB mit einem einfachen Zugang zu In-Memory-Funktionen Oracle 12c : Eine der bestentwickeltsten reihen-basierten DBs für fast alle Organisationen und Zwecke Sybase IQ : spalten-basierte in-memory DB, vermarktet mit einem ausgezeichneten Preis / Leistungsverhältnis HANA : Neues SAP-System, gemischte DB geeignet sowohl für DWH- als auch Transaktions-Operationen Redshift/ParAccel : spalten-basierte DB als Amazon-Cloud-Lösung, 6
KONZEPT
Leistungs-Bewertungskonzept "Out of the Box"-Systeme Die Datenbanken müssen mit geringstmöglichen Aufwand zu betreiben sein. Daher Leistung des Systeme mit minimalem Tuning. Standardisierte Testumgebung für alle Produkt Synthetische DB als Stern-Schema mit einer einzelnen Faktentabelle gekoppelt an mehrere Dimensionstabellen und SQL Abfragen, die reale Probleme abbildet. Vergleichbare Hardware Standard-Hardware ist mit 8 Kernen (3,25 Ecu pro Kern) und 68GB RAM, genug, um alle Daten für jedes Testsystem im Speicher verarbeiten zu können. Ausnahme ist Redshift, ein Cluster mit insgesamt 10 Kernen (2,2 Ecu pro Kern) und 75GB RAM. Cloud-Lösungen Immer mehr Projekte laufen in der Cloud. Wie einfach funktionieren die Testprodukte in der Cloud? 8
Wie wir die Bestie in der Cloud zähmen Definition des Modells Tabellendefinitionen, PKs, FKs, Abfragen, Prozeduren Setzen der Variablen Tabellengrössen, Hierarchietiefe, Anzahl der Nutzer, Verzögerung zwischen den Abfragen, Abfragetypen Verbindung mit der DB Via JDBC Ausführung des Befehls drop, create, insert, bulk load, run Analyse der Ergebnisse Abfragezeiten Standard Maschine: m2_4xlarge Org Id Parent Org01 Time Id Tim01 Tim02 Org_Flat Id Parent Trans Id Tra01 Tra02 DB vereinfacht Produ Id Pro01 Pro02 Fact Id Org_Id Time_Id Pro_Id Cli_Id Bty_Id Unit_Id Mea_Id Acc_Id Tra_Id Accou. Id Acc01 Acc02 Client Id Cli01 Cli02 Meas Id Me01 Me02 Busin Id Bty01 Bty02 Unit Id Unit01 Unit02 9
METHODIK UND ERGEBNISSE
Geschwindigkeitstests Ausführungsschritte Die Fakt Tabellengrösse variiert von 100K bis 300Mio Zeilen. Für eine bestimmte Tabellengrösse wird folgendes gemacht: 1. DB erstellen und laden 2. Falls Laden gelingt - Ausführen der Hauptabfrage 13 Mal - Berechnung des Durchschnitts der letzte 10 Abfragezeiten 3. Falls Laden nicht erfolgreich - Minimales Tuning : extra Puffer und/oder Temp Space - Wiederholung der vorherigen Schritte 11
Geschwindigkeitstests Hauptabfrage Umsätze aller Mitarbeiter eines Manager einer Firma Ein rekursives Problem. Die Anzahl der Berechnungen erhöht sich, je höher der Manager in der Hierarchie ist. Die Abfrage berechnet auf jeder Ebene auch die Ergebnisse der unterer Niveaus. Manager a: Umsatz der Mitarbeiter x und y Manager 1: Umsatz aller Mitarbeiter (x, y,..) von A, B, C sowie den Umsatz von a, b, c Manager A: die Vereinigung der Ergebnisse für 1,2,3 CEO: Umsatz aller Mitarbeiter x a y 1 b A 2 c 3 CEO B C 12
Die Hauptabfrage berechnet die Ergebnisse für alle Ebenen, ausgehend vom CEO. SELECT count(*) FROM ( SELECT sum(al1.fact01) employee revenues, sum(al1.fact02) employee costs, sum(al1.fact03) employee commissions, org.id, time.tim01, client.cli01, product.pro01, measure.mea01, unit.unit01, accounting.acc01, transactions.tra01, businesstype.bty01 FROM fact, org, org_flat flat, time, client, product, measure, unit, accounting, transaction, businesstype WHERE fact.org_id = flat.id and org.id = flat.parent and fact.tim_id = time.id and fact.cli_id = client.id and fact.prod_id = product.id and fact.measure_id = measure.id and fact.unit_id = unit.id and fact.acc_id = accounting.id and fact.trans_id = transaction.id and fact.bty_id = businesstype.id and org.id = 100001 GROUP BY org.id, time.tim01, client.cli01, product.pro01, measure.mea01, unit.unit01, accounting.acc01, transaction.tra01, businesstype.bty01 ) x 13
Geschwindigkeitstests Übersicht Oracle 12c (reihen-basiert) Sql 2014 (Mixed, in-memory) Hauptabfragezeit [s] Sybase IQ (reihenbasiert, in memory) Redshift (spalten-basiert) Hana (Mixed, in-memory) Fact Tabellengrösse 14
Geschwindigkeitstests Hana zeigt die beste Geschwindigkeit, mit 40s, 10x schneller als Redshift mit 400s, und 20x von Sybase IQ mit 800s Oracle 12c Abfragezeit [s] Sql 2014 Sybase IQ Redshift Hana Abfragezeit für 300Mio 15
Auswertung der Geschwindigkeit Oracle 12c SQL 2014 Sybase IQ SQL 2012 Redshift / ParAccel Hana Geschwindigkeit Legende: beste 16
Zeit der allerersten Abfrage Nach Neuerstellung und frischem Laden der Fact Tabelle ist die Laufzeit der ersten Abfrage vergleichbar mit dem Durchschnitt. Oracle 12c Sql 2014 Abfragezeit [s] Sybase IQ Redshift Hana Fact Tabellengrösse 17
Belastbarkeitstests Ausführungsschritte Die Fact Tabellengrösse ist bei 100Mio festgelegt. Der Anzahl der Benutzer wird von 2 bis auf 35 erhöht. Für eine fixe Anzahl gleichzeitiger Benutzer das Folgende gemacht: 1. Aufwärmen der DB mit 3 Hauptabfragen 2. Für jeden Benutzer werden die nächsten Schritte im Hintergrund durchgeführt bis die Hauptabfrage beendet ist: - Ausführen einer Abfrage aus einem festen Satz von kleineren Abfragen - Warten einer zufälligen Verzögerung von bis zu 3s 3. Ausführung der Hauptabfrage User 1 User 2 User 3 User 4 User 5... Time Count Join Join Join Count Join Join Count Join Count Main Query 18
Belastbarkeitstests Abfragen Häufige Fragen im täglichen Einsatz von DBs Einfache "count" Abfragen SELECT count(*) FROM businesstype WHERE businesstype= sales "Joins" mit Filtern SELECT count(*) FROM ( SELECT sum(fact.fact01) revenues, org.id, businesstype.bty01 FROM and WHERE fact, org, org_flat, businesstype fact.org_id = org_flat.id and org.id = org_flat.parent and fact.bty_id=businesstype.id and org.id = 100001 and (fact.fact01 between 80001 and 90000) GROUP BY org.id, businesstype.bty01 ) x 19
Belastbarkeitstests Übersicht Abfragezeit parallel / Abfragezeit alleine Oracle 12c (reihen-basiert) Sql 2014 (Mixed, in-memory) Sybase IQ (reihenbasiert, in memory) Redshift (spalten-basiert) Hana (Mixed, in-memory) Anzahl der gleichzeitigen Benutzer 20
Belastbarkeitstests Abfragezeit parallel / Abfragezeit alleine Bei Hana bleibt die Geschwindigkeit konstant. Bei 20 gleichzeitigen Benutzern verdoppelt sich die Abfragezeit bei SQL 2014, und verdreifacht sich bei Redshift. Sybase wird 5 mal langsamer. Sybase IQ Redshift Sql 2014 Hana Anzahl der gleichzeitigen Benutzer 21
Auswertung der Belastbarkeit Oracle 12c SQL 2014 Sybase IQ SQL 2012 Redshift / ParAccel Hana Belastbarkeit Legende: beste 22
Korrektur der Messfehler Wiederholung der Tests Abfragezeit [s] Oracle 12c SQL 2012 Sql 2014 Sybase IQ Redshift Hana Fact Tabellengrösse 23
DISKUSSION
Steigung des Geschwindigkeitskurven Mit der Skalierung der Datengrösse ist der Idealfall ein linearer Anstieg der Abfragezeit, gleichbedeutend ist die Konstanz der Steigungskurve. Steigung des Geschwindigkeit Kurven Sql 2014 Oracle 12c Sybase IQ Redshift Hana Fact Tabellengrösse 25
SQL 2012 Bei 20Mio Zeilen liegt SQL 2012 bereits 4 mal hinter SQL 2014 und 1,5 mal hinter Oracle. Zu langsam für grössere Datenmengen. SQL 2012 Abfragezeit [s] Oracle 12c Sql 2014 Sybase IQ Redshift Hana Fact Tabellengrösse 26
Durchsatz mit gleichzeitigen Benutzern Hana hat den grössten Durchsatz pro Minute. Redshift liefert 40% und Sybase 20% mehr als Oracle. Anzahl Abfragen pro Minute Oracle 12c Sql 2014 Sybase IQ Redshift Hana Durchsatz pro Minute für 20 gleichzeitige Benutzer 27
SCHLUSSFOLGERUNG
Auswertung der Preise Oracle 12c SQL 2014 Sybase IQ SQL 2012 Redshift / ParAccel Hana Preis Legende: beste 29
Abschliessendes Bild Der beste Fall ist, wenn Geschwindigkeit und Belastbarkeit gross und der Preis klein ist. Oracle 12c SQL 2014 Sybase IQ SQL 2012 Redshift / ParAccel Hana Geschwindigkeit Belastbarkeit Preis Geschwindigkeit * Belastbarkeit / Preis Legende: beste 30
Was nehmen wir mit? Modern vs. Traditionell 50x: Immer noch wahr. Lücke schliesst sich nicht HANA Stark und jung Preis in der Cloud Vergleichbar 31
Test Systems System & Hardware AWS Machine m2_4xlarge Total # Cores CPU Speed RAM (GB) Hana (Developper Ed. Rev.72) Sybase IQ (1.6) Oracle 12c (Enterprise Ed.) SQL 2014 (Enterprise Ed.) SQL 2012 (Base Ed.) Suse Linux Enterprise 11 Windows Server 2008 Windows Server 2008 Windows Server 2008 Windows Server 2012 8 3,25 68 AWS Cluster 4 nodes & 1 Leader Redshift/ParAccel (1.0.772) N/A 10 2.2 75 32