新聞中心
以下的文章主要介紹的是對MySQL 服務(wù)器進(jìn)行調(diào)優(yōu)的實際操作步驟,以下就是MySQL 服務(wù)器進(jìn)行調(diào)優(yōu)的實際操作步驟解決方案,希望會給你帶來一些幫助在此方面。以下就是文章的具體內(nèi)容描述。

趙縣網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,趙縣網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為趙縣上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的趙縣做網(wǎng)站的公司定做!
如今,開發(fā)人員不斷地開發(fā)和部署使用 LAMP(Linux?、apache(Unix平臺最流行的WEB服務(wù)器平臺)、MySQL(和PHP搭配之最佳組合) 和 PHP/Perl)架構(gòu)的應(yīng)用程序。但是,服務(wù)器管理員常常對應(yīng)用程序本身沒有什么控制能力,因為應(yīng)用程序是別人編寫的。這份 共三部分的系列文章 將討論許多MySQL 服務(wù)器配置問題,這些配置會影響應(yīng)用程序的性能。
本文是本系列文章的第三部分,也是最后一部分,將重點討論為實現(xiàn)最高效率而對數(shù)據(jù)庫層進(jìn)行的調(diào) 優(yōu)。
關(guān)于 MySQL(和PHP搭配之最佳組合) 調(diào)優(yōu)
有 3 種方法可以加快 MySQL(和PHP搭配之最佳組合) 服務(wù)器的運(yùn)行速度,效率從低到高依次為:
替換有問題的硬件。 對 MySQL(和PHP搭配之最佳組合) 進(jìn)程的設(shè)置進(jìn)行調(diào)優(yōu)。 對查詢進(jìn)行優(yōu)化。
替換有問題的硬件通常是我們的第一考慮,主要原因是數(shù)據(jù)庫會占用大量資源。不過這種解決方案也就僅限于此了。實際上,您通常可以讓中央處理器(CPU)或磁盤速度加倍,也可以讓內(nèi)存增大 4 到 8 倍。
第二種方法是對 MySQL(和PHP搭配之最佳組合) 服務(wù)器(也稱為 MySQL(和PHP搭配之最佳組合)d)進(jìn)行調(diào)優(yōu)。對這個進(jìn)程進(jìn)行調(diào)優(yōu)意味著適當(dāng)?shù)胤峙鋬?nèi)存,并讓 MySQL(和PHP搭配之最佳組合)d 了解將會承受何種類型的負(fù)載。加快磁盤運(yùn)行速度不如減少所需的磁盤訪問次數(shù)。類似地,確保 MySQL(和PHP搭配之最佳組合) 進(jìn)程正確操作就意味著它花費(fèi)在服務(wù)查詢上的時間要多于花費(fèi)在處理后臺任務(wù)(如處理臨時磁盤表或打開和關(guān)閉文件)上的時間。對 MySQL(和PHP搭配之最佳組合)d 進(jìn)行調(diào)優(yōu)是本文的重點。
最好的方法是確保查詢已經(jīng)進(jìn)行了優(yōu)化。這意味著對表應(yīng)用了適當(dāng)?shù)乃饕樵兪前凑湛梢猿浞掷?MySQL(和PHP搭配之最佳組合) 功能的方式來編寫的。盡管本文并沒有包含查詢調(diào)優(yōu)方面的內(nèi)容(很多著作中已經(jīng)針對這個主題進(jìn)行了探討),不過它會配置 MySQL(和PHP搭配之最佳組合)d 來報告可能需要進(jìn)行調(diào)優(yōu)的查詢。
雖然已經(jīng)為這些任務(wù)指派了次序,但是仍然要注意硬件和 MySQL(和PHP搭配之最佳組合)d 的設(shè)置以利于適當(dāng)?shù)卣{(diào)優(yōu)查詢。機(jī)器速度慢也就罷了,我曾經(jīng)見過速度很快的機(jī)器在運(yùn)行設(shè)計良好的查詢時由于負(fù)載過重而失敗,因為 MySQL(和PHP搭配之最佳組合)d 被大量繁忙的工作所占用而不能服務(wù)查詢。
記錄慢速查詢
在一個 SQL 服務(wù)器中,數(shù)據(jù)表都是保存在磁盤上的。索引為服務(wù)器提供了一種在表中查找特定數(shù)據(jù)行的方法,而不用搜索整個表。當(dāng)必須要搜索整個表時,就稱為表掃描。通常來說,您可能只希望獲得表中數(shù)據(jù)的一個子集,因此全表掃描會浪費(fèi)大量的磁盤 I/O,因此也就會浪費(fèi)大量時間。當(dāng)必須對數(shù)據(jù)進(jìn)行連接時,這個問題就更加復(fù)雜了,因為必須要對連接兩端的多行數(shù)據(jù)進(jìn)行比較。
當(dāng)然,表掃描并不總是會帶來問題;有時讀取整個表反而會比從中挑選出一部分?jǐn)?shù)據(jù)更加有效(MySQL 服務(wù)器進(jìn)程中查詢規(guī)劃器用來作出這些決定)。如果索引的使 用效率很低,或者根本就不能使用索引,則會減慢查詢速度,而且隨著服務(wù)器上的負(fù)載和表大小的增加,這個問題會變得更加顯著。執(zhí)行時間超過給定時間范圍的查 詢就稱為慢速查詢。
您可以配置 MySQL(和PHP搭配之最佳組合)d 將這些慢速查詢記錄到適當(dāng)命名的慢速查詢?nèi)罩局?。管理員然后會查看這個日志來幫助他們確定應(yīng)用程序中有哪些部分需要進(jìn)一步調(diào)查。清單 1 給出了要啟用慢速查詢?nèi)罩拘枰?my.cnf 中所做的配置。
清單 1. 啟用 MySQL(和PHP搭配之最佳組合) 慢速查詢?nèi)罩?/p>
- [MySQL(和PHP搭配之最佳組合)d]; enable the slow query log,
default 10 secondslog-slow-queries; log queries taking longer than 5 secondslong_query_time = 5;
log queries that don't use indexes even if they take less than long_query_time;
MySQL(和PHP搭配之最佳組合) 4.1 and newer onlylog-queries-not-using-indexes
這三個設(shè)置一起使用,可以記錄執(zhí)行時間超過 5 秒和沒有使用索引的查詢。請注意有關(guān) log-queries-not-using-indexes 的警告:您必須使用 MySQL(和PHP搭配之最佳組合) 4.1 或更高版本。慢速查詢?nèi)罩径急4嬖?MySQL(和PHP搭配之最佳組合) 數(shù)據(jù)目錄中,名為 hostname-slow.log。如果希望使用一個不同的名字或路徑,可以在 my.cnf 中使用 log-slow-queries = /new/path/to/file 實現(xiàn)此目的。
閱讀慢速查詢?nèi)罩咀詈檬峭ㄟ^ MySQL(和PHP搭配之最佳組合)dumpslow 命令進(jìn)行。指定日志文件的路徑,就可以看到一個慢速查詢的排序后的列表,并且還顯示了它們在日志文件中出現(xiàn)的次數(shù)。一個非常有用的特性是 MySQL(和PHP搭配之最佳組合)dumpslow 在比較結(jié)果之前,會刪除任何用戶指定的數(shù)據(jù),因此對同一個查詢的不同調(diào)用被計為一次;這可以幫助找出需要工作量最多的查詢。
以上的相關(guān)內(nèi)容就是對MySQL 服務(wù)器進(jìn)行調(diào)優(yōu)的部分內(nèi)容介紹,望你能有所收獲。
當(dāng)前標(biāo)題:MySQL服務(wù)器進(jìn)行調(diào)優(yōu)的“竅門”
當(dāng)前地址:http://fisionsoft.com.cn/article/djocdje.html


咨詢
建站咨詢
