High Performance MySQL Ch01

 20th August 2020 at 2:19pm

MySQL’s most unusual and important feature is its storage-engine architecture, whose design separates query processing and other server tasks from data storage and retrieval. This separation of concerns lets you choose how your data is stored and what performance, features, and other characteristics you want.

MySQL’s Logical Architecture

分层:

  • 第一层,Connection/thread heandling, authentication, security 等,通常 C/S 架构软件都有的一层
  • 第二层,query parsing, analysis, optimization, caching, built-in functions (dates, math, etc.)。任何跨不同存储引擎的功能,都在这层处理,比如存储过程,触发器
  • 第三层,存储引擎层,负责读取和写入数据,有一套 storage engine API,如 "begin a transaction", "fetch the row that has this primary key" 等。这一层不做 SQL 解析(但是也有例外,不太重要)

Connection Management and Security

这是第一层的功能。一些关键概念是:线程池,身份认证(authentication)、授权(authorization)、SSL。

Optimization and Execution

MySQL 会把 SQL 语句解析成 parse tree,再做一些优化,包括重写语句、判断读表的顺序、选择哪个索引。

Optimizer 会考虑某个库或者表底下的存储引擎是什么,来做一些优化,但是大部分情况是不区分存储引擎的。

在解析 SELECT 语句之前,如果缓存已经有这个语句的查询结果了,MySQL 会直接返回结果。

Concurrency Control

MySQL 在两个层面上做并发控制,分别是 server 层和存储引擎层。