Skip to content

Files

Latest commit

hackfengJamJiang Haifeng
and
Jiang Haifeng
May 29, 2019
f8618a8 · May 29, 2019

History

History
108 lines (78 loc) · 3.44 KB

数据库——1_数据库架构.md

File metadata and controls

108 lines (78 loc) · 3.44 KB

一、数据库架构

一个面试题引发的"血案",如何设计一个关系型数据库?


开始设计我们的 RDBMS

1. RDBMS 即关系数据库管理系统(Relational Database Management System)

1.1 RDBMS 应当包括 程序实例存储系统(文件系统)

RDBMS
+----------------------------------+
|           程 序 实 例             |
|                                  |
|                                  |
+----------------------------------+
|        存 储 ( 文 件 系 统 )     |
|                                  |
|                                  |
+----------------------------------+

2. 程序实例存储系统(文件系统)

2.1 存储系统(文件系统) 应当存储在 HDD / SSD / ...,如下图

RDBMS
+----------------------------------+
|           程 序 实 例             |
|                                  |
|                                  |
+----------------------------------+
|        存 储 ( 文 件 系 统 )     |
|          HDD / SSD / ...         |
|                                  |
+----------------------------------+

2.2 程序实例 应当包括:存储管理、缓存机制、SQL解析、日志管理、权限划分、容灾机制、索引管理、锁管理,如下图

RDBMS
+---------------------------------------------------+
|                     程 序 实 例                    |
|                                                   |
| 存 储 管 理   缓 存 机 制   SQL 解 析   日 志 管 理   |
|                                                   |
| 权 限 划 分   容 灾 机 制   索 引 管 理   锁 管 理     |
|                                                   |
+---------------------------------------------------+
|                存 储 ( 文 件 系 统 )              |
|                                                   |
|                                                   |
|                  HDD / SSD / ...                  |
|                                                   |
+---------------------------------------------------+

3. 程序实例

3.1 作为开发者,我们将重点研究,其中两个模块:

  • 索引管理

  • 锁管理

3.2 索引管理

  1. 在研究索引管理之前,我们先提出几个问题
    • 为什么要使用索引?
    • 什么样的信息能成为索引?
    • 索引的数据结构?
    • 密集索引和稀疏索引的区别?
  2. 衍生出来的问题,以mysql为例
    • 如何定位并优化慢查询 Sql?
    • 联合索引的最左匹配原则的成因?
    • 索引是建立的越多越好吗?

3.3 锁管理

  1. 在研究索引管理之前,我们当然也先提出几个问题
    • MyISAM 与 InnoDB 关于锁方面的区别是什么?
    • 数据库的四大特性?
    • 事务隔离级别以及各级别下的并发访问问题?
    • InnoDB可重复读隔离级别下如何避免幻读?
    • RC、RR级别下的InnoDB的非阻塞度如何实现?

3.4 传送门

  1. 带着以上问题,我们开启数据库探索之旅,进入我的另外两篇文章:)。

感谢

xiangzepro

MySQL 官方文档