高效能Mysql 事務特性及實戰

2021-07-10 08:30:16 字數 1118 閱讀 7221

事務的作用我就不再提及了, 相信看到這篇文章的基本上都會知道事務的概念。本篇文章首先會介紹一下事務的特性、四種隔離級別以及對應的實戰測試,希望幫讀者加深事務的理解。

隔離級別

髒讀可能

不可重複讀

幻讀ru

yesyes

yesrc

noyes

yesrr

nono

yesserialize

nonono

tips :在任何隔離級別下,對資料的寫都是會加鎖的

先建立乙個表 transaction_test作為測試使用:

create table `transaction_test` (

`id` int(11) not null,

`name` varchar(255) default null,

primary key (`id`)

) engine=innodb default charset=utf8;

這裡開啟兩個視窗作為兩個session會話,並設定會ru級別:

然後用session a 插入一條資料

insert into transaction_test (id,name) values (1,'a');
在 session b中可以馬上檢視到插入的資料。

再演示一下寫時鎖行的情況

可以看到這時session b正處於鎖定狀態,因為session a還沒有提交。

首先讓sesseion a 插入一條記錄。

insert into transaction_test (id,name) values (2,'a');
由於沒有提交,所以b不會看到這條記錄,一旦a提交後,由於隔離級別不能防止不可重複讀,所以當a提交後,b再次查詢會多出一條記錄。

不可重複讀是mysql預設隔離級別,可以重複一下上一次的實驗。a插入一條記錄,就算a提交後,b查詢的記錄依然不會變。

tips:大家要是做實驗的時候需要將 autocommit 設定為0,防止自動提交

第四種隔離方式這裡就不再做實驗測試了

高效能mysql實戰 筆記(一)

模擬電商資料庫設計及架構優化實戰 只設計資料庫設計,不包括前後端 專案說明 模擬電商專案 一 所有資料庫物件名稱必須使用小寫字母並用下劃線分割 二 所有資料庫物件名稱禁止使用mysql保留關鍵字 如表名為from 三 資料庫物件的命名要見名識義,並且最好不要超過32個字元 例 使用者資料庫表 mc ...

《高效能MySQL》閱讀 MySQL中的事務

20210107 22 00 23 00 承接 高效能mysql 閱讀 mysql架構和歷史 一 一頁書 詩號 世事如棋,乾坤莫測,笑盡英雄啊!9.mysql中的事務 1.mysql中提供了兩種事務型擎innodb和ndbcluster,2.mysql預設是自動提交事務的,就是如果不是顯示的開始乙個...

高效能mysql之事務的理解

acid只的是原子性,永續性,隔離性,永續性 原子性,概念理解 事務代表的最小的執行單元,事務中操作要麼同時發生,要麼同時不發生,不會出現有些發生有些不發生的情況,例子 銀行轉賬,a賬戶轉賬到給b賬戶轉賬100,事務中的操作分兩步,a賬戶減100,b賬戶加100,這兩步必定同時成功或失敗 一致性概念...