präsentation mysql auf dem t3cm12

Download Präsentation MySQL auf dem T3CM12

If you can't read please download the document

Upload: stefan-froemken

Post on 26-Jun-2015

382 views

Category:

Technology


0 download

DESCRIPTION

In Dieser Präsentation zeige ich Euch wie Ihr mit ein paar Konfigurationseinstellungen noch etwas aus Eurem MySQL-Server herausholen könnt. Dabei gehe ich speziell auf das filesorting ein.

TRANSCRIPT

  • 1. T3CM12Performance mit MySQL

2. +[werk] - Was machen wir?Agentur - Firmenverbundunabhngig, inhabergefhrtTYPO3 & MagentoKiel, Hamburg, Aachen, Kln, Frankfurt, Mnchen team:inmedias www.kennziffer.com PAGEmachine Splendid creativestyle 3. Warum das Ganze?SAP Export MySQL1.800.000 DatenstzeBis zu 12 FilterkriterienJede Spalte sortierbar 4. Was werden wir machen?Auflistung verschiedener MySQL-ParameterAuswirkung der Parameter schtzen/fhlenDer beste Wert fr einen ParameterVorstellung einer Report-Extension 5. MySQL-Konfiguration/etc/mysql/my.cnfAbschnitt [mysqld] 6. query_cachequery_cache_typequery_cache_sizequery_cache_limitquery_cache_min_res_unit 7. key_buffer50% RegelSumme aller IndizesReiner MySQL-Server: ~80%Wichtig fr MyISAM-TabellenSollte nicht kleiner als 16-32MB sein 8. key_buffer TEST480.000 Datenstze (Daten: 31MB/Index: 5MB)16MB = 0.57751032MB = 0.57065064MB = 0.501239128MB = 0.494927256MB = 0.496414 9. table_cacheffnen von Tabellen kostet ZeitAnzahl gleichzeitig geffneter Tabellen im RAM: Opened_tables Open_tablesSHOW OPEN TABLES;Tabellenheader (keine Daten!) = kleinGilt fr jede Verbindung1000 Tabellen * 100 Verbindungen = 100.000 10. MySQL Sortieren (filesorts)2 Algorithmen stehen zur Verfgung Ihr knnt nicht entscheiden! 11. FilesortsExplain-Syntax informiert Extra = Using filesortWenn kein Index zur Verfgung stehtNaming: Egal ob im Speicher oder DateiebeneEin LIMIT wird NACH dem filesort ausgefhrt 12. Algorithmus 1Suche alle Datenstze, die zur Abfrage passenSortierschlssel und Zeilenzeiger erstellen sort_buffer_size Wenn voll: Auslagern auf Dateiebene Sort_merge_passesDateien zusammenfhrenDatei in sortierter Reihenfolge auslesen read_rnd_buffer_size2mal die Datenbank abfragen 13. Algorithmus 2Suche alle Datenstze, die zur Abfrage passenSortierschlssel, Zeilenzeiger UND Spaltensort_buffer_size schneller vollGefahr: Mehr I/O auf der FestplatteLsung: max_length_for_sort_data1mal die Datenbank abfragen 14. AlgorithmuswahlDer 2-Stufige Algorithmus wird verwenden,wenn: Die Gesamtgre aller Spalten, die fr eine Abfragebentigt werden, PLUS die ORDER BY-Spalten grerist als max_length_for_sort_data Irgendeine Spalte vom Typ TEXT oder BLOB ist Mit SUBSTRING() kann versucht werden den 1-Stufigen Algerithmus auszulsen. 15. sort_buffer_sizeWird durch den CPU-Cache beeinflusstWenn voll: Sort_merge_passes++Nicht verwechselt mit myisam_sort_buffer_size Nur relevant fr REPAIR TABLE und CREATE INDEXWird immer vollstndig verwendet> 2MB knnte das Sortieren verlangsamenhttp://inaugust.com/post/15mmap malloc 16. sort_buffer_size TEST 480.000 Datenstze 100MB = 0.863143 Sekunden 50MB = 0.814188 Sekunden 2MB = 0.542065 Sekunden (Standardeinstellung) 1MB = 0.507201 Sekunden 512KB = 0.498969 Sekunden 256KB = 0.496011 Sekunden 128KB = 0.501239 Sekunden 64KB = 0.700654 Sekunden 17. max_length_for_sort_dataohne TEXT und BLOBIndikator fr Algorithmusauswahl 18. max_length_for_sort_data TEST480.000 Datenstze10240 Byte = 0.5028962048 Byte = 0.5053191024 Byte = 0.500584512 Byte = 0.422704256 Byte = 0.426195128 Byte = 0.42340564 Byte = 0.420210 19. read_rnd_buffer_sizeMit TEXT und BLOBRAM (/) 1024 4GB (/) 1024 = max. 4MB 20. read_rnd_buffer_size TEST480.000 Datenstze (+ 10 TEXT-Spalten)4MB = 6.3253052MB = 6.4922171MB = 6.240868512KB = 6.187837256KB = 6.137172 (Standardeinstellung)128KB = 6.18295510KB = 6.287569 (min. 8200Byte) 21. max_sort_length TEST1.800.000 Datenstze4 = 2.40950810 = 2.51674620 = 3.25655950 = 3.519731100 = 3.5368541024 = 3.524631 (Standardeinstellung) 22. read_buffer_sizehttp://www.mysqlperformanceblog.com/2007/09/1Anpassen an Read-Ahead des ServersAnpassen an das I/O-Subsystem des Servers128KB scheint ein guter Wert zu sein 23. read_buffer_size TEST480.000 Datenstze (+ 10 TEXT-Spalten)10MB = 5.5096372MB = 5.4391281MB = 5.453352512KB = 5.434408256KB = 5.426407128KB = 5.37765010KB = 5.385319 24. read_buffer_size TEST480.000 Datenstze (ohne TEXT-Spalten)10MB = 0.5209602MB = 0.5185991MB = 0.517788512KB = 0.512285256KB = 0.495720128KB = 0.49934410KB = 0.498823 25. InnoDB Bufferinnodb_buffer_pool_size (Daten + Index)innodb_log_buffer_size Was schaffte Eure Festplatte innerhalb einer Sekundezu schreiben? Standard von 8M ist OK. 26. InnoDB Buffer TEST480.000 Datenstze (Daten: 46M/Index: 37M)512MB = 0.764015128MB = 0.77167464M = 0.76230532M = 0.83919216M = 0.823517 27. innodb_additional_mem_pool_sizeStandard 1MBSpeichert Informationen der DatenSpeichert Strukturen der DatenWenn voll Warnungen im Error log Raufsetzen auf 2MBFast kein Performancegewinn 28. innodb_flush_log_at_trx_commitSehr hoher PerformancegewinnWert 1 (Standard) Commit In Logdatei anfgen SchreibenWert 0 (Daten weg bei MySQL-Absturz) Pro Sekunde wird der Buffer in die Logdatei geschriebenWert 2 (Daten weg bei OS-Absturz) Commit In Logdatei anfgen Pro Sekunde Logdateischreiben 29. Dumps zum Spielenhttp://dumps.wikimedia.org/backup-index.htmlGetestet mit enwikinews-[datum]-page.sql 480.000 DatenstzeGetestet mit Daten aus einem Kundenprojekt 1.800.000 Datenstze 30. Danke ...frs Zuhrenfr Rckfragenfr Applausan die Communityan die TYPO3-Entwickleran das Catering :-) Stefan Frmken | www.kennziffer.com GmbH