什么是事物?有什么特性?分别怎么实现?

  • 事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
  • ACID
    • 原子性(Atomic) 一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
    • 一致性(Consistency) 在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
    • 隔离性(Isolation) 事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。
    • 持久性(Durability) 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
  • 数据库管理系统采用日志来保证事务的原子性、一致性、持久性,日志记录了事务对数据库所做的更新,如果某个事务在执行过程中发生错误,就可以根据日志,撤销事务对数据库已做的更新,使数据库退回到执行事务前的初始状态; 采用锁机制来实现事务的隔离性,当多个事务同时更新数据库中相同的数据时,只允许持有锁的事务能更新该数据,其他事务必须等待,直到前一个事务释放了锁,其他事务才有机会更新该数据

什么是索引?有什么作用?

  • 索引是对数据库表中一或多个列的值进行排序的存储结构。数据库的索引类似于书籍的目录,在数据库中,索引允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。
  • 每当有记录在表中增减或索引列被修改时,索引本身也会被修改,使用索引查询不一定能提高查询性能,索引范围查询适用于两种情况:
    • 基于一个范围的检索,一般查询返回结果集小于表中记录数的30%
    • 基于非唯一性索引的检索
  • MySQL数据库几个基本的索引类型:普通索引、唯一索引、主键索引、全文索引

什么是范式?介绍一下三个范式。

  • 范式是为了消除重复数据减少冗余数据,从而让数据库内的数据更好的组织,让磁盘空间得到更有效利用的一种标准化标准,满足高等级的范式的先决条件是满足低等级范式。
  • 1NF 符合1NF的关系中的每个属性都不可再分
  • 2NF 消除了非主属性对于码的部分函数依赖
  • 3NF 消除了非主属性对于码的传递函数依赖

参考