基于MySQL体系结构的分析


Posted in PHP onMay 02, 2013

了解MySql必须牢牢记住其体系结构图,Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的

 

基于MySQL体系结构的分析 

1 Connectors指的是不同语言中与SQL的交互

2 Management Serveices & Utilities: 系统管理和控制工具

3 Connection Pool: 连接池。

管理缓冲用户连接,线程处理等需要缓存的需求

4 SQL Interface: SQL接口。

接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface

5 Parser: 解析器。

SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。

主要功能:

a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的 

b.  如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的

6 Optimizer: 查询优化器。

SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是“选取-投影-联接”策略进行查询。

用一个例子就可以理解: select uid,name from user where gender = 1;

这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤

这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤

将这两个查询条件联接起来生成最终查询结果

7 Cache和Buffer: 查询缓存。

如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等

8 Engine :存储引擎。

存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。

Mysql的存储引擎是插件式的。它根据MySql AB公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)

现在有很多种存储引擎,各个存储引擎的优势各不一样,最常用的MyISAM,InnoDB,BDB

默认下MySql是使用MyISAM引擎,它查询速度快,有较好的索引优化和数据压缩技术。但是它不支持事务。

InnoDB支持事务,并且提供行级的锁定,应用也相当广泛。 
Mysql也支持自己定制存储引擎,甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。

PHP 相关文章推荐
Adodb的十个实例(清晰版)
Dec 31 PHP
php时间不正确的解决方法
Apr 09 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
php中chdir()函数用法实例
Nov 13 PHP
php生成excel列名超过26列大于Z时的解决方法
Dec 29 PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
PHP addslashes()函数讲解
Feb 03 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 PHP
php7 参数、整形及字符串处理机制修改实例分析
May 25 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 #PHP
基于Zookeeper的使用详解
May 02 #PHP
关于尾递归的使用详解
May 02 #PHP
基于Zend的Config机制的应用分析
May 02 #PHP
Zend的Registry机制的使用说明
May 02 #PHP
Zend的MVC机制使用分析(二)
May 02 #PHP
Zend的MVC机制使用分析(一)
May 02 #PHP
You might like
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
Yii redis集合的基本使用教程
2020/06/14 PHP
PHP7 标准库修改
2021/03/09 PHP
网页常用特效代码整理
2006/06/23 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
java直接调用python脚本的例子
2014/02/16 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
python学习教程之使用py2exe打包
2017/09/24 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
python实现一组典型数据格式转换
2018/12/15 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
Python插件机制实现详解
2020/05/04 Python
python实现三种随机请求头方式
2021/01/05 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
致短跑运动员广播稿
2014/01/09 职场文书
初婚未育未抱养证明
2014/01/12 职场文书
邓小平理论心得体会
2014/09/09 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
公司出纳岗位职责
2015/03/31 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
机械生产实习心得体会
2016/01/22 职场文书
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript