基于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语法(4)
Oct 09 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
May 03 PHP
PHP之变量、常量学习笔记
Mar 27 PHP
使用PHP批量生成随机用户名
Jul 10 PHP
php URL跳转代码 减少外链
Jun 25 PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 PHP
php中的filesystem文件系统函数介绍及使用示例
Feb 13 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
PHP利用imagick生成组合缩略图
Feb 19 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
PHP命名空间用法实例分析
Sep 04 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 microtime获取浮点的时间戳
2010/02/21 PHP
CMS中PHP判断系统是否已经安装的方法示例
2014/07/26 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
javascript 闭包疑问
2010/12/30 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
js调用刷新界面的几种方式
2017/05/03 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
Python continue语句实例用法
2020/02/06 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
Python如何转换字符串大小写
2020/06/04 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
Python使用Pygame绘制时钟
2020/11/29 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
高中军训感言800字
2014/03/05 职场文书
销售会计岗位职责
2014/03/15 职场文书
幼儿生日活动方案
2014/08/27 职场文书
婚前协议书范本
2014/10/27 职场文书
男方婚礼答谢词
2015/01/20 职场文书
面试通知短信
2015/04/20 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP