![]() |
1
1
如果在多次运行(比如1000条记录)中分解更新,对重做和撤消日志的更新量将不会减少。除此之外,与运行单个大型SQL相比,总查询时间可能更高。 没有真正的方法来解决更新中的撤消/重做日志问题。对于插入和创建表,您可以使用直接的aka append选项,但我想这对您来说并不容易。 |
|
2
1
取决于行的百分比几乎与数字相同。它还取决于更新是否使行比以前长。也就是说,每行从空到200字节。这可能会对性能链行产生影响。 不管怎样,你可能想试试这个。 生成一个新表,该表的列将作为选择的一部分而不是更新进行更正。您可以通过ctas(创建表作为select)构建新表,这可以避免日志记录。 删除原始表。 重命名新表。 重新索引、重新编译反指令、重新生成触发器、重新编译包等。 这样可以避免很多日志记录。 |
![]() |
3
0
任何更新都将生成重做。实际上,更新所有行的单个更新将生成最小的重做总量,并在最短的时间内运行。 假设您正在更新表中的绝大多数行,如果有任何索引使用了列,那么最好在更新之前禁用这些索引,然后在执行大规模更新语句之后使用nologging重新生成这些索引。此外,如果有任何触发器或外键由于更新而需要被激发/验证,那么暂时消除这些触发器或外键可能会有所帮助。 |
![]() |
maddy · 如何根据oracle SQL中的某一列值进行排名 2 年前 |
![]() |
kiric8494 · 显示以元音开头和结尾的城市名称 3 年前 |
![]() |
Franz Biberkopf · Oracle:组合子查询和聚合函数 3 年前 |
![]() |
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 3 年前 |
![]() |
Arifullah · 如何从oracle中的列中删除特定的初始字符? 3 年前 |
![]() |
Anar · Oracle SQL用户定义函数 3 年前 |
![]() |
user1312312 · 如何为一组表编写通用触发器? 3 年前 |