美文网首页
数据库进阶

数据库进阶

作者: manbug | 来源:发表于2017-02-07 15:39 被阅读0次

    事务

    是一个操作序列,是并发控制的基本单位,为了维护数据库的完整性。比如说删除一个人员,要同时删除他的基本资料,还有相关信息,如文章,信箱等,这一系列语句构成事务。

    • 基本特征:ACID

    A:Atomicity 原子性, 一组事务,要么成功,要么撤回。
    C:Consistency 稳定性, 有非法数据(外键约束之类),撤回事务。
    I:Isolation 隔离性, 事务独立运行(100%隔离,牺牲速度),一旦一个事务运行后果影响其他事务,那么其他事务将撤回。
    D:Durability 可靠性,一旦软硬件崩溃,可以从日志中恢复(持久化)。

    脏读,不可重复读,幻读

    1. 脏读:一个事务读取了另一个事务未提交的数据,该事务可能回滚。
    2. 不可重复读:一个事务多次读取某数据,在该事务提交前,另一个事务访问了该数据(可能修改数据)。
    3. 幻读:事务不独立执行。比如事务1对表中数据进行修改的同时事务2向表中插入数据。

    redo/undo log

    1. undo log:数据修改前旧数据的备份,保证事务原子性。
    2. redo log:事务提交前新数据的备份,保证事务持久性。

    若数据库宕机时事务已提交,对比redo log,若未提交,对比undo log。

    锁类别

    乐观锁:别人的每个举动都觉得他会只读,更新时才加锁判断(像github)
    悲观锁:别人的每个举动都觉得他要修改,先加锁。
    表锁(表级锁:一次性锁定事务涉及到的表):
    开销少,加锁快,锁定粒度大,锁冲突概率高,并发度低,不会出现死锁。
    行锁:开销大,加锁慢,锁定粒度小,锁冲突概率低,并发度高,会出现死锁。
    页锁:性能介于表锁和行锁之间,会出现死锁。
    死锁:两个事务之间互有冲突,导致都锁住,无法完成。

    索引

    • 分类:
      1. 唯一索引:不允许任何两行具有相同索引。
      2. 主键索引:主键作为索引。
      3. 聚集索引:聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引。
    • 缺点:增加了数据的存储空间,增加和修改数据时花费时间变长。
    • 修改性能和检索性能是相互矛盾的。

    相关文章

      网友评论

          本文标题:数据库进阶

          本文链接:https://www.haomeiwen.com/subject/hbfmittx.html