重点

数据库总体架构流程图 数据库的架构及其作用_数据库总体架构流程图

如何设计一个关系型数据库

数据库总体架构流程图 数据库的架构及其作用_缓存_02

  • 数据库最主要的功能是储存我们的数据,因此需要一个存储模块来存储数据、类似OS文件系统,将数据持久化存入磁盘中
  • 光有存储还不够、需要组织运用数据。因而需要程序实例
  • 存储管理模块:对数据的格式以及文件的分割进行统一管理,即把物理数据通过逻辑的形式表现出来。

如何优化存储性能
磁盘的IO速率是程序执行速度的瓶颈,为了执行速率,需要尽可能的减少IO,一次IO读取单行数据和多行数据的时间并没有多少区别,一次性读取多行数据以提升IO的效能,所以就失去了它的意义,数据库把逻辑存储单位以块和页来表示,每个块标识会存放多行数据,这样读取的时候会把多个块一起加载的内存中

  • 缓存机制:将取出来的数据填入缓存,下次直接从缓存返回而不用IO。

一次性查找多个块和页,这些里边包含的数据有一部分不是我们这次查询的数据,一旦某行数据被访问到,那么它附件的数据也极有可能会被访问。所以缓存的非本次数据也能起到优化效率的作用。
缓存不宜过大且算法里要有淘汰机制、淘汰之后不常用的数据

  • SQL解析:将sql语句编译解析成机器可读的语言

可通过将SQL语句缓存到缓存中去,编译好的sql方便下次直接使用的时候直接解析。

  • 日志管理: 将SQL的参数记录下来、方便做数据库的主从同步或者灾难恢复。
  • 权限划分:用户管理数据的私密空间
  • 容灾机制:数据库出现异常该如何恢复,恢复到何种程度
  • 索引管理
  • 锁管理

索引模块

  1. 索引
    索引相当于一张表的附加表,存储着表中建立索引的字段值以及对应记录值的地址,在进行查询操作时,首先在索引表中进行查询,根据查询的条件找到相关记录的地址,再根据记录地址在表中存取对应的记录。
    经常进行INSERT、UPDATE、DELETE操作就不要建立索引了,换言之,索引会降低插入、删除、更新等维护任务的速度。
    索引分为聚集索引和非聚集索引。
    目前MySQL的InnoDB引擎支持Hash索引、B+树索引和全文索引。
  2. 为什么要使用索引
  • 索引大大减少了存储引擎需要扫描的数据量
  • 索引可以帮助我们进行排序以避免以避免使用临时表
  • 索引可以将随机的I/O转为顺序的I/O
  1. 什么信息能成为索引
  1. 能把该记录限定到一定范围内的字段
    主键、唯一键和其他普通键等。
  1. 索引的数据结构
  1. 生成索引、建立二叉查找树进行查找。
  2. 生成索引、通过B-Tree结构进行查找
  3. 生成索引,建立B±Tree结构进行查找
  4. 生成索引,建立Hash结构进行查找