Mysql

針對目前 VPS 設置優化 InnoDB 設置

  • March 26, 2018

我有以下設置的 VPS:

(4 x 2.40 GHz)、8192 MB RAM 記憶體、20GB 硬碟空間。

我的網路服務幾乎是:每天 3000 萬次插入或每秒 ±350 次插入。在不久的將來,數量可能會更大(這將需要更多的 CPU)。

你們能給我建議如何調整目前的 MariaDB InnoDB 引擎以使機器以更優化的方式更好地工作嗎?

以下是一些目前參數:

aria_pagecache_buffer_size  134217728
aria_sort_buffer_size   268434432
bulk_insert_buffer_size 8388608
innodb_buffer_pool_dump_at_shutdown OFF
innodb_buffer_pool_dump_now OFF
innodb_buffer_pool_dump_pct 100
innodb_buffer_pool_filename ib_buffer_pool
innodb_buffer_pool_instances    8
innodb_buffer_pool_load_abort   OFF
innodb_buffer_pool_load_at_startup  OFF
innodb_buffer_pool_load_now OFF
innodb_buffer_pool_populate OFF
innodb_buffer_pool_size 134217728
innodb_change_buffer_max_size   25
innodb_change_buffering all
innodb_log_buffer_size  8388608
innodb_sort_buffer_size 1048576

如果您需要更多參數,請在下面發表評論。

  • 批量插入單個INSERT. 最佳方法是一次收集 100-1000 個並建構一個大型的INSERT,然後執行它。它將執行大約 10 倍的速度。
  • 建構一個 CSV 文件並使用LOAD DATA. 也比單行插入快得多。

為了折騰桌子並重新開始,擁有innodb_file_per_table=ON. 警告: 您可能已經將表格放入ibdata1,現在要利用該標誌為時已晚。不要改變它。

DROP TABLE或者TRUNCATE TABLE將騰出空間供明天重複使用。(有了它ON,它還會將空間還給作業系統。)但是,如果您只是重新載入它,那麼就沒有必要將空間還給。簡直了TRUNCATE TABLE

是的,10GB 與 8GB 是可行的。但是您不會每天再損失 2GB

30M 行需要 10GB?那是每行 300 個字節?這聽起來很高。讓我們看看架構;可能需要進行一些改進。最有可能是TINYINT/ SMALLINT/ MEDIUMINT/ INT/ BIGINT– 大小為 1/2/3/4/8 字節,但具有不同的最大值。

innodb_buffer_pool_size如果您有 8GB 的​​ RAM(並且您只在上面執行 MySQL),則可能應該是 5G。更多的 CPU 核心無濟於事。

如果你的 30M 會增長,你可能無法在 20GB 的小磁碟中生存。但是…如果您可以隨時或每小時匯總數據,那麼您將不需要儲存全部 30M。給我們更多細節;我們可以提供進一步幫助。

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