基于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 相关文章推荐
杏林同学录(二)
Oct 09 PHP
一步一步学习PHP(5) 类和对象
Feb 16 PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 PHP
php遍历数组的方法分享
Mar 22 PHP
php实现查询百度google收录情况(示例代码)
Aug 02 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
php实现简单爬虫的开发
Mar 28 PHP
php简单统计中文个数的方法
Sep 30 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 PHP
php的PDO事务处理机制实例分析
Feb 16 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 PHP
浅谈PHP无限极分类原理
Mar 14 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
文件上传的实现
2006/10/09 PHP
PHP提取中文首字母
2008/04/09 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
js验证表单大全
2006/11/25 Javascript
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
整理Python最基本的操作字典的方法
2015/04/24 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
Python应用库大全总结
2018/05/30 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
Python内存映射文件读写方式
2020/04/24 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
详解Python中的文件操作
2021/01/14 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
what is the difference between ext2 and ext3
2015/08/25 面试题
任命书怎么写
2014/06/04 职场文书
公民代理授权委托书
2014/09/24 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
2015年国庆节寄语
2015/08/17 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书