mysql 200列 MySQL事務的隔離級別

2021-10-18 20:27:00 字數 1975 閱讀 3295

1.事務的併發問題髒讀: 事務a讀取了事務b更新的資料(不管事務b有沒有提交資料),然後b回滾操作,那麼a讀取到的資料是髒資料。

不可重複讀: 不可重複讀指的是在同一事務內,不同的時刻讀到的同一批資料可能是不一樣的,可能會受到其他事務的影響,比如其他事務改了這批資料並提交了。通常針對資料更新 (update) 操作。

幻讀: 幻讀是針對資料插入 (insert) 操作來說的。假設事務a對某些行的內容作了更改,但是還未提交,此時事務b插入了與事務a更改前的記錄相同的記錄行,並且在事務a提交之前先提交了,而這時,在事務a中查詢,會發現好像剛剛的更改對於某些資料未起作用,但其實是事務b剛插入進來的,讓使用者感覺很魔幻,感覺出現了幻覺,這就叫幻讀。

2.事務的隔離級別事務隔離級別髒讀不可重複讀幻讀讀未提交(read-uncommitted)是是是

讀已提交(read-committed)否是是

重複讀(repeatable-read)否否是

序列化(serializable)否否否

3.案列

首先檢視mysql預設的隔離級別是什麼,預設隔離級別是 repeatable-read,兩種方式都可檢視select @@tx_isolation;

show variables like 'tx_isolation';複製**

設定mysql事務隔離級別set [作用域] transaction isolation level [事務隔離級別],

set [session | global] transaction isolation level 。複製**

建立測試資料表create table `user` (  `id` int(11) not null auto_increment,  `name` varchar(30) default null,  `age` tinyint(4) default null,

primary key (`id`)

) engine=innodb auto_increment=2 default charset=utf8insert into user values(null,'張飛',38);insert into user values(null,'劉備',46);複製**

3.1 讀未提交(read-uncommitted)

設定事務隔離級別為read-uncommittedset  global transaction isolation level read uncommitted;複製**

3.2 讀已提交(read-committed)

設定事務隔離級別為read-committedset  global transaction isolation level read committed;複製**

3.3 重複讀(repeatable-read)

設定事務隔離級別為repeatable-readset  global transaction isolation level repeatable read;複製**

3.3 序列化(serializable)

設定事務隔離級別為serializableset  global transaction isolation level serializable;複製**

乙個個事務排成序列的形式。事務乙個挨乙個執行,等待前乙個事務執行完,後面的事務才可以順序執行

mysql列鍵 Mysql列屬性

列屬性又稱之為字段屬性 在mysql中一共有6個屬性 null,預設值 default 列描述 comment 主鍵 primary key 唯一鍵 unique key 和自動增長 修改資料庫字符集 字符集和校對集 alter database 資料庫名字 charset 字符集 null屬性 1...

mysql偽列 MySQL使用偽列

在查詢資料庫的時候,我們有時候需要對查詢出來的資料加上序列,1,2,3,n 例如 我們根據表的某個字段排序後,要對這些資料加上序列,這個時候序號常常不是我們建表時設定好的自增的主鍵id,怎麼辦呢?可能我們會用變數來解決,如下 set rownum 0 select rownum rownum 1 a...

mysql列連線 mysql 多列連線

1 concat 函式 1.1 mysql的concat函式可以連線乙個或者多個字串,如 mysql select concat 10 concat 10 10 1 row in set 0.00 sec mysql select concat 11 22 33 concat 11 22 33 11...