基于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 相关文章推荐
跟我学小偷程序之成功偷取首页(第三天)
Oct 09 PHP
BBS(php & mysql)完整版(八)
Oct 09 PHP
一个简单计数器的源代码
Oct 09 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
PHP操作MySQL事务实例
Nov 05 PHP
PHP中SESSION的注销与清除
Apr 16 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
May 08 PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 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
帅气的琦玉老师
2020/03/02 日漫
php实现删除空目录的方法
2015/03/16 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
javascript 动态添加表格行
2006/06/22 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
JS实现双击内容变为可编辑状态
2017/03/03 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
Python实现的几个常用排序算法实例
2014/06/16 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
产品工艺师的岗位职责
2013/11/15 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
家长会主持词
2014/03/26 职场文书
施工安全责任书
2014/04/14 职场文书
课外访万家心得体会
2014/09/03 职场文书
小学重阳节活动总结
2015/03/24 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python
优化Mysql查询的示例
2022/04/26 MySQL