MySql資料庫事務相關

2021-10-03 12:06:13 字數 1503 閱讀 2879

mqlsql的事務是由儲存引擎所決定的,比如myisam,memory,archive都不支援事務,而事務的存在則保證了一組查詢要麼全部成功,要麼全部失敗。mysql的事務採取的是自動提交的模式,除非顯示開始乙個事務修改自動提交模式,值得注意的是,修改自動提交對非事務型別的表是無效的,因為它們本身不存在提交和回滾的概念,還有一些命令則是強制自動提交的,如dll命令、lock table等。

(show variables like 『autocommit』

set autocommit = off 或 set autocommit = 0)

原子性(atomic)

整個事務包含的所有操作要麼全部執行要麼全不執行,失敗回滾

一致性(consistent)

資料能夠滿足完整性約束,兩個關聯的資料乙個改變另乙個也隨之改變(一致狀態)

隔離性(isolation)

是指多個事務編髮執行操作時乙個事務的執行不應該影響其他事務的執行

這種屬性有時稱為序列化,為了防止事務操作之間的混淆,必須序列化或序列請求,使得在同一時間僅有同一請求用於同一資料

永續性(durability)

乙個事務的提交,它對資料庫的修改應該永久儲存到資料庫中,永續性意味著當系統或者介質發生故障時,確保已提交的事務的更新不丟失,可以恢復乙個事務被提交

mysql會利用鎖機制創造出不同的事務隔離級別

四種事務隔離級別

讀未提交(read uncommitted):未提交讀也叫讀髒,就是事務可以讀取其他事務未提交的資料

讀已提交(read committed):在其他資料庫系統比如sqlserver預設的隔離級別就是提交讀,已提交讀就是在事務未提交之前所做的修改其他事務是不可見的

可重複讀(repearable read):保證同一事務中多次相同的查詢結果是一致的,比如乙個事務一開始查詢了一條記錄然後過了幾秒鐘又執行了相同的查詢,保證兩次查詢結果是相同的,此隔離級別也是mysql預設隔離級別。

可序列化(serializable):可序列化就是保證讀取的範圍內沒有新的資料插入,比如事務第一次查詢得到的某個資料範圍,第二次查詢也同樣得到了相同的結果,中間並沒有新的資料插入到該範圍中。

併發訪問問題

1.更新丟失—mysql所有的事務隔離級別在資料庫層面上均可避免

2.髒讀—read-commited事務隔離級別以上均可避免(已提交讀)oracle預設級別

3.不可重複讀—事務a在多次讀取同一資料的過程中,事務b對資料進行更新並提交,導致事務a多次讀取到同一資料時結果不一致

4.幻讀—事務a讀取若干行資料,事務b以插入或刪除行的方式來修改事務a的結果集

資料庫索引事務相關

一 概念 索引是一種特殊的檔案,包含著對資料表裡所有記錄的引用指標。可以對錶中的一列或多列建立索引,並指定索引的型別,各類索引有各自的資料結構實現。二 作用 資料庫中的表 資料 索引之間的關係,類似於書架上的圖書 書籍內容和書籍目錄的關係。索引所起的作用類似書籍目錄,可用於快速定位 檢索資料。索引對...

mysql資料庫事務

維基百科 事務是資料庫管理系統 dbms 執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。只有innodb和ndb 1 原子性 atomicity 事務中的全部操作在資料庫中是不可分割的,要麼全部完成,要麼全部不執行。2 一致性 consistency 幾個並行執行的事務,其執行結果必須與...

MySQL資料庫事務

文章出處 只有innodb引擎支援事務,下邊的內容均以innodb引擎為預設條件 1 髒讀 2 不可重複讀 3 幻讀 1 讀未提交 read uncommitted 可能產生髒讀 不可重複讀 幻讀 2 讀已提交 read committed 避免了髒讀,可能產生不可重複讀 幻讀 3 可重複讀 rep...