欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql(1)-逻辑架构

程序员文章站 2022-04-06 23:37:18
...

衡量指标

TPS

定义: 每秒传输的事务处理个数

公式: (COM_COMMIT+COM_ROLLBACK)/UPTIME

QPS

定义: 每秒查询处理量

公式: QUESTIONS/UPTIME

响应时间

定义: 执行sql等待返回结果的等待时间

逻辑架构

mysql逻辑架构主要包括:连接层,服务层,引擎层,存储层等.如下图
mysql(1)-逻辑架构

连接层

当mysql启动(mysql服务器就是一个进程),等待客户端连接,每一个客户端连接请求,服务器都会创建一个新的线程处理(如果采取线程池,则分配一个空的线程)。每一个线程独立,拥有各自的内存处理空间。如果是查询请求则没有什么影响,但是修改数据,两个线程修改同一块内存会引发数据同步问题

服务层

安全处理

连接到数据库需要验证用户名和密码,一旦连接成功还要进行权限校验(某个库某个表的某个操作)

SQL处理

这一层的主要功能是sql语句的解析、优化,缓存的查询,mysql内置函数的实现.

查询(select)语句首先会查询缓存是否有相应结果,有就接返回,否则进行下一步(如果不是select语句,则直接进行下一步);

解析查询语句,创建一个内部数据结构(解析树),这个解析树主要用来sql语句的语法和语义的解析;

优化:优化sql语句,例如重写查询,决定表的读写顺序,以及选择需要的所以等。这一段用户是可以查询的,查询服务优化器是如何优化的,便于客户优化查询和修改配置达到最优化。如下图:

mysql(1)-逻辑架构

缓存

生产环境最好不要开启缓存,以免造成脏数据

查看当前缓存有没有开启
show variables like '%query_cache_type%'

查看缓存内存大小
SET GLOBAL query_cache_size = 4000;

修改缓存内存大小
SET GLOBAL query_cache_size = 134217728;

引擎层

查询当前数据库引擎
show engines;

查看默认数据库引擎
show variables like '%storage_engine%';

MyISAM

概述

mysql5.5之前默认的存储引擎,文件由MYD和MYI组成.

特性

  • 并发级别与锁级别-表级锁
  • 支持全文检索
  • 支持数据压缩

使用场景

  • 非事物型应用(数据仓库,报表,日志数据)
  • 只读类应用
  • 空间类应用(空间函数,坐标)

Innodb

概述

mysql5.5之后的默认存储引擎,支持系统表空间和独立表空间

系统表空间

  • 有io瓶颈
  • 不支持压缩数据

独立表空间(建议使用)

  • 可以同时向多个文件刷新数据
  • 支持数据压缩

特性

  • 完全支持事务的ACID操作
  • 支持行级锁(并发性更高)

适用场景

用于事务型应用

MyISAM和Innodb对比

mysql(1)-逻辑架构

存储层