Transactions Per Second(每秒传输的事物处理个数):TPS = (COM_COMMIT +COM_ROLLBACK)/UPTIME

COM_COMMIT 事务提交

MySQL逻辑架构–MySQL存储引擎(MyISAM 、Innodb、表级锁、行级锁)

​MySql逻辑架构-连接层.. 4​

​MySql逻辑架构-SQL处理层.. 5​

​MySql逻辑架构-缓存.. 7​

​MySql逻辑架构-优化.. 9​

​存储引擎..忘了告诉你 9​

MySQL性能参数:

Transactions Per Second(每秒传输的事物处理个数):

TPS = (COM_COMMIT +COM_ROLLBACK)/UPTIME

COM_COMMIT :事务提交

COM_ROLLBACK :事务回滚

UPTIME 启动 时间

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_mysql

Queries Per Second(每秒查询处理量):

QPS = QUESTIONS/ UPTIME同时适用与InnoDB和MyISAM 引擎

等待时间:执行Sql等待返回结果之间的等待时间

MySql逻辑架构

    数据连接层

    SQL服务层

    存储引擎层

    数据存储层

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_sql_02

红 连接层

黄 SQL服务层(sql处理层)

蓝 存储引擎层、数据存储层

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_存储引擎_03

MySql逻辑架构-连接层

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_sql_04 当MySQL启动(MySQL服务器就是一个进程),等待客户端连接,每一个客户端连接请求,服务器都会新建一个线程处理(如果是线程池的话,则是分配一个空的线程),每个线程独立,拥有各自的内存处理空间,但是,如果这个请求只是查询,没关系,但是若是修改数据,很显然,当两个线程修改同一块内存是会引发数据同步问题的。

MySql逻辑架构-SQL处理层

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_mysql_05

连接到服务器,服务器需要对其进行验证,也就是用户名、IP、密码验证,一旦连接成功,还要验证是否具有执行某个特定查询的权限(例如,是否允许客户端对某个数据库某个表的某个操作)

MySql逻辑架构-SQL处理层

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_mysql_06这一层主要功能有:SQL语句的解析、优化,缓存的查询,MySQL内置函数的实现,跨存储引擎功能(所谓跨存储引擎就是说每个引擎都需提供的功能(引擎需对外提供接口)),例如:存储过程、触发器、视图等。

1.如果是查询语句(select语句),首先会查询缓存是否已有相应结果,有则返回结果,无则进行下一步(如果不是查询语句,同样调到下一步)

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

3.优化:优化SQL语句,例如重写查询,决定表的读取顺序,以及选择需要的索引等。这一阶段用户是可以查询的,查询服务器优化器是如何进行优化的,便于用户重构查询和修改相关配置,达到最优化。这一阶段还涉及到存储引擎,优化器会询问存储引擎,比如某个操作的开销信息、是否对特定索引有查询优化等。

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_mysql_07

MySql逻辑架构-缓存

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_表空间_08

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_sql_09

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_sql_10

MySql逻辑架构-解析查询

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_数据库_11

SQL语句解析的逻辑

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_数据库_12

存储引擎

MyISAM

Innodb

Archive

Memory

Federated

#看你的mysql现在已提供什么存储引擎:

  mysql> show engines;

 #看你的mysql当前默认的存储引擎:

  mysql> show variables like '%storage_engine%';

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_存储引擎_13show engines;

  存储引擎-MyISAM(MyISAM是表级锁)

MySql 5.5之前默认的存储引擎

MyISAM 存储引擎由MYD和MYI组成MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_存储引擎_14MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_sql_15

特性:

      myisam数据文件和索引文件是分开的

      并发性与锁级别-表级锁

      支持全文检索  

      支持数据压缩

       myisampack -b -f testmysam.MYI

适用场景:

      非事务型应用(数据仓库,报表,日志数据)

      只读类应用

      空间类应用(空间函数,坐标)

      gis(技师)用MyISAM

存储引擎-Innodb(聚集索引,不支持外键)

MySql 5.5以及以后版本默认存储引擎

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_mysql_16

innodb_file_per_table

      ON:独立的表空间:tablename.ibd (默认)

      OFF:系统表空间:ibdataX

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_数据库_17 MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_数据库_18

mysql5.6以前默认为系统表空间

系统表空间和独立表空间

  • 系统表空间无法简单的收缩文件大小
  • 独立表空间可以通过optimize table 收缩系统文件
  • 系统表空间会产生IO瓶颈
  • 独立表空间可以同时向多个文件刷新数据
  • 建议:Innodb使用独立表空间

特性

  • Innodb是一种事务性存储引擎
  • 完全支持事务得ACID特性
  • Redo Log 和 Undo Log
  • Innodb支持行级锁(并发程度更高)

适用场景

  • Innodb适合于大多数OLTP应用 (联机事务处理程序)

MySQL存储引擎(MyISAM 、Innodb)-MySQL逻辑架构_存储引擎_19