国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

臟讀,不可重復讀,幻讀的概念

2019-11-09 13:40:34
字體:
來源:轉載
供稿:網友

臟讀

臟讀是指一個事務讀取到另一個事務沒有提交到數據庫中的數據(該數據也有可能進行了回滾)

例子:

買家李某向賣家張某的購買一雙鞋子,買家李某向銀行柜員機對賣家張某進行匯款100元(其他事務),賣家張某賬戶上原有5000元,張某向柜員機查看信息(事務1)發現果真到賬,于是發貨,但是事務1的提交時間過長,系統進行回滾,于是又把100元返回買家李某,賣家張某后來再去查銀行上的money發現還是tm的5000元.這就是在數據庫中發生了臟讀.(真的好tm臟,原本到手的錢又飛了)

不可重復讀

不可重復讀的重點是修改:

同樣的條件, 你讀取過的數據, 再次讀取出來發現值不一樣了

例子:

在事務1中,Mary 讀取了自己的工資為1000,操作并沒有完成 

java代碼  收藏代碼con1 = getConnection();  select salary from employee empId ="Mary";  在事務2中,這時財務人員修改了Mary的工資為2000,并提交了事務. Java代碼  收藏代碼con2 = getConnection();  update employee set salary = 2000;  con2.commit();  在事務1中,Mary 再次讀取自己的工資時,工資變為了2000 Java代碼  收藏代碼//con1  select salary from employee empId ="Mary";  在一個事務中前后兩次讀取的結果并不致,導致了不可重復讀。

幻讀

幻讀的重點在于新增或者刪除

同樣的條件, 第1次和第2次讀出來的記錄數不一樣

例子:

目前工資為1000的員工有10人。 事務1,讀取所有工資為1000的員工。 

Java代碼  收藏代碼con1 = getConnection();  Select * from employee where salary =1000;  共讀取10條記錄 這時另一個事務向employee表插入了一條員工記錄,工資也為1000 Java代碼  收藏代碼con2 = getConnection();  Insert into employee(empId,salary) values("Lili",1000);  con2.commit();  事務1再次讀取所有工資為1000的員工 Java代碼  收藏代碼//con1  select * from employee where salary =1000;  共讀取到了11條記錄,這就產生了幻像讀。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹寨县| 宁河县| 延安市| 丹凤县| 陇西县| 夏津县| 恭城| 麦盖提县| 色达县| 商丘市| 潮州市| 连州市| 绍兴县| 兴义市| 新乡县| 大厂| 运城市| 潜江市| 阳曲县| 内丘县| 上高县| 呈贡县| 沙洋县| 古丈县| 汉源县| 宁晋县| 和顺县| 焦作市| 渭南市| 洞口县| 阜康市| 惠安县| 巴林左旗| 西乌| 灵石县| 云林县| 广安市| 板桥市| 丽江市| 佛坪县| 平泉县|