亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來(lái)到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買(mǎi)流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷(xiāo)推廣
客服中心
業(yè)務(wù)咨詢(xún)
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁(yè) >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

合理配置MySQL緩存 提高緩存命中率

添加時(shí)間:2011-2-13  添加: admin 

眾所周知,系統(tǒng)讀取數(shù)據(jù)時(shí),從內(nèi)存中讀取要比從硬盤(pán)上速度要快好幾百倍。故現(xiàn)在絕大部分應(yīng)用系統(tǒng),都會(huì)最大程度的使用緩存(內(nèi)存中的一個(gè)存儲(chǔ)區(qū)域),來(lái)提高系統(tǒng)的運(yùn)行效率。MySQL數(shù)據(jù)庫(kù)也不例外。在這里,筆者將結(jié)合自己的工作經(jīng)驗(yàn),跟大家探討一下,MySQL數(shù)據(jù)庫(kù)中緩存的管理技巧:如何合理配置MySQL數(shù)據(jù)庫(kù)緩存,提高緩存命中率。

 

  一、什么時(shí)候應(yīng)用系統(tǒng)會(huì)從緩存中獲取數(shù)據(jù)?

  數(shù)據(jù)庫(kù)從服務(wù)器上讀取數(shù)據(jù)時(shí),可以從硬盤(pán)的數(shù)據(jù)文件中獲取數(shù)據(jù),也可以從數(shù)據(jù)庫(kù)緩存中讀取數(shù)據(jù)。現(xiàn)在數(shù)據(jù)庫(kù)管理員需要搞清楚的是,在什么樣的情況下,系統(tǒng)是從緩存中讀取數(shù)據(jù),而不是從硬盤(pán)的數(shù)據(jù)文件中讀取數(shù)據(jù)?

  簡(jiǎn)單的說(shuō),數(shù)據(jù)緩存就是內(nèi)存中的一塊存儲(chǔ)區(qū)域,其存儲(chǔ)了用戶的SQL文本以及相關(guān)的查詢(xún)結(jié)果。通常情況下,用戶下次查詢(xún)時(shí),如果所使用的SQL文本是相同的,并且自從上次查詢(xún)后,相關(guān)的紀(jì)錄沒(méi)有被更新過(guò),此時(shí)數(shù)據(jù)庫(kù)就直接采用緩存中的內(nèi)容。從這個(gè)原則中,可以看到如果要直接使用緩存中的數(shù)據(jù),至少要滿足以下幾個(gè)條件。

  一是所采用的SQL文本是相同的。當(dāng)前后兩次用戶使用了相同的SQL語(yǔ)句(假設(shè)不考慮其他條件),則服務(wù)器會(huì)從緩存中讀取結(jié)果,而不需要再去解析和執(zhí)行SQL語(yǔ)句。這里需要注意的是,這里的SQL文本必須一次不差的完全相同。如果前后兩次查詢(xún),使用了不同的查詢(xún)條件。如第一次查詢(xún)時(shí)沒(méi)有輸入Where條件語(yǔ)句。后來(lái)發(fā)現(xiàn)數(shù)據(jù)量過(guò)多,利用了Where條件了過(guò)濾查詢(xún)的結(jié)果。此時(shí)即使最后的查詢(xún)結(jié)果是相同的,系統(tǒng)仍然是從數(shù)據(jù)文件中獲取數(shù)據(jù),而不是從數(shù)據(jù)緩存中。再如,Select后面所使用的字段名稱(chēng)也必須是相同的。如果有一個(gè)字段名稱(chēng)不同或者前后兩次查詢(xún)所使用的字段數(shù)量不同,則系統(tǒng)都會(huì)認(rèn)為是不同的SQL語(yǔ)句,而重新解析并查詢(xún)。

  二是從數(shù)據(jù)緩存的角度考慮,大小寫(xiě)是不敏感的。如前后兩次查詢(xún)時(shí),采用的字段名稱(chēng)可能只有大小寫(xiě)的差異。如第一次使用的是大小,第二次使用的是小寫(xiě),這系統(tǒng)認(rèn)為仍然是相同的SQL語(yǔ)句。或者說(shuō)關(guān)鍵字大小寫(xiě)等等這都是不敏感的。

  三是要滿足二次查詢(xún)之間,數(shù)據(jù)記錄包括表結(jié)構(gòu)都沒(méi)有被更改過(guò)。如果記錄所在的標(biāo)更改了,如增加了一個(gè)字段等等,此時(shí)使用這個(gè)表的所有緩沖數(shù)據(jù)系統(tǒng)將自動(dòng)清空。這里需要注意,這里指的更改是一個(gè)廣義的更改,包括表中任何數(shù)據(jù)或者結(jié)果的改變。舉一個(gè)簡(jiǎn)單的例子,第一次查詢(xún)時(shí)用戶需要查詢(xún)2010年的出貨數(shù)據(jù)。查詢(xún)后有用戶在這個(gè)表中插入了一條2011年1月份的出貨信息。然后又有用戶需要查詢(xún)2010年的出貨信息。使用的SQL語(yǔ)句與第一次查詢(xún)時(shí)完全相同。在這種情況下,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)使用緩存中的數(shù)據(jù)嗎?答案是否定的。因?yàn)楫?dāng)中間用戶插入一條記錄時(shí),系統(tǒng)會(huì)自動(dòng)清空跟這個(gè)表相關(guān)的所有緩存記錄。當(dāng)?shù)诙尾樵?xún)時(shí),緩存中已經(jīng)沒(méi)有這張表對(duì)應(yīng)的緩存信息。此時(shí)就需要重新解析并查詢(xún)。

  四是需要注意,默認(rèn)字符集對(duì)緩存命中率的影響。通常情況下,如果客戶端與服務(wù)器之間所采用的默認(rèn)字符集不同,則即使查詢(xún)語(yǔ)句相同、在兩次查詢(xún)之間記錄與表結(jié)構(gòu)也沒(méi)有被更改,系統(tǒng)仍然認(rèn)為是不同的查詢(xún)。對(duì)于這一點(diǎn)需要特別的注意,大家比較容易忽視。

  二、提高緩存命中率的建議。

  從上面的條件分析中可以看出,利用緩存中的數(shù)據(jù)具有比較嚴(yán)格的條件。其實(shí)這些條件也是合情合理的。主要是為了保障數(shù)據(jù)的一致性。對(duì)以上這些條件有深入的認(rèn)識(shí)之后,現(xiàn)在數(shù)據(jù)庫(kù)管理員需要考慮的是,如何來(lái)提高這個(gè)緩存的命中率?對(duì)此筆者有如下幾個(gè)建議。

  一是在配置時(shí),客戶端與服務(wù)器端要使用相同的字符集。如果客戶端(或者說(shuō)第三方工具)與服務(wù)器端使用的字符集不同,那么任何情況下都不會(huì)使用緩存功能。特別在國(guó)內(nèi),需要用到中文的字符集。此時(shí)特別需要注意,客戶端默認(rèn)字符集要與服務(wù)器端的默認(rèn)字符集相同。注意,這里是相同,而不是兼容。有時(shí)候即使采用了不同的字符集,客戶端上仍然可以正常顯示。這主要是因?yàn)橛行┳址m然不相同,但是是相互兼容的。在緩存管理上,需要相同,光兼容還不行。

  二是在客戶端上,要固化查詢(xún)的語(yǔ)句。如現(xiàn)在有財(cái)務(wù)人員和采購(gòu)人員同時(shí)從系統(tǒng)中查詢(xún)11月份的出貨數(shù)據(jù)。顯然他們崗位職責(zé)不同,所需要字段的內(nèi)容是不同的。此時(shí)在客戶端出,可以允許用戶設(shè)置自己所需要的表單格式。但是筆者建議,后臺(tái)所采用的SQL語(yǔ)句最好是相同的。這里數(shù)據(jù)會(huì)經(jīng)過(guò)三個(gè)渠道:后臺(tái)數(shù)據(jù)庫(kù)、客戶端、用戶。筆者的意識(shí)時(shí),后臺(tái)數(shù)據(jù)庫(kù)與客戶端之間的交互采用相同的SQL語(yǔ)句。然后客戶端與用戶之間進(jìn)行交互時(shí),根據(jù)用戶定義的格式(包括字段前后的排列、不包括查詢(xún)條件語(yǔ)句的差異)向用戶顯示數(shù)據(jù)。此時(shí)由于采用了相同的SQL語(yǔ)句(只是用戶對(duì)于顯示格式的要求不同),從而可以提高應(yīng)用系統(tǒng)的查詢(xún)效率。

  三是提高內(nèi)存中緩存的配置,來(lái)提高命中率。一般在服務(wù)器啟動(dòng)時(shí),操作系統(tǒng)會(huì)跟數(shù)據(jù)庫(kù)軟件協(xié)商緩存空間的大小。當(dāng)緩存工作不足時(shí),緩存中最舊的緩存記錄會(huì)被最新的消息所覆蓋。可見(jiàn),如果能夠提高緩存空間,就可以提高命中率。這就好像打靶,目標(biāo)多了,命中的幾率也會(huì)高許多。不過(guò)用戶的并發(fā)數(shù)越多,這個(gè)設(shè)置的效果會(huì)越不明顯。

  四是通過(guò)分區(qū)表可以提高緩存的命中率。在上面的條件分析中,大家可以看到,只要所查詢(xún)的表中插入了一條記錄,系統(tǒng)就會(huì)清空緩存記錄。現(xiàn)在以查詢(xún)出貨記錄為例。出貨記錄表每天都在更新,而用戶在年初時(shí),會(huì)經(jīng)常需要查詢(xún)上一年的出貨記錄。此時(shí)由于這個(gè)表中的數(shù)據(jù)每個(gè)小時(shí)都在更新,那么緩存中的信息會(huì)不斷的被情況。此時(shí)緩存的命中率顯然不會(huì)很高。針對(duì)這種情況,筆者建議可以采用分區(qū)表。如可以通過(guò)系統(tǒng)設(shè)置,將2010年的出貨記錄單獨(dú)存放在一個(gè)出貨的分區(qū)表中。即每一個(gè)年度都使用一張單獨(dú)的分區(qū)表。此時(shí)2011年的紀(jì)錄,就不會(huì)影響到2010年的分區(qū)表。此時(shí)如果用戶重復(fù)查詢(xún)2010年的出貨信息,只要其使用的SQL語(yǔ)句相同(沒(méi)有采用不同的查詢(xún)條件),那么就可以享受緩存機(jī)制所帶來(lái)的效益,提高應(yīng)用系統(tǒng)的查詢(xún)效果。。

  三、多個(gè)應(yīng)用對(duì)緩存的影響。

  通常情況下,MySQL數(shù)據(jù)庫(kù)的緩存是根據(jù)服務(wù)器內(nèi)存的大小自動(dòng)分配的。如果一臺(tái)服務(wù)器上只有一個(gè)MySQL應(yīng)用,那么固然最好。不過(guò)在實(shí)際工作中,為了降低信息化投資的成本,往往會(huì)在同一臺(tái)服務(wù)器上布置多個(gè)信息化應(yīng)用。由于其他信息化應(yīng)用也需要使用內(nèi)存的空間作為緩存,那么MySQL數(shù)據(jù)庫(kù)中緩存空間就可能變小。如果遇到這種情況下,數(shù)據(jù)庫(kù)管理員需要跟系統(tǒng)工程師進(jìn)行協(xié)商,為各種不同的應(yīng)用根據(jù)性能要求的不同,手工設(shè)置不同的緩存空間。如此的話,就可以避免同一臺(tái)服務(wù)器上不同信息化應(yīng)用對(duì)緩存的沖突。

關(guān)健詞:MySQL

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專(zhuān)項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開(kāi)網(wǎng)站