(一)MySQL之数据库基本理论

什么是范式

当设计关系型数据库时,需要遵守不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式 ( Normal Form),越高的范式冗余越小。

  • 第一范式(1NF),每一属性不可再分。是指在关系模型中,对域添加一个规范要求,所有的域都应该是原子性的,即数据库的每一列都是不可分隔的原子数据项,而不能是集合、数组记录等非原子数据项。
  • 第二范式(2NF),消除部分依赖。在1NF的基础上,每一个非主属性必须完全依赖主键,消除非主属性对主键的部分函数依赖。
  • 第三范式(3NF),消除传递依赖。在2NF的基础上,消除非主属性与主键之间的传递依赖,确保每列都和主键直接相关。如 (学号)->(姓名,年龄,学院,学院电话)符合2NF,但不符合3NF,因为存在下面关系: (学号)->(学院)->(学院电话)。

事务的概念以及四个特性

事务(Transaction)是一个操作序列,这些操作要么都做,要么都不做,是一个不可分隔的工作单位。

事务通常以Begin Transaction开始,以Commit和RollBack操作结束。Commit即提交,提交事务中的所有操作、事务正常结束。RollBack即回滚,回滚到事务开始时的状态。

事务有四个特性,称之为ACID特性,原子性(Atomicity),一致性(Consistency),隔离性(lsolation),持久性(Durability)。

  1. 原子性(Atomicity)
    指事务在逻辑上是不可分割的操作单元。其所有语句要么都执行,要么都不执行。当每个事务运行结束时,可以选择提交所作的数据修改,并将这些修改永久应用到数据库中。
  2. 一致性(Consistency)
    本质就是数据库中的数据从一种一致性状态转换到另一种一致性状态。
  3. 隔离性(lsolation)
    隔离性是针对并发事务而言,隔离性就是要隔离并发运行的多个事务间的相互影响。
  4. 持久性(Durability)
    事务的持久性是指一旦事务提交成功,其对数据的修改时持久性的。数据更新的结果已经从内存转移到外部存储器上,即使后面发生系统故障,已提交事务所作的数据更新也不会丢失。

事务的常见分类

从事务理论的角度来看,事务分为一下几种类型。

  1. 扁平事务
    在扁平事务中,所有操作都处于同一层次,其由Begin Work 开始,由Commit Work 或RollBack Rork结束,其间的操作都是原子的,要么都执行,要么都回滚。
  2. 带有保存点的扁平事务
    除了支持扁平事务支持的操作外,还允许在事务执行过程中回滚到同一事务中较早的一个状态。这是因为某些事务可能在执行过程中出现错误并不会导致所有的操作都无效,放弃整个事务也不和要求,开销太大。
  3. 链事务
    链事务指一个事务由多个子事务链式组成。可视为保存点模式的一个变种。带有保存点的扁平事务能回滚到任意正确的保存点,而链事务的回滚仅限于当前事务,即只能恢复到最近的一个保存点。
  4. 嵌套事务
    由一个顶层事务控制着各个层次的事务,顶层事务之下嵌套的事务称为子事务,其控制着每一个局部的变换,子事务本身也可以是嵌套事务。
  5. 分布式事务
    通常是在一个分布式环境下运行的扁平事务。

事务的4中隔离级别

  1. Read Uncommitted(未提交读,读取未提交内容)
    所有事务都可以看到其他未提交事务的执行结果,即在未提交读级别,事务中的修改,即使没有提交,对其他事务也是可见的。读取未提交的数据,也被称为脏读。该隔离级别最低,并发性能最高。
  2. Read Committed(提交读,读取提交内容)
    大多数数据库系统默认的隔离级别。一个事务只能看见已经提交事务所作的改变。即事务提交之前所作的任何修改对其他事务是不可见的。
  3. Repeatable Read(可重复读)
    可重复读可以确保同一个事务,在多次读取同一个数据的时候,得到同样的结果。解决了脏读的问题,可能导致幻读。
  4. Serializable(可串行化,序列化)
    最高的隔离级别,通过强制事务排序,强制事务串行执行,使之不可能互相冲突,从而解决幻读问题。

什么是CAP定理

CAP定理又称CAP原则是一个衡量系统设计的准则。CAP定理指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性),三者不可兼得。

C(一致性):所有节点在同一时间的数据完全一致。
A(可用性):服务一直可用,每个请求都能接收到一个响应,无论响应成功或失败。
P(分区容错性):分布式系统在遇到某节点或网络分区故障的时候,仍能够对外提供满足一致性和可用性的服务。

三者不可兼得,任何分布式系统的设计都是在三者中的不同取舍。所以分为:

  • CA数据库满足数据的一致性和高可用性,但没有可扩展性,不考虑分区容忍性,对应的数据库就是普通的关系型数据库RDBMS,如MySQL、Oracle的单节点。

  • CP数据库考虑的是一致性和分区容错性,这种数据库对分布式系统内的通信要求比较高,因为要保持数据一致,就需要做大量的交互。

  • AP数据库考虑的是实用性和分区容忍性,即外部访问数据,可以更快的得到回应,例如博客系统等。

猜你喜欢

转载自blog.csdn.net/Zhangxg0206/article/details/110136574