事務與併發(2)
事務由作為包執行的單個命令或一組命令組成。通過事務可以將多個操作合併為單個工作單元。
如果在事務中的某一點發生故障,則所有更新都可以回滾到其事務前狀態。
事務必須符合
acid
屬性(原子性、一致性、隔離和永續性)才能保證資料的一致性。
大多數關係資料庫系統(例如
microsoft sql server
)都可在客戶端應用程式執行更新、插入或刪除操作時為事務提供鎖定、日誌記錄和事務管理功能,以此來支援事務。
可以通過使用
transact-sql
begintransaction、
committransaction
和rollback transaction
語句在sqlserver
儲存過程中建立事務。
在資料庫的儲存過程中簡單的使用事務如下:
(介紹:當乙個操作如何需要對多個表中的資料進行操作的時候)
create procedure [dbo].[proc_demo]
@id varchar(20),@name varchar(20),
@sid numeric(10, 1),@desvarchar(20),
@money varchar(20),@date varchar(20)
asbegin
--事務
set xact_abort on;
-- 使用儲存過程執行事物,需要開啟xact_abort引數(預設值為off),將該引數設定為on,表示當執行事務時,如果出錯,會將transcation設定為uncommittable狀態,那麼在語句塊批處理結束後將回滾所有操作;如果該引數設定為off,表示當執行事務時,如果出錯,出錯的語句將不會執行,其他正確的操作繼續執行。
set nocount on;
-- 當set nocount 為 on 時,不返回計數(計數表示受 transact-sql 語句影響的行數,例如在sql server查詢分析器中執行乙個delete操作後,下方視窗會提示 rows affected)。當 set nocount 為 off 時,返回計數,我們應該在儲存過程的頭部加上set nocount on 這樣的話,在退出儲存過程的時候加上 set nocount off這樣的話,以達到優化儲存過程的目的
begin tran --開始乙個事務
--對錶一的操作
insertinto t_card(id,name) values(@id,@name)
--對錶二的操作
insert into t_student(sid,des) values(@sid,@des)
--新增充值表
insertinto t_recharge(money,date) values(@money,@date)
if @@error = 0 --如果資料操作無錯
commit tran --提交事務(提交的記錄被寫到日誌中。這意味著事務進行的改變是永久的。預設狀況下,這個寫操作同步到磁碟,因此被提交的記錄將會被最早到達日誌檔案)
else
rollback tran --回滾事務(回滾到其事務前狀態)
end
當帶事務處理的儲存過程完成以後
,就可以在程式中使用了
public function demo(byvalaccountinfomodel as model.accountentity) as integer
dim strsql as string ="proc_demo"
dim meter() assqlparameter =
dim sqlserverhelpereg as dbhelper.sqlserverhelper = newdbhelper.sqlserverhelper
demo =sqlserverhelpereg.executenonquerysql(strsql, commandtype.storedprocedure,meter)
end function
其實事務的功能很強大這次講的只是在資料庫中的小應用,當然還有很多其他的使用方式,我將陸續整理出來
併發與事務
本部落格只是在開發過程中,對遇到的多執行緒問題的思考,如何在保證資料正確的前提下,提高效能。我覺得併發要考慮兩個問題 在io層次,併發鏈結數過多例如c10k,c10m的問題,是通過reactor 模式解決?例如開源的網路庫都是使用單執行緒io復用 非阻塞的思想解決,最優!還是通過乙個連線對應乙個執行...
事務與併發
一 首先我們先來看段 conn.setautocommit false int count1 utilconn.updatedata conn,update dict cost subj set is hr 0 if count1 1 else 這斷 經過資料庫跟蹤是 img set implici...
事務與併發控制
所謂事務是使用者定義的乙個資料操作序列,這些操作可作為乙個完整的工作單元,要麼全部執行,要麼全部不執行,是乙個不可分割的工作單位.事務中的操作一般是對資料的更新操作,包括增,刪,改.事務的特徵 原子性 atomicity 一致性 consistency 隔離性 isolation 持續性 durab...