基于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 相关文章推荐
用php实现的下载css文件中的图片的代码
Feb 08 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
php array_filter除去数组中的空字符元素
Jun 21 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
php将mysql数据库整库导出生成sql文件的具体实现
Jan 08 PHP
PHP代码优化的53个细节
Mar 03 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
Sep 22 PHP
微信支付开发交易通知实例
Jul 12 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 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
漂亮但不安全的CTB
2006/10/09 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
2016/11/10 PHP
CI框架实现创建自定义类库的方法
2018/12/25 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
jQuery简单实现两级下拉菜单效果代码
2015/09/15 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
python 文件转成16进制数组的实例
2018/07/09 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
python生成特定分布数的实例
2019/12/05 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
农田水利实习自我鉴定
2013/09/19 职场文书
现金会计岗位职责
2013/12/05 职场文书
证婚人经典证婚词
2014/01/09 职场文书
2014春晚主持词
2014/03/25 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
师范生见习报告范文
2014/11/03 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
总结python多进程multiprocessing的相关知识
2021/06/29 Python
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python
numpy array找出符合条件的数并赋值的示例代码
2022/06/01 Python