4.事务提交过程,事务基本概念,Oracle中的事务生命周期,保存点savepoint,数据库的隔离级别
事務(wù)提交過程
事務(wù)
| 基本概念 |
| 概念:一個或者多個DML語言組成 特點(diǎn):要么都成功,要么都失敗 事務(wù)的隔離性:多個客戶端同時操作數(shù)據(jù)庫的時候,要隔離它們的操作, 否則出現(xiàn):臟讀? 不可重復(fù)讀? 幻讀 |
| Oracle默認(rèn)情況下,事務(wù)是打開的 |
| commit案例: SQL> create table t1(tid int,tname varchar2(20)); ? 表已創(chuàng)建。 ? SQL> select * from tab; ? TNAME????????????????????????? TABTYPE ?CLUSTERID ------------------------------ ------- ---------- BONUS????????????????????????? TABLE DEPT?????????????????????????? TABLE EMP??????????????????????????? TABLE EMP10????????????????????????? TABLE SALGRADE?????????????????????? TABLE T1??????? ?????????????????????TABLE ? 已選擇6行。 ? SQL> insert into t1(tid,tname) values(1,'aaaaa'); ? 已創(chuàng)建 1 行。 ? SQL> select * from t1; ? ?????? TID TNAME ---------- -------------------- ???????? 1 aaaaa ? SQL> commit; ? 提交完成。 ? SQL> select * from t1; ? ?????? TID TNAME ---------- -------------------- ???????? 1 aaaaa ? SQL> rollback; ? 回退已完成。 ? SQL> select * from t1; ? ?????? TID TNAME ---------- -------------------- ???????? 1 aaaaa ? SQL> |
|
|
| rollback案例: SQL> select * from t1; ? ?????? TID TNAME ---------- -------------------- ???????? 1 aaaaa ? SQL> insert into t1(tid,tname) values(2,'bbb'); ? 已創(chuàng)建 1 行。 ? SQL> select * from t1; ? ?????? TID TNAME ---------- -------------------- ???????? 1 aaaaa ???????? 2 bbb ? SQL> rollback; ? 回退已完成。 ? SQL> select * from t1; ?????? TID TNAME ---------- -------------------- ???????? 1 aaaaa SQL>
|
?
Oracle中的事務(wù)生命周期
| 1.事務(wù)的起始標(biāo)志 DML語言(oracle默認(rèn)事務(wù)是打開的) | |||
| 2.事務(wù)的結(jié)束標(biāo)志 | 提交 | 顯式提交commit | |
| 隱式提交 | 執(zhí)行DDL語句 Eg:執(zhí)行create table的時候還有1個隱式的功能 提交之前沒有提交的DML語句(insert update) | ||
| 正常退出 | |||
| 回滾 | 顯式rollback | ||
| 隱式:掉電/宕機(jī)/非正常退出,這幾者等價于系統(tǒng)出錯了 | |||
4 保存點(diǎn)savepoint
| 案例: |
| SQL> select * from t1; ? ?????? TID TNAME ---------- -------------------- ???????? 1 aaaaa ? SQL> insert into t1(tid,tname) values(2,'bbb'); ? 已創(chuàng)建 1 行。 ? SQL> select * from t1; ? ?????? TID TNAME ---------- -------------------- ???????? 1 aaaaa ???????? 2 bbb ? SQL> rollback; ? 回退已完成。 ? SQL> select * from t1; ? ?????? TID TNAME ---------- -------------------- ???????? 1 aaaaa ? SQL> |
|
|
| 總結(jié):最后一條insert語句沒有插入進(jìn)去,回滾到了指定的保存點(diǎn) |
數(shù)據(jù)庫的隔離級別
| 對于同時運(yùn)行的多個事務(wù),當(dāng)這些事務(wù)訪問數(shù)據(jù)庫中相同的數(shù)據(jù)時,如果沒有采取必要的隔離機(jī)制,就會導(dǎo)致各種并發(fā)問題 | 臟讀:對于兩個事務(wù)T1,T2,T1讀取了已經(jīng)被T2更新但還沒有被提交的字段之后,若T2回滾。T1讀取的內(nèi)容就是臨時且無效的。 |
| 不可重復(fù)讀:對于兩個事物T1,T2,T1讀取了一個字段,然后T2更新了該字段,之后T1再次讀取同一個字段,值就不同了。 | |
| 幻讀:對于兩個事務(wù)T1,T2,T1從一個表中讀取了一個字段,然后T2在該表中插入了一些新的行。之后,如果T1再次讀取同一個表,就會多出幾行。 | |
| 數(shù)據(jù)庫事務(wù)的隔離性:數(shù)據(jù)庫系統(tǒng)必須具有隔離并發(fā)運(yùn)行多個事務(wù)的能力,使它們不會相互影響,避免各種并發(fā)問題。 | |
| 一個事務(wù)與其他事務(wù)隔離的程度稱為隔離級別. 數(shù)據(jù)庫規(guī)定了多種事務(wù)隔離級別, 不同隔離級別對應(yīng)不同的干擾程度, 隔離級別越高, 數(shù)據(jù)一致性就越好, 但并發(fā)性越弱 | |
| 數(shù)據(jù)庫提供4中事務(wù)隔離級別:sql99 | |
|
| |
| Oracle 支持的 2 種事務(wù)隔離級別:READ COMMITED, SERIALIZABLE. Oracle 默認(rèn)的事務(wù)隔離級別為: READ COMMITED 另外還支持一種隔離級別:read-only | |
| Mysql 支持 4 中事務(wù)隔離級別. Mysql 默認(rèn)的事務(wù)隔離級別為: REPEATABLE READ | |
?
總結(jié)
以上是生活随笔為你收集整理的4.事务提交过程,事务基本概念,Oracle中的事务生命周期,保存点savepoint,数据库的隔离级别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一百多买包怀疑是假LV 店主明说是高仿
- 下一篇: redhat下安装mysql 5.6.2