什么是事務?什么是事務日志以及用途?


什么是事務

事務是訪問數據庫的一個操作序列,數據庫應用系統通過事務集來完成對數據庫的存取。事務的正確執行使得數據庫從一種狀態轉換為另一種狀態

事務必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性(isolation)、持久性(durability)的縮寫,這四種狀態的意思是:

1、原子性

即不可分割,事務要么全部被執行,要么全部不執行。如果事務的所有子事務全部提交成功,則所有的數據庫操作被提交,數據庫狀態發生變化;如果有子事務失敗,則其他子事務的數據庫操作被回滾,即數據庫回到事務執行前的狀態,不會發生狀態轉換

2、一致性

事務的執行使得數據庫從一種正確狀態轉換成另外一種正確狀態

3、隔離性

在事務正確提交之前,不允許把事務對該數據的改變提供給任何其他事務,即在事務正確提交之前,它可能的結果不應該顯示給其他事務

4、持久性

事務正確提交之后,其結果將永遠保存在數據庫之中,即使在事務提交之后有了其他故障,事務的處理結果也會得到保存

什么是事務日志

事務要保證ACID的完整性必須依靠事務日志做跟蹤,每一個操作在真正寫入數據數據庫之前,先寫入到日志文件中
     如要刪除一行數據會先在日志文件中將此行標記為刪除,但是數據庫中的數據文件並沒有發生變化.

     只有在(包含多個sql語句)整個事務提交后,再把整個事務中的sql語句批量同步到磁盤上的數據庫文件

     在事務引擎上的每一次寫操作都需要執行兩遍:
        1.先寫入日志文件中
                寫入日志文件中的僅僅是操作過程,而不是操作數據本身,所以速度比寫數據庫文件速度要快很多.
        2.然后再寫入數據庫文件中

                寫入數據庫文件的操作是重做事務日志中已提交的事務操作的記錄.

    日志組
         一般不止設置一個日志文件,一個文件寫滿之后使用另外一個日志文件提高服務器效率.

    日志文件的日志同步到磁盤后空間會自動釋放,單個日志文件不宜設置過大     如果日志文件過大mysql進程在把日志同步到數據文件的時候可能會崩潰

事務日志用途

事務日志可以幫助提高事務的效率,使用事務日志,存儲引擎在修改表的數據的時候只需要修改其內存拷貝,再把該行為記錄到持久在磁盤的事務日志中.而不用每次都將修改的數據本身持久到磁盤.事務日志采用的是追加方式,因此寫日志的操作是磁盤上一小塊區域的順序IO,而不像隨機IO需要磁盤在多個地方移動.所以采用事務日志的方式相對來說要快的多,事務日志持久后,內存中的修改在后台慢慢的刷回磁盤.期間如果系統發生崩潰,存儲引擎在重啟的時候依靠事務日志自動恢復這部分被修改數據


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM