论文部分内容阅读
现代在线事务处理(Online Transaction Processing,OLTP)应用对于数据库可拓展性和事务ACID属性的要求,催生出了无共享的分布式内存数据库管理系统(Sharednothing Distributed In-memory DBMS)。此类DBMS由于使用了无共享架构将数据分布在多个分区,在完成事务时可能会从多个分区访问数据,从而产生分布式事务(Distributed Transaction)。分布式事务由于需要DBMS使用开销巨大的网络通信来进行跨分区协调处理,对此类DBMS性能有着巨大的影响。为了从减少分布式事务的角度来优化此类DBMS性能,学术界中提出了许多基于分区的解决方案。这些解决方案通过对此类DBMS中数据的共同访问关系(Co-accessed Relationship)建模成图并分析,将数据元组合理地划分到各个分区,给出新的数据分区方案,使得大部分具有共同访问关系的数据被放置在相同的分区,从而减少分布式事务的数量以提升此类DBMS的性能。除了减少分布式事务数量,由于此类DBMS及OLTP工作负载的固有特点,要使得新的分区方案对于此类DBMS性能有着更好的提升,该类解决方案及其产生的分区方案需要满足额外的要求。这些要求包括OLTP负载变化带来的对于解决方案时间消耗的要求,对于分区方案负载平衡的要求,以及共同访问关系中的社区结构(Community Structure)带来的对于解决方案分析数据量的要求和解决“C平衡社区问题”的要求。目前能为此类DBMS性能带来良好提升的解决方案之一Commgraph,使用了细粒度的图建模方式,通过对图进行社区发现(Community Detection),然后再将发现的社区放置到分区中,从而产生分区方案的方法,减少了大量的分布式事务,并满足了分区方案负载平衡的要求以及社区结构带来的要求。然而本文通过进一步的研究发现,Commgraph对于数据进行的过于细粒度的建模与分析会导致当DBMS中数据量较大时,其产生分区方案的时间过长,从而无法满足解决方案时间消耗的要求。此外本文提出,Commgraph的社区放置模块上存在“小社区分区占用”问题。由于原始的Commgraph在进行社区放置时,仅仅只考虑是否能将社区放置在当前分区中,而不考虑之前的分区是否也能装下该社区,导致较小的分区没有合理的被分配到分区中,并占用额外的分区,导致产生的分区方案中分区资源的浪费。本文主要针对Commgraph解决方案时间消耗过长的问题和其放置模块带来的小社区分区占用问题进行了研究,基于Commgraph解决方案进行了两项改进。其一是对Commgraph的社区放置模块进行了分析与改进,在不影响Commgraph优化效果的前提下减少了分区方案中使用分区的数量,节约了使用Commgraph进行分区优化后DBMS运行时的资源消耗。其二是提出了名为ACTDP的图压缩工具,通过点聚合的方法对共同访问关系图进行压缩,为Commgraph提供压缩后的关系图从而大幅减少其时间消耗,使得Commgraph能够快速的完成分区方案的生成,满足OLTP负载变化带来的对于解决方案时间消耗的要求。最后,本文对两项改进的效果进行了详细的测试和验证。通过对社区放置模块的测试,本文证明了对于Commgraph社区放置模块的改进比起原始的Commgraph社区放置模块,能在不降低Commgraph对于DBMS优化效果的同时,使得Commgraph的分区方案使用相同或者更少的分区数量。而通过对于ACTDP工具的测试,本文证明了使用ACTDP之后的Commgraph产生分区方案的耗时能大幅下降,并且数据量越多下降越明显。在数据库中有100万个元组的测试条件下其耗时相较于原Commgraph下降了约80%,同时使用该分区方案对DBMS进行优化时吞吐量仅下降了约15%。因此,本文提出的对Commgraph的两项改进能解决Commgraph的小社区分区占用问题和耗时过长的问题,对此类DBMS拥有大量数据时进行分区优化具有重大的意义。