数据库的事务,隔离级别和3大范式
*數(shù)據(jù)庫事務(wù)的想關(guān)操作
1.事務(wù)開始:開始是一個(gè)事物,作為回滾的標(biāo)記
2,回滾 rollback :回滾到上一個(gè)事務(wù)開始的地方,
或者回滾到某個(gè)存檔點(diǎn),期間沒被 commit ; 操作都會(huì)被撤回
3.提交commit ;將事務(wù)中所有操作提交到數(shù)據(jù)庫中 4.存檔點(diǎn):設(shè)置存檔點(diǎn)方便回滾
*開始事務(wù)
........確認(rèn)一個(gè)起點(diǎn)
begin 或 start transaction ;#兩種都可以
回滾:在未提交到數(shù)據(jù)庫時(shí),可回滾到上次提交數(shù)據(jù)后
begin ; update account set money=money-1000 where id=2; update account set money=money+1000 where id=1; select *from account; #回滾 rollback ;#后悔多條數(shù)據(jù)
begin ; insert into account(name, money) values ('zhaoliu',2000);#存檔 savepoint suibian;update account set money=money-1000 where id=2; update account set money=money+1000 where id=1;select *from account;rollback to suibian;commit ;*數(shù)據(jù)庫事務(wù)的4個(gè)特性(ACID)
1.原子性( atomicity )
事務(wù)包含的所有操作,要么全部成功,要么全部失敗
2,一致性( Consistency )(快照讀)
事務(wù)必須使數(shù)據(jù)庫從一個(gè)一致性狀態(tài)到另一個(gè)一致性狀態(tài)
3.隔離性( isolation )
如果有多個(gè)用戶并發(fā)訪問數(shù)據(jù)庫,數(shù)據(jù)庫的每個(gè)用戶開始事務(wù)
不能被其他事物的操作干擾,多個(gè)并發(fā)事務(wù)之間應(yīng)當(dāng)保持相互隔離
4.持久性( Durability
事務(wù)的操作,一旦被提交,對(duì)于數(shù)據(jù)庫的改變是永久的
即使數(shù)據(jù)庫發(fā)生故障,也不能丟失已提交的數(shù)據(jù)/完成的改變
*三個(gè)隔離性問題
1.臟讀
一個(gè)事務(wù)讀取了未提交事務(wù)執(zhí)行過程中的數(shù)據(jù)
2.不可重復(fù)讀
對(duì)于數(shù)據(jù)庫中的莫個(gè)數(shù)據(jù),一個(gè)事務(wù)執(zhí)行過程中多次查詢返回不同結(jié)果,
3,幻讀(虛讀
對(duì)于一個(gè)事務(wù),批量修改數(shù)據(jù)的時(shí)候,另一個(gè)事物插入一條新數(shù)據(jù)
在第一個(gè)事務(wù)中,執(zhí)行了操作卻沒有將所有情況數(shù)據(jù)進(jìn)行修改
*4個(gè)隔離級(jí)別
1 RU (Read Uncommitted
讀取未提交內(nèi)容,所有的事務(wù)都可以看到其他事務(wù)未提交內(nèi)容
2,RC (Read Committed
讀取提交內(nèi)容,可以避免臟讀,但是無法避免不可重復(fù)讀和幻讀
3 RR (Repeatable Read
可重復(fù)復(fù)讀,MYSQL默認(rèn)的隔離級(jí)別,可以避免臟讀和不可重復(fù)讀
但不能避免幻讀,通過Innodb引擎版本并發(fā)控制來避免幻讀
4 ,Serializable 串行化
最高隔離級(jí)別,強(qiáng)制所有事務(wù)排序執(zhí)行,
性能會(huì)出現(xiàn)問題,會(huì)出現(xiàn)大量的超時(shí)和鎖競爭現(xiàn)象
*隔離級(jí)別的實(shí)現(xiàn)
1,讀鎖和寫鎖
共享鎖:數(shù)據(jù)庫的讀鎖,一旦加上該鎖,其他用戶只能讀不能寫
排它鎖 : 寫鎖, 一旦給表或行加上寫鎖,其他用戶既不能讀也不能寫
2,行鎖和表鎖
*數(shù)據(jù)庫設(shè)計(jì)3大范式
范式順序
1 2 3 bc 4 //范式都是依賴關(guān)系
第一范式
數(shù)據(jù)庫表的每一列都是不能繼續(xù)拆分的最小單元
第二范式
滿足INF,表中的每一列都必須依賴主鍵
一個(gè)表只描述一個(gè)事
第三范式
滿足2NF,表中所有的列至于主鍵直接相關(guān),而不是間接相關(guān)
第一范式:列不能拆分
第二范式:每個(gè)表只能描述一個(gè)事
第三范式:使用外鍵做表之間的關(guān)聯(lián)
轉(zhuǎn)載于:https://www.cnblogs.com/lxx-1843693653/p/10938564.html
總結(jié)
以上是生活随笔為你收集整理的数据库的事务,隔离级别和3大范式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5属性详解,HTML5中的dow
- 下一篇: 数据库课程设计