1.1.2 数据库的基本构成原理----2
需求3:更快读取(缓存)
(1)即使有索引还是每次都要去磁盘上读“xx”的信息
(2)磁盘IO是非常慢的(ms),但访问内存却很快(ns)
(3)如果内存可用,可在内存里面缓存部分数据
(4)需求:访问加速
方法:缓存/Cache
例:
需求4:通用接口
(1)要同时支持WEB服务器访问,支持App访问
(2)为了推广使用存储系统,组设计一套通用访问接口
(3)要求:满足基本数据操作需求,支持各种语言
(4)方法:结构化查询语言----SQL(structure query language)
sql语句-->词法解析关键字(解析出:关键字、单词、运算符等)-->语法解析(识别并判断执行类型)-->读取(read)、插入(inser)、更新(update)、删除(delete)操作
需求5:更优的执行策略
(1)有了SQL,查询就复杂了,比如支持了更多的索引时,如何执行
(2)用户发起一个查询“select * from student where 学号=xxx and 名字=xx”
(3)该选用哪个索引?名字索引?还是学号索引?
(4)方法:查询优化器(当有多个访问路径时,查询优化器可帮助我们选择一个执行更快的执行路径)
需求6:服务更多的用户
(1)真实的数据库很强大,需提供大量客户并发访问
(2)需求:多用户同时高效读写,互不阻塞
(3)方法:需以多进程或多线程或异步响应用户的并发请求
其他需求
(1)需要记录用户的访问日志以便排查问题,需要全日志以及慢查询日志
(2)并发的读写访问需要加锁,防止数据被写坏
(3)为了高效管理磁盘存储空间,需要独立磁盘物理空间管理模块
(4)主从复制系统,以实现集群的高可用