国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

淺談innodb_autoinc_lock_mode的表現形式和選值參考方法

2024-07-09 22:48:00
字體:
來源:轉載
供稿:網友

前提條件,percona 5.6版本,事務隔離級別為RR

mysql> show create table test_autoinc_lock/G*************************** 1. row *************************** Table: test_autoinc_lockCreate Table: CREATE TABLE `test_autoinc_lock` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_a` (`a`)) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf81 row in set (0.00 sec)mysql> select * from test_autoinc_lock;+----+------+| id | a |+----+------+| 1 | 1 || 12 | 2 || 2 | 3 || 3 | 5 || 4 | 7 || 5 | 7 || 6 | 9 || 7 | 10 |+----+------+8 rows in set (0.00 sec)

條件1 innodb_autoinc_lock_mode設置為0

session1 begin;delete from test_autoinc_lock where a>7;//這時未提交session2mysql> insert into test_autoinc_lock(a) values(100);//gap鎖的存在,這時處于鎖等待session3mysql> insert into test_autoinc_lock(a) values(2);//這時同樣處于等待狀態,理論上這個不是gap鎖的鎖定范圍,那么它是在等什么呢session4mysql> select * from information_schema.innodb_trx/G*************************** 1. row *************************** trx_id: 2317 trx_state: LOCK WAIT trx_started: 2016-10-31 19:28:05 trx_requested_lock_id: 2317:20 trx_wait_started: 2016-10-31 19:28:05 trx_weight: 1 trx_mysql_thread_id: 9 trx_query: insert into test_autoinc_lock(a) values(2) trx_operation_state: setting auto-inc lock trx_tables_in_use: 1 trx_tables_locked: 1 trx_lock_structs: 1 trx_lock_memory_bytes: 360 trx_rows_locked: 0 trx_rows_modified: 0 trx_concurrency_tickets: 0 trx_isolation_level: REPEATABLE READ trx_unique_checks: 1 trx_foreign_key_checks: 1trx_last_foreign_key_error: NULL trx_adaptive_hash_latched: 0 trx_adaptive_hash_timeout: 10000 trx_is_read_only: 0trx_autocommit_non_locking: 0

這時查看session3是等待自增鎖,一直處于setting auto-inc lock狀態

session2

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

這時session3鎖等待超時退出

session3

這時再看session3可以發現insert完成。

mysql> select * from test_autoinc_lock;+----+------+| id | a |+----+------+| 1 | 1 || 12 | 2 || 13 | 2 || 2 | 3 || 3 | 5 || 4 | 7 || 5 | 7 || 6 | 9 || 7 | 10 |+----+------+9 rows in set (0.00 sec)//注意看這時的最大自增值是13,也就是之前自增最大值上+1,也就是說session2后來釋放了預計生成的自增id,將13留給了session3,自增id值的申請完全是串行順序的。

結論:innodb_autoinc_lock_mode為0時的,也就是官方說的traditional

級別,該自增鎖是表鎖級別,且必須等待當前SQL執行完成后或者回滾掉才會釋放,這樣在高并發的情況下可想而知自增鎖競爭是比較大的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中宁县| 时尚| 富阳市| 石阡县| 丰县| 明光市| 安庆市| 永登县| 永德县| 富平县| 卫辉市| 洛隆县| 中山市| 浦北县| 宝鸡市| 顺昌县| 大新县| 肃北| 铁岭县| 上栗县| 丹巴县| 四会市| 齐齐哈尔市| 澄江县| 平阳县| 集贤县| 南岸区| 隆安县| 辽源市| 龙江县| 和硕县| 柘城县| 偃师市| 丰城市| 台中县| 昭通市| 曲靖市| 天台县| 乌兰察布市| 盐池县| 牡丹江市|