事務(wù): 一種原子性的SQL查詢,或者說(shuō)是一個(gè)獨(dú)立的工作單元.
事務(wù)日志文件:
ACID測(cè)試:
- A: atomicity, 原子性 - 整個(gè)事務(wù)鐘的所有操作要么全部執(zhí)行,要么全部失敗后回滾.
- C:consistency, 一致性 - 數(shù)據(jù)庫(kù)總是從一個(gè)一致性狀態(tài)轉(zhuǎn)化為另一個(gè)一致?tīng)顟B(tài);
- I: Isolation, 隔離性 - 一個(gè)事務(wù)所做出的操作在提交之前,是不能為其它所見(jiàn),隔離有多種隔離級(jí)別;
- D: durability: 持久性 - 一旦事務(wù)提交,其所做的修改會(huì)永遠(yuǎn)保存于數(shù)據(jù)庫(kù)中.
使用事務(wù):
- 啟動(dòng)事務(wù): START TRANSACTION
- 結(jié)束事務(wù):
- COMMIT:提交
- ROLLBACK:回滾
建議: 顯示請(qǐng)求和提交事務(wù),而不要自動(dòng)提交.
autocommit=[0/1]
help transaction
設(shè)置保存點(diǎn)savepoint
SAVEPOINT identifier
ROLLBACK [WORK] TO [SAVEPOINT] identifier
RELEASE SAVEPOINT identifier
事務(wù)隔離級(jí)別:
- READ UNCOMMITTED(讀未提交)
- READ COMMITTED (讀提交)
- REPEATABLE READ (可重讀)
- SERIALIZABILE(可串行化)
- tx_isolation,默認(rèn)為REPETABLE-READ
可能存在問(wèn)題:
- 臟讀
- 不可重復(fù)讀
- 幻讀
- 加鎖讀
MVCC: 多版本并發(fā)訪問(wèn)控制,在事務(wù)啟動(dòng)時(shí)為每個(gè)事務(wù)創(chuàng)建快照.
死鎖: 兩個(gè)或多個(gè)事務(wù)在同一資源相互占用,并請(qǐng)求鎖定對(duì)方占用的資源的狀態(tài).
事務(wù)日志:
- 事務(wù)日志的寫入類型為"追加",因此其操作為"順序IO";
- 此日志通常也被稱作"預(yù)寫式日志(write ahead logging)";
默認(rèn)事務(wù)日志:ib_logfile<n>
innodb_log_size
innodb_log_in_group
innodb_log_group_home_dir