Transactions Per Second(每秒传输的事物处理个数):TPS = (COM_COMMIT +COM_ROLLBACK)/UPTIME
COM_COMMIT 事务提交
MySQL逻辑架构–MySQL存储引擎(MyISAM 、Innodb、表级锁、行级锁)
MySQL性能参数:
Transactions Per Second(每秒传输的事物处理个数):
TPS = (COM_COMMIT +COM_ROLLBACK)/UPTIME
COM_COMMIT :事务提交
COM_ROLLBACK :事务回滚
UPTIME 启动 时间
Queries Per Second(每秒查询处理量):
QPS = QUESTIONS/ UPTIME同时适用与InnoDB和MyISAM 引擎
等待时间:执行Sql等待返回结果之间的等待时间
MySql逻辑架构
数据连接层
SQL服务层
存储引擎层
数据存储层
红 连接层
黄 SQL服务层(sql处理层)
蓝 存储引擎层、数据存储层
MySql逻辑架构-连接层
当MySQL启动(MySQL服务器就是一个进程),等待客户端连接,每一个客户端连接请求,服务器都会新建一个线程处理(如果是线程池的话,则是分配一个空的线程),每个线程独立,拥有各自的内存处理空间,但是,如果这个请求只是查询,没关系,但是若是修改数据,很显然,当两个线程修改同一块内存是会引发数据同步问题的。
MySql逻辑架构-SQL处理层
连接到服务器,服务器需要对其进行验证,也就是用户名、IP、密码验证,一旦连接成功,还要验证是否具有执行某个特定查询的权限(例如,是否允许客户端对某个数据库某个表的某个操作)
MySql逻辑架构-SQL处理层
这一层主要功能有:SQL语句的解析、优化,缓存的查询,MySQL内置函数的实现,跨存储引擎功能(所谓跨存储引擎就是说每个引擎都需提供的功能(引擎需对外提供接口)),例如:存储过程、触发器、视图等。
1.如果是查询语句(select语句),首先会查询缓存是否已有相应结果,有则返回结果,无则进行下一步(如果不是查询语句,同样调到下一步)
2.解析查询,创建一个内部数据结构(解析树),这个解析树主要用来SQL语句的语义与语法解析;
3.优化:优化SQL语句,例如重写查询,决定表的读取顺序,以及选择需要的索引等。这一阶段用户是可以查询的,查询服务器优化器是如何进行优化的,便于用户重构查询和修改相关配置,达到最优化。这一阶段还涉及到存储引擎,优化器会询问存储引擎,比如某个操作的开销信息、是否对特定索引有查询优化等。
MySql逻辑架构-缓存
MySql逻辑架构-解析查询
SQL语句解析的逻辑
存储引擎
MyISAM
Innodb
Archive
Memory
Federated
#看你的mysql现在已提供什么存储引擎:
mysql> show engines;
#看你的mysql当前默认的存储引擎:
mysql> show variables like '%storage_engine%';
show engines;
存储引擎-MyISAM(MyISAM是表级锁)
MySql 5.5之前默认的存储引擎
MyISAM 存储引擎由MYD和MYI组成
特性:
myisam数据文件和索引文件是分开的
并发性与锁级别-表级锁
支持全文检索
支持数据压缩
myisampack -b -f testmysam.MYI
适用场景:
非事务型应用(数据仓库,报表,日志数据)
只读类应用
空间类应用(空间函数,坐标)
gis(技师)用MyISAM
存储引擎-Innodb(聚集索引,不支持外键)
MySql 5.5以及以后版本默认存储引擎
innodb_file_per_table
ON:独立的表空间:tablename.ibd (默认)
OFF:系统表空间:ibdataX
mysql5.6以前默认为系统表空间
系统表空间和独立表空间
- 系统表空间无法简单的收缩文件大小
- 独立表空间可以通过optimize table 收缩系统文件
- 系统表空间会产生IO瓶颈
- 独立表空间可以同时向多个文件刷新数据
- 建议:Innodb使用独立表空间
特性
- Innodb是一种事务性存储引擎
- 完全支持事务得ACID特性
- Redo Log 和 Undo Log
- Innodb支持行级锁(并发程度更高)
适用场景
- Innodb适合于大多数OLTP应用 (联机事务处理程序)