首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多分区存储过程的种类,它们还会在VoltDB 9中锁定整个集群吗?

多分区存储过程的种类,它们还会在VoltDB 9中锁定整个集群吗?
EN

Stack Overflow用户
提问于 2020-01-07 12:58:17
回答 1查看 210关注 0票数 0

我试图了解VoltDB 9.x中多分区事务的影响。我知道它是为单部分事务设计的,但是我想知道如果我不能避免它,我会付出多少代价。总之,我的问题是,VoltDB中的多分区事务是否总是锁定整个集群,不同类型的多分区事务在其执行行为方面是如何相互关联的?

来自H-商店-常见问题

..。这允许H支持额外的优化,例如投机性执行和任意多分区事务。例如,在VoltDB中,每个事务要么是单个分区,要么是全分区。也就是说,任何需要触摸多个分区的事务都会导致VoltDB的事务协调器锁定集群中的所有分区,即使事务只需要触摸两个分区上的数据。..。将来VoltDB可能会支持这些特性.

论文VoltDB主存数据库管理系统VoltDB如何处理事务声称,在VoltDB中至少存在一种多分区事务:一击读取和通用-2 2PC事务。

MpTransactionTaskQueue类中,事务是被路由到MPI的多分区站点(count 1)还是一个只读站点池(默认计数最多为20),并且它们不能被交错执行,这是有区别的。

以下是我的主要问题:

  • 一次读总是在反渗透网站上执行吗?
  • 反渗透站点是否执行只读事务,而不是单阶段多分区事务?
  • 如果它至少是多分区事务中的一个写片段,那么它将在RW-站点上执行,并使用2PC提交原子?
  • 在这两种情况下,我不必触摸集群中的所有分区,这是可能的。不涉及的分区是否已锁定,或者是否可以同时执行单分区事务(如果在其他分区上运行多个一次性读取或一个2pc事务)。如果他们被锁了,怎么锁?例如,他们是否获得了一个空的或虚拟的计划片段的FragmentTaskMessage?
  • SystemProcedureCatalog定义了一个“每个旗帜”,除了只读和单分区标志之外,它还将在代码中被签入。此标志与一次性读取或到处跑-模式有何关系?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-07 21:53:13

为了使开发人员更容易,过程被称为相同的方式,不管它们是什么类型。内部有不同类型的多分区过程,因为它们提供了一些优化,尽管还有更多的工作要做,一些have项目已经在这些领域进行了研究。

MP事务最终仍然涉及发送要在所有分区上执行的任务。您注意到的一个例外是一个特殊的双分区事务,它仅用于弹性添加或收缩期间的数据再平衡。

分区由一个或多个站点(在不同的服务器上)组成,这取决于kfactor。这些站点在没有2PC的情况下保持同步,需要确定的过程。分区以进程时间(或本地执行时间)允许的速度在队列中处理待办事项。所有站点都同时处理读写操作。

发送到这些分区队列的MP任务必须等待所有挂起的项才能完成。这就是为什么MP读取有20个线程池(默认情况下)。这允许一次发送20个任务,这样下一个MP读取通常不需要等待2个网络跳+最大队列等待时间+处理时间之后才能排队。

MP读取的不是“一次性”的是具有多个voltExecuteSQL()调用的Java过程,例如后续的SQL查询依赖于先前查询的结果的过程。当这些事务向分区发送任务时,分区必须等待最大队列等待时间+处理时间+2个网络跳,然后才能完成事务的下一部分。

MP写操作还可以有多个voltExecuteSQL()调用,而且它们必须等待最终提交信号,因此这都会延迟分区的进度。

当然,MP事务的例子不应该涉及所有分区,并且可以从未来的优化中受益,但它并不像在数据库中看起来的那样容易,因为数据库必须支持磁盘的持久性、k安全性、弹性添加和收缩、多集群活动主动复制,以及自features项目发展以来多年来添加到VoltDB中的许多其他特性。

信息披露:我在VoltDB工作

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59628897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档