首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux 文件系統 noatime 掛載參數優化 MySQL 讀取效能:消除 atime 寫入開銷

     編輯:MySQL 綜合教學

Linux 預設每次讀取文件都會更新 atime(最近訪問時間),頻繁讀取場景(如 MySQL 數據文件、索引文件)會產生大量細碎寫入,拖慢 I/O。掛載參數 noatime 可完全禁用 atime 更新,顯著提升讀密集型負載效能。本文說明原理、配置方法、驗證與注意事項。

原理

  • atime、mtime、ctime 三時間屬性;atime 每次讀取必寫 inode。
  • 資料庫屬讀密集負載,atime 更新佔用大量 IOPS 與頻寬。
  • noatime:讀取不更新 atime;mtime(修改時間)仍正常更新,數據一致性無影響。

配置方法

# 1. 編輯 /etc/fstab
# 原行:
LABEL=/home  /home  ext4  defaults  1 2
# 改為:
LABEL=/home  /home  ext4  defaults,noatime  1 2

# 2. 立即重掛載生效(無需重啟)
mount -o remount /home

針對 MySQL 數據目錄

# 假設數據目錄為 /var/lib/mysql
/dev/sdb1  /var/lib/mysql  ext4  defaults,noatime  1 2

mount -o remount /var/lib/mysql

驗證

# 檢查掛載選項
mount | grep /var/lib/mysql
# 輸出應包含 noatime

# 測試 atime 不再更新
touch /var/lib/mysql/test_atime
stat /var/lib/mysql/test_atime  # 記下 Access 時間
cat /var/lib/mysql/test_atime
stat /var/lib/mysql/test_atime  # Access 時間應不變

效能增益參考

  • 讀密集負載(OLTP、報表)典型提升 10%-30% IOPS 可用頻寬。
  • SSD/NVMe 上減少寫入放大,延長壽命。

注意事項

  • 極少數應用依賴 atime(如郵件系統 mutts、某些備份軟體),確認業務無相依再啟用。
  • 替代方案 relatime(預設):僅當 atime 早於 mtime/ctime 才更新,折中兼容。
  • noatime 隱含 nodiratime(目錄同理),無需額外加參數。

為 MySQL 數據目錄啟用 noatime,是零成本、高收益的系統級優化動作。

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