正在生成
详细信息:
检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
DDL工具简介 MySQL 5.6之前数据库中对大表的表结构修改的DDL操作通常会引发DML语句阻塞,复制延迟升高等问题,导致数据库对外呈现出一种“异常”的状态。本文介绍了MySQL原生的数据库DDL方式Copy和Inplace算法、开源工具gh-ost以及MySQL 8.0新增
MySQL原生的DDL工具 Copy算法 按照原表定义创建一个新的临时表。 对原表加写锁(禁止DML)。 在1建立的临时表执行DDL。 将原表中的数据copy到临时表。 释放原表的写锁。 将原表删除,并将临时表重命名为原表。 采用copy方式期间需要锁表,禁止DML写操作。当Lock
测试结果 MySQL原生copy算法:update、insert执行会阻塞,select语句可以正常执行。 MySQL原生inplace算法:不会长时间阻塞DML语句,且对大表添加一列耗时最短。 gh-ost工具:几乎不阻塞DML语句,DDL添加一列耗时比MySQL原生的两种算法时间长。
MySQL Online DDL工具使用 DDL工具简介 MySQL原生的DDL工具 gh-ost工具 instant秒级加列 DDL工具测试对比 父主题: 使用数据库
DDL进度显示 功能介绍 大表的DDL操作往往会比较耗时,社区版MySQL无法感知整个DDL的进行阶段与该阶段的进度,可能给用户带来很大的困扰。 针对以上问题,华为云RDS for MySQL推出了DDL进度显示特性,用户可以通过查询“INFORMATION_SCHEMA.INN
DDL概述 DDM支持通用的DDL操作:建库,建表,修改表结构等,但实现方式与普通的MySQL数据库有所区别。 在MySQL客户端执行DDL操作 rename table name不支持与其他DDL语句在同一条SQL执行。 对拆分表执行修改字段名操作的同时执行类似SELECT *
区和普通表数据的交换;GaussDB需要保证普通表和分区表的被删除列严格对齐才能进行分区和普通表数据的交换。 MySQL和GaussDB的哈希算法不同,所以两者在相同的hash分区存储的数据可能不一致,导致最后交换的数据也可能不一致。 MySQL的分区表不支持外键,普通表包含外键
储的数据可能不一致,导致最后交换的数据也可能不一致。 MySQL的分区表不支持外键,普通表包含外键或其他表引用普通表的外键,则无法进行分区和普通表数据的交换;GaussDB的分区表支持外键,在两个表的外键约束一致时,则可进行分区和普通表数据的交换,GaussDB的分区表不带外键,
并行DDL 传统的DDL操作基于单核和传统硬盘设计,导致针对大表的DDL操作耗时较久,延迟过高。以创建二级索引为例,过高延迟的DDL操作会阻塞后续依赖新索引的DML查询操作。 云数据库 GaussDB(for MySQL)支持并行DDL的功能。当数据库硬件资源空闲时,您可以通过并
gh-ost工具 背景 Percona社区的pt-osc的开源DDL工具依赖于触发器来将源表的写操作映射到新表。虽然使用触发器可以提高同步的效率,但触发器执行的开销会对于主库的性能产生很大的影响。另外拷贝数据和变更数据可能处于并行状态,如果在迁移过程中对表的更新比较频繁会引入大量的锁竞争问题。
非阻塞DDL 用户在执行DDL操作的时候,如果目标表存在未提交的长事务或大查询,DDL将持续等待获取MDL-X锁。在GaussDB(for MySQL)中,由于MDL-X锁具有最高优先级,DDL在等待MDL-X锁的过程中,将阻塞目标表上所有的新事务,这将导致业务连接的堆积和阻塞,
MySQL中视图存储,只记录目标表的表名、列名、数据库名信息,不记录目标表的唯一标识;GaussDB会将创建视图时的SQL解析,并存储目标表的唯一标识。因此存在如下差异: 修改存在视图依赖的列的数据类型,MySQL中对应的视图不感知目标表的修改,因此可以修改成功;GaussDB视图中的列禁止修改数据类型,因此无法修改该列的数据类型。
instant秒级加列 背景 通常情况下大表的DDL操作都会对业务产生很大的影响,需要在业务低峰期做。MySQL 5.7支持原生DDL工具Copy和Inplace算法、以及开源DDL工具gh-ost,减少了DDL期间DML操作被阻塞的情况。但是大表DDL仍然需要花费很长时间。 instan
认值为31536000,相当于不开启。 对于DDL的等锁超时,其真实超时时间是lock_wait_timeout和rds_ddl_lock_wait_timeout的最小值。 对于DDL过程中InnoDB层的加表锁超时(行锁不在该考虑范围),其真实超时时间是innodb_lock
processlist”命令,排查业务侧在备份时间窗内是否有DDL操作。 解决方案 停止相应的DDL操作后,重试手动备份。 建议此后的DDL业务变更操作应尽量避开备份窗口。 父主题: 备份恢复
DDL优化 并行DDL DDL快速超时 非阻塞DDL 创建二级索引进度查询 父主题: 常见内核功能
模式对象与数据定义(DDL) 表(可选参数、操作) 索引 注释 数据库 父主题: MySQL语法迁移
数据定义语句DDL 创建源表 创建结果表 创建维表 Format 父主题: Flink Opensource SQL1.12语法参考
String MySQL数据库的IP地址或者Hostname。 username 是 无 String MySQL数据库的用户名。 password 是 无 String MySQL数据库的密码。 database-name 是 无 String 访问的数据库名称。 数据库名称支持正
数据定义语句DDL 创建源表 创建结果表 创建维表 父主题: Flink Opensource SQL1.10语法参考