日韩欧乱色一区二区三区在线_久久―日本道色综合久久_欧美日本一区二区_网曝91综合精品门事件在线

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 為什么一個事務能讀取到其他事務修改后未提交的數據?

為什么一個事務能讀取到其他事務修改后未提交的數據?

來源:千鋒教育
發布人:xqq
時間: 2023-10-13 01:25:09 1697131509

一、為什么一個事務能讀取到其他事務修改后未提交的數據

在沒有正式提交之前,數據是先更新到日志之中的,只有commit提交之后,才真正再從日志中更新到mysql表中。你不用去糾結為什么能讀到它。你只需知道,是事務與事務并發進行時,是具有影響性的,這種影響性的大小被稱為隔離級別。那怎么防止未提交讀呢?就是加寫鎖,然后提交之后釋放鎖,在這個時候,mysql的隔離級別就變成了已提交讀。而加鎖,釋放鎖是由mysql自動完成的,你無需關心。所以,其實本質上是鎖的應用,最終導致了不同的隔離級別,不同的隔離級別,鎖的應用也不同。

“數據未提交,那數據庫應該沒有改變”,這個假設其實是錯誤的。數據庫的底層設計都使用了WAL(Write-ahead**Logging)思想,只不過數據庫的事務隔離技術了提供了各種方案,一個數據庫請求即使事務沒有提交也會發生數據庫內部數據的變更,有各種技術,像Mysql InnoDB MVCC,只不過是通過一些字段進行控制。

在數據庫沒有提交數據的時候,你更新的數據是在緩存進行更新的,事務與事務在并發進行的時候就叫作隔離級別,只有在提交之后,數據才從日志中把數據更新到數據庫里面。

目前主流的關系型數據庫例如mysql、Oracle都是基于文件系統進行數據存儲的,即數據是持久化到文件系統的,但基于文件系統的隨機IO讀寫是非常慢的,故數據庫都會引入內存池,完成對磁盤數據的緩存,提高讀寫性能。內存池是對所有線程共享的,也就是對所有的數據庫事務是共享的,所謂的未提交,指的是事務未提交,但此時數據已經存儲到了共享內存中,數據已經進入到了數據庫服務器中,所以是可見的。

延伸閱讀:

二、MongoDB是什么

非關系型數據庫(nosql ),屬于文檔型數據庫。MongoDB采用類JSON的documents來存儲數據。數據結構由鍵值(key=>value)對組成。

MongoDB采用動態數據模型schema,這意味著不需要預先定義表的數據類型和字段名。當MongoDB需要更新文檔documents的時候,可以輕松增加新的字段名或者刪除舊的字段。MongoDB讓數據結構更加層級化,因而存儲數組等復雜數據結構。 在同一個集合collection中,文檔document對字段也沒有強約束,因此更容易設計差異化的數據結構。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 大同市| 普安县| 九龙县| 离岛区| 昆山市| 铁岭县| 肇庆市| 贵港市| 柘城县| 碌曲县| 天全县| 三明市| 新田县| 连江县| 太康县| 乌苏市| 绵阳市| 合水县| 灵石县| 吉林市| 黑水县| 乌苏市| 九龙城区| 松江区| 涡阳县| 四会市| 泽州县| 奎屯市| 黄山市| 新密市| 西峡县| 万载县| 五台县| 大邑县| 元阳县| 磴口县| 南丰县| 修水县| 临潭县| 迭部县| 桐梓县|