最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中my.conf配置文件的優(yōu)化技巧分享

 更新時間:2025年09月30日 08:56:20   作者:網(wǎng)碩互聯(lián)的小客服  
優(yōu)化 MySQL 的 my.cnf 配置文件,可以顯著提升數(shù)據(jù)庫性能,特別是在高并發(fā)或大數(shù)據(jù)量場景下,以下是優(yōu)化 my.cnf 的方法和建議,涵蓋 常見配置項、參數(shù)說明 和 優(yōu)化技巧,需要的朋友可以參考下

1. 優(yōu)化前的準備工作

在修改 my.cnf 之前,需了解以下內(nèi)容:

1.1 確認 MySQL 當前版本和存儲引擎

查看 MySQL 版本:

mysql --version

確認使用的存儲引擎(推薦 InnoDB):

SHOW ENGINES;

1.2 確定服務(wù)器資源

CPU 核心數(shù):決定并發(fā)能力。

nproc

內(nèi)存大小:用于設(shè)置緩存參數(shù)。

free -h

磁盤 IO 性能:決定讀寫速度。

hdparm -Tt /dev/sda

1.3 備份 MySQL 配置

在編輯 my.cnf 前,備份原始配置以防止誤操作:

sudo cp /etc/my.cnf /etc/my.cnf.bak

2. 常見優(yōu)化參數(shù)

以下是一些常見的 my.cnf 配置項及優(yōu)化建議,按功能模塊分類。

2.1 基本配置

[mysqld]
bind-address = 0.0.0.0      # 允許遠程連接(根據(jù)需要設(shè)置為具體 IP 或 127.0.0.1)
port = 3306                 # MySQL 默認端口
max_connections = 500       # 最大連接數(shù)(根據(jù)業(yè)務(wù)需求調(diào)整)
wait_timeout = 28800        # 連接超時時間(秒)
interactive_timeout = 28800 # 交互式連接超時時間(秒)
  • bind-address:如果服務(wù)器需要接受外部訪問,可以設(shè)置為 0.0.0.0。
  • max_connections:調(diào)整為適合業(yè)務(wù)需求的值,一般設(shè)置為 2-3 倍的峰值連接數(shù)。
  • wait_timeoutinteractive_timeout:減少空閑連接占用資源。

2.2 緩存與內(nèi)存優(yōu)化

key_buffer_size = 128M        # 針對 MyISAM 表的索引緩存(InnoDB 可忽略)
query_cache_size = 0          # 查詢緩存大?。∕ySQL 8.0 已廢棄,建議禁用)
query_cache_type = 0          # 禁用查詢緩存
tmp_table_size = 64M          # 臨時表大小
max_heap_table_size = 64M     # 內(nèi)存中的臨時表最大大小
table_open_cache = 1024       # 打開表的緩存數(shù)量
thread_cache_size = 16        # 緩存的線程數(shù)
  • key_buffer_size:僅對 MyISAM 存儲引擎有用,InnoDB 數(shù)據(jù)不受影響。
  • query_cache_size:MySQL 8.0 中已移除該功能,建議禁用以提升性能。
  • tmp_table_sizemax_heap_table_size:用于控制內(nèi)存臨時表大小,適當提升可減少磁盤臨時表的使用。
  • table_open_cache:提升打開表的緩存數(shù),減少頻繁打開/關(guān)閉表的操作。
  • thread_cache_size:提升線程復(fù)用率,減少線程創(chuàng)建的開銷。

2.3 InnoDB 存儲引擎優(yōu)化

innodb_buffer_pool_size = 4G      # InnoDB 緩存池大?。ńㄗh占用總內(nèi)存的 50%-70%)
innodb_buffer_pool_instances = 8 # 緩存池實例數(shù)(適合大內(nèi)存服務(wù)器)
innodb_log_file_size = 256M      # 日志文件大小
innodb_log_buffer_size = 16M     # 日志緩存大小
innodb_flush_log_at_trx_commit = 1 # 日志刷新策略(1 最安全,2/0 性能更高)
innodb_file_per_table = 1        # 每個表使用獨立的表空間,便于管理
innodb_flush_method = O_DIRECT   # 避免雙緩存,提高 IO 性能
  • innodb_buffer_pool_size:InnoDB 的核心參數(shù),決定內(nèi)存性能,建議設(shè)置為可用內(nèi)存的 50%-70%。
  • innodb_flush_log_at_trx_commit
    • 1:每次事務(wù)提交時寫入磁盤,最安全。
    • 2:每次事務(wù)提交時寫入日志緩存,磁盤寫入延遲,性能更高。
    • 0:僅靠 MySQL 自身控制,性能最高但有丟失風險。
  • innodb_flush_method:推薦設(shè)置為 O_DIRECT,避免操作系統(tǒng)緩存和 MySQL 緩存的重復(fù)。

2.4 日志與調(diào)試

log_error = /var/log/mysql/error.log   # 錯誤日志路徑
slow_query_log = 1                    # 啟用慢查詢?nèi)罩?
slow_query_log_file = /var/log/mysql/slow.log # 慢查詢?nèi)罩疚募?
long_query_time = 2                   # 慢查詢閾值(秒)
log_queries_not_using_indexes = 1     # 記錄未使用索引的查詢
  • log_error:記錄 MySQL 錯誤日志,便于排查問題。
  • slow_query_log:啟用慢查詢?nèi)罩?,分析性能瓶頸。
  • long_query_time:設(shè)置慢查詢的閾值,建議為 1-2 秒。
  • log_queries_not_using_indexes:記錄未使用索引的查詢,便于優(yōu)化索引。

2.5 連接與網(wǎng)絡(luò)優(yōu)化

max_allowed_packet = 64M         # 單次查詢允許的最大數(shù)據(jù)包大小
net_read_timeout = 30            # 網(wǎng)絡(luò)讀取超時時間(秒)
net_write_timeout = 30           # 網(wǎng)絡(luò)寫入超時時間(秒)
skip-name-resolve = 1            # 禁用主機名解析,加快連接速度
  • max_allowed_packet:適當增大以支持大數(shù)據(jù)量傳輸。
  • skip-name-resolve:禁用 DNS 解析,可顯著加快連接速度。

3. 調(diào)優(yōu)的核心原則

根據(jù)業(yè)務(wù)需求調(diào)整參數(shù)

  • 不同業(yè)務(wù)場景(高讀、高寫、混合型)需要不同的優(yōu)化策略。
  • 例如,高讀場景需要加大緩存,如 innodb_buffer_pool_size。

逐步調(diào)整參數(shù)

  • 不要一次性修改過多參數(shù)。逐步調(diào)整并觀察系統(tǒng)性能的變化。

監(jiān)控性能

  • 使用 MySQL 自帶工具或開源工具監(jiān)控數(shù)據(jù)庫性能。
  • 常用命令:

查看連接數(shù):

SHOW STATUS LIKE 'Threads_connected';

查看緩沖區(qū)命中率:

SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_hit%';

查看慢查詢:

SHOW GLOBAL STATUS LIKE 'Slow_queries';

定期清理與維護

  • 定期清理不再使用的表或索引。
  • 優(yōu)化表結(jié)構(gòu):
OPTIMIZE TABLE table_name;

4. 示例優(yōu)化后的 my.cnf 文件

以下是一個適用于中小型業(yè)務(wù)場景的優(yōu)化示例:

[mysqld]
bind-address = 0.0.0.0
port = 3306
max_connections = 500
wait_timeout = 28800
interactive_timeout = 28800

# 緩存與內(nèi)存
key_buffer_size = 16M
query_cache_size = 0
query_cache_type = 0
tmp_table_size = 64M
max_heap_table_size = 64M
table_open_cache = 1024
thread_cache_size = 16

# InnoDB 優(yōu)化
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 8
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

# 日志與調(diào)試
log_error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_queries_not_using_indexes = 1

# 網(wǎng)絡(luò)與連接
max_allowed_packet = 64M
net_read_timeout = 30
net_write_timeout = 30
skip-name-resolve = 1

5. 總結(jié)

  • 核心優(yōu)化點:調(diào)整內(nèi)存緩存(innodb_buffer_pool_size)、連接數(shù)(max_connections)、日志配置(slow_query_log)等關(guān)鍵參數(shù)。
  • 持續(xù)監(jiān)控:通過性能監(jiān)控工具(如 MySQL 自帶的 SHOW STATUS 命令),觀察調(diào)整效果并進一步優(yōu)化。
  • 量化目標:通過指標(如 QPS、TPS、延遲)評估優(yōu)化效果。

根據(jù)業(yè)務(wù)需求調(diào)整 my.cnf,可以有效提升 MySQL 的性能和穩(wěn)定性。

以上就是MySQL中my.conf配置文件的優(yōu)化技巧分享的詳細內(nèi)容,更多關(guān)于MySQL my.conf配置文件優(yōu)化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL 導入慢的解決方法

    MySQL 導入慢的解決方法

    MySQL導出的SQL語句在導入時有可能會非常非常慢,在導出時合理使用幾個參數(shù),可以大大加快導 入的速度。
    2010-12-12
  • mysql 使用inet_aton和inet_ntoa處理ip地址數(shù)據(jù)的實例

    mysql 使用inet_aton和inet_ntoa處理ip地址數(shù)據(jù)的實例

    下面小編就為大家?guī)硪黄猰ysql 使用inet_aton和inet_ntoa處理ip地址數(shù)據(jù)的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Mysql行格式索引頁詳解

    Mysql行格式索引頁詳解

    這篇文章主要介紹了Mysql行格式索引頁,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • mysql中GROUP_CONCAT的使用方法實例分析

    mysql中GROUP_CONCAT的使用方法實例分析

    這篇文章主要介紹了mysql中GROUP_CONCAT的使用方法,結(jié)合實例形式分析了MySQL中GROUP_CONCAT合并查詢結(jié)果的相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • 詳解MySQL監(jiān)控工具 mysql-monitor

    詳解MySQL監(jiān)控工具 mysql-monitor

    這篇文章主要介紹了解MySQL監(jiān)控工具 mysql-monitor的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-07-07
  • MySQL關(guān)系型數(shù)據(jù)庫事務(wù)的ACID特性與實現(xiàn)

    MySQL關(guān)系型數(shù)據(jù)庫事務(wù)的ACID特性與實現(xiàn)

    這篇文章主要介紹了MySQL關(guān)系型數(shù)據(jù)庫事務(wù)的ACID特性與實現(xiàn),ACID?是為保證事務(wù)transaction是正確可靠的,具備原子性、一致性、隔離性、持久性等特性
    2022-07-07
  • MySQL INNER JOIN 的底層實現(xiàn)原理分析

    MySQL INNER JOIN 的底層實現(xiàn)原理分析

    這篇文章主要介紹了MySQL INNER JOIN 的底層實現(xiàn)原理,INNER JOIN的工作分為篩選和連接兩個步驟,連接時可以使用多種算法,通過本文,我們深入了解了MySQL中INNER JOIN的底層實現(xiàn)原理,需要的朋友可以參考下
    2023-06-06
  • MySQL:Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEM

    MySQL:Unsafe statement written to the binary log using state

    這篇文章主要介紹了MySQL:Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEM,需要的朋友可以參考下
    2016-05-05
  • MySql約束超詳細介紹

    MySql約束超詳細介紹

    MySQL唯一約束(Unique?Key)是指所有記錄中字段的值不能重復(fù)出現(xiàn)。例如,為?id?字段加上唯一性約束后,每條記錄的?id?值都是唯一的,不能出現(xiàn)重復(fù)的情況
    2022-09-09
  • mysql之DML的select分組排序方式

    mysql之DML的select分組排序方式

    在此教程中,我們詳細介紹如何創(chuàng)建員工(employee)和部門(department)數(shù)據(jù)庫表,并展示了如何通過SQL語句進行數(shù)據(jù)插入、刪除和查詢,首先,創(chuàng)建了部門表并自動設(shè)置部門編號起始值為1001,接著創(chuàng)建員工表并定義了各字段,我們還設(shè)置了外鍵關(guān)聯(lián)兩表
    2024-09-09

最新評論

甘泉县| 莱西市| 田东县| 新安县| 普兰店市| 水富县| 新余市| 万山特区| 咸丰县| 衡阳市| 夏河县| 许昌市| 杭州市| 天柱县| 大连市| 邹平县| 临桂县| 彭水| 登封市| 毕节市| 和静县| 崇仁县| 滨州市| 平塘县| 错那县| 灵台县| 桐梓县| 扎赉特旗| 永吉县| 峡江县| 沂源县| 望江县| 马鞍山市| 庆元县| 鄂伦春自治旗| 南充市| 五华县| 永新县| 塘沽区| 福贡县| 六枝特区|