日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解讀SQL和Oracle對(duì)數(shù)據(jù)庫(kù)事務(wù)處理的差異_Mssql數(shù)據(jù)庫(kù)教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:分析SQL Server性能的改進(jìn)與邏輯數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)聯(lián)
SQL語(yǔ)句優(yōu)化的原則: ◆1、使用索引來(lái)更快地遍歷表 缺省情況下建立的索引是非群集索引,但有時(shí)它并不是最佳的。在非群集索引下,數(shù)據(jù)在物理上隨機(jī)存放在數(shù)據(jù)頁(yè)上。合理的索引設(shè)計(jì)要建立在對(duì)各種查詢(xún)的分析和預(yù)測(cè)上。一般來(lái)說(shuō):①。有大量重復(fù)值、且經(jīng)常有范

背景:在吉日嘎拉的軟件編程走火入魔之:數(shù)據(jù)庫(kù)事務(wù)處理入門(mén)(適合初學(xué)者閱讀)文章中關(guān)于MS SQL Server和Oracle對(duì)數(shù)據(jù)庫(kù)事務(wù)處理的差異性引起一些爭(zhēng)論,因此記錄我對(duì)數(shù)據(jù)庫(kù)事務(wù)處理的想法。

簡(jiǎn)介:本文講述MS SQL Server和Oracle對(duì)數(shù)據(jù)庫(kù)事務(wù)處理的差異性,以及Oracle如何對(duì)事務(wù)處理的實(shí)現(xiàn)。

什么是事務(wù):數(shù)據(jù)庫(kù)事務(wù)(Database Transaction)是一組數(shù)據(jù)庫(kù)操作的處理單元。事務(wù)符合ACID的特性:

Atomic:原子性,要么全部要么一無(wú)所有。All or None.

Consistent:一致性,所有依賴(lài)關(guān)系以及約束一致。

Isolated:分離性,不同事務(wù)不互相影響。

Durable:持久性,提交事務(wù)的數(shù)據(jù)需要持久化。

為什么要使用事務(wù):

實(shí)現(xiàn)事務(wù)主要有兩大功能:

1.保證數(shù)據(jù)庫(kù)的consistent(一致性狀態(tài)),保持所有依賴(lài)關(guān)系以及約束一致)。哪怕數(shù)據(jù)庫(kù)管理系統(tǒng)出現(xiàn)故障時(shí)(例如斷電),也能恢復(fù)到一致性狀態(tài)。例如一個(gè)銀行轉(zhuǎn)帳系統(tǒng),張三給李四轉(zhuǎn)3000圓RMB,張三帳號(hào)上減3000和李四帳號(hào)上加3000需要同時(shí)完成,否則系統(tǒng)的帳就不平了。也例如有些銷(xiāo)售系統(tǒng)的匯總表和明細(xì)表,是一個(gè)主表和一個(gè)從表,需要同步更新。

2.并發(fā)時(shí)分離不同事務(wù)操作。例如編輯過(guò)程中的數(shù)據(jù)不給其他事務(wù)查詢(xún)到。這也是相對(duì)的,在特效需求下可能要支持dirty read(臟讀),但不是這里討論的范圍了。

SQL Server 2008 的事務(wù)類(lèi)型

1.自動(dòng)提交事務(wù) Autocommit Transactions

這是SQL Server默認(rèn)的事務(wù)類(lèi)型,每一條單獨(dú)的SQL語(yǔ)句(SQL statement)都是單獨(dú)的一個(gè)事務(wù),語(yǔ)句執(zhí)行完畢后自動(dòng)提交。調(diào)用方不需要手工控制事務(wù)流程。

2.顯示事務(wù) Explicit Transactions

調(diào)用方需要調(diào)用API或者使用T-SQL的BEGIN TRANSACTION 語(yǔ)句來(lái)打開(kāi)事務(wù)。需要調(diào)用COMMIT 或者 ROLLBACK TRANSACTION 來(lái)提交或者回滾。

3.隱式事務(wù) Implicit Transactions

使用SET IMPLICIT_TRANSACTIONS ON把事務(wù)模式變成隱式模式。調(diào)用方不需要執(zhí)行BEGIN TRANSACTION 語(yǔ)句來(lái)打開(kāi)事務(wù)。數(shù)據(jù)庫(kù)引擎執(zhí)行到SQL語(yǔ)句的時(shí)候自動(dòng)打開(kāi)事務(wù)。調(diào)用方需要調(diào)用COMMIT 或者 ROLLBACK TRANSACTION 來(lái)提交或者回滾。當(dāng)數(shù)據(jù)庫(kù)引擎執(zhí)行下一個(gè)SQL語(yǔ)句時(shí)又自動(dòng)打開(kāi)一個(gè)新事務(wù)。

 

Oracle的事務(wù)類(lèi)型

Oracle的事務(wù)處理類(lèi)型有點(diǎn)像SQL Server的隱式事務(wù)。當(dāng)執(zhí)行到第一個(gè)可執(zhí)行的SQL語(yǔ)句時(shí)自動(dòng)打開(kāi)事務(wù),然后需要調(diào)用方執(zhí)行commit或者rollback來(lái)提交或者回滾事務(wù),如果有DDL語(yǔ)句,Oracle也會(huì)自動(dòng)提交事務(wù)的。

參考:Transaction Management

Oracle的事務(wù)的實(shí)現(xiàn)

Oracle的結(jié)構(gòu)分邏輯上和物理上的區(qū)別。邏輯上的結(jié)構(gòu)是表空間,而物理上的結(jié)構(gòu)是數(shù)據(jù)文件。

邏輯實(shí)現(xiàn)

Oracle下實(shí)現(xiàn)事務(wù)在邏輯上是由Undo Tablespace來(lái)實(shí)現(xiàn)的。Undo Tablespace包含Undo Segements(段),而Undo Segements包含Undo Data。Undo Data是支持事務(wù)的邏輯單元。

圖源自于《Oracle Database 10g: Administration Workshop I》

Undo Data用于保存修改前后的數(shù)據(jù),以支持回滾,長(zhǎng)時(shí)間查詢(xún),和flashback查詢(xún),以及失敗事務(wù)恢復(fù)的功能。

由于有了Undo Data,回滾事務(wù)變得容易了,因?yàn)閁ndo Data保存了修改前后的數(shù)據(jù),保證了事務(wù)的原子性。失敗事務(wù)恢復(fù)和事務(wù)回滾類(lèi)似,當(dāng)網(wǎng)絡(luò)中斷或者其他原因?qū)е率聞?wù)異常停止,數(shù)據(jù)庫(kù)引擎可以恢復(fù)到一致性狀態(tài)。

同時(shí)Undo Data也支持長(zhǎng)時(shí)間查詢(xún)(Read-consistent),例如有表格T,主鍵為key,有字段為f1,數(shù)據(jù)如下,盡管只有4條數(shù)據(jù),假設(shè)需要很長(zhǎng)時(shí)間進(jìn)行查詢(xún)。

 

 

分享:怎樣利用SQL Server復(fù)制技術(shù)實(shí)現(xiàn)數(shù)據(jù)同步更新
Microsoft SQL Server 2000復(fù)制的概念:在數(shù)據(jù)庫(kù)之間對(duì)數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象進(jìn)行復(fù)制和分發(fā)并進(jìn)行同步以確保其一致性的一組技術(shù)。 使用復(fù)制可以將數(shù)據(jù)分發(fā)到不同位置,通過(guò)局域網(wǎng)、使用撥號(hào)連接、通過(guò) Internet 分發(fā)給遠(yuǎn)程或移動(dòng)用戶(hù)。復(fù)制還能夠使用戶(hù)提高應(yīng)用

共3頁(yè)上一頁(yè)123下一頁(yè)
來(lái)源:模板無(wú)憂(yōu)//所屬分類(lèi):Mssql數(shù)據(jù)庫(kù)教程/更新時(shí)間:2009-11-16
相關(guān)Mssql數(shù)據(jù)庫(kù)教程