您好,登錄后才能下訂單哦!
本篇內容介紹了“Linux系統下MySQL服務器的優化技巧”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
磁盤問題
正如前面所述,磁盤尋道是一個性能的大瓶頸。當數據開始增長以致緩存變得不可能時,這個問題變得越來越明顯。對大數據庫,在那你或多或少地要隨機存取數據,你可以依靠你將至少需要一次磁盤尋道來讀取并且幾次磁盤尋道寫入。為了使這個問題最小化,使用有低尋道時間的磁盤。
為了增加可用磁盤軸的數量(并且從而減少尋道開銷),符號聯接文件到不同磁盤或分割磁盤是可能的。
1、使用符號連接
這意味著你將索引/數據文件符號從正常的數據目錄鏈接到其他磁盤(那也可以被分割的)。這使得尋道和讀取時間更好(如果磁盤不用于其他事情)
2、分割
分割意味著你有許多磁盤并把***塊放在***個磁盤上,在第二塊放在第二個磁盤上,并且第n塊在第(nmodnumber_of_disks)磁盤上,等等。這意味著,如果你的正常數據大小于分割大小(或***地排列過),你將得到較好一些的性能。注意,分割是否很依賴于OS和分割大小。因此用不同的分割大小測試你的應用程序。見10.8使用你自己的基準。注意對分割的速度差異很依賴于參數,取決于你如何分割參數和磁盤數量,你可以得出以數量級的不同。注意你必須選擇為隨機或順序存取優化。
為了可靠,你可能想要使用襲擊RAID0+1(分割+鏡像),但是在這種情況下,你將需要2*N個驅動器來保存N個驅動器的數據。如果你有錢,這可能是***的選擇!然而你也可能必須投資一些卷管理軟件投資以高效地處理它。
一個好選擇是讓稍重要的數據(它能再生)上存在RAID0磁盤上,而將確實重要的數據(像主機信息和日志文件)存在一個RAID0+1或RAIDN磁盤上。如果因為更新奇偶位你有許多寫入,RAIDN可能是一個問題。
你也可以對數據庫使用的文件系統設置參數。一個容易的改變是以noatime選項掛裝文件系統。這是它跳過更新在inode中的***訪問時間,而且這將避免一些磁盤尋道。
硬件問題
可利用硬件更有效地改善服務器的性能:
1、在機器中安裝更多的內存。這樣能夠增加服務器的高速緩存和緩沖區的尺寸,使服務器更經常地使用存放在內存中的信息,降低從磁盤取信息的要求。
2、如果有足夠的RAM使所有交換在內存文件系統中完成,那么應該重新配置系統,去掉所有磁盤交換設置。否則,即使有足以滿足交換的RAM,某些系統仍然要與磁盤進行交換。
3、增加更快的磁盤以減少I/O等待時間。尋道時間是這里決定性能的主要因素。逐字地移動磁頭是很慢的,一旦磁頭定位,從磁道讀塊則較快。
4、在將數據重新放到不同設備之前,應該保證了解該系統的裝載特性。如果在特定的物理設備上已經有了某些特定的主要活動,將數據庫放到該處實際上可能會使性能更壞。例如,不要把數據庫移到處理大量Web通信的Web服務器設備上。
5、在設置MySQL時,應該配置其使用靜態庫而不是共享庫。使用共享庫的動態二進制系統可節省磁盤空間,但靜態二進制系統更快(然而,如果希望裝入用戶自定義的函數,則不能使用靜態二進制系統,因為UDF機制依賴于動態連接)。
服務器參數的選擇
服務器有幾個能夠改變從而影響其操作的參數(或稱變量)。系統變量的當前值可以通過執行MySQLadminvaribles命令來檢查,其中幾個參數主要與查詢有關,有必要在此提一下:
delayed_queue_size
此參數在執行其他INSERTDELAYED語句的客戶機阻塞以前,確定來自INSERTDELAYED語句的放入隊列的行的數目。增加這個參數的值使服務器能從這種請求中接收更多的行,因而客戶機可以繼續執行而不阻塞。
key_buffer_size
此參數為用來存放索引塊的緩沖區尺寸。如果內存多,增加這個值能節省索引創建和修改的時間。較大的值使MySQL能在內存中存儲更多的索引塊,這樣增加了在內存中找到鍵值而不用讀磁盤塊的可能性。
“Linux系統下MySQL服務器的優化技巧”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。