如何解决数据库问题-事务
|| 数据库处于不一致状态意味着什么? 我知道这与交易有关,但不完全清楚这意味着什么?解决方法
这意味着数据不一致,可能是因为某些表已更新而未更新相关表。
,一般而言,这可能意味着几件事:损坏的数据库文件(在Access中经常发生)或事务仍在处理中或未完成,或者与数据库相关的文件处于打开状态。一旦“工作”完成,状态应返回到“一致”。
,假设您有银行业务应用程序,但没有使用交易。您打算将资金从一个帐户转移到另一个帐户,首先您要执行
update balance set value = value + $20 where account = account2
之类的操作,然后执行update balance set value = value - $20 where account = account1
之类的操作。现在,让我们说说这些查询之间发生了一些不好的事情(服务器崩溃,客户端提交查询崩溃,甚至另一个客户端进入了中间的查询并弄乱了事情)...您的数据库有问题。
对于事务,您的多个查询将是原子的。那就是..全部或全无-在您提交了完整的事务之前,没有其他客户端可以看到您的部分更改,并且没有其他更改,数据库将不会记录一个更改。
余额多少有些微不足道,有些人为的,但是当向多个表中添加多个条目(每个表都想要关联)时,很容易发生相同类型的问题。
,典型情况发生在具有并发流程的事务环境中,解释如下:
进程1从表A请求数据
进程2从表A请求数据
流程1更新表A中的数据
流程2使用表A中的未更新数据进行详细说明
这会导致流程2的结果不一致。
例如,进程2可能尝试更新表A中的数据:因此,丢失了进程1进行的更新。
解决此问题的一种典型方法是在第一步中在表A中引入锁,直到进程1结束(使用COMMIT或ROLLBACK),以便在释放锁之前其他进程无法使用相同的资源。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。