一、基础架构
数据库产品中架构分为应用层、逻辑层、物理层。
- 应用层:负责和客户端、用户进行交互,需要和不同的客户端和中间服务器进行交互,建立连接,记住连接的转台,响应他们的全球,发挥数据和控制信息(错误信息、状态码等)。
- 逻辑层:负责具体的查询处理、事务管理、存储管理、回复管理,以及其他的附加功能。查询处理器负责查询的解析、执行。当接受到客户端到查询是,数据库就会分配一个线程来处理它。先由查询处理器(优化器)生成执行计划,然后交由计划执行器来执行,执行器有时候需要访问更加底层的事务管理器、存储管理器来操作数据,事务管理器、存储gliqi主要负责事务管理、并发控制、存储管理。这其中,将由事务管理器来确保“ACID”特性,通过锁管理器来控制并发,由日志管理器来确保数据持久化,存储管理器一般还包括一个缓冲管理器,由他来确定磁盘和内存缓冲之间的数据传输。
- 物理层:实际物理磁盘(存储)上的数据文件,比如数据文件、日志文件等。
什么是查询执行过程?
查询执行过程指的是客户端发布查询,首先连接MYSQL,然后发布查询,如果缓冲中有结果集,则直接返回结果集。如果结果没有被缓存,那么,MySQL解析查询,将通过优化器生成执行计划,然后运行执行计划通过API从存储引擎获取数据,并且返回给客户端。
什么是执行计划(查询计划)?
执行计划就是一系列 操作步骤,通俗点说就是,数据库服务器在执行SQL语句的时候,会准备几套方案,最后选择消耗资源最小的那个方案。SQL是声明性语言,他只告诉数据库要查询什么,但并不告诉数据库如何去查询。数据库所要做但就是基于算法和统计信息计算出一条最佳的访问路径。这个工作是由优化器来完成但。优化器会比较不同的执行计划,然后选择其中的最优的一套。
二、基础概念
MySQL Server、MySQL实例、MySQL数据库的区别?
- MySQL数据库:数据存在的物理操作系统文件的集合,也可以将逻辑数据的集合。
- MySQL Server(MySQL服务器):为了访问、处理数据,需要有一个数据管理的系统。
- MySQL实例:指的是MySQL进程及其所持有的内存结构,我们对数据的操作实际上所通过对MySQL实例来访问物理数据库文件。
什么是可拓展性?
可拓展性也称为伸缩性,指的是系统不断增长其承载能力。他是能满足不断增长的负荷而自身的性能仍能尚可的这样一种能力。
什么是可用性?
可用性可用定义为系统保持正常运行时间的百分比,比如一个系统一共运行来100分钟,有99分钟是正常运行的,那么可能性是99%。
什么是单点故障?
单点故障是指系统中的某个部分,一旦失败,将会导致整个系统无法工作。为了消除单点故障,一般需要增加冗余组件或者冗余系统。比如服务器的电源冗余、网卡冗余、磁盘冗余等。如果要设计高可用等服务,单点故障是需要尽量避免的。
什么是读写分离?
由于数据库只能接受有限的读请求。对于读请求较多的应用,数据库可能会成为瓶颈,为了增加读的能力,提高扩展性,因此引入了读写分离的技术。写入操作和读取操作仍然访问主库,由于MySQL的复制是异步的,所以需要留意复制延时对于读写分离的影响。