基于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语法(3)
Oct 09 PHP
php基础知识:类与对象(3) 构造函数和析构函数
Dec 13 PHP
用PHP生成html分页列表的代码
Mar 18 PHP
IIS6的PHP最佳配置方法
Mar 19 PHP
php UTF8 文件的签名问题
Oct 30 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
Laravel框架实现redis集群的方法分析
Sep 14 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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实现的封装验证码类详解
2013/06/18 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
js+xml生成级联下拉框代码
2012/07/24 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
python实现桌面托盘气泡提示
2019/07/29 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
pandas分组聚合详解
2020/04/10 Python
Python执行时间的几种计算方法
2020/07/31 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
Aerosoles爱柔仕官网:美国舒软女鞋品牌
2017/07/17 全球购物
苹果台湾官网:Apple台湾
2019/01/05 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
上海中网科技笔试题
2012/02/19 面试题
学生个人的自我评价分享
2013/11/05 职场文书
三个儿子教学反思
2014/02/03 职场文书
《钱学森》听课反思
2014/03/01 职场文书
法人委托书范本
2014/04/04 职场文书
机关党员公开承诺书
2014/08/30 职场文书
食品安全主题班会
2015/08/13 职场文书
班委竞选稿范文
2015/11/21 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python
如何使用SQL Server语句创建表
2022/04/12 SQL Server