数据库

同步和互斥

  • 互斥显而易见就是不能有两个或多个进程访问临界区
  • 但是进程想要合作,例如生产者和消费者问题,如果有一个数据池,生产者和消费者想要同时访问的的话,也是可以的,只要做好同步就可以了。例如可以用一个变量full记录数据池里数据的量,另一个变量empty记录数据池里“空”的量
    在进行写操作的时候的命令是:
    P(empty)
    ...
    V(full)

    在进行读操作的时候的命令是:
    P(full)
    ...
    V(empty)

    而多个线程同时写的问题,则要用互斥来解决了

死锁

  • 原因和必要条件
    产生死锁的基本原因是多个进程竞争资源与进程推进顺序不当
    永久性资源产生死锁有4个必要条件:互斥条件、请求和保持条件、不剥夺条件和环路等待条件
  • 解除死锁
    从系统中解除或者挂起一些死锁线程

数据库并发操作常见问题

  • 丢失更新
  • 不可重复读
    在两次读同一数据项A时却读出了不同的值
  • 读脏数据
    把未提交的随后被撤销的数据称为“脏数据”

X锁和S锁

  • X锁
    排他型封锁,不允许其他事务T再对该数据加任何类型的锁,并发度较低。
  • S锁
    共享型封锁,加S锁后可以再加S锁,但是决不允许任何事务对该数据加X锁。获准S锁的事务只能读数据,不能更新数据,若要更新,则先要把S锁升级为X锁,另外,由于S锁只允许读数据,因此解除S锁的操作不必非要合并到事务的结束操作中去,可以随时根据需要解除S锁。

事务

  • 定义
    事务(transaction)是构成单一逻辑工作单元的操作集合,不论发生何种情况,DBS必须保证事务能正确、完整地执行。
    事务相当于操作系统环境中的“进程”概念,一个事务由应用程序中的一组操作序列组成,在程序中,事务以BEGIN TRANSACTION语句开始,以COMMIT语句或ROLLBACK语句结束。
  • ACID
    原子性(Atomicity)
    一致性(Consistency)
    隔离性(Isolation)
    持久性(Durability)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值