Ich habe große Tabelle mit mehr als 1 mio. Daten. Inserts dauern bei InnoDB 100-150 mal langsamer als MyISAM. Wie kann ich die Leistung von InnoDB verbessern.
Comments3
Diese Konfigurationsänderung…
Diese Konfigurationsänderung / Erweiterung hat mir geholfen. Aber ich weiss nicht welche Punkt hat es geschafft.
innodb_read_io_threads = 64
innodb_write_io_threads = 16
innodb_log_buffer_size = 256M
query_cache_size = 0
innodb_buffer_pool_dump_at_shutdown=1
innodb_buffer_pool_load_at_startup=1
innodb_purge_threads = 4
innodb_buffer_pool_instances = 64
innodb_thread_concurrency = 16
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
…
InnoDB lässt damit keine große Verbesserung merken.
- Diese Code hat auf unseren Server nicht funktioniert:
innodb_read_io_threads = 64
innodb_write_io_threads = 16
innodb_log_buffer_size = 256Mquery_cache_size = 0
innodb_buffer_pool_dump_at_shutdown=1
innodb_buffer_pool_load_at_startup=1innodb_purge_threads = 4
innodb_buffer_pool_instances = 64
innodb_thread_concurrency = 16
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
-
Diese funktioniert aber keine Änderung bzw. keine Leistungsverbesserung:
innodb_read_io_threads = 64
innodb_write_io_threads = 16
innodb_log_buffer_size = 256Mquery_cache_size = 64M
innodb_purge_threads = 4
innodb_buffer_pool_instances = 64
innodb_thread_concurrency = 16
innodb_flush_method = fsync
innodb_file_per_table = 1
-
Und man darf nicht einfach so in my.cnf ganz unten oder oben hinzufügen. Es muss unter [mysqld] platziert werden.
Einfache Test wurde gemacht mit: "select * from articles order by rand() limit 10"
InnoDB: 0.48 Sekunden
MyISAM: 0.06 Sekunden
Beide Tabellen haben identische Daten mit mehr als 1 mio. Einträge.
Bei mir haben die Änderungen…
Bei mir haben die Änderungen leider nichts gebracht. Habe folgendes getestet und der Server ist etwas schneller geworden:
innodb_buffer_pool_size = 1G
innodb_flush_log_at_trx_commit = 2