MySQL数据库引擎介绍

不同传输引擎特点不同。传输引擎也成为表类型
通过语句 SHOW ENGINES; 查看数据库支持的引擎:

图表 1 SHOW ENGINES;
数据库引擎类型:




MySQL数据库引擎选择
-
如果要提供提交、回滚和崩溃恢复能力的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB是个很好的选择。
-
如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率。
-
如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内 存中的MEMORY引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果。
-
如果只有INSERT和SELECT操作,可以选择ARCHIVE引擎,ARCHIVE引擎支持高并发的插入操作,适合存储归档数据。
需要知道:1、数据库中有不同引擎,所适用的业务不同2、默认InnoDB(对于大部分系统来说均为InnoDB)
好处:针对某个表设置,不同的表使用不同的传输引擎------满足业务需求。


图表 2每个表都可以设置
范式理论与反范式设计
数据库范式设计
数据库的设计范式是数据库设计所需要满足的规范。
满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除 (delete)和更新(update)等操作异常。
第一范式
第一范式(1NF),指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值 ,即实体中的某个属性不能有多个值或者不能有重复的属性;且存在标识记录唯一值的主键(例如学生信息表中,字段"学号"能够唯一标识/区分学生)。
在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

主键:区分表中的不同记录,主键的值一旦确定,其他的值就确定下来了。
判断标准:是否存在复合列,是否能再拆分。
第二范式
第二范式(2NF):满足 1NF 且要求实体的属性完全依赖于主关键字,不存在部分依赖关系,即必须找出第一范式的表中对主键不依赖的列,将这些列(部分依赖)划分到另外的表中。

第二范式在第一范式的基础上提出。


当只知道成绩的时候学号不能唯一确定,学生选课表(学号+课程编号);课程表(课程编号,学分)。
第三范式
第三范式(3NF):在第二范式的基础上,清除表中的传递依赖关系,即属性不依赖于其它非主属性。
例如:学生表(学号,姓名,性别,院系编号,院系名称,院系地址)


反范式设计
以空间换时间,特定场景特定需求下的做法。
