MySQL入門--隔離級別
MySQL入門--事務隔離級別
1) 隔離級別介紹
如果一個客戶機的事務更改了資料,其他客戶機的事務是應發現這些更改還是應與其隔離,事務隔離級別可以確定同時進行的事務在訪問相同資料時彼此互動的方式。使用儲存引擎可實現隔離級別。隔離級別選項在不同的資料庫伺服器之間是不一樣的,因此, InnoDB 所實現的級別可能與其他資料庫系統所實現的級別並不完全對應。 InnoDB 可實現四種隔離級別,用於控制事務所做的更改在多大程度上可由其他同時進行的事務注意到。四種隔離級別如下:
l READ UNCOMMITTED :允許事務檢視其他事務所進行的未提交更改;允許發生“髒” 讀、不可重複讀和虛讀。
l READ COMMITTED :允許事務檢視其他事務所進行的已提交更改;允許發生不可重複讀和虛讀。未提交的更改仍不可見。
l REPEATABLE READ :確保每個事務的 SELECT 輸出一致, InnoDB 的預設級別 ;無論其他事務所做的更改是否已提交,兩次都會獲得相同的結果。換句話說,也就是不同的事務會對相同的資料產生一致的結果。
l SERIALIZABLE :將一個事務的結果與其他事務完全隔離;與 REPEATABLE READ 類似,但其限制性更強,即一個事務所選的行不能由其他事務更改,直到第一個事務完成為止。
2) 設定隔離級別
系統預設事務級別為: repeatable-read
方法一、 伺服器啟動時設定級別。
– 在 mysqld 命令中使用 --transaction-isolation 選項。
– 在配置檔案中設定 transaction-isolation :
[mysqld]
transaction-isolation = <isolation_level>
在選項檔案中或在命令列上將 <isolation_level> 值設定為:
l READ-UNCOMMITTED
l REPEATABLE-READ
l SERIALIZABLE
方法二、使用 SET TRANSACTION ISOLATION LEVEL 語句為正在執行的伺服器設定。
– 語法示例:
SET GLOBAL TRANSACTION ISOLATION LEVEL <isolation_level>;
SET SESSION TRANSACTION ISOLATION LEVEL <isolation_level>;
<isolation_level>;
對於 SET TRANSACTION ISOLATION LEVEL 語句,將 <isolation_level> 值設定為:
l READ UNCOMMITTED
l REPEATABLE READ
l SERIALIZABLE 。
此事務級別可以全域性設定,也可以按會話設定。如果沒有顯式指定,則事務隔離級別將按會話進行設定。例如,以下語句會將當前 mysql 會話的隔離級別設定為 READ COMITTED :
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
該語句相當於:
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
要設定所有後續 mysql 連線的預設級別,請使用 GLOBAL 關鍵字,而不是 SESSION :
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
注:設定的全域性預設事務隔離級別適用於從設定時起所有新建立的客戶機連線。現有連線不受影響。
方法三、 SET GLOBAL TX_ISOLATION
需要 SUPER 許可權
Mysql>set global tx_isolation=’ READ-COMMITTED’
Mysql>select @@tx_isolation;
Mysql>show variables like ‘tx_isolation’;
transaction_isolation MySQL 5.7.20 引入,目的是替換即將棄用的 tx_isolation ( MySQL 8.0 );
(root@localhost) [information_schema]> show variables like '%isolat%';
+-----------------------+-----------------+
| Variable_name | Value |
+-----------------------+-----------------+
| transaction_isolation | REPEATABLE-READ |
| tx_isolation | REPEATABLE-READ |
+-----------------------+-----------------+
transaction_isolation was added in MySQL 5.7.20 as an alias for tx_isolation, which is now deprecated and is removed in MySQL 8.0. Applications should be adjusted to use transaction_isolation in preference to tx_isolation.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16976507/viewspace-2132533/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL的隔離級別MySql
- MySQL事務隔離級別MySql
- MySQL 事務隔離級別MySql
- [Mysql]事務/隔離級別MySql
- MySQL事務的隔離級別MySql
- MySQL 的隔離級別 自理解MySql
- 理解MySQL事務隔離級別MySql
- MySQL的事務隔離級別MySql
- MySQL 入門(3):事務隔離MySql
- 淺析MySQL InnoDB的隔離級別MySql
- Mysql資料庫的隔離級別MySql資料庫
- MySQL事務隔離級別和MVCCMySqlMVC
- 理解mysql的事務隔離級別MySql
- 啥是 MySQL 事務隔離級別?MySql
- mysql如何修改事務隔離級別MySql
- MySQL之事務隔離級別和MVCCMySqlMVC
- mysql事務隔離級別和鎖MySql
- Mysql鎖與事務隔離級別MySql
- Mysql 四種事務隔離級別MySql
- MySQL 的四種事務隔離級別MySql
- MySQL 事務隔離級別實現原理MySql
- MySQL 事務的隔離級別初窺MySql
- MySQL的事務處理及隔離級別MySql
- 徹底搞懂 MySQL 事務的隔離級別MySql
- Mysql事務隔離級別與鎖機制MySql
- MySQL的事務隔離級別是什麼?MySql
- MySQL 事務隔離級別解析和實戰MySql
- 四個案例看懂 MySQL 事務隔離級別MySql
- 論 MySQL 之事務隔離級別 | 資料庫篇MySql資料庫
- MySQL資料庫中的四種隔離級別MySql資料庫
- MySQL資料庫引擎、事務隔離級別、鎖MySql資料庫
- 面試問爛的 MySQL 四種隔離級別面試MySql
- 如何理解mysql 的事務隔離級別 repeatable readMySql
- MySQL RC隔離級別下罕見的gap lockMySql
- 資料庫隔離級別資料庫
- Mariadb之事務隔離級別
- 事務、特性、隔離級別
- PostgreSQL事務隔離級別SQL
- MySQL 事務的四大特性以及隔離級別MySql