1.2 MySQL内部模块和功能
第一层:Connectors层指的是不同语言与SQL的交互,如C,PHP,Python,VB,NET,JDBC,ODBC等
第二层:Connection Pool指的是连接池,用于管路缓冲用户连接,线程处理等需要缓存的需求等
第三层:SQL Interface(SQL接口)接受用户的SQL命令,并且返回用户需要查询的结果。如select * from 等就是调用SQL Interface
Paeser(解析器)SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。
功能:(1)将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的
(2)若在分解构成中遇到错误,则说明这个SQL语句是不合理的
Optimizer(查询优化器)SQL语句在查询之前会使用查询优化器对查询进行优化,使用的策略为“选择---投影---连接”进行查询。
如select id,name,sex from student where sex='女',(1)此查询根据where语句进行选取,并不是将表全部查询出来以后在进行sex过滤(2)此查询根据id,name进行属性投影,并不是将属性全部取出以后再进行过滤(3)将(1)、(2)查询条件连接起来生成最终查询结果
Cache&Buffer(高速缓存和缓冲区)若查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中去数据。此缓存机制是由一系列小缓存组成的,如表缓存,记录缓存,key缓存,权限缓存等
第四层:Pulgggable Storage Engines(存储引擎层)是MySQL中具体与文件接触的子系统,也是最具体色的一层,MySQL的存储引擎是插件式的。它根据MySQL公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)现在有很多种存储引擎,各个存储引擎的优势各不一样,最常用的MyISAM,InnoDB,BDB默认下MySQL是使用MyISAM引擎,它查询速度快,有较好的索引优化和数据压缩技术,但是它不支持事务。InnoDB支持事务,并且提供行级的锁定,应用也相当广泛。 MySQL也支持自己定制存储引擎,甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。
第五层:File System(文件系统)主要用于IO设备交互等
File&Logs(文件与日志)主要用于REDO,UNDO,data,Index,Binary,Error(错误日志),Query,Slow(慢日志)等