日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 索引 内存_mysql索引【第三篇】

發布時間:2024/9/27 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 索引 内存_mysql索引【第三篇】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

##innodb引擎的數據是按頁為單位的,當需要讀一條記錄時,并不是將這個記錄本身從磁盤中讀取出來,而是以頁為單位將整個頁讀取到內存中,每個頁默認大小為16kb

數據查詢過程:? 磁盤---->內存---->返回結果

數據更新過程: change buffer ---->當有查詢,更新到磁盤------->內存-------->返回結果? ?###這個過程不確定對不對啊,如果有不對的話? 大佬可以留言指出,我是這么理解的

唯一索引和普通索引的性能差異:

在查詢過程中,二者的性能幾乎相同:

唯一索引,檢索到數據后,由于數據的唯一性,不會繼續向下查詢,直接返回結果。

普通索引,檢索到需要的數據后,需要繼續向下檢索,直到檢索到不滿足條件位置。需要多做的只是一次“查找和判斷下一條記錄”,只需要一次指針尋找和計算(多叉樹模型)。

在更新過程中:

唯一索引由于數據的唯一性,所有的更新操作都要先判斷這個操作是否違反唯一性約束,而這必須需要將數據頁讀入內存才可以判斷,所以不會用到change buffer, 在數據從磁盤讀入內存涉及隨機IO的訪問,是數據庫成本最高的操作之一。

普通索引用到了change buffer,減少了隨機磁盤訪問,對更新的性能會有明顯提升。

change buffer:當需要更新一個數據頁時,如果數據頁在內存就會直接更新,如果不在的話,在不影響數據一致性的前提下,會將DML操作緩存在change buffer中,就不需要從磁盤中讀取這個數據頁。下次需要訪問這個數據頁時,將數據頁讀入內存,然后執行change buffer中與這個頁有關的操作。(持久化的數據,也會寫入到磁盤)

change buffer好處:更新記錄在change buffer? 減少了磁盤的隨機讀; 數據讀入內存需要占用buffer poll,用到change buffer緩存還能減少占用內存

merge:將change buffer操作寫到原數據頁得到最新結果,這個過程稱為merge。除了訪問這個數據頁會觸發merge外;系統后臺線程也會定期merge;數據庫正常關閉,也會merge

change buffer使用場景:

寫多讀少的業務,比如:賬單、日志類

原因:讀數據的時候會觸發merge,讀的越少,change buffer緩存的操作越多,收益就越大。而讀頻繁的業務會頻繁觸發merge,隨機訪問IO次數不會減少,反而增重了change? buffer維護代價。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mysql 索引 内存_mysql索引【第三篇】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。