MySQL的最佳配置?InnoDB 和 MyISAM
我讀到 InnoDB 應該比 MyISAM 更擅長寫入 MySQL,但是,我正在嘗試通過執行 3000 個 MySQL 查詢(插入行,8 列 + id)……但結果還沒有結果如何我希望。
使用 InnoDB 的執行時間大約是 5.3 秒,而對於 MyISAM 大約需要 2.2 秒。
我目前的mysql配置是:
innodb_io_capacity = 8000 innodb_read_io_threads = 64 innodb_write_io_threads = 64 innodb_log_buffer_size = 32M innodb_log_file_size = 564M innodb_buffer_pool_size = 6G innodb_buffer_pool_instances = 6 innodb_thread_concurrency = 0
其他一切都在其預設值。
我的伺服器目前正在執行:Ubuntu 14.04 x64
Has 12GB RAM
6 Cores
And using an SSD (service provider says it provides 10,000 IOPS)
如果我只使用 InnoDB,那麼 InnoDB 的最佳配置是什麼,而只使用 MyISAM 的最佳配置是什麼(例如,如果我在不使用 InnoDB 的情況下禁用 InnoDB,由於某種原因會更快。)?
現在只是想用我的伺服器來儲存東西,並且需要寫更多的數據,而不是閱讀它……而後來,考慮閱讀而不是寫作。
不確定是否重要,但現在正在執行 nginx(伺服器上沒有 apache)、php 5.6 和 MySQL 5.6.19。
MyISAM 在插入方面比 innoDB 快,這是因為它依賴作業系統將數據寫入磁碟,而 innoDB 確保最終磁碟寫入 (fsync())。此外,innodb MVCC 特性降低了寫入速度。如果寫入的一點延遲不是問題,請堅持使用 innoDB。當您的表同時面臨讀寫時,您不想面對大量的表崩潰或長表鎖。這個頁面有很多關於優化innoDB的磁碟I/O
600 次插入/秒超過了開箱即用的 MySQL 所能做到的。你做了一些調整;更多是可能的。
innodb_flush_log_at_trx_commit = 1
是預設值,但它會在每次事務後產生寫入。=2
可以明顯更快。如果對您的應用可行,批量插入可以加快
INSERTs
10 倍。二級索引有多少?無論是 MyISAM 還是 InnoDB,都必須遲早更新。
你是
INSERTs
單執行緒的嗎?如果您想要更快的攝取速度,請查看staging-table 技術。