有两个分区表(32个分区/16个文件/8个文件组)。第一个表有56列,第二个表有5列。应用程序的要求之一是测试未来工作负载的过程。我是在did应用程序中这么做的。将所有过程放在一个transaction controller中:
GetSomeDataFromNonPartitioneTable1GetSomeDataFromNonPartitioneTable2InsertNewTransaction (在两个分区表中插入新行)GetOneRecordFromPartitionedTableUpdatePartitionedTable在进行测试时(在被解析的表中有0行),每秒获得1300操作的性能(“一个操作”指的是一个又一个运行的过程集)。当在分区表( 4 000 000 )中获得记录(4 000 000 per table)时,我尝试了相同的测试(使用相同数量的虚拟用户)。每秒获得1050操作的性能。再深入一点,我的平均反应时间是:
1次测试(分区表中的0行)
GetSomeDataFromNonPartitioneTable1 - 22 msGetSomeDataFromNonPartitioneTable2 - 22 msInsertNewTransaction (在两个分区表中插入新行)- 160 msGetOneRecordFromPartitionedTable - 22 msUpdatePartitionedTables- 136毫秒2测试(分区表中约有4 000 000行)
GetSomeDataFromNonPartitioneTable1 - 25 msGetSomeDataFromNonPartitioneTable2 - 25 msInsertNewTransaction (在两个分区表中插入新行)- 217 msGetOneRecordFromPartitionedTable - 23 msUpdatePartitionedTables - 177毫秒我的问题:
发布于 2021-01-11 15:23:40
假设您使用的是(正如您的标记所暗示的那样),如果您使用的是JMeter,请确保您的测试直接在Server上运行,并且不涉及任何可能影响结果的中间人。我个人并不熟悉JMeter,但是两个测试之间最大的区别是大约57毫秒,这几乎不足以受到进程中任何可能的变量的影响。
虽然两个InsertNewTransaction测试之间的差异约为35%,但仍然只有57毫秒,这是非常小的。它甚至可以仅仅是一次测试与第二次测试的一次运行的区别,或者更多的外部因素,比如临时硬件闪点。在处理这样的粒度时间度量时,您必须运行大量的每个测试实例来进行平均和真正的比较。
尽管如此,一些一般性建议如下:
https://dba.stackexchange.com/questions/282992
复制相似问题