mysql 5.6 创建索引导致表锁阻塞查询

     今天遇到一个表锁,对表进行select操作阻塞,最后发现在表操作时的时候执行了创建索引,导致整个表锁了

测试如下:

             1.先执行一个慢查询

              mysql> select sleep(500) from order_log;

              2.对表进行创建索引操作

             ALTER TABLE `order_log` 
            ADD KEY `idx_orderlog_name`(orderno,operate_time) USING BTREE   或者

                create index idx_ordergood_com on `order_log` (orderno,operate_time)

              3.然后在对表进行简单的查询操作发现查询阻塞

               mysql> select * from order_log limit 1;
+----------+-------------------+---------------+--------------+-----------------
-+---------------------+-----------------------------------------+------------+-
-------------+--------------------------------------------------+-------------+
| Id       | orderno           | customer_code | operate_type | operater_jobuuid
 | operate_time        | about_info                              | about_code |
synch_status | httpcol                                          | httpcol_CRC |
+----------+-------------------+---------------+--------------+-----------------
-+---------------------+-----------------------------------------+------------+-
-------------+--------------------------------------------------+-------------+
| 12772266 | PD145136518839426 | ZUE           | 2            | ADMIN
 | 2015-12-29 13:32:55 | 管理员创建作业任务(TZUE155584)          | NULL       |
NULL         | https://www.baidu.com/12772266/PD145136518839426 |  3244637683 |
+----------+-------------------+---------------+--------------+-----------------
-+---------------------+-----------------------------------------+------------+-
-------------+--------------------------------------------------+-------------+
1 row in set (9 min 37.30 sec)    --查询9分钟多
mysql>

索引也创建了10分钟,正常情况下30s就建好了

[SQL]create index idx_ordergood_com on `order_log` (orderno,operate_time)
受影响的行: 0
时间: 607.388s

只有慢查询结束了之后,才能创建索引和其他的操作


  mysql 5.6支持在线ddl操作,在对表进行alter table 时,对该表的增,删,改,查均不会锁表。

但如果在该表被访问时,执行DDL操作会导致表锁,会阻塞对表的任何操作,所以在进行上线操作时一定要观察一下是否有对表操作的慢的查询语句或者事物


   




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值