首页 > 编程知识 正文

数据库的事务指的是什么,什么是事务 数据库

时间:2023-05-04 16:40:16 阅读:186794 作者:3958

事务

事务是作为单个工作单元执行的一组操作,例如查询和修改数据,甚至更改数据定义。

定义数据边界的方法有显式方法和隐式方法。 显式事务的定义必须以BEGIN TRAN语句开始。 如果要提交事务,则必须在COMMIT TRAN语句中显式终止事务。 如果不想增加事务,请在ROLLBACK TRAN语句中显式终止事务。

如果未明确定义事务边界,SQLServer缺省情况下会将每个语句作为事务。

事务需要四个属性:原子性、一致性、隔离性和持久性。

原子:在事务处理期间进行的所有修改要么全部执行,要么完全不执行。 如果系统在事务完成之前出现故障,SQLServer将取消对事务的更改。

一致性:用于防止事务在查询和修改时发生数据冲突。

隔离性:隔离性是一种控制对数据的访问的机制,用于确保事务只能访问期望一致性级别的数据。 SQLServer使用锁来隔离在事务之间更改和查询的数据。

持久性在将数据更改写入磁盘之前,始终写入事务日志。 这样,即使数据尚未写入磁盘,事务也可以被认为是持久性的。 这是因为当系统重新启动时,SQL Server也会检查数据库日志并进行恢复。

----------- 2021---- 06---- 25更新------- 25

一致性:交易开始和结束后,系统资源一致。例如,我在超市花10元买了巧克力。 钱包里少了10元,口袋里却多了巧克力。超市库存少了一块巧克力,但资产却多了10元

隔离性:在某个事务提交之前,其结果对其他事务是可见的; 例如,你的总资产是20元。 在超市花10元买巧克力,然后坐出租车需要20元。 这个有优先顺序。 买巧克力资产减少10元后,上车缺钱坐不了车。 或者买了巧克力后,想都别想,上车。 这是可能的。 这种隔离性体现在买巧克力和付车费两个方面

持久性:一项事务提出后,存储在硬盘或其他什么介质上? 总之,不会因为停电、断网、火灾、地震等因素而失去,但这也是相对的

SQL Server使用锁实现事务隔离属性。

锁定是用于保护数据资源的事务性获取资源的控制资源。 放置其他事务以争用数据或进行不兼容的访问。

独占锁:当您尝试更改数据时,事务会请求相关数据资源的独占锁。 授予后,事务将保留独占锁,直到事务完成。

共享锁:尝试读取数据时,事务默认请求对相关数据资源的共享锁,并在读取操作完成后立即解除对资源的共享锁。 在此模式下,多个事务可以同时在同一资源上拥有共享锁。

事务之间的相互约束关系是锁的兼容性。

让我们用简单的语言总结一下事务之间的锁的相互约束关系。 如果一个事务修改了数据,则其他事务将无法修改或读取该数据。 至少不能默认。 我知道第一笔交易已经完成了。 如果其他事务正在读取数据,则其他事务无法更改数据。 至少默认情况下不能更改,但可以读取。

可锁定的资源类型

SQL Server可以锁定各种类型或粒度的资源,如Row ID、KEY、PAGE、表等对象以及数据库。 行位于页面上,页面是包含在表或索引数据中的物理数据块。

要获得特定资源类型的锁,事务必须首先在更精细的级别获得相同模式的意向锁。 例如,为了获取某行的独占锁,事务必须在当前行的页上获取独占锁,然后在包含该页的数据对象上获取独占锁。

意向锁定的目的是有效检测高粒度水平的不兼容的锁定请求,防止不兼容的锁定。

SQL Server动态确定要锁定的资源类型。 当然,为了获得良好的并发性,最好只锁定所需的资源,即受影响的行。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。