新聞中心
“
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出鹽田免費(fèi)做網(wǎng)站回饋大家。
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一。
”
當(dāng)我們開(kāi)啟Mysql的查詢緩存,當(dāng)執(zhí)行完全相同的SQL語(yǔ)句的時(shí)候,服務(wù)器就會(huì)直接從緩存中讀取結(jié)果。當(dāng)數(shù)據(jù)被修改, 之前的緩存會(huì)失效,所以修改比較頻繁的表不適合做查詢緩存。
當(dāng)服務(wù)器頻繁收到相同的請(qǐng)求而數(shù)據(jù)庫(kù)中的表數(shù)據(jù)變化頻率又不高,查詢緩存是非常有用的,它可以大大提高應(yīng)用程序的訪問(wèn)效率。很多Web服務(wù)器利用這一原理基于數(shù)據(jù)庫(kù)的內(nèi)容動(dòng)態(tài)生成頁(yè)面。
查詢緩存并不會(huì)返回過(guò)期的數(shù)據(jù),當(dāng)數(shù)據(jù)庫(kù)中的表數(shù)據(jù)發(fā)生變化時(shí),相關(guān)的查詢緩存會(huì)自動(dòng)清除。但是查詢緩存并不會(huì)在多個(gè)MySQLd服務(wù)器實(shí)例中更新同一個(gè)表的數(shù)據(jù)時(shí)有效。
查詢緩存對(duì)于存儲(chǔ)在多個(gè)數(shù)據(jù)庫(kù)分區(qū)表中的數(shù)據(jù)是無(wú)效的。如果查詢涉及多個(gè)數(shù)據(jù)庫(kù)分區(qū)表,查詢緩存會(huì)自動(dòng)失效。
如果要禁用查詢緩存的話,只需在啟動(dòng)時(shí)將query_cache_size的大小設(shè)置為0即可。
查詢緩存在一定情況下會(huì)提升系統(tǒng)的性能,但并不代表在任何情況下都會(huì)提升系統(tǒng)的性能,某些情況下,甚至可能會(huì)降低系統(tǒng)的性能。如
1)人們對(duì)于分級(jí)設(shè)置查詢緩存的分歧很大,有些人認(rèn)為可能超出了啟用它的好處。查詢緩存的大小設(shè)置為幾十兆的時(shí)候通常是有效的,但是設(shè)置成幾百兆的時(shí)候就不一定了。
2)在服務(wù)器超負(fù)荷時(shí)使用查詢緩存是非常有效的。一個(gè)由多個(gè)SELECT組合成的復(fù)雜查詢使用查詢緩存的效率肯定是非常高效的,但如果有頻繁插入數(shù)據(jù)的話,不使用緩存的話比起使用查詢緩存效率要高的多。
查詢緩存的執(zhí)行原理
對(duì)于下面這兩種查詢,查詢緩存會(huì)當(dāng)作兩種不同形式的查詢,因?yàn)椴樵兙彺鏁?huì)嚴(yán)格比較兩次查詢的字節(jié)是否完全相同。對(duì)于不同的字符串,不同的數(shù)據(jù)表,不同的協(xié)議版本,不同的字符集都會(huì)當(dāng)作不同的查詢。
SELECT * FROM tbl_name Select * from tbl_name
在以下情況下并不適合使用查詢緩存
1)查詢是外部查詢的一個(gè)子查詢
2)在存儲(chǔ)過(guò)程,觸發(fā)器或函數(shù)中執(zhí)行的查詢
如果數(shù)據(jù)表發(fā)生變化,如增加/修改/刪除表結(jié)構(gòu)或表數(shù)據(jù),都會(huì)導(dǎo)致查詢緩存失效,緩存的數(shù)據(jù)會(huì)自動(dòng)從緩存中清除。
當(dāng)查詢緩存包含了以下函數(shù)時(shí),查詢緩存并不會(huì)有效。
詳解MySQL查詢緩存
查詢緩存不適用的情況
1)查詢使用用戶自定義的函數(shù)或存儲(chǔ)過(guò)程。
2)查詢包含了用戶變量或本地存儲(chǔ)的程序變量。
3)涉及到數(shù)據(jù)庫(kù)中的mysql,INFORMATION_SCHEMA和performance——schema表。
4)查詢涉及到數(shù)據(jù)庫(kù)分區(qū)表。
5)查詢是如下的類型:
SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE SELECT ... INTO OUTFILE ... SELECT ... INTO DUMPFILE ... SELECT * FROM ... WHERE autoincrement_col IS NULL
6)查詢用到了臨時(shí)表。
7)查詢沒(méi)有用到數(shù)據(jù)表。
8)查詢包含了警告。
9)用戶查詢的表中擁有特定的權(quán)限。
使用查詢緩存和不使用查詢緩存的兩種方式
SELECT SQL_CACHE id, name FROM customer; SELECT SQL_NO_CACHE id, name FROM customer;
配置查詢緩存
當(dāng)查詢緩存query_cache_size設(shè)置為一個(gè)非0的數(shù)值時(shí),最小的容量是40KB,這是由它的系統(tǒng)結(jié)構(gòu)所決定的。在應(yīng)用時(shí)設(shè)置為多大合適,還是要根據(jù)實(shí)際情況而定。
標(biāo)題名稱:講解一下Mysql查詢緩存
網(wǎng)頁(yè)路徑:http://fisionsoft.com.cn/article/dhjhidh.html


咨詢
建站咨詢

