不可重複讀(幻影現象)可重複讀
mysql預設情況下是可重複讀,解決了幻影問題
mysql> show variables like 『%tx%』;
| variables_name | value |
| tx_isolation |repeatable-read |
| tx_read_only | off |
改成 read-committed(已提交讀)後,出現幻影讀
mysql> set @@session.tx_isolation = 'read-committed';
query ok, 0 rows affected (0.00 sec)
演示幻影讀:
a:設定隔離級別為已提交讀:
mysql>set @@session.tx_isolation = 'read-committed';
query ok, 0 rows affected (0.00 sec)
對這4行資料加了鎖:對錶加
is鎖,對4行加
x行鎖,事務沒有提交
mysql> select * from t2 where name=』
abc』
for uodate;
|id | name |
|1 | abc |
|3 |abc |
|8 |abc |
|10 |abc |
4 rows in set (0.01 sec)
b:設定隔離級別為已提交讀:
mysql>set @@session.tx_isolation = 'read-committed';
query ok, 0 rows affected (0.00 sec)
對t2表插入
name
為abc
的資料,成功了:
mysql> insert into t2(name) values(『abc』);
a:再去執行,發現成了5行
name
為abc
的資料:
mysql> select * from t2 where name=』
abc』
for uodate;
|id | name |
|1 | abc |
|3 |abc |
|8 |abc |
|10 |abc |
|16| abc |
4 rows in set (0.01 sec)
一會4行,一會
5行,如果把這個引數設定成已提交讀,就出現了幻影現象。
說一下事務的特性
如果資料庫聲稱支援事務的操作,那麼該資料庫必須要準備以下四個特性 列表內容 1 原子性 原子性是指事務包含的所有對資料庫的操作要麼全部成功,要麼全部失敗,因此可以理解事務的操作如果成功就必須要完全應用到資料庫,如果操作失敗則不能對資料庫有任何的修改 2 一致性 一致性是指事務必須使資料庫從乙個一致性...
通俗的解釋一下正規化
正規化是什麼呢?比如拷貝來一段瞅瞅 正規化是符合某一種級別的關係模式的集合。關聯式資料庫中的關係必須滿足一定的要求,滿足不同程度要求的為不同正規化。我知道不用說,你肯定一臉懵逼!因為我也是!下面我就通俗的來解釋一下三大正規化吧,不喜勿噴,個人理解 第一正規化 其實就是讓列保持原子性,原子性就是不能再...
解釋一下尾遞迴的含義
usr bin python3 def fact n return fact iter n,1 def fact iter num,product if num 1 return product return fact iter num 1,num product print fact 4 定義函式...