日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库的事务,隔离级别和3大范式

發(fā)布時(shí)間:2023/12/10 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库的事务,隔离级别和3大范式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

*數(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 ;#兩種都可以

begin ;update account set money=money-1000 where id=2; update account set money=money+1000 where id=1;select *from account;#提交事務(wù)結(jié)果 commit ;

回滾:在未提交到數(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。