我试图比较视图在添加索引之前和之后的性能。所以我试图使用下面的查询来衡量它的性能:
create table qtemp.ffs as (select * from psavlldsvw) with data
Statement ran successfully (1,932 ms = 1.932 sec)
上面的语句是我使用的,其中psavlldsvw是视图名称。
正如您可能猜到的,这个想法是为了测量在这两种情况下完成上述查询所需的时间。
我能得到一些反馈吗?这种方法比较起来有多好?
1条答案
按热度按时间vmdwslir1#
果然没有任何意义......
首先,这个问题的措辞很糟糕,你不能也不是在测试视图。视图在Db2 for i上是性能中立的。
运行一条语句、添加一个索引并重新运行该语句是一个毫无意义的测试。Db2 for i内置了各种技巧来提高重复语句的速度。其中
从全新连接开始,您可以对陈述式所指涉的每个数据表使用
SETOBJACC OBJ(YOURLIB/YOURFILE) OBJTYPE(*FILE) POOL(*PURGE)
,以确保内存中没有数据。现在多次运行该语句;如果系统默认值未更改,则至少为3。您应该看到前几次迭代比后几次迭代慢。这是由于重复语句的数据访问路径处于打开状态。
现在,添加索引,断开/重新连接,从内存中清除对象,然后再次运行测试。
根据陈述式的使用案例,您可能想要将重点放在第一次反覆运算的效能或后续的反覆运算。
Mao是正确的,因为使用Visual Explain(VE)是查看是否正在使用索引或了解查询如何执行的最佳方法。
最后要认识到服务器上的负载会影响查询引擎的运行方式。查询引擎优化器将计算您的作业所占的内存“公平份额”,该值将影响一些更高效但内存密集型的计划。因此,如果您在非生产环境中进行测试,而该环境在资源、数据大小和负载方面并不完全匹配生产环境,当查询被移动到Prod时结果可能不同。
性能调优是一门艺术,一门科学。通常,使用VE来确保你有一个像样的查询开始。然后监视实际的生产使用,以确保它按预期执行。