背景:
工作和学习当中经常要使用到关系型数据库,但是对一些的基础概念总是记不清楚,因此自己动手写一篇文章总结整理下,欢迎大家指正。
什么是关系型数据库
常见的关系型数据库结构是这样的:
即表与表之间的关系称之为关系型数据库
关系型数据库的常见术语
- 数据库:数据库是关联表的集合,一个数据库里可以有很多数据表。
- 数据表:表是数据的举证,类似于Excel的表格结构
- 行:一行数据是一组相关的数据,比如一个班级里张三的基本信息
- 列: 一列数据是相同属性的集合,比如一个班级的所有姓名
- 冗余:存储两倍的数据,虽然降低了性能,但是提高了数据的安全性
- 主键:每个数据表中都唯一存在一个主键,一般默认都是id为其主键
- 外键:外键用于关联表与表之间的关系
- 索引:建立索引可以快速访问数据中的特定字段信息。索引是对数据表中的一列或多列的值进行排序的一种结构,类似于书籍的目录。
- 复合键:复合键将多个列作为一个索引键,一般用于复合索引。
Mysql的架构图
Mysql结构总共分为两层:
- Mysql的逻辑结构
- 物理结构
从上图可以看出MYSQL的逻辑结构分为以下几部分:
- 连接池
- 管理服务和工具组件
- SQL接口
- 查询分析器
- 优化器
- 缓存区域
- 存储引擎
- 物理文件
- 物理结构:
mysql软件(mysqld)+配置文件+mysql数据文件(磁盘上的文件:datadir)
存储引擎
MySQL的存储引擎是innoDB
- 支持事务安全
- 数据多版本读取
- 锁定机制的改进
- 实现外键
事务的四个特性
1、数据完整性 事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持
2、一致性 在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。
3、隔离性 数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。
4、原子性 事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行
记录一下之前腾讯的面试题:
MySQL都有哪几种引擎,InnoDB是如何实现索引的?
引擎是程序中的核心组件
- mysql总共有三种引擎,最常见的是InnoDB和MyISAM,Memeory存储引擎
- InnoDB是通过三种方式来实现索引,一个是B树,B+树,聚簇索引和二级索引
每个InnoDB的表都拥有一个索引,称之为聚簇索引,此索引中存储着行记录,一般来说,聚簇索引是根据主键生成的