近期
我们与欧洲的合作伙伴一起
共同实施了一次SQL性能基准测试
缘起
缘起很简单:InterSystems始终坚持的目标,就是让我们新发布的产品永远要比以前更快!
新版发布
中国,北京,5月26日 - 全球医疗、商业和政府信息技术领导者InterSystems今天发布InterSystems
IRIS数据平台2019.1版。这是旗舰产品InterSystems
IRIS的第三个版本,性能和可扩展性更强,提升了对云、集成功能的支持,增强了对Java、Python和C#开发能力的支持。
点击查看全文:新闻全文
除了利用分布式数据的功能之外,InterSystems IRIS数据平台还提升了其单实例SQL处理,也就是:
- 普遍使用并行查询执行
- 改进了查询优化器的启发式和逻辑
- 增强代码生成
- 内核更新,以便更有效地访问数据
测试过程
我们同欧洲的应用合作伙伴一起实施了这次基准测试。他们的ERP有一 个基于Java的前端,可以访问跨7个数据库的复杂SQL模式。除了SQL引擎,该应用还利用了InterSystems商业智能技术,内嵌了ad-hoc分析和仪表盘功能。
在准备过程中,我们记录了来自生产系统的100多万条SQL语句,包括通过JDBC提交的手工编码和应用程序生成的查询,以及Hibernate生成的查询。这个工作负载包含大约800个不同的SQL查询,它们在运行时参数各不相同,能够代表实际应用程序的使用情况。测试集包含简单的查询和高度复杂的查询,具有复杂的聚合、使用IN和%INLIST约束的WHERE子句以及子查询的广泛使用。用于测试的数据集为40GB。
从这个测试集中我们选取了50万条连续SQL语句作为标准基准。为了执行这一基准测试,查询经过编译后,整个数据集查询(selection)运行两次,我们采用第二次运行的吞吐量数字来表示正常操作中的“热”缓存。查询序列以单个进程执行,以保持它们的自然顺序以及对SELECT 查询之间发生的数据更新的依赖关系。为了关注SQL性能,从数据库中发出查询,从而忽视JDBC驱动程序和Hibernate的影响。
我们选取三个InterSystems数据平台版本
我们在三个InterSystems数据平台版本上进行了这次基准测试:
InterSystems Caché 2017.2.2
InterSystems IRIS 2018.2,并行查询执行关闭
InterSystems IRIS 2019.1,并行查询执行关闭
InterSystems IRIS 2019.1,并行查询执行开启(默认)
所有测试运行在同一虚拟机上,分配24GB的全局缓冲区和512MB的例程缓冲区。
下图显示了在三个数据平台上测试的总持续时间,并显示了最新版本的InterSystems IRIS数据平台在开启并行执行时处理整个查询集的时间减少了55%,在关闭并行执行时减少了28%(并行查询执行利用多个进程来计算单个查询的结果。在InterSystems IRIS 2018.2中,它是默认打开的)。任何性能改进都不需要对模型、查询或底层硬件做任何更改。因此,我们相信迁移到InterSystems IRIS的SQL用户将看到类似的结果。
在测试期间进行的更详细的测量中,我们观察到一个有趣的结果——虽然吞吐量增加了30%以上,但是原始数据访问(global引用)的数量也增加了15%以上。
结果
我们总结出两点。
首 先 内核更新成功地加快了系统级原始数据访问速度。
其 次 我们的查询优化正在做出更明智的选择,选择某些查询计划,这些计划乍一看需要读取更多的数据并导致运行更慢,但却正确地估计实际数据布局的影响,因为某些数据结构确实比其他一些数据结构读取效率更高。
这次客户基准测量清楚地表明:InterSystems在改善平台性能方面的持续投资为我们的用户带来了回报。测试在不需要对模型或应用程序代码进行任何更改的前提下,严格量化了来自升级的性能收益。我们鼓励客户和合作伙伴迁移到InterSystems IRIS的新版本平台上,建议不仅要评估升级带来的直接收益,也要评估采用随这些版本引入的新功能带来的好处。