阿里云服务器RDS MySQL InnoDB 锁等待和锁等待超时的处理

时间:2015-07-08 10:48:33 来源:爱牛网络

阿里云服务器RDS MySQL InnoDB 锁等待和锁等待超时的处理,爱牛营销型网站建设公司,咨询电话400-699-2656

当一个RDS MySQL连接会话等待另外一个会话持有的互斥锁时,会发生Innodb锁等待情况。

通常情况下,持有该互斥锁的会话(连接)会迅速的执行完相关操作并释放掉持有的互斥锁,进而等待的会话在锁等待超时时间到来前获得该互斥锁,进行下一步操作。

但在某些情况下,比如一个实例未感知到的RDS中断会话,持有该互斥锁的会话长时间不释放该互斥锁,可能会导致大量的锁等待与锁等待超时。

 

 

Innodb锁等待情况的处理: 

1. Innodb锁等待超时参数innodb_lock_wait_timeout

该参数控制Innodb锁等待的超时时间,单位为秒,RDS实例该参数的默认值为50(秒)。

等待互斥锁的会话在等待50秒后会退出锁等待状态并返回 ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 错误,如下图:

 

 innodb_lock_wait_00.png

该参数支持在会话级别修改,方便应用在会话级别单独设置某些特殊操作的锁等待超时时间,如下图:

 

innodb_lock_wait_01.png

2. 大量锁等待和锁等待超时的处理

   2.1 检查导致锁等待和锁超时的会话
       2.1.1 通过 IDB Cloud =》实例信息 =》 Innodb 锁等待 查看,如下图:

innodb_lock_wait_02.png

       2.1.2 通过 IDB Cloud => 实例信息 =》实例会话查看,如下图

innodb_lock_wait_04.png       2.1.3 在IDB CLOUD 无法登陆的情况下,可以通过MySQL命令行工具执行下面的代码,获得导致锁等待和锁超时的会话。
select
 'Blocker' role,
    p.id,
    p.user,
    left(p.host, locate(':', p.host) - 1) host,
    tx.trx_id,
    tx.trx_state,
    tx.trx_started,
 timestampdiff(second, tx.trx_started, now()) duration,
 lo.lock_mode,
 lo.lock_type,
 lo.lock_table,
 lo.lock_index,
    tx.trx_query,
    tx.trx_tables_in_use,
    tx.trx_tables_locked,
    tx.trx_rows_locked
from
    information_schema.innodb_trx tx,
    information_schema.innodb_lock_waits lw,
 information_schema.innodb_locks lo,
    information_schema.processlist p
where
    lw.blocking_trx_id = tx.trx_id
 and p.id = tx.trx_mysql_thread_id
 and lo.lock_trx_id = tx.trx_id
union all
select
    'Blockee' role,
    p.id,
    p.user,
    left(p.host, locate(':', p.host) - 1) host,
    tx.trx_id,
    tx.trx_state,
    tx.trx_started,
 timestampdiff(second, tx.trx_started, now()) duration,
 lo.lock_mode,
 lo.lock_type,
 lo.lock_table,
 lo.lock_index,
    tx.trx_query,
    tx.trx_tables_in_use,
    tx.trx_tables_locked,
    tx.trx_rows_locked
from
    information_schema.innodb_trx tx,
    information_schema.innodb_lock_waits lw,
 information_schema.innodb_locks lo,
    information_schema.processlist p
where
    lw.requesting_trx_id = tx.trx_id
 and p.id = tx.trx_mysql_thread_id
 and lo.lock_trx_id = tx.trx_id \G

比如:

innodb_lock_wait_03.png

   2.2 处理导致锁等待和锁超时的会话
       2.2.1 通过 IDB Cloud =》实例信息 =》 实例会话 kill 掉导致锁等待的会话
       2.2.2 在IDB CLOUD 无法登陆的情况下,可以通过MySQl命令行工具执行 kill 命令,来终止导致锁等待的会话,如下图:

innodb_lock_wait_05.png
 

北京爱牛营销型网站建设公司,专业的网络营销实施专家,为你打造以网站为平台的营销设计,提供企业网站建设,品牌网站建设,外贸网站建设,营销网站设计,网站推广,网络整合营销,我们为企业打造一体化网络营销服务,我们的优势,不在一个点,而是网住整个面。选择爱牛网络,挡不住的网络营销财富,让您的网络从此牛起来。 
爱牛品牌设计是我们的创造力,网络营销策划是企业的第二生命力。赢在起跑线,爱牛来实现!!! 
全国服务热线:400-699-2656 / 400-669-2656 / 010-63260836 / 010-63495805
本文作者:爱牛网络,转载请注明出处:爱牛营销型网站建设公司(www.cngin.com)。XML

热门文章

联络方式:

中国 · 北京 · 西城区茶马北街 1号院1号楼7层1单元0807室
电话:010-63495805  63260836  400-699-2656
传真:010-63260836-806
邮编:100055