十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章給大家分享的是有關(guān)MySQL-InnoDB事物的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供托管服務(wù)器,高防服務(wù)器租用,成都IDC機房托管,成都主機托管等互聯(lián)網(wǎng)服務(wù)。
事物基本概念
事物的特性(ACID)
原子性 atomicity
一致性 consistency
隔離性 isolation
持久性 durability
事物的類型
扁平事物
帶有保存點的扁平事物
鏈?zhǔn)挛?嵌套事務(wù)
分布式事務(wù)
事物的實現(xiàn)
redo與undo redo
redo:保證事物的原子性、持久性,物理日志,基本上是順序?qū)?br/>undo:保證事物的一致性,邏輯日志,undo會產(chǎn)生redo,用于事物回滾和mvcc,隨機讀寫
redo
redo log buffer
redo log file
force log at commit機制實現(xiàn)事物的持久性
redo log buffer -> 文件系統(tǒng)緩存 -> (fsync) 磁盤文件
innodb_flush_log_at_trx_commit
0:master thread完成寫入磁盤
1:默認,每次事物提交必須fsync
2:寫入文件系統(tǒng)緩存,不執(zhí)行fsync
log block
512 字節(jié)和磁盤山區(qū)大小一致,保證日志寫入是原子性的,不需要doublewrite ?技術(shù)
分為 512 - 12 -8 = 492
重做日志頭:12 字節(jié)
重做日志內(nèi)容:
重做日志尾:8字節(jié)
LOG_BLOCK_HAR_NO【4字節(jié)】:log block在 log buffer的位置
LOG_BLOCK_HAR_DATA_LEN【2字節(jié)】:log block占用大小
LOG_BLOCK_FIRST_REC_GROUP【2字節(jié)】:第一個日志所在的偏移量
LOG_BLOCK_CHECKPOINT_NO【4字節(jié)】:最后被寫入時的檢查點第4字節(jié)的值 ??
log grooup
多個多個重做日志文件組成
redo log file
重做日志格式
redo_log_type:重做日志的類型
space:表空間的ID
page_no:頁的偏移量
LSN(log sequence number)
8字節(jié),單調(diào)遞增
含義:
重做日志寫入總量
checkpoint的位置
頁的版本
undo
undo segment:共享表空間內(nèi)
(128個)rollback segment > (1024個)undo segment ,事物并發(fā)限制在128*1024
undo log 格式
insert undo log
update undo log
purge
group commit
事物的隔離級別
READ UNCOMMIT:使用查詢語句不會加鎖,可能會讀到未提交的行(Dirty Read)
READ COMMIT:只對記錄加記錄鎖,而不會在記錄之間加間隙鎖,所以允許新的記錄插入到被鎖定記錄的附近,所以再多次使用查詢語句時,可能得到不同的結(jié)果(Non-Repeatable Read)EPEATABLE READ:多次讀取同一范圍的數(shù)據(jù)會返回第一次查詢的快照,不會返回不同的數(shù)據(jù)行,但是可能發(fā)生幻讀(Phantom Read);
SERIALIZABLE:InnoDB 隱式地將全部的查詢語句加上共享鎖,解決了幻讀的問題;
臟讀:在一個事務(wù)中,讀取了其他事務(wù)未提交的數(shù)據(jù)
不可重復(fù)讀:在一個事務(wù)中,同一行記錄被訪問了兩次卻得到了不同的結(jié)果。
幻讀:在一個事務(wù)中,同一個范圍內(nèi)的記錄被讀取時,其他事務(wù)向這個范圍添加了新的記錄。
不可重復(fù)讀的原因就是,在 READ COMMITED 的隔離級別下,存儲引擎不會在查詢記錄時添加行鎖,鎖定 id = 3 這條記錄。
分布式事物
XA
Resource Managers:提供訪問事物資源的方法
Transaction Maneger:協(xié)調(diào)參與全局事物中的各個事物
Application Program:定義事物的便捷,指定全局事物中的操作
感謝各位的閱讀!關(guān)于“Mysql-InnoDB事物的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!