亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL緩存優(yōu)化方案總結(jié)

 更新時間:2023年08月23日 09:03:58   作者:在下uptown  
最近迭代的產(chǎn)品版本從2.X來到了3.X,屬于一個非常大的產(chǎn)品升級,比上個版本多了很多功能,那么上線之前肯定要在一個干凈的環(huán)境里進行測試回歸以及性能測試,本文總結(jié)一下數(shù)據(jù)庫層面的一些緩存機制對查詢速度整體的優(yōu)化,需要的朋友可以參考下

查詢緩存

想必大家應(yīng)該都知道這個相對比較雞肋的querycahce機制,從誕生以來就不怎么受人待見,在mysql5.6將該機制默認關(guān)閉,到了mysql8直接將他取消了。

查詢緩存顧名思義是將查詢的結(jié)果集緩存住,可以簡單理解為整個sql為key,緩存sql的結(jié)果,每一次select查詢都會先檢查querycache是否有緩存,如果存在緩存的數(shù)據(jù)則直接返回,相比于磁盤讀取性能提升n倍。

聽起來十分合理,但缺點也十分明顯:

  • 基于sql來緩存嚴格到字節(jié)級別,只要sql中多一個空格就不會走緩存。對于線上環(huán)境比較生硬。
  • 只適用于讀多遠大于寫少的場景,一有ddl預(yù)計緩存就會失效。
  • 打開查詢緩存后如果一條sql沒有命中會消耗額外的資源把結(jié)果集維護起來,浪費資源

所以一般的線上環(huán)境都不推薦使用這個機制。

表緩存

如果大家有背過mysql的八股文一定對innodb_buffer_pool_size這個參數(shù)不陌生,既然叫innodb_buffer說明這是innodb引擎特有的參數(shù),負責(zé)緩存磁盤中的數(shù)據(jù)減少磁盤IO提升讀寫速度。

由于innodb讀取數(shù)據(jù)的基本單位是頁并且使用B+樹索引結(jié)構(gòu)來組織數(shù)據(jù),每個索引頁通常包含多個數(shù)據(jù)行,數(shù)據(jù)行按照主鍵的順序進行排序。通過主鍵索引,可以快速定位到目標數(shù)據(jù)行所在的索引頁,然后讀取對應(yīng)的磁盤頁。

每次讀取數(shù)據(jù)會連帶著整條數(shù)據(jù)頁被加載,好不容易消耗了資源讀磁盤拿出來的數(shù)據(jù)不能浪費,理所當然的存在了buffer_pool里,比如第一次查詢select * from A where id = 1,在1附近的數(shù)據(jù)都被緩存到了buffer_pool中,下一次執(zhí)行select * from A where id = 2時就會從緩沖池里拿。

并且buffer_pool通過change_buffer來記錄增刪改對數(shù)據(jù)的變更操作,這樣就會極大的優(yōu)化查詢速度并節(jié)省性能,緩存失效也會根據(jù)LRU的機制去淘汰舊緩存。

從這次產(chǎn)品迭代升級的新環(huán)境中發(fā)現(xiàn),部署一個新的mysql容器可以注意調(diào)整一下innodb_buffer_pool_size對應(yīng)的值,默認為128M,通過以下命令查看。

show variables like '%innodb_buffer_pool_size%';

一般我們可以調(diào)整為機器內(nèi)存的1/4,這個可以視情況而定,修改完之后會發(fā)現(xiàn)性能提升一大截。

ReadySet

先放一下官方文檔:

上面的都是MySQL自帶的緩存方案,這個組件是最近逛github的時候碰巧看到的中間件,一個高性能且輕量的mysql&pg數(shù)據(jù)庫緩存解決方案,無需額外代碼即可將最復(fù)雜的 SQL 讀取轉(zhuǎn)變?yōu)?strong>閃電般快速的查找。本質(zhì)上基于jdbc實現(xiàn)了一套服務(wù),對上層而言就是一個數(shù)據(jù)庫,

由于我也是剛接觸不是特別了解只能簡單聊一下,它本質(zhì)上是用一個數(shù)據(jù)流圖的機制去做的,所謂數(shù)據(jù)流圖按我理解就是一個快照,基于用戶的sql構(gòu)建一個快照,后續(xù)的增刪改語句與buffer pool思路一樣,在內(nèi)存中計算。

這個方案思路上有點類似mysql中的查詢緩存buffer_pool的整合版本,也是通過sql去緩存數(shù)據(jù),需要主動通過使用CREATE CACHE FROMSQL擴展,將查詢緩存在ReadySet中,通過SHOW CACHES查看所有緩存SQL,然后緩存的數(shù)據(jù)本質(zhì)上是構(gòu)造了快照,有數(shù)據(jù)更新會監(jiān)聽binlog同步到快中中并支持最終一致性保持緩存一致,當然會有一點點的數(shù)據(jù)延遲。

所以這類中間件用著用著就會帶來巨大的內(nèi)存開銷,不過在BI類似的平臺中可以試一試。

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

相關(guān)文章

  • MySQL查詢緩存的小知識

    MySQL查詢緩存的小知識

    這篇文章主要介紹了MySQL查詢緩存的的相關(guān)資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-12-12
  • 用percona-toolkit為MySQL收集系統(tǒng)和性能信息的教程

    用percona-toolkit為MySQL收集系統(tǒng)和性能信息的教程

    這篇文章主要介紹了用percona-toolkit為MySQL收集系統(tǒng)和性能信息的教程,可以輕松地將服務(wù)器基本信息錄入數(shù)據(jù)庫,需要的朋友可以參考下
    2015-11-11
  • Ubuntu安裝MySQL的三種方式以及卸載MySQL

    Ubuntu安裝MySQL的三種方式以及卸載MySQL

    在Linux系統(tǒng)中,卸載MySQL可通過dpkg-l和grep命令組合來查詢已安裝的MySQL相關(guān)軟件包,然后使用適當命令進行卸載,安裝MySQL時,可以選擇直接安裝或編譯安裝,直接安裝需要設(shè)置密碼,編譯安裝需選擇帶boost庫的版本,初始化MySQL時要指定data目錄
    2024-10-10
  • mysql利用mysqlbinlog命令恢復(fù)誤刪除數(shù)據(jù)的實現(xiàn)

    mysql利用mysqlbinlog命令恢復(fù)誤刪除數(shù)據(jù)的實現(xiàn)

    這篇文章主要介紹了mysql利用mysqlbinlog命令恢復(fù)誤刪除數(shù)據(jù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 關(guān)于mysql的時區(qū)問題

    關(guān)于mysql的時區(qū)問題

    這篇文章主要介紹了關(guān)于mysql的時區(qū)問題,具有很好的參考價值,希望對大家有所幫助,以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家,
    2023-11-11
  • Ubuntu與windows雙系統(tǒng)下共用MySQL數(shù)據(jù)庫的方法

    Ubuntu與windows雙系統(tǒng)下共用MySQL數(shù)據(jù)庫的方法

    ubuntu系統(tǒng)和windows系統(tǒng)雙系統(tǒng)共用是用戶喜歡使用的方式之一,而MySQL是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在Windows平臺中常以WAMP方式搭配使用,在Linux平臺中常以LAMP組合形式出現(xiàn),下面的方法可以使得Ubuntu平臺共用Windows平臺中的MySQL數(shù)據(jù)庫
    2012-01-01
  • mysql kill process解決死鎖問題

    mysql kill process解決死鎖問題

    這篇文章主要介紹了使用mysql kill process解決死鎖問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • mysql Out of memory (Needed 16777224 bytes)的錯誤解決

    mysql Out of memory (Needed 16777224 bytes)的錯誤解決

    至于我改的這幾個值是不是正確的解決方法,目前還不知道。先貼出來
    2012-07-07
  • mysql如何獲取數(shù)據(jù)列值(int和string)最大值

    mysql如何獲取數(shù)據(jù)列值(int和string)最大值

    最近在開發(fā)項目的時候有個需求,我數(shù)據(jù)庫里面存了很多升級包,升級包有列數(shù)據(jù)表示的是升級包的版本號,類型屬于字符串,結(jié)構(gòu)類似于V1.0.2.22這種,然后后臺有個任務(wù)需要獲取最新版本號的那條數(shù)據(jù),本文給大家介紹mysql獲取數(shù)據(jù)列值(int和string)最大值,感興趣的朋友一起看看吧
    2024-01-01
  • MySQL中增刪改查操作與常見陷阱詳解

    MySQL中增刪改查操作與常見陷阱詳解

    這篇文章詳細講解了MySQL的增刪改查的語句、語義和一些我們經(jīng)常在開發(fā)工作中暴露的問題,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-11-11

最新評論