Oracle性能问题

时间:2009-11-19 16:07:46

标签: oracle

我想知道你是否有一张包含2400万条记录的表格,这对影响性能(每次插入/更新/删除)的影响是如何花费更长的时间来完成的?

这是我们的审计表,所以当我们在其他表中进行更改时,我们会记录到审计故事,是否还需要更长的时间来执行这些更新?

5 个答案:

答案 0 :(得分:1)

正确答案是“它取决于”,当然......

但据我所知,您关注的是审计表如何影响审计表增长时查询(在其他表上)的性能。

可能只会插入到Audit表中。插入时间不依赖于表中已有的数据量。因此,无论审计表有多大,它都应该同等地影响性能(假设数据库设计并不是非常糟糕)。

当然,选择或删除审计表时,当表格增长时, 可能需要更长的时间。

答案 1 :(得分:1)

如果我将您的问题读作“大型Oracle表需要更长时间进行IUD操作”,一般来说答案是否定的。我认为从这个表上的索引可以感受到对插入/更新/删除操作的最大影响(更多索引=这些操作的性能降低)。

但是,如果您的审计逻辑需要以某种不使用主键或唯一键的方式查找审计表中现有行的过程逻辑,那么对于大表将会对性能产生影响。

答案 2 :(得分:0)

关于插入/更新/删除的发生速度,有许多因素可以发挥作用。例如,桌子上有多少个索引?如果表具有许多索引并且您插入/更新表,则可能导致操作花费更长时间。如何将数据存储在数据库的物理结构中(例如,如果您使用的是Oracle,那么表空间)?您的索引和数据是否在单独的磁盘上,这有助于加速I / O?

显然,如果您正在编写审计记录,那么它可能会影响性能。但是在一个调整良好的数据库中,它不应该放慢到足以让你注意到的地方。

我用于审计表的方法是在主表上使用触发器,这些触发器会写出审计记录。但从性能角度来看,它实际上取决于很多因素,主表的更新速度有多快。

如果您使用的是Oracle,我建议您查看解释计划输出中的一个慢速更新(其他数据库通常也有这样的工具,谷歌可以在这里提供帮助)。然后,您可以查看优化程序生成的计划,并诊断出问题的位置。您可能会让DBA帮助您,以帮助找出造成缓慢的原因。

答案 3 :(得分:0)

我怀疑与表格大小相比,性能与争用更相关。通常,插入发生在表的“结尾”。插入到该表中的会话必须在块写入记录时锁定块。在此期间,其他会话可能必须等待该块(您可能会看到繁忙的缓冲区等待事件)。

但实际上你需要查看有问题的SQL,看看他们在等什么,以及他们是否对不可接受的性能水平做出了重大贡献。然后根据导致问题的特定等待事件确定行动方案。

查看Cary Milsap关于性能调整的任何内容

答案 4 :(得分:0)

对于INSERT,DELETE和UPDATE操作,表大小的影响是不同的

Insert语句不受表大小的影响,因为当我们将数据插入表时,它将添加到下一个可用的数据块。如果该特定表上有索引,则Oracle必须在插入数据之前搜索特定数据块该块,需要搜索操作需要时间。

删除和更新语句受表大小的影响,因为搜索特定行需要更多时间来删除和更新操作