2

我们需要使用大约 500 万行插入对我们的 Oracle 数据库进行压力测试。根据我们的 DBA,唯一需要不同的列是主键或外键……所有其他列都可以相同。他说,如果我们这样做,那么 Oracle 在插入数据时不会做任何类型的缓存。

我只是想确保他是对的,并且通过这样做,压力测试结果几乎与使用随机数据一样准确。感谢您的帮助。

4

1 回答 1

2

在非常有限的情况下,DBA 是正确的。如果您的所有查询都是基于主键和外键的查找,那么它们可能是正确的。过去,当基于规则的优化器为王时,数据并不那么重要。记录计数,是的,但不是真正的数据。

然而,在现实世界中,情况并非如此。你还有其他索引吗?然后数据很重要。您是否加入了除主键/外键之外的其他事物?然后数据很重要。您的字符串都是 1 字节还是 null?我对此表示怀疑,这些变长字段的大小可能会影响IO的数量。基本上,对于非平凡应用程序中的任何非平凡模式,拥有“真实”数据可能很重要。Oracle 优化器在确定如何执行查询时会考虑大量统计信息。

你真的只在这个负载测试中做插入吗?这有点傻。500 万条记录按照现代标准来说是小菜一碟。台式机通常在几秒钟内完成。即使是简单的应用程序也会执行一些选择来进行查找,或者根据非键值获取一组记录。

您似乎很聪明,可以评估 DBA 的陈述。如果你能让他把它写下来,签字,当他的负载测试想法没有按预期工作时,责任落在他身上,那就太好了。不过,听起来你是这个测试的负责人。

如果我站在你的立场上,我会想用尽可能准确的数据进行负载测试。从生产系统或已知测试数据集复制比“随机”更好的选择,并且比“除了主键之外的空值”方法好光年。

于 2012-08-01T20:26:30.340 回答