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