基于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实现的简单压缩英文字符串的代码
Apr 24 PHP
了解Joomla 这款来自国外的php网站管理系统
Mar 11 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
php简单实现快速排序的方法
Apr 04 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
Yii2分页的使用及其扩展方法详解
May 23 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 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文本操作类
2006/11/25 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
python标准日志模块logging的使用方法
2013/11/01 Python
python中os操作文件及文件路径实例汇总
2015/01/15 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
python逆序打印各位数字的方法
2018/06/25 Python
python版大富翁源代码分享
2018/11/19 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
python中round函数如何使用
2020/06/19 Python
django rest framework 自定义返回方式
2020/07/12 Python
python实现取余操作的简单实例
2020/08/16 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
材料化学专业求职信
2014/07/15 职场文书
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL