首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 內存與虛擬內存優化:參數計算公式、關鍵配置與實戰模板

     編輯:MySQL 資料庫相關知識

MySQL 內存佔用 = 全局緩存 + 連接級緩存 × 最大連接數。準確估算防 OOM 是運維基本功。

內存計算公式

MySQL_used_mem = key_buffer_size + query_cache_size + tmp_table_size
  + innodb_buffer_pool_size + innodb_additional_mem_pool_size
  + innodb_log_buffer_size
  + max_connections * (
      read_buffer_size + read_rnd_buffer_size
      + sort_buffer_size + join_buffer_size
      + binlog_cache_size + thread_stack
    )

可用 SQL 變量自動計算(文中提供完整腳本)。

參數類型區分

  • 全局參數:SET GLOBAL,需 SUPER 權限,僅對新連接生效。
  • 會話參數:SET SESSION,無特權,僅影響當前連接。

關鍵參數實戰建議值(2G 內存機器為例)

參數建議值說明
max_connections1024防 too many connections,同步調大 open_files_limit
key_buffer_size400MMyISAM 索引緩存,勿超物理記憶體 30%
sort_buffer_size16M加速 ORDER BY/GROUP BY
read_buffer_size16M順序掃描緩存
table_cache512配合 open_files_limit ≥4096
thread_cache_size80減少線程創建開銷
innodb_buffer_pool_size1.2G專用 DB 佔 60%-80%,注意 32 位系統 2-3.5G 限制
innodb_flush_log_at_trx_commit2游戲/非極高安全業務建議 2,兼顧性能與秒級持久化
query_cache_size64M高頻讀、低寫場景啟用;高寫場景建議關閉

優化模板片段

[mysqld]
skip-name-resolve
key_buffer_size = 256M
max_allowed_packet = 4M
table_open_cache = 1024
thread_cache_size = 120
query_cache_size = 64M
tmp_table_size = 256M
max_connections = 1024
innodb_buffer_pool_size = 6G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
open_files_limit = 10240

性能測試工具

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved