1. 如何设计一个关系数据库
分为两个模块:
1. 存储 (文件系统) 模块: 该部分类似于文件系统, 把数据持久化到硬盘或者磁盘当中
2. 程序实例
(1)存储管理模块: 把逻辑的存储与物理的存储的关系转化
(2) 缓存机制: 优化性能, 可以缓存数据或者 sql
(3)sql 解析: 将 sql 语句进行解析
(4) 日志管理: 记录日志, 记录操作, 便于主从复制等操作
(5) 权限划分
(6) 容灾机制
(7) 索引管理: 优化数据查询操作
(8) 锁管理: 支持并发
面试题(索引)
1. 为什么要使用索引:
因为最简单的查询方式是全表扫描, 把全表的数据分块或者分页加载到内存, 然后逐个去轮询要查找的数据, 如果数据量大的话, 这种方式显然非常的慢, 但是数据量少, 几十行这样的这种数据, 查询效率就比索引还要高。
索引的灵感来自于字典, 通过偏旁和部首这种关键信息特征去查找我们所需的数据, 显然要快的多, 索引可以大大提高查询效率
2. 什么样的信息能成为索引
主键, 唯一键,普通键
3. 索引的数据结构
这篇博客写的很好非常好:
https://mp.weixin.qq.com/s/zA…
B+树更利于做数据库索引的原因
索引建立得越多越好吗?