Mysql
針對目前 VPS 設置優化 InnoDB 設置
我有以下設置的 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。給我們更多細節;我們可以提供進一步幫助。