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

歡迎訪問 生活随笔!

生活随笔

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

数据库

【MySQL】深入浅出剖析mysql事务锁机制 - 笔记

發布時間:2024/2/28 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【MySQL】深入浅出剖析mysql事务锁机制 - 笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

事務的基本概念

事務的特點(ACID)


快照:之前的某一個歷史的狀態(類比虛擬機的快照),用于實現原子性
隔離性:通過鎖機制來實現
:共享鎖,排它鎖,獨占鎖,臨鍵鎖,間隙鎖,自增鎖,意向鎖
持久性:使用來實現
WAL日志:write ahead log,預寫日志
Hbase主要操作內存,因為速度快。也是用WAL來保證數據不丟失。
數據在內存中,然后通過fsync寫進磁盤。
一致性:是數據庫的根本追求。

事務的特點

MySQL主要有3種日志:redolog,undolog,binlog(其他還有relaylog,slowlog慢查詢日志)
binlog是歸屬server的,無論什么存儲引擎,都有這個log
redolog,undolog是歸屬innodb的,如果換成myisam,就不存在這兩種log

原子性實現原理:Undo log

邏輯日志:數據是統一放在磁盤里的,要想讀取,需要拉取到內存(一次讀取的最小邏輯單元的單位是),頁的大小和操作系統相關,innodb默認一次讀取16kb的數據。邏輯日志是對當前的sql語句做一次記錄。
物理日志:物理日志表示修改當前頁的數據。

MVCC:multipart version concurrency control 多版本并發控制
B修改時,A可以通過undolog讀取歷史數據

持久性實現原理:Redo log

數據的存儲 :當前進程內存->操作系統內存->磁盤

電腦啟動完成之后,所有的硬件設備交由內核來控制,用戶空間要與內核交互,才能訪問設備的資源。

kafka通過零拷貝、順序讀寫,減少了內存復制,直接寫進磁盤中

以下:考慮到不同的時候可能斷電,這三種方式的安全性 1>2>0,默認是使用1


做n次數據的修改,并不是每一次都直接寫進磁盤中。會先寫進內存,內存占用達到一定閾值之后才寫進磁盤中。

如何理解redolog?
redolog文件是循環存儲的

Mysql隔離級別

默認隔離級別:
MySQL:可重復讀
Oracle:讀已提交

臟讀:讀沒提交的數據

RC (READ COMMITTED)讀更新之后的快照數據,永遠是最新的快照
RR (REPEATABLE READ)讀當前事務開啟之前的快照數據

在一個表中,有2個用戶不可見的列:createtime,deletetime(存的是當前事務的id值,而不是時間戳)

讀數據的時候,讀取的是createtime小于等于當前事務id,并且deletetime為空或deletetime大于等于當前事務id的數據

間隙鎖是否能解決幻讀問題?
間隙鎖:給某一個范圍加鎖。

select * from table1 for update
鎖的是索引


select * 是全表掃描,沒有使用索引

表級鎖和行級鎖辨析:

如下圖,innodb可以主動探知到死鎖


如果設置了自增id,即使插入失敗,id也會增加。
同樣,使用duplicate update語句時,即使走的是update,也會讓id增加。

總結

以上是生活随笔為你收集整理的【MySQL】深入浅出剖析mysql事务锁机制 - 笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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