我们需要使用大约500万行插入对Oracle数据库进行压力测试。根据我们的数据库管理员的说法,唯一需要不同的列是主key...all或外部列,其他列可以是相同的。他说,如果我们这样做,那么Oracle在插入数据时将不会进行任何形式的缓存。
我只想确保他是正确的,并且通过这样做,压力测试结果将几乎与使用随机数据一样准确。谢谢你的帮助。
发布于 2012-08-02 04:26:30
在极少数情况下,DBA是正确的。如果您的所有查询都是基于主键和外键的查找,那么它们可能是正确的。在过去,当基于规则的优化器是王道时,那么数据并不重要。记录数,是的,但不是真正的数据。
然而,在现实世界中,情况并非如此。你还有其他的索引吗?那么数据就很重要了。除了主键和外键之外,你还会加入其他东西吗?那么数据就很重要了。你的字符串都是1字节的还是空的?我对此表示怀疑,这些可变长度字段的大小可能会影响IO的数量。基本上,对于非平凡的应用程序中的任何平凡的模式,拥有“真实的”数据都是非常重要的。Oracle优化器在确定如何执行查询时会考虑各种统计信息。
在这个负载测试中,你真的只做插入吗?这有点傻。以现代标准衡量,500万条记录只是一小部分。通常情况下,桌面在几秒钟内就能做到这一点。即使是简单的应用程序也会执行一些select操作来进行查找,或者根据非键值获取一组记录。
您似乎足够聪明,能够评估DBA的声明。如果你能让他把它写下来,在上面签字,当他的负载测试想法不能像预期的那样工作时,责任落在他身上,那就太好了。不过,听起来你才是这次测试的负责人。
如果我处在你的位置,我会希望用尽可能准确的数据进行负载测试。从生产系统或已知的测试数据集复制数据比“随机”方法好得多,比“除主键外的空值”方法好得多。
https://stackoverflow.com/questions/11766680
复制相似问题