成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

問了幾人,MySQL changebuffer 這點都沒答對

數據庫 MySQL
chang buffer 無法應用在主鍵索引(聚蔟索引)和唯一二級索引上,所以這兩個得改,主鍵索引都改了,影響行數就有了。

本文轉載自微信公眾號「yes的練級攻略」,作者yes的練級攻略 。轉載本文請聯yes的練級攻略公眾號。

你好,我是yes。

有位同學問了我兩個關于 change buffer 的問題:

圖片

隨后我又挑了幾個問答的用戶提問這兩個問題,發現對 change buffer 的理解都有偏差,于是決定操作一篇。

之前我寫過一篇關于 mysql innodb 所有 buffer 的內容 :總結 mysql 的所有 buffer,一網打盡就這篇了!

里面有提到 change buffer,這篇算是之前那篇的補充吧。

如果對 mysql innodb buffer 不太熟悉,建議先看下我之前總結的內容,這個還是需要點前置知識的。

簡單回顧 change buffer

簡單來說 change buffer 就是一塊內存,存在于 buffer pool 中,當需要修改數據時候,如果這個數據所在頁在 buffer pool,那么萬事大吉,直接在內存也修改。

那假設 buffer pool 里沒有要修改的那個數據頁,這時候該修改怎么辦呢?

假設要執行這個 sql:update table set a= 'yes' where b = 1

第一直覺就是找到 b =1 的數據所在的數據頁,加載到 buffer pool 中,然后進行修改,這里就涉及了從磁盤拉取數據到內存這個動作,我們都知道讀盤的開銷是比較大的。

所以 mysql innodb 搞了個 change buffer,當數據頁不存在 buffer pool 時,mysql innodb 先把更新動作緩存在 change buffer 中,當下次 select b=1 這個數據的時候,將數據加載到 buffer pool 中,同時應用上 change buffer 的修改,這就得到正確的數據了。

圖片

圖來自mysql官網

重點

上述的原理不難理解,不過我之前文章提到了一點:

圖片

這就是重點,理解了這個就能解答上面那位同學的提問。

change buffer 只能應用非唯一二級索引

聚蔟索引和唯一索引都需要檢查數據的一致性,這就不好先把更新、插入、刪除先緩存在 change buffer 中。

假設現在有一張名為 yes 表,里面有聚蔟索引以及一個(a,b) 的非唯一二級索引,現要執行如下語句:

update yes set b= 'yes的練級攻略' where a = 'yesyes'

思考下,此時能用上 change buffer 嗎?

原則上這條更新語句,mysql 可以選擇聚蔟索引掃,或者應用 (a,b)這個索引。

假設走(a,b)索引。

那問題來了,要走(a,b)索引,不就是要掃描(a,b)的數據嗎,也就是需加載(a,b)索引數據頁到 buffer pool 中,那還用啥 change buffer?

聽起來 change buffer 好像沒啥用啊?

我再加點條件:假設這個表不僅僅有 (a,b)這個索引,還有(c,b)、(d,b)等等這些索引,那么如果我們要修改 b 字段的值,是不是除了聚蔟索引,還需要修改(c,b)、(d,b)等等這些索引?

那 change buffer 的用處就來了!我們可以緩存這些修改,后面再應用,這就大量減少了此次 sql 的隨機磁盤 I/O,提高了性能。

看到這,相信你對 change buffer 應該已經有點感覺了,你可以借著這些感覺,去看下官網的介紹,理解起來更容易:

https://dev.mysql.com/doc/refman/5.7/en/innodb-change-buffer.html

回答問題

第一個問題:insert 用 chang buffer 如何確定主鍵不沖突?

主鍵索引和唯一索引都需要掃描校驗,change buffer 只會緩存那些非唯一二級索引的插入操作。

第二個問題:用 chang buffer 不訪問磁盤,如何得到實際修改行數?

chang buffer 無法應用在主鍵索引(聚蔟索引)和唯一二級索引上,所以這兩個得改,主鍵索引都改了,影響行數就有了。

責任編輯:武曉燕 來源: yes的練級攻略
相關推薦

2019-06-04 16:20:42

2013-04-17 10:12:43

數據分析大數據

2021-08-28 10:58:15

MySQL備份數據庫

2021-08-18 07:56:04

VIPTable隊列

2012-10-09 13:52:30

2023-09-04 07:16:39

原子化CSS語義化CSS

2021-09-07 10:38:21

人工智能AI深度學習

2022-02-26 09:39:19

前端SSR編譯

2021-01-06 08:16:12

黑客數據泄露網絡安全

2020-10-21 11:37:12

Redis數據庫命令

2020-04-02 11:06:47

數據庫Docker容器

2020-12-02 06:30:52

Nginx前綴FastDFS

2019-12-23 11:03:07

抽象MOVJava

2020-03-12 10:50:33

編程領域并發

2020-09-21 07:12:26

Kafka面試系統

2020-02-26 09:42:15

主存程序存儲器

2020-09-07 10:50:16

微信軟件點贊

2022-07-06 08:01:05

數據庫分布式

2023-02-17 14:40:08

MySQLSQL優化

2021-02-25 17:50:29

編程語言JavaC
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜在线观看视频 | 中文字幕亚洲精品 | av在线成人 | 一级看片免费视频囗交动图 | 黄色一级片aaa | 精品一二三区视频 | 久久av一区| 伊人网伊人| a级毛片免费高清视频 | 在线免费黄色小视频 | 国产在线精品一区二区三区 | 亚洲欧美日韩国产综合 | 久久精品亚洲精品国产欧美kt∨ | 亚洲精品视频在线播放 | 精品乱人伦一区二区三区 | 国产免费xxx | 午夜在线电影网 | 国产精品久久久久久久久久三级 | 国产精品九九 | 亚洲视频在线一区 | 又爽又黄axxx片免费观看 | 激情影院久久 | 色婷婷亚洲国产女人的天堂 | 97精品国产手机 | 每日更新av| 国产精品福利一区二区三区 | 九色网址 | 最新国产在线 | 人人鲁人人莫人人爱精品 | 日韩中文字幕在线免费 | 成人在线播放 | 91国产在线视频在线 | 免费观看毛片 | 免费三级网| 久久久精品网站 | 久久久久国产精品午夜一区 | 九九久久免费视频 | 亚洲视频二区 | 天堂在线中文字幕 | 免费黄色网址视频 | 蜜桃视频在线观看www社区 |