欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL查詢緩存優(yōu)化示例詳析

 更新時間:2022年10月26日 11:48:13   作者:Happy_Future  
MySQL的優(yōu)化指的是一個很大的系統(tǒng),面試的時候我之前是從sql的語句優(yōu)化方面去說的,這種優(yōu)化也有作用,不過是從邏輯方面去優(yōu)化,下面這篇文章主要給大家介紹了關(guān)于MySQL查詢緩存優(yōu)化的相關(guān)資料,需要的朋友可以參考下

一、概述

在日常使用數(shù)據(jù)庫中,80%的數(shù)據(jù)請求都是查詢,而余下的20%是更新或者增加數(shù)據(jù)。如何提升查詢性能,便是提高數(shù)據(jù)庫處理能力的關(guān)鍵。

二、查詢優(yōu)化內(nèi)容

1、查詢緩存的原理

查詢的路線圖:

緩存SELECT操作或預(yù)處理查詢的結(jié)果集和SQL語句,當有新的SELECT語句或預(yù)處理查詢語句請求,先去查詢緩存,判斷是否存在可用的記錄集,判斷標準:與緩存的SQL語句,是否完全一樣,區(qū)分大小寫。

2、查詢緩存的優(yōu)缺點

優(yōu)點

不需要對SQL語句做任何解析和執(zhí)行,當然語法解析必須通過在先,直接從Query Cache中獲得查詢結(jié)果,提高查詢性能

缺點

查詢緩存的判斷規(guī)則,不夠智能,也即提高了查詢緩存的使用門檻,降低效率查詢緩存的使用,會增加檢查和清理Query Cache中記錄集的開銷

3、不能應(yīng)用查詢緩存的內(nèi)容

  • 查詢語句中加了SQL_NO_CACHE參數(shù)
  • 查詢語句中含有獲得值的函數(shù),包含:自定義函數(shù),如:NOW() ,CURDATE()、GET_LOCK()、RAND()、CONVERT_TZ()等
  • 對系統(tǒng)數(shù)據(jù)庫的查詢:mysql、information_schema 查詢語句中使用SESSION級別變量或存儲過程中的局部變量
  • 查詢語句中使用了LOCK IN SHARE MODE、FOR UPDATE的語句,查詢語句中類似SELECT …INTO 導(dǎo)出數(shù)據(jù)的語句
  • 對臨時表的查詢操作
  • 存在警告信息的查詢語句
  • 不涉及任何表或視圖的查詢語句
  • 某用戶只有列級別權(quán)限的查詢語句
  • 事務(wù)隔離級別為Serializable時,所有查詢語句都不能緩存

4、查詢緩存相關(guān)的服務(wù)器變量

  • query_cache_min_res_unit:查詢緩存中內(nèi)存塊的最小分配單位,默認4k,較小值會減少浪費,但會導(dǎo)致更頻繁的內(nèi)存分配操作,較大值會帶來浪費,會導(dǎo)致碎片過多,內(nèi)存不足
  • query_cache_limit:單個查詢結(jié)果能緩存的最大值,單位字節(jié),默認為1M,對于查詢結(jié)果過大而無法緩存的語句,建議使用SQL_NO_CACHE
  • query_cache_size:查詢緩存總共可用的內(nèi)存空間;單位字節(jié),必須是1024的整數(shù)倍,最小值40KB,低于此值有警報
  • query_cache_wlock_invalidate:如果某表被其它的會話鎖定,是否仍然可以從查詢緩存中返回結(jié)果,默認值為OFF,表示可以在表被其它會話鎖定的場景中繼續(xù)從緩存返回數(shù)據(jù);ON則表示不允許
  • query_cache_type:是否開啟緩存功能,取值為ON, OFF, DEMAND

5、SELECT語句的緩存控制

  • SQL_CACHE:顯式指定存儲查詢結(jié)果于緩存之中
  • SQL_NO_CACHE:顯式查詢結(jié)果不予緩存
  • query_cache_type參數(shù)變量
  • query_cache_type的值為OFF或0時,查詢緩存功能關(guān)閉
  • query_cache_type的值為ON或1時,查詢緩存功能打開,SELECT的結(jié)果符合緩存條件即會緩存,否則,不予緩存,顯式指定SQL_NO_CACHE,不予緩存,此為默認值
  • query_cache_type的值為DEMAND或2時,查詢緩存功能按需進行,顯式指定SQL_CACHE的SELECT語句才會緩存;其它均不予緩存

6、查詢緩存相關(guān)的狀態(tài)變量

show gloable status like 'Qcache%' ;

7、查詢的優(yōu)化的檢查路線

8、命中率和內(nèi)存使用率估算

查詢緩存中內(nèi)存塊的最小分配單位query_cache_min_res_unit :

(query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache

查詢緩存命中率 :

Qcache_hits / ( Qcache_hits + Qcache_inserts ) * 100%

查詢緩存內(nèi)存使用率:

(query_cache_size – qcache_free_memory) / query_cache_size * 100%

9、版本差異

在早期版本mysql均支持緩存,但是隨著redis等內(nèi)存型高性能的緩存技術(shù)興起,mysql已經(jīng)拋棄自己的緩存功能,mysql8.0以后不再支持緩存功能。

三、總結(jié)

MYSQL的緩存優(yōu)化在早期版本可以起到一定的優(yōu)化作用,最新的版本不再支持,緩存的功能而由其他的緩存服務(wù)來承擔。

到此這篇關(guān)于MySQL查詢緩存優(yōu)化的文章就介紹到這了,更多相關(guān)MySQL查詢緩存優(yōu)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情

    Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情

    這篇文章主要介紹了Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情,Mysql常用的存儲引擎如InnoDB、MyISAM采用的是文件存儲,自然和文件系統(tǒng)掛鉤,那么Mysql都有哪些地方用到了文件系統(tǒng)呢,下面我們一起進入文章學(xué)習(xí)詳細內(nèi)容吧
    2022-09-09
  • MySQL5.7.17安裝及配置圖文教程

    MySQL5.7.17安裝及配置圖文教程

    這篇文章主要為大家詳細介紹了MySQL5.7.17安裝及配置圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • MySQL百萬級數(shù)據(jù)量分頁查詢方法及其優(yōu)化建議

    MySQL百萬級數(shù)據(jù)量分頁查詢方法及其優(yōu)化建議

    這篇文章主要介紹了MySQL百萬級數(shù)據(jù)量分頁查詢方法及其優(yōu)化建議,幫助大家更好的處理MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-08-08
  • MySQL 刪除大表的性能問題解決方案

    MySQL 刪除大表的性能問題解決方案

    MySQL在刪除大表engine=innodb(30G+)時,如何減少MySQL hang的時間,本為將提供詳細的解決方案,需要了解的朋友可以參考下
    2012-11-11
  • SQL?JOIN?子句合并多個表中相關(guān)行全面指南

    SQL?JOIN?子句合并多個表中相關(guān)行全面指南

    這篇文章主要為大家介紹了SQL?JOIN?子句合并多個表中相關(guān)行全面指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • mysql函數(shù)IFNULL使用的及注意事項說明

    mysql函數(shù)IFNULL使用的及注意事項說明

    這篇文章主要介紹了mysql函數(shù)IFNULL使用的及注意事項說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 深入理解MySQL事務(wù)的4種隔離級別

    深入理解MySQL事務(wù)的4種隔離級別

    本文主要介紹了MySQL事務(wù)的4種隔離級別,事務(wù)的4種隔離級別分別是讀未提交,讀已提交,可重復(fù)讀和串行化,具有一定的參考價值,感興趣的可以了解一下
    2022-04-04
  • MySQL的InnoDB引擎入門學(xué)習(xí)教程

    MySQL的InnoDB引擎入門學(xué)習(xí)教程

    這篇文章主要介紹了MySQL的InnoDB引擎入門學(xué)習(xí)教程,對InnoDB的存儲結(jié)構(gòu)有一個較好的總結(jié),需要的朋友可以參考下
    2015-11-11
  • mysql自動插入百萬模擬數(shù)據(jù)的操作代碼

    mysql自動插入百萬模擬數(shù)據(jù)的操作代碼

    這篇文章主要介紹了mysql自動插入百萬模擬數(shù)據(jù)的示例代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • 你還在 Select * 嗎?

    你還在 Select * 嗎?

    這篇文章主要介紹了MySql Select ,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評論