mysql深入理解(一)逻辑架构

1、概述

我们对某技术的学习,目的很简单,一是为了学习技术的使用;二是进行思想的学习。学习技术时,先理解思想,对于技术的掌握是大有益处的,一般理解技术思想的途径,从他的架构设计和源码是最直接的。

mysql是一个开源的关系型数据库产品, 采用处理与存储分离的设计,灵活性高,这些年已成为互联网应用上常用的关系型数据库。互联网系统特点是高并发,大数据量,一般瓶颈最终还是会落到数据库,所以优化mysql是必不可少的。想对mysql理解,我们先理解它架构设计思想。

安装mysql后主要有下面几个组件:

mysql服务器:

也称为mysqld;

管理内存和碰盘上实际的数据库访问;

多线程的;

支持多客户端连接;

支持多种存储引擎;

单机上可以安装多个实例。

客户端程序:

bin目录下实用的程序

非客户端面程序:

独立于服务器的客户端程序

2、mysql逻辑结构

mysql采用分层架构,并分成了多个子系统,每个子系统都有相互独立又互相协助,共同完成数据库服务器功能。下图为mysql逻辑架构图

公共服务层:

为整个系统提供基础、公用的服务;

服务层:

分为有API,Query Parsing,Optimization,Execution,Query Cache等子系统。

API:用于接收SQL命令,如我们通过客户端直接select * from table;

Query Parsing:解释查询,对传入的SQL语句进行解释、验证,并生成SQL_ID与SQL语句关联;

Optimization:对Query Parsing传入的SQL,根据不同的存储引擎生成优化后的执行计划,并重写查询。

Execution:执行根据Query Parsing和Optimization处理过的数据。

Query Cache:基于内存的缓存,根据SQL_ID.SELECT来判断是否已经处理过相同的查询语句,如果处理过,直接从Query Cache中返回结果集,加快读速度。

存储引擎层:

Mysql中特性之一,用于进行数据处理和文件管理,采用的是处理与存储分离,可以根据应用需要进行相应灵活的选择。mysql中存储引擎有事务型和非事务型的,我们可以通过命令show engines来查看当前mysql数据库版本支持的存储引擎。

当前用的是MYSQL5.6.

InnoDB,默认的存储引擎,支持事务,采用行锁;

MyISAM:读数据很快,不支持事务,采用表锁机制;

MEMORY:基于内存的数据库,不支持事务,采用表锁.

其它的数据引擎用的很少,暂时不介绍,但图中有一种存储引擎是没有显示出来的,即NDB,我们暂时可以把它当做是InnoDB的集群版本。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180827G1495H00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券