我正在为我的ASP.NET网站使用Oracle Datbase 10g标准版。我有一个表,它将填充每天的数据(每天大约10000行)。该表中数据的增长率是100%,也就是说,每年的行数都会增加之前的10000行。
这是报告的主表,如graphical和crystal。
我知道当数据增加时,select查询性能会降低。在这里,我希望您能帮我调优我的Oracle数据库/表,以便select查询的性能始终保持良好?
我的甲骨文不是很好。请帮帮我.............
发布于 2009-09-08 09:13:57
实际上,没有理由认为性能会随着表的增加而降低。如果您的查询使用索引来检索单独的行或焦点集(即索引范围扫描),那么随着表的增长,性能应该保持稳定。这在一定程度上取决于您的数据配置文件。低聚类因子的索引将继续执行,但高聚类因子的索引将降级。Find out more。
您几乎肯定会遇到问题的是运行不使用索引或使用索引快速全扫描的查询。随着表的增长,这样的查询显然会随着时间的推移而降低。为了处理这种情况,您可以构建预聚合数据的物化视图。
最好的一般建议是
发布于 2009-09-08 08:04:56
真的很简单,确保你的索引和你的查询匹配。检查你的解释计划,通常的神谕东西--仔细阅读这个主题,你会发现很多信息!
这取决于查询是如何运行的。如果您的查询只拉回一个月的数据,那么按月分区可以带来巨大的好处。那么你只会达到你原本会达到的数据量的1/12。但是,如果查询没有以这种方式受到约束,那么这可能没有什么帮助。
最后,请确保您不是为了在报告中总结所有数据而阅读所有数据。因此,如果要执行此操作,请考虑创建一个夜间作业来创建聚集表,并对其进行查询。
哦;另外,如果插入速度是个问题,您可能希望保持较低的索引数-如果是这样的话,您可能需要有一个单独的报告表,用于插入实时数据的表,然后每晚同步数据。
发布于 2009-09-08 17:44:22
生成额外的测试数据,并在性能确实下降时进行测试。也许你什么都不用担心:)
https://stackoverflow.com/questions/1392569
复制相似问题