使用通过Perl DBI访问的Oracle 10g,我有一个表,该表具有每秒更新几千万行的行,每秒更新几次,同时从另一个进程中更频繁地读取该行。
不久,更新频率将增加一个数量级(可能是两个)。有人建议,每执行N次更新,而不是每次更新,都将有助于提高性能。
我有几个问题:
编辑:
@codeslave:谢谢,顺便说一句,丢失未提交的更改不是问题,在确定一切正常之前,我不会删除用于更新的原始数据,顺便说一句,清洁女工确实拔下了服务器的电源,TWICE :-)
一些谷歌搜索显示它可能由于与回滚段相关的问题而有所帮助,但是我仍然不知道每隔几十个N的经验法则吗?几百个?一千?
@diciu:很好的信息,我一定会调查一下。
提交导致 Oracle 将内容写入磁盘 - 即写入重做日志文件,以便在发生电源故障等情况下可以恢复所提交的事务所做的任何操作。写入文件比写入内存慢,因此如果对连续的许多操作而不是对一组合并的更新执行提交,提交将会更慢。
在 Oracle 10g 中,有一个异步提交,它的速度更快,但可靠性较低:https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6158695.html
PS 我确信,在我在某个应用程序中看到的场景中,将合并更新的数量从 5K 更改为 50K 会使速度快一个数量级(快 10 倍)。
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |