文章目录
1、关系数据库管理系统(RDBMS)相关术语
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
- **行:**一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- **外键:**外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- **索引:**使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
2、数据库的三大范式的理解
- 第一范式:原子性,保证数据不可再分。
- 第二范式:前提:满足第一范式;每张表只描述一件事情,就是主键(候选码)就对应着所有信息。
- 第三范式:前提:满足第一、二范式;第三范式需要保证表中的数据和主键直接相关,而不是间接相关。
3、数据库主键如何设计
-
数据库主键不应具有任何实际意义(就是业务主键),是一个唯一标识一行,可以被外键有效引用的对象。
-
主键生成方法UUID、雪花算法(适合分布式场景,缺点:所有节点的时钟不一定能保证完全同步)。
4、谈谈MySQL的索引,优点以及缺点。
- MySQL索引是一种帮助快速查找数据的数据结构,可以把索引理解为书的目录。或者索引( index )是帮助MySQL高效获取数据的数据结构(有序)。
- 优点:通过索引能够提高检索数据的效率。
- 缺点:索引会增加存储压力,并且新增数据要同步维护索引。
5、请你说说聚簇索引和非聚簇索引
- 聚簇索引:索引结果和数据一起存放的索引。
- 优点:聚簇索引的查询速度非常快,因为聚簇索引本身就是一个B+树,数据节点属于有序的,当定位到索引上的时候就相当于找到了数据。
- 缺点:更新的时候代价大,依赖有序的数据
- 非聚簇索引:索引结构和数据分开存放的索引。
- 优点:更新代价比聚簇索引小
- 缺点:依赖有序的数据,可能会二次回表查找
6、数据库为什么不用红黑树而用B+树?
红黑树本质上还是二叉树,一个结点最多只能拥有两个子结点,而B+树则是多叉的,这会使得相同的数据存储,二叉树的高度会大于B+树;而数据是存储在磁盘上的,树的高度越高,磁盘IO次数越多,开销越大,B+树可以有效的减少这一开销;且B+树的叶子节点是通过链表的方式进行相连的,能在找到起点和终点后快速取出需要的数据
7、Redis如何与数据库保持双写一致性
- 先更新数据库再删除缓存,如果有错误请重试
8、MySQL主从同步是如何实现的?
主服务器将数据的更改记录保存到二进制文件中,从服务器将主服务器中的二进制日志复制到自己的中继日志中,从服务器重做中继日志中的日志将更改应用到自己的数据库上,达成数据的最终统一性。