常見資料庫最佳化記錄

dmcatding發表於2022-09-15

指標

  • SQL平均響應時間變短

    • 最佳化前: 資料庫平均響應時間500ms

    • 最佳化目標: 資料庫平均響應時間200ms

  • 資料庫伺服器CPU佔用率變少

    • 最佳化前: 資料庫高峰期CPU使用率70%

    • 最佳化目標: 資料庫高峰期CPU使用率50%

  • 資料庫伺服器IO使用率變低

    • 最佳化前: 資料庫IO WAIT為30%

    • 最佳化目標: 資料庫IO WAIT低於10%

資料庫引數最佳化

主流資料庫架構都有如下的共同點:

  • 資料快取

  • SQL解析區

  • 排序記憶體

  • REDO及UNDO

  • 鎖、LATCH、MUTEX

  • 監聽及連線

  • 檔案讀寫效能

接下來我們根據不同的資料庫調整引數以使資料庫達到最佳效能。

ORACLE

引數分類 引數名 引數值 備註
資料快取 SGA_TAGET、MEMORY_TARGET 實體記憶體70-80% 越大越好
資料快取 DB_CACHE_SIZE 實體記憶體70-80% 越大越好
SQL解析 SHARED_POOL_SIZE 4-16G 不建議設定過大
監聽及連線 PROCESSES、SESSIONS、OPEN_CURSORS 根據業務需求設定 一般為業務預估連線數的120%
其他 SESSION_CACHED_CURSORS 大於200 軟軟解析

MYSQL(INNODB)

引數分類 引數名 引數值 備註
資料快取 INNODB_BUFFER_POOL_SIZE 實體記憶體50-80% 一般來說越大效能越好
日誌相關 Innodb_log_buffer_size 16-32M 根據執行情況調整
日誌相關 sync_binlog 1、100、0 1安全性最好
監聽及連線 max_connections 根據業務情況調整 可以預留一部分值
檔案讀寫效能 innodb_flush_log_at_trx_commit 2 安全和效能的折中考慮
其他 wait_timeout,interactive_timeout 28800 避免應用連線定時中斷

POSTGRES

引數分類 引數名 引數值 備註
資料快取 SHARED_BUFFERS 實體記憶體10-25%
資料快取 CACHE_BUFFER_SIZE 實體記憶體50-60%
日誌相關 wal_buffer 8-64M 不建議設定過大過小
監聽及連線 max_connections 根據業務情況調整 一般為業務預估連線數的120%
其他 maintenance_work_mem 512M或更大
其他 work_mem 8-16M 原始配置1M過小
其他 checkpoint_segments 32或者更大

達夢資料庫

引數分類 引數名 引數值 備註
資料快取 MEMROY_TARGET、MEMROY_POOL 實體記憶體90%
資料快取 BUFFER 實體記憶體60% 資料快取
資料快取 MAX_BUFFER 實體記憶體70% 最大資料快取
監聽及連線 max_sessions 根據業務需求設定 一般為業務預估連線數的120%


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30327022/viewspace-2914891/,如需轉載,請註明出處,否則將追究法律責任。

相關文章