基于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和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
Jul 03 PHP
PHP 之Section与Cookie使用总结
Sep 14 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
php自定义加密与解密程序实例
Dec 31 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
php上传图片并压缩的实现方法
Dec 22 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
PHP 的Opcache加速的使用方法
Dec 29 PHP
PHP7 windows支持
Mar 09 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使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
PHP实现搜索相似图片
2015/09/22 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
js判断输入字符串是否为空、空格、null的方法总结
2016/06/14 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
Vue实现日历小插件
2019/06/26 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
Python3实现的判断回文链表算法示例
2019/03/08 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
Python numpy大矩阵运算内存不足如何解决
2020/11/19 Python
python之随机数函数的实现示例
2020/12/30 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
机电专业毕业生求职信
2014/07/01 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
文明礼貌主题班会
2015/08/14 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python
SQL Server中使用表变量和临时表
2022/05/20 SQL Server
讨论nginx location 顺序问题
2022/05/30 Servers