亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1388 | 回復(fù): 0
打印 上一主題 下一主題

關(guān)于mysql的隔離級(jí)別,在repeatable-read下的一個(gè)問(wèn)題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-19 13:55 |只看該作者 |倒序?yàn)g覽
第二個(gè)session

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from test;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 1 |
| 1 |
| 2 |
+------+
6 rows in set (0.00 sec)

mysql> alter table test add column name char(5) default 'a';
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0

mysql> select * from test;
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | a |
| 3 | a |
| 1 | a |
| 1 | a |
| 2 | a |
+------+------+
6 rows in set (0.00 sec)

第一個(gè)session:

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from test;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 1 |
| 1 |
| 2 |
+------+
6 rows in set (0.01 sec)

mysql> select * from test;
Empty set (0.00 sec)

mysql> show global variables like 'tx_isolation';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tx_isolation | REPEATABLE-READ |
+---------------+-----------------+
1 row in set (0.00 sec)


為什么在第二個(gè)session中執(zhí)行alter語(yǔ)句add column之后,第一個(gè)session再select就什么也select不出來(lái)了,這個(gè)很方便試驗(yàn),mysql版本5.1


回復(fù)于:2010-11-21 18:17:24
可重復(fù)讀是指再讀未提交情況下是不能更新數(shù)據(jù)的
sqlserver的可重復(fù)讀是不能更新表結(jié)構(gòu)的,至于你說(shuō)mysql的這種情況,可能是mysql更新表結(jié)構(gòu)需要重建表吧

回復(fù)于:2010-11-21 18:34:11
mysql中的特例: 記住就行了,參照:

  REPEATABLE READ  

這是InnoDB的默認(rèn)隔離級(jí)別。帶唯一搜索條件使用唯一索引的SELECT ... FOR UPDATE, SELECT ... LOCK IN SHARE MODE, UPDATE 和DELETE語(yǔ)句只鎖定找到的索引記錄,而不鎖定記錄前的間隙。用其它搜索條件,這些操作采用next-key鎖定,用next-key鎖定或者間隙鎖定鎖住搜索的索引范圍,并且阻止其它用戶的新插入。  

持續(xù)讀是默認(rèn)模式,在其中InnoDBzai在READ COMMITTED和REPEATABLE READ隔離級(jí)別處理SELECT語(yǔ)句。持續(xù)讀不在任何它訪問(wèn)的表上設(shè)置鎖定,因此,其它用戶可自由地在持續(xù)讀在一個(gè)表上執(zhí)行的同一時(shí)間修改這些表。  

在持續(xù)讀中,有一個(gè)與之前隔離級(jí)別重要的差別:在這個(gè)級(jí)別,在同一事務(wù)內(nèi)所有持續(xù)讀讀取由第一次讀所確定的同一快照。這個(gè)慣例意味著如果你在同一事務(wù)內(nèi)發(fā)出數(shù)個(gè)無(wú)格式SELECT語(yǔ)句,這些SELECT語(yǔ)句對(duì)相互之間也是持續(xù)的,請(qǐng)參閱15.2.10.4節(jié),“持續(xù)非鎖定讀”。  



注意,持續(xù)讀不在DROP TABLE和ALTER TABLE上作用。持續(xù)讀不在DROP TABLE上作用,因?yàn)镸ySQL不能使用已經(jīng)被移除的表,并且InnoDB 破壞了該表。持續(xù)讀不在ALTER TABLE上作用,因?yàn)樗谀呈聞?wù)內(nèi)執(zhí)行,該事務(wù)創(chuàng)建一個(gè)新表,并且從舊表往新表中插入行。現(xiàn)在,當(dāng)你重新發(fā)出持續(xù)讀之時(shí),它不能在新表中看見(jiàn)任何行,因?yàn)樗鼈儽徊迦氲揭粋(gè)在持續(xù)讀讀取的快照中不可見(jiàn)的事務(wù)里。  

回復(fù)于:2010-11-22 10:21:39
2樓精辟,1樓說(shuō)得也很好。

MYSQL里面的ALTER TABLE的步驟是
1:CREATE TABLE NEWTABLE(含最新的表結(jié)構(gòu));
2:INSERT INTO NEWTABLE SELECT * FROM OLDTABLE;
3: DROP TABLE OLDTABLE;
4: RENAME TABLE NEWTABLE TO OLDTABLE;

在這個(gè)過(guò)程中,SESSION1里面讀取的表已經(jīng)不存在了,那么也就啥都讀不出來(lái)了。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP