Linux下MySQL服務(wù)器級優(yōu)化技巧 |
發(fā)布時間: 2012/9/8 16:35:59 |
普通的MySQL用戶利用表創(chuàng)建和索引操作,以及利用查詢的編寫能夠進(jìn)行的優(yōu)化。不過,還有一些只能由MySQL管理員和系統(tǒng)(QQ:小默862693539)管理員來完成的優(yōu)化,這些管理員在MySQL服務(wù)器或運行MySQL的機器上具有控制權(quán)。有的服務(wù)器參數(shù)直接適用于查詢處理,可將它們打開。而有的硬件配置問題直接影響查詢處理速度,應(yīng)該對它們進(jìn)行調(diào)整。
磁盤問題 正如前面所述,磁盤尋道是一個性能的大瓶頸。當(dāng)數(shù)據(jù)開始增長以致緩存變得不可能時,這個問題變得越來越明顯。對大數(shù)據(jù)庫,在那你或多或少地要隨機存取數(shù)據(jù),你可以依靠你將至少需要一次磁盤尋道來讀取并且?guī)状未疟P尋道寫入。為了使這個問題最小化,使用有低尋道時間的磁盤。 為了增加可用磁盤軸的數(shù)量(并且從而減少尋道開銷),符號聯(lián)接文件到不同磁盤或分割磁盤是可能的。 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)(QQ:小默862693539)設(shè)置參數(shù)。一個容易的改變是以noatime選項掛裝文件系統(tǒng)(QQ:小默862693539)。這是它跳過更新在inode中的最后訪問時間,而且這將避免一些磁盤尋道。 硬件問題 可利用硬件更有效地改善服務(wù)器的性能: 1、在機器中安裝更多的內(nèi)存。這樣能夠增加服務(wù)器的高速緩存和緩沖區(qū)的尺寸,使服務(wù)器更經(jīng)常地使用存放在內(nèi)存中的信息,降低從磁盤取信息的要求。 2、如果有足夠的RAM使所有交換在內(nèi)存文件系統(tǒng)(QQ:小默862693539)中完成,那么應(yīng)該重新配置系統(tǒng)(QQ:小默862693539),去掉所有磁盤交換設(shè)置。否則,即使有足以滿足交換的RAM,某些系統(tǒng)(QQ:小默862693539)仍然要與磁盤進(jìn)行交換。 3、增加更快的磁盤以減少I/O等待時間。尋道時間是這里決定性能的主要因素。逐字地移動磁頭是很慢的,一旦磁頭定位,從磁道讀塊則較快。 4、在將數(shù)據(jù)重新放到不同設(shè)備之前,應(yīng)該保證了解該系統(tǒng)(QQ:小默862693539)的裝載特性。如果在特定的物理設(shè)備上已經(jīng)有了某些特定的主要活動,將數(shù)據(jù)庫放到該處實際上可能會使性能更壞。例如,不要把數(shù)據(jù)庫移到處理大量Web通信的Web服務(wù)器設(shè)備上。 5、在設(shè)置MySQL時,應(yīng)該配置其使用靜態(tài)庫而不是共享庫。使用共享庫的動態(tài)二進(jìn)制系統(tǒng)(QQ:小默862693539)可節(jié)省磁盤空間,但靜態(tài)二進(jìn)制系統(tǒng)(QQ:小默862693539)更快(然而,如果希望裝入用戶自定義的函數(shù),則不能使用靜態(tài)二進(jìn)制系統(tǒng)(QQ:小默862693539),因為UDF機制依賴于動態(tài)連接)。 服務(wù)器參數(shù)的選擇 服務(wù)器有幾個能夠改變從而影響其操作的參數(shù)(或稱變量)。系統(tǒng)(QQ:小默862693539)變量的當(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)存中的只讀表,可將它們拷貝到索引查找非?斓腍EAP表。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |