成人免费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備份數據庫

2012-10-09 13:52:30

2021-08-18 07:56:04

VIPTable隊列

2023-09-04 07:16:39

原子化CSS語義化CSS

2021-09-07 10:38:21

人工智能AI深度學習

2020-09-21 07:12:26

Kafka面試系統

2020-02-26 09:42:15

主存程序存儲器

2022-02-26 09:39:19

前端SSR編譯

2020-03-12 10:50:33

編程領域并發

2020-04-02 11:06:47

數據庫Docker容器

2020-12-02 06:30:52

Nginx前綴FastDFS

2019-12-23 11:03:07

抽象MOVJava

2021-01-06 08:16:12

黑客數據泄露網絡安全

2020-10-21 11:37:12

Redis數據庫命令

2020-09-07 10:50:16

微信軟件點贊

2025-06-11 03:15:00

2022-07-06 08:01:05

數據庫分布式

2023-02-17 14:40:08

MySQLSQL優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产永久免费 | 日韩在线看片 | 国产婷婷| 国产精品一区二区av | 国产一区二区三区在线 | 91人人看 | 成人a视频在线观看 | 亚洲国产成人久久综合一区,久久久国产99 | 二区视频 | 欧美v免费| 九色国产| 亚洲国产午夜 | 国产jizz女人多喷水99 | 一级黄色片日本 | 久久久www成人免费精品 | 欧美久久一区二区三区 | 91亚洲国产| 精国产品一区二区三区四季综 | 欧美日韩国产高清 | 亚洲精品电影在线观看 | 久久久.com | 国产精品久久久乱弄 | 91免费福利视频 | 国产精品一区二区三区四区 | 国产精品永久免费视频 | 综合久| 欧美综合一区 | 91久久精品一区二区三区 | 成人免费黄视频 | 91视频一区 | 日韩午夜一区二区三区 | www九色| 久久av一区二区三区 | 日日摸夜夜添夜夜添精品视频 | 成人精品鲁一区一区二区 | 亚洲精品一区二区三区在线 | 亚洲精品性视频 | 四虎最新| 在线一区二区三区 | 美女久久久久 | 精品久久久久久久 |