首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

alter table,MySQL出现Waiting for table metadata lock的场景浅析及解决方案

另外一个session 对A进行alter,出现waiting for table metadata lock ---- MySQL版本为5.6.12。...上有正在进行的操作(包括读),此时alter table语句无法获取到metadata 独占,会进行等待。...一般alter table的操作过程中(见下图),在after create步骤会获取metadata 独占,当进行到altering table的过程时(通常是最花时间的步骤),对该的读写都可以正常进行...在事务没有完成之前,TableA上的不会释放,alter table同样获取不到metadata的独占。...总之,alter table的语句是很危险的,在操作之前最好确认对要操作的没有任何进行中的操作、没有未提交事务、也没有显式事务中的报错语句。

3.2K80
您找到你想要的搜索结果了吗?
是的
没有找到

SQL ALTER TABLE 语句- 灵活修改结构和数据类型

SQL ALTER TABLE 语句 SQL ALTER TABLE 语句用于在现有中添加、删除或修改列,也可用于添加和删除各种约束。...ALTER TABLE - 添加列 要在中添加列,请使用以下语法: ALTER TABLE 名 ADD 列名 数据类型; 以下 SQL 向 "Customers" 添加了一个 "Email" 列:...Email; ALTER TABLE - 重命名列 要在中重命名列,请使用以下语法: ALTER TABLE 名 RENAME COLUMN 旧名 TO 新名; ALTER TABLE - 修改数据类型...要更改中列的数据类型,请使用以下语法: 对于 SQL Server / MS Access: ALTER TABLE ALTER COLUMN 列名 数据类型; 对于 MySQL / Oracle...(10G 之前的版本): ALTER TABLE 名 MODIFY COLUMN 列名 数据类型; 对于 Oracle 10G 及更高版本: ALTER TABLE 名 MODIFY 列名 数据类型

58710

Oracle 缓存(caching table)的使用

--************************************ -- Oracle 缓存(caching table)的使用 --****************************...2.解决该问题的方法 设计为caching table ,即使对该使用全访问时,则该对象的块仍然被放置在LRU列表最近最多使用的尾部(MRU段) 不要过度的使用caching table,以免造成性能下降...的方法 创建对象时,使用cache子句 修改对象时,使用cache子句 使用cache 提示 创建对象时使用cache,如下面的例子 create table tb_test (id...table 修改已经存在的 alter table scott.emp cache; 可以使用nocache来修改对象,使其不具备cache属性 alter table soctt.emp...select * from v$version; BANNER ---------------------------------------------------------------- Oracle

1.8K40

oracle 、解锁的语句

oracle数据库的进行update操作的时候,忘了提交,导致后面无法对表格进行数据修改操作。现将网络搜索到的 方法粘贴如下,供遇到问题的小伙伴方便查看。如有侵权,请一定告知,本人必将尽快删除。...你要知道锁住了是不是正常?因为任何DML语句都会对表加锁。...你要先查一下是那个会话那个sql锁住了,有可能这是正常业务需求,不建议随便KILL session,如果这个是正常业务你把session kill掉了会影响业务的。 建议先查原因再做决定。...(1)查询的代码有以下的形式: select count(*) from v$locked_object; select * from v$locked_object; (2)查看哪个...a.session_id = b.sid and b.SQL_ID = c.sql_id and c.sql_id = ” order by b.logon_time; (5)杀掉对应进程 执行命令:alter

99040

mysqldump命令详解 4-按条件备份数据

中可以不对表施加写入进行导出,MyISAM引擎还是的 mysqldump -h127.0.0.1 -usystem -p123456 --single-transaction --set-gtid-purged...接下来是的信息 首先是如果存在则删除(DROP TABLE IF EXISTS) 之后建立(CREATE TABLE) 2.3 数据的备份 ?...ALTER TABLE DISABLE KEYS),这样能加快插入速度 之后将数据转换成insert语句(INSERT INTO) 之后重新建立丢失的索引(ALTER TABLE ENABLE KEYS...) 最后释放(UNLOCK TABLES) 2.4 备份没有符合条件的 ?...总结 可以看出单独导出的某行有如下内容 删除(如果存在) 建 禁用非唯一索引 插入数据 启用非唯一索引(重建索引) 释放 触发器(如果有) 不同于全库备份没有如下内容 建立数据库(如果不存在

2.4K20

Oracle扫描及其执行计划(full table scan)

扫描是Oracle访问数据库是较为常见的访问方式之一。很多朋友一看到SQL语句执行计划中的全扫描,就要考虑对其进行修理一番。全扫描的存在,的确存在可能优化的余地。...本文涉及到的相关链接: 高水位线和全扫描 启用 AUTOTRACE 功能 Oracle 测试常用BIG_TABLE Oracle db_file_mulitblock_read_count...全扫描就是扫表表中所有的行,实际上是扫描中所有的数据块,因为Oracle中最小的存储单位是Oracle block。    ...scott@ORA11G> alter table t add constraint t_pk primary key(n) using index t_pk; Table altered....30%时,Oracle 倾向于使用全扫描 --而对于上所返回的数据行数接近于上的30%的情形,我们给与索引提示,此时比全扫描更高效,即全扫描是低效的 --笔者同时测试了数据返回总行数接近80%

2.6K10

MySQL技能完整学习列表5、数据库操作——1、创建数据库和——2、修改结构(ALTER TABLE

修改结构(ALTER TABLE) MySQL中的ALTER TABLE语句用于修改现有的结构。使用此语句,您可以添加、删除或修改列,更改的字符集或排序规则,重命名表,以及进行其他结构更改。...以下是ALTER TABLE语句的一些常见用法和示例: 1、添加新列: 您可以使用ADD子句向中添加新列。...例如,要将students重命名为pupils,可以使用以下语句: ALTER TABLE students RENAME TO pupils; 5、添加主键 如果您需要向中添加主键约束,可以使用ADD...例如,要在students的lastname列上添加索引,可以使用以下语句: ALTER TABLE students ADD INDEX (lastname); 8、修改的字符集和排序规则 如果您需要更改的字符集或排序规则...使用ALTER TABLE语句时,请确保在执行任何结构更改之前备份数据库或。这些更改可能会影响数据完整性或查询性能,并且在某些情况下可能需要重新构建或重新索引数据。

39110

mysqldump命令详解 Part 3-备份单

往期专题请查看www.zhaibibei.cn 这是一个坚持Oracle,Python,MySQL原创内容的公众号 前情提要 MySQL 5.7 Windows平台安装 MySQL 5.7 Linux...接下来是的信息 首先是如果存在则删除(DROP TABLE IF EXISTS) 之后建立(CREATE TABLE) 2.3 数据的备份 ?...接下来是数据的备份(Dumping data for table) 首先锁定不让其他进程写(LOCK TABLE WRITE) 然后使MySQL停止更新非唯一索引(ALTER TABLE DISABLE...KEYS),这样能加快插入速度 之后将数据转换成insert语句(INSERT INTO) 之后重新建立丢失的索引(ALTER TABLE ENABLE KEYS) 最后释放(UNLOCK TABLES...总结 可以看出单独导出有如下内容 删除(如果存在) 建 禁用非唯一索引 插入数据 启用非唯一索引(重建索引) 释放 触发器(如果有) 不同于全库备份没有如下内容 建立数据库(如果不存在)

2K20
领券