Mysql

MySQL的最佳配置?InnoDB 和 MyISAM

  • June 28, 2017

我讀到 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可以明顯更快。

如果對您的應用可行,批量插入可以加快INSERTs10 倍。

二級索引有多少?無論是 MyISAM 還是 InnoDB,都必須遲早更新。

你是INSERTs單執行緒的嗎?

如果您想要更快的攝取速度,請查看staging-table 技術

引用自:https://dba.stackexchange.com/questions/100931