php普通索引和唯一索引,MySQL中普通索引和唯一索引的区别详解
本篇文章介紹了MySQL中普通索引和唯一索引的區別,講解很詳細,希望對學習MySQL的朋友有幫助!
需要注意的是:
redo log中的數據,可能還沒有 flush 到磁盤,磁盤中的 Page 1 和 Page 2 中并沒有最新數據,但我們依然可以拿到最新數據(內存中的 Page 1 就是最新的,Page 2 雖然不是最新的,但是從磁盤讀到內存中后,執行了merge操作,內存中的 Page 2 就是最新的了。)
如果此時 MySQL 異常宕機了,比如服務器異常掉電,change buffer 中的數據會不會丟?
change buffer 中的數據分為兩部分,一部分是已經merge到ibdata1中的數據,這部分數據已經持久化,不會丟失。另一部分數據,還在 change buffer 中,沒有merge 到ibdata1,分 3 種情況:
(1)change buffer 寫入數據到內存,redo log 也已經寫入(ib-log-filex),但是未 commit,binlog中也沒有fsync到磁盤,這部分數據會丟失;
(2)change buffer 寫入數據到內存,redo log 也已經寫入(ib-log-filex),但是未 commit,binlog 已寫入到磁盤,這部分不會多丟失,異常重啟后會先從 binlog 恢復 redo log,再從 redo log 恢復 change buffer;
(3)change buffer 寫入數據到內存,redo log 和 binlog 都已經fsync,直接從redo log 恢復,不會丟失。
redo log 主要節省的是隨機寫磁盤的 IO 消耗(轉成順序寫),而 change buffer 主要節省的則是隨機讀磁盤的 IO 消耗
更多MySQL相關教程,請關注PHP中文網!
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的php普通索引和唯一索引,MySQL中普通索引和唯一索引的区别详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php redis linsert,LI
- 下一篇: oracle 创建临时表报权限不足,OR