MySQL 5.1 Kristian Köhntopp Freitag, 4. Dezember 2009 Was ist neu? • Neues InnoDB • Neue Replikation • Neues Logging • Event Scheduler • Partitions • INFORMATION_SCHEMA • XML Functions Freitag, 4. Dezember 2009 Was ist neu? • Neues InnoDB • Neue Replikation • Neues Logging • Event Scheduler • Partitions • INFORMATION_SCHEMA • XML Functions Freitag, 4. Dezember 2009 InnoDB • auto_increment Skalierungsprobleme • Internes Locking verbessert • mehr Controls • Adaptive Hash Index, File I/O Threads • Cardinality Index Fix • InnoDB Plugin Freitag, 4. Dezember 2009 auto_increment • set global innodb_autoinc_lock_mode = • 0 -- traditional • 1 -- consecutive, recommended • 2 -- interleaved, RBR, fastest • Freitag, 4. Dezember 2009 Gleicher Wert in einer Replication Domain! InnoDB Plugin • Unabhängig vom Server Release • Schneller neuere Funktionalität • Derzeit einige Funktionen nur im Plugin verfügbar • Bestimmte Table Formats, Midpoint Insertion LRU, I/O Controls, etc. Freitag, 4. Dezember 2009 Was ist neu? • Neues InnoDB • Neue Replikation • Neues Logging • Event Scheduler • Partitions • INFORMATION_SCHEMA • XML Functions Freitag, 4. Dezember 2009 Replication • Row Based Replication (RBR) • Sicher gegen Nichtdeterminismus • Schneller und besser skalierbar • Mehr Datenvolumen • Freitag, 4. Dezember 2009 SBR, RBR und MIXED Nichtdeterminismus • DELETE FROM t LIMIT 10 • • Kein ORDER BY INSERT INTO t VALUES ( RAND() * 10 ) • Mit Tricks replizierbar • Leicht zerbrechlich • ALTER TABLE t ENGINE = InnoDB; • Freitag, 4. Dezember 2009 Massiv Slave Lag RBR • binlog-format = ROW • • Freitag, 4. Dezember 2009 oder MIXED mysqlbinlog --verbose file mysqlbinlog • Freitag, 4. Dezember 2009 # at 451 #091203 15:47:01 server id 1 end_log_pos 451 Table_map: `test`.`h` mapped to number 26 BINLOG '….' ### INSERT INTO test.h ### SET ### @1='123' Konfiguration • binlog-format = ROW • binlog-row-event-max-size = ... • expire_logs_days = … • slave_exec_mode = IDEMPOTENT • Freitag, 4. Dezember 2009 oder STRICT Fallen • WHERE @@server_id <> … • • geht nicht mehr binlog-do-db und replicate-do-db • Freitag, 4. Dezember 2009 geändertes Verhalten, noch wirrer Doof • Freitag, 4. Dezember 2009 Noch immer keine Time Delayed Slaves Was ist neu? • Neues InnoDB • Neue Replikation • Neues Logging • Event Scheduler • Partitions • INFORMATION_SCHEMA • XML Functions Freitag, 4. Dezember 2009 Logging • General Log, Slow Log: • Zur Laufzeit definierbar • Ziel: File oder Tabelle • Error Log • Freitag, 4. Dezember 2009 Ziel: File oder Syslog Logging • set global log_output = FILE,TABLE; • set global general_log = ON; • set global general_log_file = …; • set global slow_query_log = ON; • set global slow_query_log_file = … ; • Freitag, 4. Dezember 2009 set session sql_log_off = …; Slow Query Log • set global slow_query_time = …; • Mikrosekunden, Limit 0 • Nicht bei Log in Table • set global min_examined_row_limit = …; • Freitag, 4. Dezember 2009 Verhindert Slow Log Kontamination. General Log • Freitag, 4. Dezember 2009 Option --log nun deprecated Logs in Tabellen • Langsam, nicht verwenden • Per Default CSV Tabellen • Optional MyISAM Tabellen • Keine PARTITIONS, auch sonst keine Tricks Freitag, 4. Dezember 2009 Error Log • Neue Option --syslog • Freitag, 4. Dezember 2009 Im Grunde ein alter Debian-Patch Was ist neu? • Neues InnoDB • Neue Replikation • Neues Logging • Event Scheduler • Partitions • INFORMATION_SCHEMA • XML Functions Freitag, 4. Dezember 2009 Events • Temporal Triggers • Neues Privileg EVENT • CREATE|ALTER|DROP EVENT • SHOW EVENTS • SHOW CREATE EVENT • mysql.event, I_S.EVENTS Freitag, 4. Dezember 2009 CREATE EVENT • Freitag, 4. Dezember 2009 CREATE EVENT name IF NOT EXISTS ON SCHEDULE sched ON COMPLETION PRESERVE ENABLE|DISABLE|DISABLE ON SLAVE DO stmt Schedules • AT now() + INTERVAL … + INTERVAL … • EVERY interval STARTS … ENDS ... Freitag, 4. Dezember 2009 Scheduler • Freitag, 4. Dezember 2009 set global event_scheduler = on Was ist neu? • Neues InnoDB • Neue Replikation • Neues Logging • Event Scheduler • Partitions • INFORMATION_SCHEMA • XML Functions Freitag, 4. Dezember 2009 Partitions • Ranges vs. Hashes • RANGE/LIST • HASH/KEY (auch für Subpartitions) • ALTER TABLE Erweiterungen • Änderungen im Optimizer Freitag, 4. Dezember 2009 Definition RANGE • Freitag, 4. Dezember 2009 CREATE TABLE t ( … ) ENGINE = … PARTITION BY RANGE (col) ( PARTITION name VALUES LESS THAN … PARTITION name2 VALUES LESS THAN MAXVALUE ); Definition LIST • … PARTITION BY LIST (i) ( PARTITION name VALUES IN (…) ); • ERROR 1525 (HY000): Table has no partition for value ... Freitag, 4. Dezember 2009 Definition HASH/KEY • … PARTITION BY HASH ( col ) PARTITIONS n • … PARTITION BY KEY PARTITIONS n Freitag, 4. Dezember 2009 Dateisystem • Freitag, 4. Dezember 2009 -rw-rw----rw-rw----rw-rw----rw-rw---- 1 1 1 1 _mysql _mysql _mysql _mysql admin 98304 Dec 3 16:13 p#P#p0.ibd admin 98304 Dec 3 16:13 p#P#p1.ibd admin 8616 Dec 3 16:13 p.frm admin 44 Dec 3 16:13 p.par ALTER TABLE • ALTER TABLE P • DROP PARTITION name • ADD PARTITION ( PARTITION name … ) • REORGANIZE old1,old2 INTO ( … ) • COALESCE PARTITION 4 • ADD PARTITION PARTITIONS 6 Freitag, 4. Dezember 2009 ALTER TABLE • ALTER TABLE … • OPTIMIZE PARTITION … • ANALYZE PARTITION … • REPAIR PARTITION … • CHECK PARTITION … • REBUILD PARTITION ... Freitag, 4. Dezember 2009 Verschiedenes • INFORMATION_SCHEMA.PARTITIONS • EXPLAIN PARTITIONS SELECT … • Beschränkt: Kein Fulltext, kein GIS, keine FK Constraints, keine Partitioned Temp Tables • every unique key on the table must use every column in the table's partitioning expression Freitag, 4. Dezember 2009 Was ist neu? • Neues InnoDB • Neue Replikation • Neues Logging • Event Scheduler • Partitions • INFORMATION_SCHEMA • XML Functions Freitag, 4. Dezember 2009 Neue Funktionalität • INFORMATION_SCHEMA • .processlist • .events • .global_status .session_status • .global_variables .session_variables • .profiling • .plugins Freitag, 4. Dezember 2009 SHOW Extension • SHOW … LIKE … • SHOW … WHERE col LIKE … • SHOW … WHERE col IN ... Freitag, 4. Dezember 2009 Was ist neu? • Neues InnoDB • Neue Replikation • Neues Logging • Event Scheduler • Partitions • INFORMATION_SCHEMA • XML Functions Freitag, 4. Dezember 2009 XML Functions • ExtractValue() und UpdateXML() • extractvalue(xml_frag, xpath_expr) • updatexml(xml_str, xpath, new_xml) Freitag, 4. Dezember 2009 Wie doll tut es weh? • Einige Funktionen langsamer • Auf Nehalem 30% schneller als 5.0 • • 5.4 noch mal 20% schneller als 5.1 Konvertierung einfach • Freitag, 4. Dezember 2009 100GB InnoDB mit vielen FK Constraints und sehr breiten Tables = Aua