在线是否有一些关于如何调整oracle以进行大量插入和少量读取的一般指导原则?
以下所有答案都是非常好的建议。我必须澄清以下事项。我使用的是10g,这是我们使用Oracle的绝对要求。我也对用于调优的oracle实例参数(可能是一些不同的锁定策略)更感兴趣。
答案 0 :(得分:2)
让我假设您想要进行过多的插入操作,因此您只需要忽略所有其他类型的操作,只是为了完成这些插入,而不会出现问题。
首先,您是否完全排除了其他类型的数据库?像工业数据库这样的系统可以很好地处理大量插入,通常用于接收和存储在工厂环境中测量某些东西的设备的数据。 Oracle是一个关系数据库,它可能不是满足您需求的正确软件类型。
话虽如此,我们假设您可以,或将会或应该使用Oracle。您需要做的第一件事是考虑您做出此假设所需的所有各种类型的数据。如果它们都是相同类型的数据,那么您需要1个表格,并且它需要精简并且意味着插入。
最佳方法是执行以下操作:
如果您可以拆分数据,请考虑将其拆分,使其存储在不同的物理磁盘上。这样,磁盘I / O问题就不会是跨数据类型的,只会影响一种类型的数据。
在光谱的另一端,你有一个非规范化的表,其中有许多索引针对查找和更新之间的平衡进行了优化,你需要找到一些可以获得所需性能的中间方法。
答案 1 :(得分:1)
就数据库设计而言,尽可能少的约束,索引和触发器插入到这些表中会降低插入速度。
缺少索引会明显损害您的SELECT性能,但听起来这并不是您主要关注的问题。
答案 2 :(得分:0)
我们在谈论什么样的应用?什么版本的Oracle?
例如,如果您正在设计数据仓库加载过程,通常需要将直接路径插入到临时表中,然后构建任何必要的索引,然后执行分区处理以将数据加载到分区目标表。当然,如果您正在进行单行插入,这也不会起作用。
根据Oracle版本和应用程序类型,您可能还希望在表上启用压缩。从CPU的角度来看,插入通常很便宜,因此可能有足够的CPU可用于压缩,这可以大大减少所需的I / O量,这通常是您的瓶颈。
答案 3 :(得分:0)
我建议您将问题提交给Tom Kyte的网站 http://asktom.oracle.com 。你通常可以在那里找到答案。否则,请尝试 Oracle's forums 。
还可以尝试查找任何Tom Kyte的书籍。建议检查图书馆或当地书店以找到合适的书店,以确保书中包含适合您的主题。此外, his blog 可以链接到他的书籍以及每本书的一些文章/讨论。
我做了一个快速谷歌,网站:oracle.com调优写,并找到了这个 的 OracleAS TopLink Writing Optimization Features 即可。我意识到你可能没有使用TopLink,但它可能有一些很好的提示。您想要尝试使用的关键字:调整,性能,插入,改进。通过您使用的技术,如java / c ++ / etc。
您可以尝试的其他提示:
您可能必须开始在查询/实施上运行一些性能分析,以找到每个查询/最佳位置的最佳位置。我希望我能给你一个简单的答案。祝好运!
答案 4 :(得分:0)
有几条建议供您进一步研究: -