4.1.索引组织表
定义:根据 主键 顺序组织存放的表。 ps:主键选择非空的唯一索引Unique NOT NULL,根据的是定义索引的顺序,而不是建表时列的顺序。
4.2 InnoDB逻辑存储结构
表空间、段、区、页、行
表空间 默认情况下有一个共享表空间。
段 包含数据段,索引段,回滚段。数据段为B+树的叶子节点,索引段是非索引节点。
区 由连续页组成的空间
页 数据页 undo页 系统页 事务数据页
行
4.3 InnoDB行格式记录
compact行记录格式(紧密的)
Redundant行记录格式(多余的)
行溢出数据
Mysql数据库官方说法varchar类型可以存放65535字节,实际上还有别的开销。65535指的是所有varchar列的长度的总和。
因为索引是B+树结构的,所有每个页中至少有两条行记录。因此如果页中只能存放一行记录,innoDB存储引擎会自动把数据放到溢出页中。
4.4InnoDB数据页结构
略
4.5 Named file formats机制
走神了
4.6 约束
数据完整性
关系型数据库本身有数据完整型机制 文件系统需要在程序端进行控制。
约束的创建和查找
创建: 在表建立时创建,利用 alter table命令
约束和索引的区别
约束是逻辑概念,索引是数据结构。两者非常类似
对错误数据的约束
通常情况下,数据库不会对错误数据的插入进行提示,如果要严格审核插入数据的规范,可以设置参数: sql_mode='STRICT_TRANS_TABLES';
ENUM和SET约束
creat table a (id int, sex ENUM('male' , 'female') ); 规定sex 范围只能是male/female.
触发器与约束
作用:在 insert dalete uodate命令执行之前或之后调用 sql语句或者存储过程。
sql 语句实现,create trigger xixi before update on usercash。
具体见书上代码
外键约束
MyISAM存储引擎本身不支持外键,InnoDB支持。
当父表进行删、改操作时,对其子表进行相应操作。
4.7 视图
一个命名的虚表,由一个sql查询来定义,可以当作表使用。但是视图中的数据其实没有实际的物理存储。
视图 作用
物化视图
4.8分区表
(菜菜还没机会用到过,先略,二刷来补上)
分区概述
分区类型
子分区
分区中的null值
分区和性能
在表和分区间交换数据