atitit查询表改动表字段没反应--解锁锁定的表

简介:
atitit查询表改动表字段没反应--解锁锁定的表

查询表改动表字段没反应

要是使用gui 没反应,最好使用cmd 方式,不卉不个gui 锁上..
ALTER TABLE t_mb_awardweixin  MODIFY  awardChoiceNumLeft int(11) DEFAULT NULL

#-----分析..

1.首先,查询by还有一个表格,  要是能查询,显示不是max conn的问题..或许表格锁定了..
2. show full PROCESSLIST  要是看到个Waiting for table metadata lock 
 3. 查询锁上的表格.  show OPEN TABLES where In_use > 0;
 
 
作者 老哇的爪子 Attilax 艾龙。  EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax


#---------原因MDL:::

一个没提交的事务使用了A表, 另外一个session 对A表进行alter,出现waiting for table metadata lock

在insert into t select * from share 执行时, 同一时候执行alter table t add index(play_count),
alter table语句会Waiting for table metadata lock, 直到insert into … select 语句结束。

 
概述

随着5.5.3引入MDL,很多其它的Query被“Waiting for table metadata lock”给'炕'了
SHOW PROCESSLIST的输出也有之前的"Locked"变得粒度更加细的'Waiting for table metadata lock'
引入MDL。当须要訪问、改动表结构时,都须要对元数据上锁(读/写)
MDL在Server层,保护表数据结构,而非数据本身。Server比之前版本号繁忙多了

MDL意味着DDL。一旦DDL被堵塞,那么面向该表的全部Query都会被挂起。包含Select。只是5.6作了改进。5.5可通过參数控制

3.应用中使用了连接池..可是又要ddl...连接池老是连续start 有些conn, kill李韩式有自己主动開始..造成后面儿ddl 不能运行..


 
 
 #----解决
 1. 设置lock_wait_timeout=50   ,默认1年..  只下一次时间生效..当前唯独kill 才干够解决..
 2. kill  锁上 conn   ( DDM alter 的query sql)  ,,,,别的query 事务奏能连续兰..
 3. 对付连接池, 能够设置timeout自己主动关闭连接.. 可是要重新启动生效..要是应用重要性,不能重新启动,能够使用防火墙阻止java进程 訪问网络...  批处理kill id ,, 查看一下,应该不会自己主动连接池连接上了,,,在ddl操作,在放开.....
 
 
 #----结论:
在准备alter table tbl 的时候。先观察一下,有没有正在执行的,且在短时间内无法结束的sql语句在操作tbl表
结论:

当须要对"热表"做DDL。须要特别慎重,否则。easy造成MDL等待,导致连接耗尽或者拖垮Server

參考
mysql出现Waiting for table metadata lock的原因及解决方式 - mysql数据库栏目 - 红黑联盟.htm

imptt 初步认知MySQL metadata lock(MDL) - DBA@DevOps - 博客频道 - CSDN.NET.htm







本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5066547.html,如需转载请自行联系原作者

相关文章
|
2月前
|
SQL Oracle 关系型数据库
Oracle 将表中的数据查出更改某一字段的值后再插入该表
Oracle 将表中的数据查出更改某一字段的值后再插入该表
32 2
|
14天前
|
存储 关系型数据库 索引
10. 在一个非主键字段上创建了索引, 想要根据该字段查询到数据, 需要查询几次 ?
在非主键字段上创建索引,查询数据通常需两次。对于MyISAM,先通过索引找到数据行指针,再获取数据;而InnoDB则先找主键ID,再从主键索引中查找数据。
11 0
|
5月前
|
Oracle 关系型数据库 MySQL
根据一张表更新另一张表
根据一张表更新另一张表
|
11月前
|
关系型数据库 MySQL
Mysql中通过关联update将一张表的一个字段更新到另外一张表中
Mysql中通过关联update将一张表的一个字段更新到另外一张表中
991 0
|
设计模式 数据库
Access2016删除主键列(图文操作)错误提示:若要删除主键,请在“设计”视图中打开该表并删除主键字段
Access2016删除主键列(图文操作)错误提示:若要删除主键,请在“设计”视图中打开该表并删除主键字段
Access2016删除主键列(图文操作)错误提示:若要删除主键,请在“设计”视图中打开该表并删除主键字段
|
存储 SQL Java
Mysql数据库表字段设计优化(状态列)
初始状态码(java int 32 long 64),int 可以表示31种(除去0000),long可以表示63种(除去0000),当然不可能将0000赋值给初始状态,一般来讲,选择int还是long是根据具体业务需求来决定的。
394 0
Mysql数据库表字段设计优化(状态列)