赞
踩
目录
一、MySQL体系结构
二、MySQL内存结构
三、MySQL文件结构
四、Innodb体系结构
由图,可以看出MySQL最上层是连接组件。下面服务器是由连接池、管理工具和服务、SQL接口、解析器、优化器、缓存、存储引擎、文件系统组成。
连接池:由于每次建立建立需要消耗很多时间,连接池的作用就是将这些连接缓存下来,下次可以直接用已经建立好的连接,提升服务器性能。
管理工具和服务:系统管理和控制工具,例如备份恢复、Mysql复制、集群等
SQL接口:接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface
解析器: SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本, 主要功能:
a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的
b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的
优化器:查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是“选取-投影-联接”策略进行查询。
用一个例子就可以理解: select uid,name from user where gender = 1;
这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤
这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤
将这两个查询条件联接起来生成最终查询结果
缓存器: 查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。
通过LRU算法将数据的冷端溢出,未来得及时刷新到磁盘的数据页,叫脏页。
这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等
MySQL中内存大致分为:全局内存(Global buffer)、线程内存(Thread buffer) 两大部分。
全局内存:缓冲池里面有数据缓存、索引缓存、锁信息、插入缓存等等。此外还有重做日志缓存、额外的内存池。
线程内存:Master Thread、IO Thread、Purage Thread、Page Cleaner Thread。
CheckPoint技术:缓冲池的设计目的为了协调CPU速度与磁盘速度的鸿沟。因此跟新或者删除的时候直接操作的是内存的数据,先写入重做日志,然后再修改内存池里面的数据,最后定时刷新到磁盘上。
(1) 参数文件:启动MySQL实例的时候,指定一些初始化参数,比如:缓冲池大小、数据库文件路径、用户名密码等。
(2) 日志文件:比如:错误日志、二进制日志、慢查询日志、查询日志等等。
通过show variables like "error_log"来查看错误日志存放内容。
通过show variables like "long_query_time"来查看慢查询日志记录的阈值。默认的慢查询日志的阀值是10秒,也就是查询时长超过10秒就会记录到慢查询日志文件;
(3) socket文件:当用UNIX域套接字方式进行连接的时候需要的文件。
(4) pid文件:MySQL实例的进程ID文件。
(5) 表结构文件:用来存放MySQL表结构定义文件。
(6) 存储引擎文件:存储引擎正在存储了记录和索引等数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。