PolarDB-X Online Schema Change 实现 PolarDB-X 是一个分布式 HTAP 数据库,采用存储分离架构,高度兼容 MySQL 生态,支持 Online Schema Change DDL 执行流程 收到用户的 DDL 语句后,首先由接受语句的 CN 节点进行校验,并生成 DDL Job 提交到 Global Meta Service (GMS) 的任务队列中,随后 GMS 通知 CN 节点中...
OLTP 数据库中长时间锁表会对业务产生不可预知的影响,生产环境中不可接受,因此“能够与读写操作并行执行”是 OLTP 用户对 DDL 的核心需求,也是 Online Schema Change 要解决的问题。 单机数据库 MySQL 从 5.6 版本开始提供 Online Schema Change(Online DDL)5 特性,允许大多数 DDL 语句与 DML 并行执行。DDL 执...
这一问题在Google的Online, Asynchronous Schema Change in F1这篇论文中有过详细的论证。PolarDB-X引入了Online Schema Change(感兴趣的同学可以点击直达文章)以解决此类的问题,在此不再赘述。对于Repartition来说,引入下图中的这些状态,以此保证任意2个相邻状态都是兼容的,不会发生数据一致性问题。我们可以具体来看看...
PolarDB-X 针对上述的这种场景,提供了无锁变更功能,可以做到数据类型变更全程不会锁表,并且保证可以高效完成。此前,在 《PolarDB-X 拆分规则变更》和《PolarDB-X 分区键列类型变更》文章中,我们详细阐述了 PolarDB-X Online Schema Change 的流程,鉴于 PolarDB-X 中不同 DDL 无锁变更的核心流程大体一致,为...
PolarDB-X 是一个分布式 HTAP 数据库,采用存储分离架构,高度兼容 MySQL 生态,支持 Online Schema Change。 DDL 执行流程 收到用户的 DDL 语句后,首先由接受语句的 CN 节点进行校验,并生成 DDL Job 提交到 Global Meta Service (GMS) 的任务队列中,随后 GMS 通知 CN 节点中的 DDL Worker 领取任务,开始推进 ...
3、存储成本最高降至原来的5%,我们将大部分数据归档到了OSS上,极大的降低的我们的存储成本。由于业务数据量访问减少,数据库本身的规格也减少了,数据库部署成本也降低。PolarDB-X对冷表提供的Online Schema Change和查询加速的技术,也满足了我们业务需求。
PolarDB-X为了实现透明的切换效果,其思路是将目标端分区看作是主表,将源端分区看作是索引表,并对主表进行一次标准的删除索引的 Online DDL 操作(其状态过程是 Public-->WriteOnly-->DeleteOnly-->Absent ,与 Online Schema Change 定义的一致)。 如上图所示,在 Online DDL 期间,由于新索引表会被逐渐下线,CN...
请勿对源库的同步对象使用pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。 在DTS同步期间,不允许有除DTS外的数据写入目标库,否则会导致源库与目标库数据不一致。例如,有除DTS外的数据写入目标库时,使用DMS执行在线DDL变更,可能引起目标库数据丢失。 若实例运行失败,DTS技术支持...
Online Schema Change,添加GSI不锁主表。 支持通过HINT指定索引,自动判断是否需要回表。 常见问题 Q:全局二级索引能够解决什么问题? A:如果查询的维度与逻辑表的拆分维度不同,会产生跨分片查询。跨分片查询的增加会导致查询卡慢、连接池耗尽等性能问题。GSI能够通过增加拆分维度来减少跨分片查询,消除性能瓶颈。
为了解决MDL的问题,让DDL能够做到真正的ONLINE,PolarDB-X使用双版本元数据来解决这个问题。 所谓多版本元数据指的是,PolarDB-X集群中,允许最多同时存在两个版本的元数据(vn与vn+1),每个事务使用的元数据版本由其事务开始时候的元数据版本为准。当使用低版本元数据的事务全部结束之后,低版本的元数据会被清理掉。