1

我称之为扩展更新SQL 语句和PL/SQL过程。

当我的应用程序失去与数据库的连接或服务器停止等时,数据会发生什么?

如果是 SQL更新命令,我认为它会回滚。

对于 PL/SQL 过程,我假设代码执行在某个时间停止,任何先前的 提交命令都将被应用,但其余代码不会。

我对吗?

4

2 回答 2

2

是的,它应该回滚到最后一次回滚/提交调用。

于 2013-07-01T16:41:38.373 回答
0

这变得太长了,无法发表评论。

DDL 语句(截断、创建、删除……)隐式提交。因此,如果您在存储过程调用中执行此操作,那么无论您是否愿意,都将提交该语句之前的所有内容。如果 truncate 后 jdbc 会话丢失,之前的更改仍会提交。

是的,如果您在没有中间提交的情况下插入大量数据,事情可能会变慢。这通常是因为您正在构建回滚段。有一个大插入的最佳点,您一次插入一批,例如 1,000 条记录,在每批之后提交。

您所描述的似乎不像正常的事务活动,而更像是批量加载。如果您是批量加载,则保持状态以便您可以重新开始加载或在重播时丢弃已加载的记录。考虑像作为文件发送和导入(或使用外部表)之类的事情,而不是必须通过客户端连接插入。加速插入的APPEND提示和 INSERT子句(但请注意,数据库之后将不会处于典型的“可恢复”状态,应再次备份)。NOLOGGING

于 2013-07-02T11:26:40.077 回答