innodb中,事務中的資料在沒提交之前存放在哪?

時間 2021-06-02 04:15:09

1樓:

innodb裡每行只有一條記錄,其它的都是undo log, 所以沒有提交的資料就是那一行當前資料(髒讀就是直接讀這條記錄),其它讀會結合undo log獲取要讀的版本。

2樓:寇亞龍

傳統的UNIX或LINUX系統實現在核心中設有緩衝區快取記憶體或頁面快取記憶體,大多數磁碟I/O都通過緩衝進行

在Mysql中其實也是如此,使用快取進行高效IO

讀的時候有緩衝池(Buffer pool)機制,以避免每次查詢資料都進行磁碟IO;

寫的時候寫緩衝(Change Buffer),可以降低磁碟IO,提公升資料庫效能(5.5之前叫做插入緩衝,只針對insert做了優化,之後版本對delete和update也有效)

髒頁:linux是以頁作為快取記憶體的單位,當程序修改了快取記憶體裡的資料時,該頁就被核心標記為臟頁,核心將會在合適的時間把髒頁的資料寫到磁碟中去,以保持快取記憶體中的資料和磁碟中的資料是一致的。

記憶體對映:記憶體對映檔案,是由乙個檔案到一塊記憶體的對映。

延遲寫:當將資料寫入檔案時,核心通常先將該資料複製到其中乙個緩衝區中,如果該緩衝區尚未寫滿,則並不將其排入輸出佇列,而是等待其寫滿或者當空閒記憶體不足核心需要重用該緩衝區以便存放其他磁碟塊資料時,再將該緩衝排入輸出佇列,然後待其到達隊首時,才進行實際的I/O操作。這種輸出方式被稱為延遲寫(delayed write)。

延遲寫減少了磁碟讀寫次數,但是卻降低了檔案內容的更新速度,使得欲寫到檔案中的資料在一段時間內並沒有寫到磁碟上。當系統發生故障時,這種延遲可能造成檔案更新內容的丟失。為了保證磁碟上實際檔案系統與緩衝區快取記憶體中內容的一致性,UNIX系統提供了sync、fsync和fdatasync三個函式

* sync函式只是將所有修改過的塊緩衝區加入寫佇列,然後就返回,它並不等待實際寫磁碟操作結束。所以不要覺得呼叫了sync函式,就覺得資料已安全的送到磁碟檔案上,有可能會出現故障,可是sync函式是無法得知的.通常稱為update的系統守護程序會周期性地(一般每隔30秒)呼叫sync函式。

這就保證了定期沖洗核心的塊緩衝區。命令sync(1)也呼叫sync函式。sync是全域性的,對整個系統都flush。

* fsync函式只針對單個檔案,只對由檔案描述符filedes指定的單一檔案起作用,並且等待寫磁碟操作結束,然後返回。fsync不僅會同步更新檔案資料,還會同步更新檔案的屬性(比如atime,mtime等)。fsync可用於資料庫這樣的應用程式,這種應用程式需要確保將修改過的塊立即寫到磁碟上。

* fdatasync當初設計是考慮到有特殊的時候一些基本的元資料比如atime,mtime這些不會對以後讀取造成不一致性,因此少了這些元資料的同步可能會在效能上有提公升。該函式類似於fsync,但它只影響檔案的資料部分,如果該寫操作並不影響讀取剛寫入的資料,則不需等待檔案屬性被更新。

3樓:

我所知道的大部分資料庫 mongodb tidb oracle mysql利用的都是WAL技術,所謂的WAL技術是先寫相應的事務日誌持久化到磁碟就算提交成功了,redo日誌持久化磁碟的效率遠遠高於髒頁的速度(如果是機械盤,則需要將髒頁寫入double write中,然後重新整理到ibdata1中,再將髒頁double write中的髒頁重新整理到各個資料檔案,其中還有相應的索引頁),而redo日誌只是節的順序寫入.第二點,redo能實現事務的永續性,當mysql出現宕機時,即便buffer_pool中的髒頁丟失,也能依靠redo+undo進行最大程度的恢復(如果沒有開啟binlog的情況下,如果開啟binlog,根據redo undo和binlog進行進一步恢復) 綜上所述,就是提高了效率和安全性

在web開發中,資料庫事務(不管是自己實現的事務還是利用資料庫本身的事務)到底有多重要?

郭凜 不同意 莊表偉的說法,例如像銀行結算,企業ERP這種業務對事務的需求就遠超過了對效能的需求,保證最終一致性是不夠的。而大多數網際網路應用則無所謂,發一條微博多幾個少幾個人看到其實無所謂 所以最重要的還是需求 蘿蔔白菜各有所愛 有的團隊嚴格要求使用,有的不支援也不反對,有的反對使用 只要控制好資...

為什麼說innodb中的鎖是沒有開銷的,而ms sqlserver的鎖開銷會很大?

賴明星 1.lock 和 latch 首先,我們簡單理一下鎖的概念。在資料庫中,有兩種 鎖 分別是lock和latch。latch就是大家平時接觸的鎖 如mutex,rwlock,訊號量,spinlock等 lock是指資料庫中的鎖 如記錄鎖,表鎖和全域性鎖 2.lock在記憶體中的存在形式 對於記...

資料中颱在企業數位化轉型中起到什麼作用?

資料中颱最重要的功能是把企業不同平台下分散的系統集群,基於服務整合在同一平台下。基於資料中臺,企業可以打通匯聚更多的資料資源,從而解決企業資訊孤島的問題。乙個強大的資料中臺可以為不同的企業提供消費者畫像 會員個性化服務等不同的資料服務,為企業運營和決策的精細化賦能。多點Dmall在建設資料中颱時採用...