跳到主要内容

Mysql数据库

基础概念

数据库三大范式

第一范式:每个列都不可再分

第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分

第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键

关系型数据库与非关系型数据库的区别

NOSQL特点:

  1. 性能方面:NOSQL是基于键值对的,而且不需要经过SQL层的解析,所以性能非常高

  2. 扩展性:NOSQL数据之间没有耦合,所以非常容易水平扩展

  3. 高可用

  4. 灵活的数据模型,不需要事先对存储数据简历字段

关系型数据库特点:

  1. 支持事务
  2. 以二维表的方式展现数据
  3. 支持复杂查询

NOSQL数据库四大分类

  1. 键值对存储:Redis键值对存储,优点:快速查询。缺点:存储数据缺少结构化
  2. 列存储:Hbase,优势:快速查询,扩展性强。缺点:功能相对局限
  3. 文档数据库存储:MongoDB。优势:要求不严格。缺点:查询性不高,缺少统一的查询语法
  4. 图形数据库存储:应用于社交网络,优势:利用图结构相关算大,缺点:不容易做分布式计算

Mysql常用引擎

InnoDB引擎:提供了对数据库ACID事务的支持,并且还提供了行锁以及外键的约束。设计目标是为了处理大数据容量的数据库系统

MyIASM引擎

MEMORY:所有数据都在内存中,数据的处理速度快,但是安全性不高

InnoDB和MyIASM的区别

InnoDBMyIASM
存储结构所有的表有存储在同一个数据文件中,InnoDB表的大小只受限操作系统文件的大小,一般微2GB每张表被存放在三个文件,frm-表格定义、MYD-数据文件、MYI-索引文件
存储空间需要更多的内存和存储,它会在主内存中建立专用的缓冲池用于高速缓冲数据和索引可被压缩
可移植性、备份及恢复拷贝数据文件、备份binlog,或者使用mysqldump,数据量达到几十G会很痛苦因为使用文件存储,所以数据转移比较方便。在备份和恢复时可单独针对某个表进行操作
文件格式数据和索引是集中的,.ibd数据.MYD,索引.MYI
记录存储顺序按照主键大小有序插入按照记录顺序插入
外键支持不支持
事务支持不支持
锁支持行锁、表锁、锁粒度越小,并发度越高表锁
Select更优
插除修改等更优
查数量内部维护了一个计数器
索引实现B+,索引组织表B+,堆表

InnoDB和MyIASM索引的区别

  • InnoDB是聚集索引,是非聚集索引
  • MyIASM主键索引的叶子节点存储着行数据,因此主键索引很高效
  • InnoDB索引的叶子几点存储的是行数据地址,需要再寻址一次
  • InnoDB非主键索引的叶子节点存储的是主键和其他带索引的列数据,因此查询时做到覆盖索引会非常高效

InnoDB引擎的四大特性

插入缓冲

二次写

自适应哈希索引

预读

事务

索引

优化