首页 / MYSQL / 第二章 MySQL架构与存储引擎
第二章 MySQL架构与存储引擎
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了第二章 MySQL架构与存储引擎,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2629字,纯文字阅读大概需要4分钟。
内容图文
![第二章 MySQL架构与存储引擎](/upload/InfoBanner/zyjiaocheng/907/88350192ec9f4e578b1b77b43c9ae0a3.jpg)
一、MySQL的逻辑架构体系
1、逻辑架构
2、连接层
连接到服务器,服务器需要对其进行验证,也就是用户名、IP、密码验证,一旦连接成功,还要验证是否具有执行某个特定查询的权限(例如,是否允许客户端对某个数据库某个表的某个操作)。
当MySQL启动(MySQL服务器就是一个进程),等待客户端连接,每一个客户端连接请求,服务器都会新建一个线程处理(如果是线程池的话,则是分配一个空的线程),每个线程独立,拥有各自的内存处理空间。
show VARIABLES like '%max_connections%';
连接到服务器,服务器需要对其进行验证,也就是用户名、IP、密码验证,一旦连接成功,还要验证是否具有执行某个特定查询的权限(例如,是否允许客户端对某个数据库某个表的某个操作)
- SQL处理层
这一层主要功能有:SQL语句的解析、优化,缓存的查询,MySQL内置函数的实现,跨存储引擎功能(所谓跨存储引擎就是说每个引擎都需提供的功能(引擎需对外提供接口)),例如:存储过程、触发器、视图等。
1)如果是查询语句(select语句),首先会查询缓存是否已有相应结果,有则返回结果,无则进行下一步(如果不是查询语句,同样调到下一步)
2)解析查询,创建一个内部数据结构(解析树),这个解析树主要用来SQL语句的语义与语法解析;
3)优化:优化SQL语句,例如重写查询,决定表的读取顺序,以及选择需要的索引等。这一阶段用户是可以查询的,查询服务器优化器是如何进行优化的,便于用户重构查询和修改相关配置,达到最优化。这一阶段还涉及到存储引擎,优化器会询问存储引擎,比如某个操作的开销信息、是否对特定索引有查询优化等。
3.1、sql缓存
show variables like '%query_cache_type%' -- 默认不开启
show variables like '%query_cache_size%' -- 默认值1M
SET GLOBAL query_cache_type = 1; -- 会报错
query_cache_type只能配置在my.cnf文件中,这大大限制了qc的作用,在生产环境建议不开启,除非经常有sql完全一模一样的查询。QC严格要求2次SQL请求要完全一样,包括SQL语句,连接的数据库、协议版本、字符集等因素都会影响
3.2、解析查询
SELECT DISTINCT <select_list> FROM <left_table> <join_type>
JOIN <right_table> ON <join_condition>
WHERE <where_condition> GROUP BY <group_by_list>
HAVING <having_condition> ORDER BY <order_by_condition> LIMIT <limit_number>;
3.3、sql优化
EXPLAIN select * from account where name ='';
EXPLAIN select * from account where 1=1;
EXPLAIN select * from account where id is null; -- 默认不会使用where条件
通过上面的sql大概就能看出,虽然现在还没学执行计划,但通过这个已经看出一个sql并不一定会去查询物理数据,sql解析器会通过优化器来优化程序员写的sql
explain select * from account t where t.id in (select t2.id from account t2) show warnings;
4、逻辑架构
MySQL逻辑架构包括:连接层,服务层,引擎层,存储层。
在mysql中其实还有个schema的概念,这概念没什么太多作用,只是为了兼容其他数据库,所以也提出了这个,在mysql中 database 和schema是等价的
create database demo;
show databases;
drop schema demo; -- 等价于drop database demo;
show databases;
内容总结
以上是互联网集市为您收集整理的第二章 MySQL架构与存储引擎全部内容,希望文章能够帮你解决第二章 MySQL架构与存储引擎所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。