mysql 开发进阶篇系列 22 磁盘I/O问题(从linux操作系统上优化)
1. 使用Symbolic Links分布I/O
???????? mysql的數據庫名和表名是與文件系統的目錄名和文件名對應的,默認情況下,創建的數據庫和表都存放在參數datadir定義的目錄下。如果不使用RAID或邏輯卷,所有的表都放在一個磁盤設置上,無法發揮多磁盤并行讀寫的優勢。這種情況,我們可以利用操作系統的符號連接(Symbolic Links)將不同的數據庫或表,索引指向不同的物理磁盤,從而達到分布磁盤I/O的目的。
-- 查看文件路徑 SHOW GLOBAL VARIABLES LIKE "%datadir%";-- 查看mysql下文件目錄 [root@xuegod64 ~]# cd /var/lib/mysql
(1) 將一個數據庫指向其他物理磁盤
???????? 其方法是先在目標磁盤上創建目錄,然后再創建從mysql數據目錄到目標目錄的符號連接:使用mkdir 創建目錄
然后再創建從mysql數據目錄到目標目錄的符號連接
(2) 將myisam (其它存儲引擎的表不支持) 表的數據文件或索引文件指向其他物理磁盤。
?????????????????? 對于新建的表,可以通過在create table語句中增加 data directory 和index directory選項來完成例如 :
對于已有的表,可以先將其數據文件(.MYD)或索引文件(.MYI)轉移到目標磁盤,然后再建立符號連接即可,需要說明的是表定義文件(.frm)必須位于mysql數據文件目錄下,不能用符號連接。
2. 禁止操作系統更新文件的atime屬性
atime是linux/unix系統下的一個文件屬性,每當讀取文件時,操作系統都會將讀操作發生的時間回寫到磁盤上。 對于讀寫頻繁的數據庫文件來說,記錄文件的訪問時間一般沒有任何用處,去會增加磁盤系統的負擔,影響I/O的性能。通過設置文件系統的mount屬性,阻止操作系統寫atime信息。具體做法是修改文件系統配置文件/etc/fstab,指定noatime選項。
3. 用裸設備(Raw Device)存放innodb的共享表空間
???????? 在innodb緩存充足的情況下,可以考慮使用Raw Device來存放Innodb共享表空間。如果將其表和索引存儲在裸設備(Raw Device)上,從而繞過了文件系統的高速緩存和緩沖器而直接訪問磁盤,那么將大大降低Linux文件系統的負擔,使系統性能獲得顯著改善。需要設置 innodb_data_file_path。
轉載: 為MySQL數據庫的InnoDB引擎配置裸設備(Raw Device)
總結:本章從操作系統的角度介紹了如何對mysql數據庫進行優化,主要是討論i/o的優化問題,文件系統分布的優化問題。由于涉及到操作系統,待以后在去深入。
轉載于:https://www.cnblogs.com/MrHSR/p/9483121.html
總結
以上是生活随笔為你收集整理的mysql 开发进阶篇系列 22 磁盘I/O问题(从linux操作系统上优化)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一出好戏不止是部电影,它也正接近你的生活
- 下一篇: TypeScript基础入门 - 函数