复试2--数据库

数据库

1. E-R模型理解需求并建模的步骤

1.1 chen方法

  1. 理解需求,寻找实体;
  2. 用属性刻画每一个实体;
  3. 确定每个实体的key;
  4. 数据建模的重点是分析实体之间的联系。标记联系基数很重要。不同基数可能会导致不同设计方案。
  5. 检查是否覆盖了需求

1.2 crow’s foot方法

2. 信息

信息抽象与具体化,需要知道哪些需要描述,哪些问题相关?

数据库设计往往因为忽视了**信息(之间联系)的细致分析而造成设计失误。数据库设计能力的高低往往体现在信息(及其联系)**的正确分析上,体现在理解现实世界能力的高低。

3. 事务

1.并发控制思想

在这里插入图片描述

  • 时间戳

    • 采用系统时间作为时间戳,只要确保调度器在一个时钟周期内不会调度两个以上事务的;
    • 采用计数器,单调递增,作为事务的逻辑时间戳;

    为了使用时间戳进行并发控制,在每一个数据库元素上需要两个时间戳和一个提交位,即:

    • RT(X),X最近一次被读取的时间戳;
    • WT(X),X最近一次被写入的时间戳;
    • C(X), X的提交位,表示最近一次X的修改是否已经被提交;该位主要目的是避免U对X进行修改,T读取X,而U最后被中止的情况;
  • 有效性确认

    2.1 数据结构

    对于每一个事务T,将维护读集合RS(T)和写集合WS(T),并且将事务分成三个阶段:

    1. **读。**读取数据库中所有所需的元素RS(T),并做相对应的计算;
    2. **有效性确认。**比较该事务与其他事务的读写集合确认事务T的有效性;
    3. **写。**经过有效性确认后,事务往数据库中写入其集合中元素的值;

    此外,调度器还需要维护下面三个集合:

    1. START,已经开始但未完成有效性确认的事务集合,并记录每个事务的开始时间START(T);
    2. VAL,已经确认但未完成的事务集合,并记录事务的开始时间START(T)和确认时间VAL(T);
    3. FIN,已经完成写阶段的事务,将记录事务的开始时间START(T)、确认时间VAL(T)和结束时间FIN(T)。

    2.2 有效性确认规则

    基于以上数据结构,调度器将根据这些数据做出正确的判断规则,具体如下:

    1. 假如事务U,有:
      1.1 U在VAL中,即事务U已经被确认;
      1.2 FIN(U) > START(T),事务T开始时,U未结束;
      1.3 RS(T) and WS(U) 不为空;

    事务T在事务U后开始,但是事务T可能读X在事务U写之前,存在事实上不可实现。即后开始的事务读到的值是旧值,此时需要将事务T进行回滚。

    1. 假如事务U,有:
      2.1 U在VAL中,U已经完成有效性确认;
      2.2 FIN(U) > VAL(T), 事务T确认之前,事务U没有结束;
      2.3 WS(T) and WS(U)不为空,如X;

    以上条件下,如果确认事务T,那么事务T就可能在事务U之前写入X,而产生事实上不可实现,因此需要对T进行回滚。

    以上两个条件是有效性确认必须要满足的规则。

  • 总结

    这里将对封锁,时间戳,有效性确认三种并发控制进行简单分析总结。

    封锁:在写冲突较多的时候,封锁具有更高的性能,因为封锁过程中,将推迟事务。但是封锁的锁空间与被封锁元素的个数成正比。

    时间戳:乐观的并发控制在冲突较少时,即只读事务较多时性能较好。但是在高冲突情况下,将会产生大量的回滚,降低性能。同样地,所需的空间与数据库元素成正比,但是在一些实现中,往往将长时间不访问的看作是“最小时间戳”,可以对空间进行优化。

    有效性确认:空间与当前活跃的事务成正比;且需要回滚时,相比于时间戳,有效性确认方法一般较晚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值