伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

深入研究insert into select锁表故障(下)

来源:本站原创 浏览:99次 时间:2022-11-11

在上一篇文章“深入研究insert into select语句锁表故障(上)”中,已经详细介绍了如何模拟insert into select锁表复盘,以及获取详细的Lock信息,和解决方案。

但是上篇文章,并没有完全将整个故障研究说完,下面就将未说完研究过程说完。

隔离级别
分析一个故障,一定要看数据库的隔离级别,在不同的隔离级别下,会有不一样的结果。

RR隔离级别
获取数据库的隔离级别

[root@localhost] 18:11:29 [testdb1]>show variables like '%iso%';+-----------------------+-----------------+| Variable_name         | Value           |+-----------------------+-----------------+| transaction_isolation | REPEATABLE-READ || tx_isolation          | REPEATABLE-READ |+-----------------------+-----------------+2 rows in set (0.00 sec)`

模拟insert into select锁表

[root@localhost] 17:54:52 [testdb1]>begin;Query OK, 0 rows affected (0.00 sec)[root@localhost] 17:54:55 [testdb1]>insert into t_test_2 select * from t_test_1 where name like 'trest';Query OK, 1 row affected (0.00 sec)Records: 1  Duplicates: 0  Warnings: 0

获取lock信息

TRANSACTIONS------------Trx id counter 182565Purge done for trx's n:o < 182565 undo n:o < 0 state: running but idleHistory list length 0LIST OF TRANSACTIONS FOR EACH SESSION:---TRANSACTION 421524582451936, not started0 lock struct(s), heap size 1136, 0 row lock(s)---TRANSACTION 182560, ACTIVE 3 sec3 lock struct(s), heap size 1136, 2 row lock(s), undo log entries 1MySQL thread id 11, OS thread handle 140049254979328, query id 105 localhost rootTABLE LOCK table `testdb1`.`t_test_1` trx id 182560 lock mode ISRECORD LOCKS space id 97 page no 4 n bits 72 index idx_t_test_1_name of table `testdb1`.`t_test_1` trx id 182560 lock mode SRecord lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0 0: len 8; hex 73757072656d756d; asc supremum;;Record lock, heap no 6 PHYSICAL RECORD: n_fields 2; compact format; info bits 0 0: len 10; hex 74726573742020202020; asc trest     ;; 1: len 4; hex 80000001; asc     ;;TABLE LOCK table `testdb1`.`t_test_2` trx id 182560 lock mode IX

RC隔离级别
获取数据库的隔离级别

[root@localhost] 18:14:58 [(none)]>show variables like '%iso%';+-----------------------+----------------+| Variable_name         | Value          |+-----------------------+----------------+| transaction_isolation | READ-COMMITTED || tx_isolation          | READ-COMMITTED |+-----------------------+----------------+2 rows in set (0.00 sec)

获取lock信息

[root@localhost] 18:15:39 [(none)]>show engine innodb status\G;TRANSACTIONS------------Trx id counter 183051Purge done for trx's n:o < 183046 undo n:o < 0 state: running but idleHistory list length 0LIST OF TRANSACTIONS FOR EACH SESSION:---TRANSACTION 421137823890144, not started0 lock struct(s), heap size 1136, 0 row lock(s)---TRANSACTION 183050, ACTIVE 5 sec1 lock struct(s), heap size 1136, 0 row lock(s), undo log entries 1MySQL thread id 5, OS thread handle 139662496147200, query id 17 localhost rootTABLE LOCK table `testdb1`.`t_test_2` trx id 183050 lock mode IX

看到没有,在隔离级别RC下,insert into t_test_2 select * from t_test_1 where name like 'trest'语句,在t_test_1表上没有任何的lock产生。

建议
在生产使用insert into t_test_2 select * from t_test_1 where name like 'trest'语句时,有以下2个建议

建议一:建议mysql数据库隔离级别使用RC
建议二:select表的查询条件字段,建议创建索引。

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net