共計 2707 個字符,預(yù)計需要花費 7 分鐘才能閱讀完成。
這篇文章主要介紹“MySQL 服務(wù)器磁盤是如何分割和優(yōu)化的”,在日常操作中,相信很多人在 MySQL 服務(wù)器磁盤是如何分割和優(yōu)化的問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MySQL 服務(wù)器磁盤是如何分割和優(yōu)化的”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學(xué)習(xí)吧!
1、使用符號連接
這意味著你將索引 / 數(shù)據(jù)文件符號從正常的數(shù)據(jù)目錄鏈接到其他磁盤(那也可以被分割的)。這使得尋道和讀取時間更好(如果磁盤不用于其他事情)
2、分割
分割意味著你有許多磁盤并把第一塊放在第一個磁盤上,在第二塊放在第二個磁盤上,并且第 n 塊在第 (nmodnumber_of_disks) 磁盤上,等等。這意味著,如果你的正常數(shù)據(jù)大小于分割大小(或完美地排列過),你將得到較好一些的性能。注意,分割是否很依賴于 OS 和分割大小。因此用不同的分割大小測試你的應(yīng)用程序。見 10.8 使用你自己的基準(zhǔn)。注意對分割的速度差異很依賴于參數(shù),取決于你如何分割參數(shù)和磁盤數(shù)量,你可以得出以數(shù)量級的不同。注意你必須選擇為隨機或順序存取優(yōu)化。
為了可靠,你可能想要使用襲擊 RAID0+1(分割 + 鏡像),但是在這種情況下,你將需要 2 * N 個驅(qū)動器來保存 N 個驅(qū)動器的數(shù)據(jù)。如果你有錢,這可能是最好的選擇! 然而你也可能必須投資一些卷管理軟件投資以高效地處理它。
一個好選擇是讓稍重要的數(shù)據(jù) (它能再生) 上存在 RAID0 磁盤上,而將確實重要的數(shù)據(jù) (像主機信息和日志文件) 存在一個 RAID0+ 1 或 RAIDN 磁盤上。如果因為更新奇偶位你有許多寫入,RAIDN 可能是一個問題。
你也可以對數(shù)據(jù)庫使用的文件系統(tǒng)設(shè)置參數(shù)。一個容易的改變是以 noatime 選項掛裝文件系統(tǒng)。這是它跳過更新在 inode 中的最后訪問時間,而且這將避免一些磁盤尋道。
硬件問題
可利用硬件更有效地改善服務(wù)器的性能:
1、在機器中安裝更多的內(nèi)存。這樣能夠增加服務(wù)器的高速緩存和緩沖區(qū)的尺寸,使服務(wù)器更經(jīng)常地使用存放在內(nèi)存中的信息,降低從磁盤取信息的要求。
2、如果有足夠的 RAM 使所有交換在內(nèi)存文件系統(tǒng)中完成,那么應(yīng)該重新配置系統(tǒng),去掉所有磁盤交換設(shè)置。否則,即使有足以滿足交換的 RAM,某些系統(tǒng)仍然要與磁盤進行交換。
3、增加更快的磁盤以減少 I / O 等待時間。尋道時間是這里決定性能的主要因素。逐字地移動磁頭是很慢的,一旦磁頭定位,從磁道讀塊則較快。
在不同的物理設(shè)備上設(shè)法重新分配磁盤活動。如果可能,應(yīng)將您的兩個最繁忙的數(shù)據(jù)庫存放在不同的物理設(shè)備上。請注意,使用同一物理設(shè)備上的不同分區(qū)是不夠的。這樣沒有幫助,因為它們?nèi)詫幱孟嗤奈锢碣Y源(磁盤頭)。移動數(shù)據(jù)庫的過程在第 10 章中介紹。
4、在將數(shù)據(jù)重新放到不同設(shè)備之前,應(yīng)該保證了解該系統(tǒng)的裝載特性。如果在特定的物理設(shè)備上已經(jīng)有了某些特定的主要活動,將數(shù)據(jù)庫放到該處實際上可能會使性能更壞。例如,不要把數(shù)據(jù)庫移到處理大量 Web 通信的 Web 服務(wù)器設(shè)備上。
5、在設(shè)置 MySQL 時,應(yīng)該配置其使用靜態(tài)庫而不是共享庫。使用共享庫的動態(tài)二進制系統(tǒng)可節(jié)省磁盤空間,但靜態(tài)二進制系統(tǒng)更快(然而,如果希望裝入用戶自定義的函數(shù),則不能使用靜態(tài)二進制系統(tǒng),因為 UDF 機制依賴于動態(tài)連接)。
MySQL 服務(wù)器磁盤怎么分割和優(yōu)化
服務(wù)器參數(shù)的選擇
服務(wù)器有幾個能夠改變從而影響其操作的參數(shù)(或稱變量)。系統(tǒng)變量的當(dāng)前值可以通過執(zhí)行 mysqladminvaribles 命令來檢查,其中幾個參數(shù)主要與查詢有關(guān),有必要在此提一下:
delayed_queue_size
此參數(shù)在執(zhí)行其他 INSERTDELAYED 語句的客戶機阻塞以前,確定來自 INSERTDELAYED 語句的放入隊列的行的數(shù)目。增加這個參數(shù)的值使服務(wù)器能從這種請求中接收更多的行,因而客戶機可以繼續(xù)執(zhí)行而不阻塞。
key_buffer_size
此參數(shù)為用來存放索引塊的緩沖區(qū)尺寸。如果內(nèi)存多,增加這個值能節(jié)省索引創(chuàng)建和修改的時間。較大的值使 MySQL 能在內(nèi)存中存儲更多的索引塊,這樣增加了在內(nèi)存中找到鍵值而不用讀磁盤塊的可能性。
在 MySQL3.23 版及以后的版本中,如果增加了鍵緩沖區(qū)的尺寸,可能還希望用 –init-file 選項啟動服務(wù)器。這樣能夠指定一個服務(wù)器啟動時執(zhí)行的 SQL 語句文件。如果有想要存放在內(nèi)存中的只讀表,可將它們拷貝到索引查找非常快的 HEAP 表。
back_log
引入客戶機連接請求的數(shù)量,這些請求在從當(dāng)前客戶機中處理時排隊。如果你有一個很忙的站點,可以增加改變量的值。
編譯和鏈接怎樣影響 MySQL 的速度
大多數(shù)下列測試在 Linux 上并用 MySQL 基準(zhǔn)進行的,但是它們應(yīng)該對其他操作系統(tǒng)和工作負載給出一些指示。
當(dāng)你用 -static 鏈接時,你得到最快的可執(zhí)行文件。使用 Unix 套接字而非 TCP/IP 連接一個數(shù)據(jù)庫也可給出好一些的性能。
在 Linux 上,當(dāng)用 pgcc 和 -O6 編譯時,你將得到最快的代碼。為了用這些選項編譯“sql_yacc.cc”,你需要大約 200M 內(nèi)存,因為 gcc/pgcc 需要很多內(nèi)存使所有函數(shù)嵌入(inline)。在配置 MySQL 時,你也應(yīng)該設(shè)定 CXX=gcc 以避免包括 libstdc++ 庫(它不需要)。
只通過使用一個較好的編譯器或較好的編譯器選項,在應(yīng)用中你能得到一個 10-30% 的加速。如果你自己編譯 SQL 服務(wù)器,這特別重要!
在 Intel 上,你應(yīng)該例如使用 pgcc 或 CygnusCodeFusion 編譯器得到最大速度。我們已經(jīng)測試了新的 Fujitsu 編譯器,但是它是還沒足夠不出錯來優(yōu)化編譯 MySQL。
這里是我們做過的一些測量表:
·如果你以 -O6 使用 pgcc 并且編譯任何東西,mysqld 服務(wù)器是比用 gcc 快 11%(用字符串 99 的版本)。
·如果你動態(tài)地鏈接(沒有 -static),結(jié)果慢了 13%。注意你仍能使用一個動態(tài)連接的 MySQL 庫。只有服務(wù)器對性能是關(guān)鍵的。
·如果你使用 TCP/IP 而非 Unix 套接字,結(jié)果慢 7.5%。
·在一個 SunSPARCstation10 上,gcc2.7.3 是比 SunProC++4.2 快 13%。
·在 Solaris2.5.1 上,在單個處理器上 MIT-pthreads 比帶原生線程的 Solaris 慢 8 -12%。以更多的負載 /cpus,差別應(yīng)該變得更大。
由 TcX 提供的 MySQL-Linux 的分發(fā)用 pgcc 編譯并靜態(tài)鏈接。
到此,關(guān)于“MySQL 服務(wù)器磁盤是如何分割和優(yōu)化的”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>