這篇文章主要介紹了MySQL資料庫事務隔離層級詳解的相關資料,需要的朋友可以參考下
資料庫事務隔離等級
資料庫交易的隔離等級有4個,由低到高依序為
Read uncommitted:允許髒讀。
Read committed: 防止髒讀,最常用的隔離等級,並且是大多數資料庫的預設隔離等級。
Repeatable read:可以防止髒讀和無法重複讀取。
Serializable:可防止髒讀,不可重複讀取和幻讀,(交易串列化)會降低資料庫的效率。
這四個等級可以逐一解決髒讀 、不可重複讀 、幻讀 這幾類問題。
√: 可能出現×: 不會出現
交易層級 | 髒讀 | 無法重複讀取 | 幻讀 |
---|---|---|---|
Read uncommitted | ##√√ | √ | |
× | √ | √ | |
#× | × | √ | |
× | ##× | × |
髒讀:
髒讀就是指當一個交易正在存取數據,並且對數據進行了修改,而這種修改還沒有提交到資料庫中,這時,另一個事務也訪問這個數據,然後使用了這個數據。
無法重複讀取:是指在一個交易內,多次讀取相同資料。在這個事務還沒結束時,另外一個事務也存取該相同資料。那麼,在第一個事務中的兩次讀取資料之間,由於第二個事務的修改,那麼第一個事務兩次讀到的的資料可能是不一樣的。這樣就發生了在一個事務內兩次讀到的資料是不一樣的,因此稱為是不可重複讀。 (即不能讀到相同的資料內容)
幻讀:是指當事務不是獨立執行時發生的一種現象,例如第一個事務對一個表格中的資料進行了修改,這種修改涉及到表中的全部資料行。同時,第二個事務也修改這個表中的數據,這種修改是向表中插入一行新數據。那麼,以後就會發生操作第一個事務的使用者發現表中還有沒有修改的資料行,就好像發生了幻覺一樣。
example:
表:
CREATE TABLE `cc_wsyw126_user_test_isolation_copy` ( `id` int(11) NOT NULL AUTO_INCREMENT, `password` varchar(64) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `ix_age` (`age`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
模擬資料:
INSERT INTO `cc_wsyw126_user_test_isolation_copy` (`password`, `age`) VALUES ('1', 1), ('2', 2), ('3', 3), ('4', 4);
第一個交易A:
start transaction insert into cc_wsyw126_user_test_isolation_copy (password, age) values ('5',5) commit
第二個事務B:
start transaction update cc_wsyw126_user_test_isolation_copy set age = 2 where password >='2' select * from cc_wsyw126_user_test_isolation_copy where password >= '2'; commit重現步驟:
只要A事務的insert語句,在B事務select之前和update之後即可。
MySQL InnoDB儲存引擎,實現的是基於多版本的並發控制協定-
MVCC (Multi-Version Concurrency Control) 加上間隙鎖定(next -key locking)策略在Repeatable Read (RR)隔離等級下不存在幻讀。如果測試幻讀,在MyISAM下實驗。 在聚集
索引(主鍵索引)中,如果有唯一性約束,InnoDB會將預設的next-key lock降級為record lock。
以上是詳細介紹MySQL資料庫事務隔離級別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境