暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Vast+产品展厅 | Vastbase分区表在线创建本地分区索引

海量数据 2024-02-23
565



-导语-

在关系型数据库中,对大数据量的表进行查询,索引起到非常重要的作用,可以大大提高查询的效率。常规的索引创建,会对表加锁,期间不允许对表数据进行修改,这样会导致上层业务阻塞。当表数据量越大,创建索引的过程时间就越长,业务受影响就越严重。在线创建索引功能的出现可以很好地解决这个问题,使得在创建索引的过程,业务几乎不受影响。


在vastbase中分区表支持创建本地分区索引,该索引的特征是针对每一个“数据”分区,单独创建一个分区的索引,分区的索引中只包含对应分区中的数据,最终可以理解为本地分区索引也是一个“分区表”,分区规则与分区表一致。在查询的数据值涉及到少部分的分区时,通过本地分区索引可以有效提高查询效率。


PART 01

分区表创建本地分区索引面临的问题


当分区表中的数据量越来越大,后续在分区表上创建本地分区索引所需的时间就越长。而且在创建本地分区索引过程中会对分区表加锁,期间其他业务无法对分区表进行DML操作,可能会导致上层应用的业务阻塞。


为了解决这个问题,vastbase中提出了在线创建本地分区索引的方案,通过降低在创建本地分区索引时对主表加锁的级别,允许在线创建本地分区索引期间可以并行对分区表执行DML操作,从而避免了上层应用业务的阻塞。


当在线创建本地分区索引期间,可以进行DML操作,即分区表的数据在不断地变化,那要如何来保证创建的本地分区索引中索引数据的正确性呢?


PART 02

在线创建本地分区索引实现方案


在线创建本地分区索引的过程分为4个阶段:

1

创建本地分区索引元数据

2

根据分区表数据构建本地分区索引

3

把前面并行新增的数据,追加构建到本地分区索引中

4

等旧事务结束,设置本地分区索引可用

在线创建本地分区索引的每一个阶段都是通过一个事务来完成。每个阶段结束后,其他事务都可以看到已完成阶段的内容。


下面讲一下在线创建本地分区索引的方案中,是如何来保证索引数据的正确性的。



01


第一阶段的T3事务在t2时刻结束,在启动第二阶段的事务之前,必须等待t2时刻正在执行的DML事务结束,这样可以保证后续启动的DML事务可以看到本地分区索引,但是当前本地分区索引不可用。

02


第二阶段T6事务执行期间,T5、T7事务可能会对分区表数据进行增、删、改。新增的数据,在第三阶段处理;删除的数据,因为索引数据需要回表检查可见性,所以不会有问题;修改的数据,又分两种情况,本地分区索引键的值是否更新,如果更新索引键则可以理解为删+增的情况,在第三阶段对修改后的数据添加索引条目,如果没有更新索引键,当前事务看到分区表有本地分区索引,则进行hot update,索引项回表通过hot链找到更新后的数据。在t4时刻,第二阶段的T6事务结束,在启动第三阶段的事务之前,需要等待t4时刻正在执行的DML事务结束。在t4时刻之后启动的DML事务对分区表的数据新增修改时,需要自行维护本地分区索引。


03


第三阶段T10事务中,把分区表中还没有构建索引项的数据,追加构建到本地分区索引中。如事务T5、T7中新增修改的数据,在第二阶段T6事务中是看不到这部分数据,第三阶段T10事务是可以看到这部分数据。事务T8新增修改分区表数据时,自行维护本地分区索引。

04


第四阶段T12事务启动前,必须等待t6时刻正在执行的所有事务结束。在第四阶段把索引标记为可用,后续查询就可以使用该本地分区索引了。如果T8事务删除了T7事务中新增的数据,在第二、第三阶段都看不到该数据,第三阶段结束后本地分区索引中不会有该数据的索引项。如果在T9事务结束前,完成第四阶段,就会导致T9事务中使用该本地分区索引查询数据时,缺失T7事务中新增的数据。



Vastbase的在线创建本地分区索引功能的上线,很好地解决了客户现场中对大数据量分区表创建本地分区索引影响到业务的问题。客户现场有多个海量数据的分区表,因新业务需要对分区表添加本地分区索引,现场使用了在线创建本地分区索引,整个索引创建的过程耗时比普通创建索引预估的时间多了约0.7倍,但是原业务没有受到影响,顺利平稳地帮助客户完成新业务上线。


在线创建本地分区索引,优点是不会影响分区表的DML操作,缺点是创建索引过程中会多次扫描表数据,导致了磁盘压力增大,整个创建索引过程的耗时加长。相比普通创建索引影响业务的代价,用一定的性能和效率来换取索引的成功创建,这是完全可以接受的。



• END •


关于海量数据


北京海量数据技术股份有限公司(股票代码:603138.SH)成立于2007年,是国内首家以数据库为主营业务的主板上市企业。公司十余年来秉承“专注做好数据库”的初心,始终致力于数据库产品的研发、销售和服务。核心产品海量数据库Vastbase系列、数据库一体机Vastcube系列、海量大数据Datalink系列,全栈国产化,应用满足度高,目前广泛应用于政务、制造、金融、通信、能源、交通等多个重点行业,已成为国产企业级数据库的首选之一。



文章转载自海量数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论