mysql分层、存储引擎、解析原理

一、mysql分层

一般来说,MySQL逻辑可分为四个层次,分别为:连接层,服务层,引擎层,存储层 。

 

  • 连接层

  提供与客户端连接的服务,当客户端发出一个请求后(如增删改查的SQL语句),首先到达该层,将服务器与客户端建立连接。

  • 服务层

  服务层分两个作用:

    (1)提供各种用户使用的接口。 如select、insert等;

    (2)提供SQL优化器(MySQL Query Optimizer)。 SQL优化器是MySQL服务层自带的一个服务,它会自动优化用户写得不是最优的SQL,使其达到优化的效果。但由于优化器毕竟只是优化器,有时候会将用户自定义的优化方案给更改掉,从而使用户自己的优化方案失效,这一点需要注意。

  • 引擎层

  引擎层提供各种数据存储的方式。MySQL的存储引擎有很多,比较常用的比如有InnoDB、MyISAM;

  InnoDB与MyISAM的区别为:

    InnoDB 事务优先,所以适合高并发操作,使用的是行锁

    MyISAM 性能优先,适合查询多的场景,使用的是表锁

  • 存储层

  最终的数据存储在存储层。

 

二、存储引擎

InnoDB:事物优先(可防止高并发产生的一些错误,所以适合高并发,用的行锁)

MyISAM:性能优先(用的表锁)

查询数据库支持哪些引擎:show engines:

查看当前使用的引擎:show variables like '%storage_engine%';

指定数据库对象的引擎:

create table DB(
    id int(4) auto_increment,
    name varcher(5),
    dept varchar(5),
    primary key(id)
)ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

注:指定引擎,指定id每次自增步长,指定字符编码utf8

 

三、SQL解析原理

编写过程:select distinct ... from ... join ... on ... where ... group by ...having ... order by ...

解析过程:from ... on ... join ... where ... group by ... having ... select distinct ... order by ...

posted @ 2021-02-27 22:07  西瓜汁拌面  阅读(373)  评论(0编辑  收藏  举报