2022
我们一起努力

MySQL整体架构与内存结构 - MySQL数据库

一  mysql 整体框架:

MySQL是由SQL接口,解析器,优化器,缓存,存储引擎等组成的。

 

1. Connectors指的是不同语言中与SQL的交互。

2. Management Serveices & Utilities: 系统管理和控制工具。

3. Connection Pool: 连接池。管理缓冲用户连接,线程处理等需要缓存的需求。

4. SQL Interface: SQL接口。接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface。

5. Parser:解析器。SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。主要功能:

  • 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的。
  • 如果在分解构成中遇到错误,那么就说明这个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公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)。现在有很多种存储引擎,各个存储引擎的优势各不一样,最常用的InnoDB,BDB,MyISAM,。

默认下MySql是使用 Innodb 引擎( mysql 5.5.5以前的版本默认存储引擎是 Myisam ),它查询速度快,有较好的索引优化和数据压缩技术。但是它支持事务。

Mysql也支持自己定制存储引擎,甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。

 

二 mysql 内存结构 :

mysql使用总内存 = global_buffers + all_thread_buffers

 

global_buffers ( 全局内存分配总和 ) =

innodb_buffer_pool_size — InnoDB高速缓冲,行数据、索引缓冲,以及事务锁、自适应哈希等

+innodb_additional_mem_pool_size — InnoDB数据字典额外内存,缓存所有表数据字典

+innodb_log_buffer_size — InnoDB REDO日志缓冲,提高REDO日志写入效率

+key_buffer_size — MyISAM表索引高速缓冲,提高MyISAM表索引读写效率

+query_cache_size — 查询高速缓存,缓存查询结果,提高反复查询返回效率

+table_cahce — 表空间文件描述符缓存,提高数据表打开效率

+table_definition_cache — 表定义文件描述符缓存,提高数据表打开效率

 

all_thread_buffers (会话/线程级内存分配总和) =

max_threads(当前活跃连接数) * (

read_buffer_size — 顺序读缓冲,提高顺序读效率

+read_rnd_buffer_size — 随机读缓冲,提高随机读效率

+sort_buffer_size — 排序缓冲,提高排序效率

+join_buffer_size — 表连接缓冲,提高表连接效率

+binlog_cache_size — 二进制日志缓冲,提高二进制日志写入效率

+tmp_table_size — 内存临时表,提高临时表存储效率

+thread_stack — 线程堆栈,暂时寄存SQL语句/存储过程

+thread_cache_size — 线程缓存,降低多次反复打开线程开销

+net_buffer_length — 线程持连接缓冲以及读取结果缓冲

+bulk_insert_buffer_size ) — MyISAM表批量写入数据缓冲

 

赞(0)
文章名称:《MySQL整体架构与内存结构 - MySQL数据库》
文章链接:https://www.fzvps.com/99026.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!