Mysql数据库
基础概念
数据库三大范式
第一范式:每个列都不可再分
第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分
第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键
关系型数据库与非关系型数据库的区别
NOSQL特点:
-
性能方面:NOSQL是基于键值对的,而且不需要经过SQL层的解析,所以性能非常高
-
扩展性:NOSQL数据之间没有耦合,所以非 常容易水平扩展
-
高可用
-
灵活的数据模型,不需要事先对存储数据简历字段
关系型数据库特点:
- 支持事务
- 以二维表的方式展现数据
- 支持复杂查询
NOSQL数据库四大分类
- 键值对存储:Redis键值对存储,优点:快速查询。缺点:存储数据缺少结构化
- 列存储:Hbase,优势:快速查询,扩展性强。缺点:功能相对局限
- 文档数据库存储:MongoDB。优势:要求不严格。缺点:查询性不高,缺少统一的查询语法
- 图形数据库存储:应用于社交网络,优势:利用图结构相关算大,缺点:不容易做分布式计算
Mysql常用引擎
InnoDB引擎:提供了对数据库ACID事务的支持,并且还提供了行锁以及外键的约束。设计目标是为了处理大数据容量的数据库系统
MyIASM引擎
MEMORY:所有数据都在内存中,数据的处理速度快,但是安全性不高
InnoDB和MyIASM的区别
InnoDB | MyIASM | |
---|---|---|
存储结构 | 所有的表有存储在同一个数据文件中,InnoDB表的大小只受限操作系统文件的大小,一般微2GB | 每张表被存放在三个文件,frm-表格定义、MYD-数据文件、MYI-索引文件 |
存储空间 | 需要更多的内存和存储,它会在主内存中建立专用的缓冲池用于高速缓冲数据和索引 | 可被压缩 |
可移植性、备份及恢复 | 拷贝数据文件、备份binlog,或者使用mysqldump,数据量达到几十G会很痛苦 | 因为使用文件存储,所以数据转移比较方便。在备份和恢复时可单独针对某个表进行操作 |
文件格式 | 数据和索引是集中的,.ibd | 数据.MYD ,索引.MYI |
记录存储顺序 | 按照主键大小有序插入 | 按照记录顺序插入 |
外键 | 支持 | 不支持 |
事务 | 支持 | 不支持 |
锁支持 | 行锁、表锁、锁粒度越小,并发度越高 | 表锁 |
Select | 更优 | |
插除修改等 | 更优 | |
查数量 | 内部维护了一个计数器 | |
索引实现 | B+,索引组织表 | B+,堆表 |
InnoDB和MyIASM索引的区别
- InnoDB是聚集索引,是非聚集索引
- MyIASM主键索引的叶子节点存储着行数据,因此主键索引很高效
- InnoDB索引的叶子几点存储的是行数据地址,需要再寻址一次
- InnoDB非主键索引的叶子节点存储的是主键和其他带索引的列数据,因此查询时做到覆盖索引会非常高效
InnoDB引擎的四大特性
插入缓冲
二次写
自适应哈希索引
预读