MySQL架构的简单介绍
MySQL的逻辑架构介绍
MYSQL分为四层
连接层
,服务层
,引擎层
,存储层
连接层
主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。
服务层
-
Management Serveices & Utilities
: 系统管理和控制工具 -
SQL Interface
: SQL接口 接受用户的SQL命令,并且返回用户需要查询的结果。比如select from ...
就是调用SQL Interface
-
Parser
: 解析器 SQL命令传递到解析器的时候会被解析器验证和解析。 -
Optimizer
: 查询优化器 SQL语句在查询之前会使用查询优化器对查询语句进行优化。 -
Cache和Buffer
: 查询缓存先在缓存中查询数据,在缓存中查到数据直接查询结果;缓存中查不到数据,再去数据库中查数据 这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等
引擎层
存储引擎层,包含有各种存储引擎。存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。
存储层
数据存储层,主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。
存储引擎
引擎层中有多种引擎
查询命令
查询存储引擎:show engines;
这张表展示了存储引擎的名字,介绍信息,是否支持事务等信息
查看MySQL
默认使用的引擎:showvariables like '%storage_engine%';
各个引擎的简介
-
InnoDB
存储引擎InnoDB
是MySQL
的默认事务型引擎,用来处理大量的短期(short-lived)事务。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB
引擎。 -
MyISAM
存储引擎MyISAM
提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM
不支持事务和行级锁,缺陷就是崩溃后无法安全恢复。 -
Archive
引擎Archive
档案存储引擎只支持INSERT
和SELECT
操作,在MySQL5.1
之前不支持索引。Archive
表适合日志和数据采集类应用。 -
Blackhole
引擎Blackhole
引擎没有实现任何存储机制,它会丢弃所有插入的数据,不做任何保存。但服务器会记录Blackhole
表的日志,所以可以用于复制数据到备库,或者简单地记录到日志。但这种应用方式会碰到很多问题,因此并不推荐。 -
CSV
引擎CSV
引擎可以将普通的CSV
文件作为MySQL
的表来处理,但不支持索引。CSV
引擎可以作为一种数据交换的机制,非常有用。CSV
存储的数据直接可以在操作系统里,用文本编辑器,或者excel读取。 -
Memory
引擎 如果需要快速地访问数据,并且这些数据不会被修改,重启以后丢失也没有关系,那么使用Memory
表是非常有用。Memory
至少比MyISAM
要快一个数量级。 -
Federated
引擎Federated
引擎是访问其他MySQL
服务器的一个代理,尽管该引擎看起来提供了一种很好的跨服务器的灵活性,但也经常带来问题,因此默认是禁用的。
SQL的执行周期
目标:了解一个简单的select
查询语句的执行情况
-
设置开启查询记录和缓存查询
修改
MySQL
的配置文件,在配置文件中添加一条profiling=1;
后重启MySQL
服务在
MySQL
中执行set query_cache_type=1
-
执行一条sql语句,例如:
SELECT * FROM
userWHERE
name='tom';
-
获取查询记录
SHOW PROFILES;
,并记下你执行的这条sql的Query_ID
-
获取指定sql的执行周期
show profile cpu,block io for query 6;
(这里的Query_ID
根据自己的情况而定)