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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

java 数据库 事务 只读_不使用事务和使用只读事务的区别

發布時間:2025/3/15 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 数据库 事务 只读_不使用事务和使用只读事务的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉轉轉,,還需要具體驗證(

決定把readonly類型的事務完全去掉,以提高性能,這里有討論:http://stackoverflow.com/questions/2562865/spring-transaction-readonly

)。。。

如果只提交一個查詢,有必要用事務嗎?這個問題之前已經討論過

http://forum.javaeye.com/viewtopic.php?t=1603

但是并沒有得出明確的結論。先讓我們看看事務的定義:

引用:

Transactions are described in terms of ACID properties, which are as follows:

n Atomic: all changes to the database made in a transaction are rolled back if any

change fails.

n Consistent: the effects of a transaction take the database from one consistent

state to another consistent state.

n Isolated: the intermediate steps in a transaction are not visible to other users of

the database.

n Durable: when a transaction is completed (committed or rolled back), its effects

persist in the database.

即ACID的定義,從上面看來,似乎除了isolated之外,和只讀查詢都沒有關系。那么是否只讀查詢不需要事務呢?

再看看Oracle對于只讀事務的定義:

引用:

Read-Only Transactions

By default, Oracle guarantees statement-level read consistency. The set of data returned by a single query is consistent with respect to a single point in time. However, in some situations, you might also require transaction-level read consistency. This is the ability to run multiple queries within a single transaction, all of which are read-consistent with respect to the same point in time, so that queries in this transaction do not see the effects of intervening committed transactions.

If you want to run a number of queries against multiple tables and if you are not doing any updating, you prefer a read-only transaction. After indicating that your transaction is read-only, you can run as many queries as you like against any table, knowing that the results of each query are consistent with respect to the same point in time.

Oracle默認情況下保證了SQL語句級別的讀一致性,即在該條SQL語句執行期間,它只會看到執行前點的數據狀態,而不會看到執行期間數據被其他SQL改變的狀態。

而Oracle的只讀查詢(read-only transaction)則保證了事務級別的讀一致性,即在該事務范圍內執行的多條SQL都只會看到執行前點的數據狀態,而不會看到事務期間的任何被其他SQL改變的狀態。

因此我們可以得出結論:

如果你一次執行單條查詢語句,則沒有必要啟用事務支持,數據庫默認支持SQL執行期間的讀一致性;

如果你一次執行多條查詢語句,例如統計查詢,報表查詢,在這種場景下,多條查詢SQL必須保證整體的讀一致性,否則,在前條SQL查詢之后,后條SQL查詢之前,數據被其他用戶改變,則該次整體的統計查詢將會出現讀數據不一致的狀態,此時,應該啟用事務支持。

只讀事務與讀寫事務區別

對于只讀查詢,可以指定事務類型為readonly,即只讀事務。由于只讀事務不存在數據的修改,因此數據庫將會為只讀事務提供一些優化手段,例如Oracle對于只讀事務,不啟動回滾段,不記錄回滾log。

在JDBC中,指定只讀事務的辦法為:

connection.setReadOnly(true);

在Hibernate中,指定只讀事務的辦法為:

session.setFlushMode(FlushMode.NEVER);

此時,Hibernate也會為只讀事務提供Session方面的一些優化手段

在Spring的Hibernate封裝中,指定只讀事務的辦法為:

bean配置文件中,prop屬性增加“readOnly”

我在MySQL4.1試驗了一下,過程和結果如下:

數據庫:MySQL4.1

表類型:InnoDB

Spring:1.1.2

Hibernate:2.1.7

使用Spring的聲明式事務管理

試驗過程如下:

不設置查詢方法的事務類型(即不需要事務):訪問查詢頁面,后臺執行Spring的Bean方法,讓 Hibernate發送select語句,然后手工在MySQL里面修改該記錄某字段值,再訪問查詢頁面,發現被修改過的字段值并沒有變 化,Hibernate輸出的log顯示,數據庫還是把老的字段值返回,而沒有返回新的字段值。

設置查詢方法的事務類型(只讀事務):訪問查詢頁面,后臺執行Spring的Bean方法,讓Hibernate發 送select語句,然后手工在MySQL里面修改該記錄某字段值,再訪問查詢頁面,發現被修改過的字段值已經變化,Hibernate輸出的log顯 示,數據庫返回新的字段值。

這個試驗說明,至少在MySQL4.1的InnoDB情況下,不使用只讀事務的查詢將無法讀取到數據更新值,必須使用只讀事務來保證讀記錄的數據一致性。這個結果非常令我詫異,和我預期完全兩樣。

我將在Oracle平臺上試試看會有什么樣的結果。

BTW: 如果MySQL的表類型改為MyISAM,那么即使不設置事務,也不會出現讀數據不一致的現象。

oracle有兩種方法保證在事務級讀數據一致性(Transaction-Level Read Consistency)

一是用SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ,

當執行這條命令后讀數據時會產生一些重復copy, 你也可以做數據修改, 但在大量數據修改的情況下容易造成deadlock或異常, 用commit或rollback將把ISOLATION LEVEL設回為缺省模式read committed,

二是用SET TRANSCATION READ ONLY

當執行這條命令時數據庫會生成一個快 照的latch, 這個latch會耗費一些resource, 如果你想進行數據修改會導致異常. 用commit或rollback會把latch釋放掉, 也將把ISOLATION LEVEL設回為缺省模式read committed,

總結

以上是生活随笔為你收集整理的java 数据库 事务 只读_不使用事务和使用只读事务的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 操操操插插插 | 久久人人爽人人爽人人片亚洲 | 免费观看日批视频 | 国产精品日韩专区 | 男女午夜激情视频 | 久久99热人妻偷产国产 | 在线观看午夜视频 | 91美女免费看 | 国产freexxxx性播放麻豆 | 亚欧在线视频 | 欧美一区二区三区爽爽爽 | 亚洲经典一区二区 | 少妇人妻偷人精品视频蜜桃 | 91免费影片 | 天天天操操操 | 久草最新视频 | 国产真人毛片 | 久久看av | 四虎影视永久地址 | 少妇免费毛片久久久久久久久 | 国产精品815.cc红桃 | 亚洲天堂av女优 | 亚洲中文字幕在线一区 | 欧美日韩资源 | 麻豆视| av片网址| 在线观看www. | 一区二区三区四区精品视频 | 麻豆av网 | 亚洲精品.www | 欧美夜夜操 | 扒开女人屁股进去 | 国产精品嫩草久久久久 | 国产精品高潮呻吟AV无码 | 天堂8中文 | 给我看免费高清在线观看 | 欧美一区高清 | 美女精品视频 | 国产亚洲欧美日韩精品一区二区三区 | 污污网站在线看 | 一区二区三区在线视频观看 | 狼人伊人干 | 91热在线| 欧美一区二三区 | av手机天堂 | 亚洲一区91 | 精品熟妇一区二区三区 | 成人一二三四区 | 午夜视频在线观看视频 | 亚洲色图第一页 | 日韩欧美色 | 伊人青青久久 | 亚洲色图图片区 | 欧美日本三级 | 欧产日产国产69 | 日韩天堂视频 | 欧美啪视频 | 国产精品久久久久久久久久久免费看 | 精品一区精品二区 | 国产精品久久久久久久久免费桃花 | 蜜桃av噜噜一区二区三区网址 | 鬼灭之刃柱训练篇在线观看 | 国产精品福利视频 | 狠狠91 | 国产午夜无码精品免费看奶水 | 超碰国产在线观看 | 97久久人人超碰caoprom欧美 | 久久久国产一区二区三区 | 国产成年视频 | 福利电影一区二区 | 在线看片网站 | www.久久久久 | 成人av免费 | 国产成人无码性教育视频 | 91亚洲一区二区三区 | 夜夜嗨av一区二区 | www.五月天com | 夜间福利网站 | 国产人妖ts重口系列网站观看 | 久久av高潮av| 午夜淫片| 三级影片在线播放 | 国产一区av在线 | 亚洲高清在线观看 | 91网址入口 | 最好看的2019中文大全在线观看 | 佐佐木明希av在线 | 好男人www社区在线视频夜恋 | 99色在线视频 | 国产成人宗合 | 亚洲天堂黄 | 国产视频久久久久 | 天天人人 | 日韩av一区二区在线 | 欧美黑人xxx| 99re在线播放 | 爱情岛论坛自拍亚洲品质极速最新章 | 人人草人人射 | 天干夜天干天天天爽视频 |