My SQL Server →5事務(wù)處理
.事務(wù)的概念
事務(wù)機(jī)制將一組數(shù)據(jù)庫(kù)操作命令當(dāng)作一個(gè)完整且獨(dú)立的操作序列,即一組命令要么全部執(zhí)行成功,要么都執(zhí)行失敗。
1.事務(wù)的作用:要么所有操作全部完成,要么所有操作全部不執(zhí)行。
2.什么是事務(wù)
數(shù)據(jù)庫(kù)中的事務(wù)是一種機(jī)制,每個(gè)事務(wù)時(shí)一個(gè)獨(dú)立的工作單元,它包含了一組數(shù)據(jù)庫(kù)操作命令,且這組命令要么執(zhí)行,要么都不執(zhí)行,因此事務(wù)時(shí)一個(gè)不可分割的工作邏輯單元。
3. 事務(wù)的屬性:
①原子性:事務(wù)的各個(gè)元素是不可分的。
②一致性:事務(wù)完成時(shí)必須使所有的數(shù)據(jù)都保持一致。
③隔離性:對(duì)數(shù)據(jù)進(jìn)行修改的所有并發(fā)事務(wù)時(shí)彼此隔離的。
④持久性:只要事務(wù)成功提交之后,就不能再次回滾到提交前的狀態(tài)。
·事務(wù)的使用
1.創(chuàng)建事務(wù):
①開(kāi)始事務(wù):BEGIN TRANSACTION
②提交事務(wù):COMMIT TRANSACTION
③回滾事務(wù):ROLLBACK TRANSACTION
分類(lèi):
顯示事務(wù):用begin transaction明確指定事務(wù)的開(kāi)始,后續(xù)的T-SQL語(yǔ)句都是一個(gè)整體。
隱式事務(wù):使用Set implicit_transaction on語(yǔ)句,將隱式事務(wù)設(shè)置為打開(kāi)。
自動(dòng)提交事務(wù):是SQL Server d的默認(rèn)模式,它將每條單獨(dú)的T-Sql語(yǔ)句視為一個(gè)事務(wù),如果成功執(zhí)行則自動(dòng)提交,如果失敗,則自動(dòng)回滾。
常用的是顯示事務(wù),它明確指定事務(wù)開(kāi)始的邊界。事務(wù)包含的語(yǔ)句越少越好,無(wú)關(guān)的語(yǔ)句不要放在事務(wù)里,如變量的聲明和賦值。
2.創(chuàng)建事務(wù)的原則:
①事務(wù)要盡可能的簡(jiǎn)短。
②在事務(wù)中訪問(wèn)的數(shù)據(jù)量要盡量最少。
③瀏覽數(shù)據(jù)時(shí)盡量不要打開(kāi)事務(wù)。
④在事務(wù)處理期間盡量不要請(qǐng)求用戶輸入。
.在存儲(chǔ)過(guò)程中使用事務(wù)
1.使用事務(wù)的注意事項(xiàng):
①在每個(gè)操作之后,都有檢查@@error 或 @@rowcount的值。
②當(dāng)一個(gè)事務(wù)結(jié)束后,緊跟在事務(wù)之后的T-sql代碼還可以繼續(xù)執(zhí)行,但是出錯(cuò)后就不能再回滾事務(wù)了。
③已經(jīng)提交完畢的事務(wù)將會(huì)將數(shù)據(jù)正式寫(xiě)入數(shù)據(jù)庫(kù)。
④在一個(gè)事務(wù)正在執(zhí)行時(shí),如發(fā)生停電等意外,則再下次重啟系統(tǒng)是該事務(wù)會(huì)自動(dòng)回滾。
⑤在事務(wù)例發(fā)生錯(cuò)誤使得事務(wù)無(wú)法執(zhí)行下去,事務(wù)也會(huì)自動(dòng)回滾。
⑥無(wú)法回滾的語(yǔ)句不能再事務(wù)中使用。
例:
create database 創(chuàng)建數(shù)據(jù)庫(kù)
alter database 修改數(shù)據(jù)庫(kù)
drop database 刪除數(shù)據(jù)庫(kù)
.事務(wù)的隔離級(jí)別
①Read uncommitted:不隔離數(shù)據(jù),即使事務(wù)正在使用的同時(shí),其他事務(wù)也能同時(shí)修改或刪除該數(shù)據(jù)。
②Read committed:不允許讀取沒(méi)有提交的數(shù)據(jù)
③Repeatable Read:子事務(wù)中鎖定所讀取的數(shù)據(jù)不讓比人修改和刪除。
④Snapshot:快照隔離,可以為讀取數(shù)據(jù)的事務(wù)提供所需數(shù)據(jù)的一個(gè)已提交的版本,因此寫(xiě)入數(shù)據(jù)的事務(wù)阻塞不會(huì)讀取數(shù)據(jù)的事務(wù)。
⑤Serializable:將事務(wù)所要用到的數(shù)據(jù)表全部鎖定,不允許其他事務(wù)添加、修改和刪除數(shù)據(jù)。
bitsCN.com聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com