2009-11-19 64 views
1

我想知道如果您有一张包含2400万条记录的表,那么对性能的影响(每次插入/更新/删除)是否会花费更长的时间?Oracle性能问题

这是我们的审计表,所以当我们在其他表中更改更改时,我们会记录到审计报告中,是否也需要更长时间才能执行这些更新?

回答

0

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

很明显,如果你写出审计记录,那么它可能会影响性能。但是,在一个调整良好的数据库中,它不应该放慢速度,直到您注意到的地方。

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

如果您使用的是Oracle(其他数据库通常也有这样的工具,Google可以在这里帮助),我会建议您查看解释计划输出的慢速更新之一。然后,您可以看到优化程序正在生成什么计划并诊断问题出在哪里。您可能会得到一位DBA来帮助您,以帮助找出导致缓慢的原因。

1

正确的答案是“看情况”,当然...

但据我得到的,你关注的是在审计表如何影响查询的性能(其它表)时,审计表的增长。

您可能只会插入您的审核表。插入时间不取决于表中已有的数据量。因此,不管审计表有多大,它都应该同样影响性能(因为数据库设计不是非常糟糕)。

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

1

如果我把你的问题看作“Oracle的大型表格是否需要更长的IUD操作时间”,一般来说,答案是否定的。我认为对插入/更新/删除操作影响最大的是来自此表上的索引(更多索引=这些操作的性能较低)。但是,如果您的审计逻辑需要以某种不使用主键或唯一键的方式在审计表中查找过程逻辑的现有行,那么会对大表产生性能影响。

+0

为什么?你的意思是{从表格中删除所有(与10.000)}将采取{从表中删除所有(与10.000.000)}>“一般来说答案是否定的”<你是绝对错误的! – magulla 2014-03-06 18:24:22

0

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

但实际上,您需要查看相关的SQL并查看它们正在等待什么,以及它们是否对性能无法接受的性能产生重大影响。然后根据导致问题的具体等待事件确定行动方案。

退房从卡里米尔萨普任何性能调优

0

表大小的影响是INSERT不同,删除和更新操作

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

DELETE和UPDATE语句由表大小的影响更多的数据更多的时间需要寻找特定的行删除和更新操作