面向分析型数据库的大规模随机负载生成及验证方法及系统转让专利

申请号 : CN202010632285.6

文献号 : CN112241363B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张蓉米凯铭

申请人 : 华东师范大学

摘要 :

本发明提出了一种面向分析型数据库的大规模随机负载生成及验证方法,可以生成大规模随机数据库、查询负载以及相应的查询执行结果,帮助高效地完成查询执行结果正确性验证。本发明还提出了一种面向分析型数据库的大规模随机负载生成及验证方系统。

权利要求 :

1.一种面向分析型数据库的大规模随机负载生成及验证方法,其特征在于,包括以下步骤:

步骤一,随机数据库schema生成:根据自定义的随机schema生成配置文件,其中包括常用的schema配置项,包括数据表的个数、数据表的大小、属性数目、每张数据表外键的数量、数据类型出现的比例、字符串长度、索引概率生成随机的数据库schema;

步骤二,数据生成:采用确定性随机数据生成机制,即为数据表中的属性确定随机生成函数,使其属性值与主键值保持某种关联关系,根据属性生成函数,采用分布式控制器将数据生成任务均匀划分到所有的数据生成器上,实现完全并行的数据生成,生成的数据先以文本格式存储在生成节点,之后再批量导入数据库中;

所述确定性随机数据生成机制如下:根据属性本身的数据类型,为其确定多个随机生成函数,为每个属性值选择相应的生成函数使用数值计算器计算出一个值,之后使用数值转换器,根据数值计算器的值生成实际的属性值;针对不同的数据类型,数值转换器使用不同的方式;针对数值型数据类型,数值转换器根据数值计算器得出的值进行精度调整;而针对字符型数据类型,根据字符串长度限制,先生成一组种子字符串,然后根据数值计算器得出的值通过取余确定使用的种子字符串,再通过连接数值计算器得出的值和种子字符串作为输出;

步骤三,查询生成:采用数据感知的查询生成机制,基于支持的sql语法,首先生成符和语法和语义的具有参数化谓词的查询,之后,在查询参数实例化过程中,受益于确定性数据生成机制,高效实例化满足特定约束的查询参数;

所述数据感知的查询生成机制如下:首先根据支持的sql语法,生成满足语法和语义的具有参数化谓词的查询,根据谓词形式的不同,采用随机计算或者蒙特卡洛算法进行参数实例化;

步骤四,结果集生成:根据数据之间的依赖关系,通过自计算的方式,得出在测试数据库上执行测试查询的正确结果,然后用于查询执行结果正确性验证;

所述结果集生成机制如下:受益于确定性数据生成机制以及数据确定性的依赖关系,通过主键约束链的形式表示当前查询操作下表中满足约束的元组的主键信息,不断地进行约束传递,最终表示出每张表中满足查询的所有元组;之后按照连接序,构建连接结果,进行选择、聚合运算后得出最终查询结果。

2.一种面向分析型数据库的大规模随机负载生成及验证系统,其特征在于,所述系统采用如权利要求1所述的方法,所述系统包括以下模块:随机数据库schema生成模块,根据自定义的随机schema生成配置文件,其中包括常用的schema配置项,生成随机的数据库schema;

数据生成模块,采用确定性随机数据生成机制,即为数据表中的属性确定随机生成函数,使其属性值与主键值保持某种关联关系,根据属性生成函数,采用分布式控制器将数据生成任务均匀划分到所有的数据生成器上,实现完全并行的数据生成,生成的数据先以文本格式存储在生成节点,之后再批量导入数据库中;

查询生成模块,采用数据感知的查询生成机制,基于支持的sql语法,首先生成符和语法和语义的具有参数化谓词的查询,之后,在查询参数实例化过程中,受益于确定性数据生成机制,高效实例化满足特定约束的查询参数;

结果集生成模块,根据数据之间的依赖关系,通过自计算的方式,得出在测试数据库上执行测试查询的正确结果,然后用于查询执行结果正确性验证。

3.如权利要求2所述的面向分析型数据库的大规模随机负载生成及验证系统,其特征在于,所述数据生成主要包含两个模块:数值计算器和数值转换器:所述数值计算器会使用每个属性对应的生成函数为其计算出一个数值,之后,数值转换器针对不同的数据类型使用不同的方式进行转换;针对数值型数据类型,所述数值转换器根据数值计算器得出的值进行精度调整;而针对字符型数据类型,根据字符串长度限制,先生成一组种子字符串,然后根据数值计算器得出的值通过取余确定使用的种子字符串,再通过连接数值计算器得出的值和种子字符串作为输出。

说明书 :

面向分析型数据库的大规模随机负载生成及验证方法及系统

技术领域

[0001] 本发明涉及数据生成、查询生成、正确结果生成技术领域,尤其涉及一种面向分析型数据库的大规模随机负载生成及验证方法及系统。

背景技术

[0002] 软件测试是保证软件可靠性的有效手段,在软件开发过程中占有重要的地位。然而,测试通常是一个十分消耗人力和时间的过程,这也就导致其在软件开发代价中占比很
高。尤其,对于DBMS这种大型、复杂的系统软件,它的测试输入十分复杂,这使得测试DBMS的
代价进一步上升。自动化测试案例生成能够显著地减少测试代价,帮助我们更加充分、系统
地完成测试,增加系统可靠性,提高开发效率。
[0003] 为了完成数据库系统的功能测试,需要测试数据库、测试查询、以及正确执行结果这三个部分帮助完成。如何高效地将数据生成、查询生成和结果集生成这三个部分的工作
整合到一起是一个很难、也急需解决的问题。
[0004] 在数据生成方面,主要包含两类工作,一种是查询无感的数据生成[1‑5],另一种是查询感知的数据生成[6‑10]。对于查询无感的数据生成,在进行数据生成时只考虑目标
数据库的数据特征,通常使用这种方法进行大规模数据库生成然后执行各种测试基准。这
类工作的普遍问题是,测试查询在该数据库上执行时可能不会返回有意义的结果,例如返
回空集,这会导致大量无效的数据库测试。查询感知的数据生成在数据生成时考虑测试查
询带来的约束。这类工作致力于生成数据库使得在其中执行测试查询时可以得到期待的中
间结果集,进而帮助我们测试内存管理器或者查询优化器中的基数估计组件等。
[0005] 在查询生成方面,RAGS[11]是已知最早的随机SQL生成器,服务于SQL Server的测试工作。RAGS可以根据给定的schema信息生成大量随机的符和语法的SQL。由于RAGS会生成
将近50%的无效查询,GARan[12]是第一个针对数据库系统的自适应随机测试技术,它能够
帮助我们找到有效的查询。GARan根据负载执行的反馈信息使用遗传算法生成更符和预期
的测试案例进而提高测试的代码覆盖度。RAGS和GARan都需要在多个数据库系统中执行相
同的查询,并且逐行比对返回结果集来验证查询执行的正确性。为了提高测试效率,自适应
随机测试思想和技术[13‑14]的引入可以有效提高生成的测试案例质量。其他类型的负载
生成器有固定的查询模板[15‑17]。QGen[17]可以根据一组查询模板快速生成大量的查询,
TPC‑DS的查询负载便由其生成。工作[15,16]希望为查询模板填入合适的参数值,使查询满
足指定的基数约束。
[0006] 在正确结果生成方面,一些工作[18,19]在生成数据和负载的同时,也给出了查询执行结果。ADUSA[19]的数据生成和负载生成都依赖于Alloy[20]。然而,Alloy的数据生成
复杂度过高,不足以支持大规模测试数据库生成。同时,ADUSA也存在负载类型支持较少的
问题。工作[21,22]对ADUSA进行了补充,并且把查询生成,数据生成和结果生成整合到一个
自动化框架中。然而还是具有负载类型不充分,不支持大数据集的问题。工作[18]扩展了在
[23]中提出的RQP技术,先生成查询和期待的查询结果,之后再生成相应的数据库。但是其
数据库生成代价高昂,生成大规模数据库也是不可行的。
[0007] 上面提到的方法在大数据集下进行查询执行结果正确性验证,要么需要消耗大量的存储和计算资源(对比系统),代价十分高昂,要么是无法适用的(生成大规模数据库代价
过高,不具有实际使用意义)。

发明内容

[0008] 数据库系统的功能模块越来越多并且越来越复杂,为了保证其可靠性,需要充分的功能测试,其中为了检测查询执行结果是否正确,需要测试数据库、测试查询和测试查询
在测试数据库上执行的正确结果这三个部分帮助我们完成正确性检测。目前还没有技术可
以有效地把这三部分结合起来,高效地完成查询执行结果正确性验证。
[0009] 本发明提出的面向分析型数据库的大规模随机负载生成及验证方法,包括以下步骤:
[0010] 步骤一:随机数据库schema生成,根据自定义的随机schema生成配置文件,其中包括常用的schema配置项,生成随机的数据库schema;
[0011] 步骤二:数据生成,采用确定性随机数据生成机制,即为数据表中的属性确定随机生成函数,使其属性值与主键值保持某种关联关系,根据属性生成函数,采用分布式控制器
将数据生成任务均匀划分到所有的数据生成器上,实现完全并行的数据生成,生成的数据
先以文本格式存储在生成节点,之后再批量导入数据库中;
[0012] 确定性随机数据生成机制如下:
[0013] 根据属性本身数据类型,为其确定多个随机生成函数,为每个属性值选择相应的生成函数使用数值计算器计算出一个值,之后使用数值转换器,根据数值计算器的值生成
实际的属性值。针对不同的数据类型,数值转换器会使用不同的方式;针对数值型数据类
型,数值转换器根据数值计算器得出的值进行精度调整;而针对字符型数据类型,根据字符
串长度限制,先生成一组种子字符串,然后根据数值计算器得出的值通过取余确定使用的
种子字符串,再通过连接数值计算器得出的值和种子字符串作为输出。
[0014] 步骤三:查询生成,采用数据感知的查询生成机制,基于支持的sql语法,首先生成符和语法和语义的具有参数化谓词的查询,之后,在查询参数实例化过程中,受益于确定性
数据生成机制,高效实例化满足特定约束的查询参数;
[0015] 数据感知的查询生成机制如下:
[0016] 首先根据支持的sql语法,生成满足语法和语义的具有参数化谓词的查询,根据谓词形式的不同,采用随机计算或者蒙特卡洛算法进行参数实例化。
[0017] 步骤四:结果集生成,根据数据之间的依赖关系,通过自计算的方式,得出在测试数据库上执行测试查询的正确结果,然后用于查询执行正确性验证。
[0018] 结果集生成机制如下:
[0019] 受益于确定性数据生成机制,数据之间存在依赖关系,通过主键约束链的形式表示当前查询操作下表中满足约束的元组的主键信息,不断地进行约束传递,最终表示出每
张表中满足查询的所有元组。之后按照连接序,构建连接结果,然后进行选择、聚合等运算
得出最终查询结果。
[0020] 基于上述方法,本发明还提出了一种面向分析型数据库的大规模随机负载生成及验证系统的实现,包括以下模块:
[0021] 随机数据库schema生成模块,根据自定义的schema生成配置文件,其中包括常用的schema配置项,生成随机的数据库schema;
[0022] 数据生成模块,采用确定性随机数据生成机制,即为数据表中的属性确定随机生成函数,使其属性值与主键值保持某种关联关系,根据属性生成函数,采用分布式控制器将
数据生成任务均匀划分到所有的数据生成器上,实现完全并行的数据生成,生成的数据先
以文本格式存储在生成节点,之后再批量导入数据库中;
[0023] 查询生成模块,采用数据感知的查询生成机制,基于支持的sql语法,首先生成符和语法和语义的具有参数化谓词的查询,之后,在查询参数实例化过程中,受益于确定性数
据生成机制,高效实例化满足特定约束的查询参数;
[0024] 结果集生成模块,根据数据之间的依赖关系,通过自计算的方式,得出在测试数据库上执行测试查询的正确结果,然后用于查询执行正确性验证。
[0025] 数据生成主要包含两个模块,一个是数值计算器,一个是数值转换器:数值计算器会使用每个属性对应的生成函数为其计算出一个数值,之后,数值转换器针对不同的数据
类型使用不同的方式进行转换;针对数值型数据类型,数值转换器根据数值计算器得出的
值进行精度调整;而针对字符型数据类型,根据字符串长度限制,先生成一组种子字符串,
然后根据数值计算器得出的值通过取余确定使用的种子字符串,再通过连接数值计算器得
出的值和种子字符串作为输出。
[0026] 本发明是一种面向分析型数据库(OLAP)的大规模随机负载生成及验证方法,可以生成大规模随机数据库、查询负载以及相应的查询执行结果,帮助高效地完成查询执行结
果正确性验证。
[0027] 参考文献
[0028] [1]A.Alexandrov,K.Tzoumas,and V.Markl.Myriad:Scalable and expressive data generation.Proceedings of the Vldb Endowment,5(12):1890‑1893,2012.
[0029] [2]N.Bruno and S.Chaudhuri.Flexible database generators,2006.
[0030] [3]J.E.Hoag and C.W.Thompson.A parallel general‑purpose synthetic data generator.Acm Sigmod Record,36(1):19‑24,2007.
[0031] [4]K.Houkjr,K.Torp,and R.Wind.Simple and realistic data generation.In Proceedings of the 32nd International Conference on Very Large DataBases,
Seoul,Korea,September 12‑15,2006,2006.
[0032] [5]E.Torlak.Scalable test data generation from multidimensional models.In Proceedings of the ACM SIGSOFT 20th International Symposium on the 
Foundations of Software Engineering,2012.
[0033] [6]A.Arasu,R.Kaushik,and J.Li.Data generation using declarative constraints pages 685‑696,2011.
[0034] [7]C.Binnig,D.Kossmann,E.Lo,and M.T.zsu.Qagen:generating queryaware test databases.In Acm Sigmod International Conference on Management of Data,
2007.
[0035] [8]Li Y,Zhang R,Yang X,et al.Touchstone:Generating Enormous Query‑Aware Test Databases[C]//Usenix Technical Conference.2018,pages 575‑586..
[0036] [9]E.Lo,N.Cheng,and  W.Hon.Generating  databases  for  query workloads.Proc.VLDB Endow.3(1):848‑859,2010.
[0037] [10]E.Lo,N.Cheng,W.W.K.Lin,W.K.Hon,and B.Choi.Mybenchmark:generating databases for query workloads.Vldb Journal International Journal on Very 
Large Data Bases,23(6):895‑913,2014.
[0038] [11]D.R.Slutz.Massive stochastic testing of sql.pages 618‑622,1998.
[0039] [12]H.Bati,L.Giakoumakis,S.Herbert,and A.Surna.A genetic approach for random testing of database systems.In International Conference on Very Large 
Data Bases,2007.
[0040] [13]T.Y.Chen,F.Kuo,R.Merkel,and T.H.Tse.Adaptive random testing:The art of test case diversity.Journal of Systems and Software,83(1):60‑66,2010.
[0041] [14]A.Shahbazi,A.Tappenden,and J.Miller.Centroidal voronoi tessellationsa new approach to random testing.IEEE Transactions on Software 
Engineering,39(2):163‑183,2013.
[0042] [15]N.Bruno,S.Chaudhuri,and D.Thomas.Generating queries with cardinality constraints for dbms testing.IEEE Transactions on Knowledge&Data 
Engineering,18:p.1721‑1725,2006.
[0043] [16]C.Mishra,N.Koudas,and C.Zuzarte.Generating targeted queries for database testing.pages 499‑510,2008.
[0044] [17]M.Poess and J.M.Stephens.Generating thousand benchmark queries in seconds.In Thirtieth International Conference on Very Large Data Bases,2004.
[0045] [18]C.Binnig,D.Kossmann,E.Lo,and A.Saenzbadillos.Automatic result verification for the functional testing of a query language.2008.
[0046] [19]S.A.Khalek,B.Elkarablieh,Y.O.Laleye,and S.Khurshid.Query‑aware test generation using a  relational  constraint  solver.In  IEEE/ACM 
International Conference on Automated Software Engineering,2008.
[0047] [20]Jackson and  Daniel.Alloy:a lightweight object modelling notation.Acm Transactions on Software Engineering&Methodology,11(2):256‑290,
2002.
[0048] [21]S.Abdul Khalek and S.Khurshid.In  IEEE/ACM International Conference on Automated Software Engineering,2010.
[0049] [22]S.A.Khalek and S.Khurshid.Systematic testing of database engines using a relational constraint solver.pages 50‑59,2011.
[0050] [23]C.Binnig,D.Kossmann,and E.Lo.Reverse query processing.In Data Engineering,2007.ICDE 2007.IEEE 23rd International Conference on,2007.

附图说明

[0051] 图1为设计架构。
[0052] 图2为属性生成函数。
[0053] 图3为属性生成器。
[0054] 图4为属性种子集。
[0055] 图5为sql语法示例。
[0056] 图6为随机生成的带有参数化谓词的查询。
[0057] 图7为R,S,T三表的依赖关系。
[0058] 图8为主键约束链表示。
[0059] 图9为本发明中算法1的示意图。
[0060] 图10为本发明中算法2的示意图。

具体实施方式

[0061] 结合以下具体实施例和附图,对发明做进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普通知识和公共常识,本发明
没有特别限制内容。
[0062] 本发明面向分析型数据库的大规模随机负载生成及验证方法,包括以下步骤:
[0063] 步骤一:随机数据库schema生成,根据自定义的随机schema生成配置文件,其中包括常用的schema配置项,生成随机的数据库schema;
[0064] 步骤二:数据生成,采用确定性随机数据生成机制,即为数据表中的属性确定随机生成函数,使其属性值与主键值保持某种关联关系,根据属性生成函数,采用分布式控制器
将数据生成任务均匀划分到所有的数据生成器上,实现完全并行的数据生成,生成的数据
先以文本格式存储在生成节点,之后再批量导入数据库中;
[0065] 步骤三:查询生成,采用数据感知的查询生成机制,基于支持的sql语法,首先生成符和语法和语义的具有参数化谓词的查询,之后,在查询参数实例化过程中,受益于确定性
数据生成机制,高效实例化满足特定约束的查询参数;
[0066] 步骤四:结果集生成,根据数据之间的依赖关系,通过自计算的方式,得出在测试数据库上执行测试查询的正确结果,然后用于查询执行结果正确性验证。
[0067] 本发明的实现包括以下模块:
[0068] 1.schema生成器(Schema Generator),根据自定义的随机schema生成配置文件,其中包括常用的schema配置项,如数据表个数、数据表大小、属性数目、外键数目、数据类型
出现的比例、字符串长度、索引概率等等,生成随机的数据库schema;
[0069] 2.数据生成器(Database Generator),采用确定性随机数据生成机制,即为数据表中的属性确定随机生成函数,使其属性值与主键值保持某种关联关系,根据属性生成函
数,采用分布式控制器将数据生成任务均匀划分到所有的数据生成器上,实现完全并行的
数据生成,生成的数据先以文本格式存储在生成节点,之后再批量导入数据库中;
[0070] 确定性随机数据生成机制如下:
[0071] 根据属性本身特征,为其确定多个随机生成函数,为每个属性值选择相应的生成函数使用数值计算器(Numerical Calculator)计算出一个值,之后使用数值转换器(Value 
Converter),根据数值计算器的值生成实际的属性值。针对不同的数据类型,数值转换器会
使用不同的方式;针对数值型数据类型,数值转换器根据数值计算器得出的值进行精度调
整;而针对字符型数据类型,根据字符串长度限制,先生成一组种子字符串,然后根据数值
计算器得出的值通过取余确定使用的种子字符串,再通过连接数值计算器得出的值和种子
字符串作为输出。
[0072] 3.查询生成器(Workload Generator),采用数据感知的查询生成机制,基于支持的sql语法,首先生成符和语法和语义的具有参数化谓词的查询,之后,在查询参数实例化
过程中,受益于确定性数据生成机制,高效实例化满足特定约束的查询参数;
[0073] 数据感知的查询生成机制如下:
[0074] 首先根据支持的sql语法,生成满足语法和语义的具有参数化谓词的查询,根据谓词形式的不同,采用随机计算或者蒙特卡洛算法进行参数实例化。
[0075] 4.结果生成器(Oracle Generator),根据数据之间的依赖关系,通过自计算的方式,得出在测试数据库上执行测试查询的正确结果,然后用于查询执行正确性验证。
[0076] 结果集生成机制如下:
[0077] 受益于确定性数据生成机制,数据之间存在依赖关系,通过主键约束链的形式表示当前查询操作下表中满足约束的元组的主键信息,不断地进行约束传递,最终表示出每
张表中满足查询的所有元组。之后按照连接序,构建连接结果,然后进行选择、聚合等运算
得出最终查询结果。
[0078] 基本架构
[0079] 基于上述的问题定义,系统的输入包含一个随机schema生成配置文件;系统的输出包含生成的数据库实例,查询负载和正确的查询执行结果。Artemis的基本架构主要包含
四个模块,分别是schema生成模块、数据生成模块、查询生成模块和结果生成模块,如图1所
示。
[0080] 随机schema生成:根据自定义的schema生成配置文件,生成随机的数据库schema,保证测试的多样性,随机schema生成的算法见图9:Algorithm 1;
[0081] 数据生成:采用确定性随机数据生成机制,即为数据表中的属性确定随机生成函数,使其属性值与主键值保持某种关联关系,根据属性生成函数,采用分布式控制器将数据
生成任务均匀划分到所有的数据生成器上,实现完全并行的数据生成,生成的数据先以文
本格式存储在生成节点,之后再批量导入数据库中;
[0082] 确定性随机数据生成机制如下:
[0083] 根据属性本身特征,为其确定多个随机生成函数,为每个属性值选择相应的
[0084] 生成函数使用数值计算器(Numerical Calculator)计算出一个值,之后使用数值转换器(Value Converter),根据数值计算器的值生成实际的属性值。针对不同的数据类
型,数值转换器会使用不同的方式;针对数值型数据类型,数值转换器根据数值计算器得出
的值进行精度调整;而针对字符型数据类型,根据字符串长度限制,先生成一组种子字符
串,然后根据数值计算器得出的值通过取余确定使用的种子字符串,再通过连接数值计算
器得出的值和种子字符串作为输出。
[0085] 图2展示了为某个属性att准备的生成函数,以及确定使用哪一个生成函数的Hit Function.。图3展示了属性值生成的流程。假设att的数据类型为字符型,图4展示了属性
att的随机种子集以及使用哪一个随机种子的Hit Fuction。主键id为3的元组对应的att的
值的计算过程如下。根据生成函数选择的Hit Function得出使用的生成函数为Func2(k),
使用数值计算器计算出的值为13,在数值转换器中,根据种子选择的Hit Function得出使
用的随机种子为vsd133thberth45,最终进行连接得到最终属性值为13#vsd133thberth45。
[0086] 查询生成,采用数据感知的查询生成机制,我们把查询生成分为两步,基于支持的sql语法,首先生成符和语法和语义的具有参数化谓词的查询,之后,在查询参数实例化过
程中,受益于确定性数据生成机制,高效实例化满足特定约束的查询参数;
[0087] 图5展示了一个查询生成语法样例,图6展示了一个根据示例语法随机生成的带有参数化谓词的查询,其中有4个参数。对于其中的点值参数p4,我们随机选择一个主键值计
算得出对应的T.t2值完成参数p4的实例化,对于其中的范围参数p1,p2,p3,我们随机为其确
定分位值,然后计算出该表达式的最大最小值,在该区间内使用二分查找和蒙特卡洛算法
进行参数实例化。
[0088] 结果集生成:根据数据之间的依赖关系,通过自计算的方式,得出在测试数据库上执行测试查询的正确结果,然后用于查询执行正确性验证。
[0089] 结果集生成机制如下:
[0090] 受益于确定性数据生成机制,数据之间存在依赖关系,通过主键约束链的形式表示当前查询操作下表中满足约束的元组的主键信息,在发生连接时,进行约束传递,最终表
示出每张表中满足查询的所有元组。之后按照连接序,构建连接结果,然后进行选择、聚合
等运算得出最终查询结果。
[0091] 结果生成的算法见图10:Algorithm 2.
[0092] 图7展示了数据表R,S,T之间的依赖关系。图8展示了对于查询select*from R innerjoin S on R.r1=S.s2,T where R.r3>3and S.s3<10and T.t2=8and T.t1=R.r2
的主键约束链表示和约束传递的过程。对于n1,n2,n3三个节点,它们分别将自身的过滤谓
词产生的约束转换为其主键约束信息。之后对于节点n4,R和S的连接使两张表发生了约束
传递,分别为两张表产生蓝色的全局约束。最后,对于节点n5,T和S的连接使两张表发生主
键约束信息传递,之后通过R表再传递给S表,最终三张表都产生橙色的全局约束。
[0093] 实验结论
[0094] 实验环境
[0095] 实验硬件配置:8个物理节点上,每个节点含有2个CPU,型号为Intel Xeon Silver 4110@2.1GHz CPU;内存为120GB;存储为4TB,RAID‑5,7200转的HDD磁盘。物理节点之间使用
千兆以太网通信。
[0096] 性能评测
[0097] 实验一:生成一个数据库实例,其中包含20张表,每张表的大小为106,每张表的非主键属性数为20,包含int,float,varchar,datetime,decimal五种数据类型且出现概率相
等。数据生成节点由一个不断增加到8个,观察数据生成时间。
[0098]数据生成节点数目 1 2 4 8
数据生成时间 25.337s 12.6724s 6.3412s 3.1695s
[0099] 实验二:生成一个数据库实例,其中包含20张表,每张表的非主键属性数为20,包含int,float,varchar,datetime,decimal五种数据类型且出现概率相等。每张表的大小分
6 6 6 6 6
别为10 ,2*10 ,3*10 ,4*10 ,5*10。数据生成节点数为1个,观察数据生成时间。
[0100] 6 6 6 6 6数据表大小 10 2*10 3*10 4*10 5*10
数据生成时间 25.286s 49.172s 74.708s 99.965s 124.257s
[0101] 实验三:根据schema生成器随机生成的schema,进行数据生成,然后生成1000条随机查询使用一个物理节点,最后计算出查询执行的结果。观察查询生成时间和查询结果计
算时间。把生成的数据导入MySQL5.7并执行相应的查询,验证查询的有效性,然后比较结果
集,验证计算的正确性。
[0102] 查询数 可执行的查询数 正确计算的查询数 平均生成时间 平均计算时间1000 1000 1000 0.541s 1.643s
[0103] 通过实验数据可知,本发明对于数据生成节点数和生成数据库实例的大小都是线性可扩展的,并且可以生成有效的查询负载然后计算出正确的执行结果,帮助我们高效地
完成结果验证。
[0104] 本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保
护范围。