事务

多用户数据库:数据库系统可以允许多个用户查询或者修改数据。如果每个人都只执行查询操作,则数据库服务器可以正常工作。如果有多个用户同时添加或者修改数据,那么服务器就需要多更多的记录。


锁是数据库服务器用来控制数据资源被并行使用的一种机制。

当数据库的一些内容被锁定时,任何打算修改这个数据的用户必须等到锁被释放。

  • 数据库的写操作必须向服务器申请并获得写锁才能修改数据,而读操作必须申请和获得读锁才能查询数据。多用户可以同时读取数据,而一个表一次只能分批一个写锁,并且拒绝读请求直至写锁释放。
  • 数据库的写操作必须向服务器申请并获得写锁才能修改数据,而读操作不需要任何类型的锁就可以查询数据。另一方面,服务器要保证从查询开始到结束读操作看到一个一致的数据视图。

第一种在有较多的并行读请求和写请求时等待时间过长。第二种在修改数据时存在长期运行的查询也会有问题。

锁的粒度
  • 表锁:阻止多用户同时修改同一个表的数据。
  • 页锁:阻止多用户同时修改某表中同一页(一页通常是一段2~16KB的内存空间)的数据。
  • 行锁:阻止多用户同时修改某表中同一行的数据。

表锁可以使用较少的记录就可以锁定整个表,但用户增多时它会迅速产生不可接受的等待时间。行锁需要更多的记录,但是只要各个用户的兴趣在不同的行,就可以允许多人修改同一个表。


事务

事务是一种将多条SQL语句聚集到一起,并且能够实现要么所有语句都执行,要么一个也不执行(这个属性称为原子属性)。

从储蓄账户划转500到支票账户。如果成功从储蓄卡成功支取却没有存入支票账户,则进行rollback命令插销服务器自事务开始时的所有变化。否则,如果事情成功,则发出commit命令结束事务。
当程序完成了事务,并发出了commit命令,还没有将表话持久化到永久存储区,服务器就宕机了,那么服务器重新启动时数据库必须重新应用事务的变化(这种属性称为持久性)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值