0

我已经编码多年,但前段时间我问自己这个问题。在我的大学里,我从未见过这个问题得到解决。我对此非常好奇。

那么,关于代码和 CPU 到底会发生什么?我对代码很好奇。

例如,如果您正在运行一个桌面程序并且您正在向数据库中插入数据,那么在我上面提到的场景中会发生什么?

MyDBConnection cn = new MyDBConnection();
cn.start();
cn.beginTransaction();
cn.insertData("INSERT INTO T_TABLE VAVLUES(1,2,'WHITE LIES')");
cn.insertData("INSERT INTO T_TABLE VAVLUES(1,3,'BLACK LIES')");

-------------------------------------------------------------------
Enery power off, application hang for whatever reason.
-------------------------------------------------------------------

cn.insertData("INSERT INTO T_TABLE VAVLUES(1,4,'VOID LIES')");
cn.commit();
cn.close();

之后会发生什么?没有什么?

数据被破坏(据我认识的人说)?有回滚或 RAM 获得空闲或挂起?操作系统试图恢复进程?

任何人都知道一些程序来忍受这些事故?

4

1 回答 1

0

电源有时会出现故障,即使您是一家大型银行,每台服务器运行双电源并采取了可以采取的所有其他预防措施(例如 UPS、备用发电机)。

出于这个原因,数据库被设计为在您使用数据库事务时经受住突然的故障。当数据库在突然断电后上电时,会使用日志/事务日志来保证数据库处于一致状态。

于 2012-07-06T22:05:47.110 回答