基于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脚本的10个技巧(4)
Oct 09 PHP
PHP新手上路(四)
Oct 09 PHP
需要发散思维学习PHP
Jun 29 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
Nov 07 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
使用正则去除php代码中的注释方法
Nov 03 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
PHP二维数组去重算法
Dec 17 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
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
PHP原理之异常机制深入分析
2010/08/08 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
js日期联动示例
2014/05/02 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
js实现分页功能
2017/05/24 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
Windows下PyMongo下载及安装教程
2015/04/27 Python
Scrapy的简单使用教程
2017/10/24 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
关于学习的演讲稿
2014/05/10 职场文书
团日活动总结模板
2014/06/25 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
教师工作总结范文2014
2014/11/10 职场文书
嘉宾邀请函
2015/01/31 职场文书
银行工作心得体会范文
2016/01/23 职场文书
《实心球》教学反思
2016/02/23 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
python模板入门教程之flask Jinja
2022/04/11 Python