mysql髒寫、髒讀、幻讀、不可重複讀問題驗證
阿新 • • 發佈:2021-11-02
0 相關資料 || 知識
1. mysql版本
2. 表格及資料
/*Table structure for table `user` */ DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` INT(11) NOT NULL, `name` VARCHAR(32) DEFAULT NULL, `desc` VARCHAR(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; /*Data for the table `user`*/ INSERT INTO `user`(`id`,`name`,`desc`) VALUES (1,'路人甲',NULL), (2,'路人乙',NULL);
3. 資料庫隔離級別
Read Uncommitted(讀取未提交內容): 存在髒讀 Read Committed(讀取提交內容):存在不可重複讀 Repeatable Read(可重讀):存在幻讀 Serializable(可序列化):隔離級別最高,不存在前面的所有情況,因為序列執行,效率最低4. 隔離級別檢視和設定
//檢視當前事物級別: SELECT @@tx_isolation; //設定mysql的隔離級別: set session transactionisolation level 設定事務隔離級別 //設定read uncommitted級別: set session transaction isolation level read uncommitted; //設定read committed級別: set session transaction isolation level read committed; //設定repeatable read級別: set session transaction isolation level repeatable read; //設定serializable級別: set session transactionisolation level serializable;