事務與併發(2)

2021-06-16 20:31:22 字數 2161 閱讀 5615

事務與併發(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...