MySQL的基本架构大体可以分为server层和存储引擎层,逻辑架构图如下:

Server层除了图中显示的,还包括所有的内置函数(包括日期、时间、数学和加密函数等),存储过程、触发器、视图等跨存储引擎的功能都在这层实现。

存储引擎层负责数据的存储和提取,支持InnoDB、MyISAM、Memory等,从MySQL 5.5.5版本开始InnoDB成为默认的存储引擎。

  • 连接器

    连接器负责跟客户端建立连接、获取权限、维持和管理连接。数据库里面的连接分为长连接和端连接,和tcp的连接类似。长连接过多会占用内存太大,从而出现OOM。可以考虑定期断开长连接,尤其是执行过一个占用内存的大查询;5.7版本以后可以执行 myssql_reset_connection来重新初始化连接资源。

  • 查询缓存

    执行查询语句时,如果之前执行过那么语句和结果可能会以key(语句)-value(结果)直接缓存在内存中。

    不建议使用查询缓存,因为只要有一个表更新,那么这张表上所有查询缓存都会被清空。8.0版本后删除了此功能。

  • 分析器

    分析器对SQL语句做解析,先做词法分析,例如‘“select”-->查询语句;再做语法分析。

  • 优化器

    表里多个索引决定用哪个或者关联查询时决定表的连接顺序

  • 执行器

    • 先判断用户对表T有没有执行权限,没有则返回错误

    • 有就调用指定引擎提供的接口,一行一行遍历表,将所有满足条件的行组成的记录集作为结果返回给客户端

最新文章

  1. Newtonsoft.Json(C#处理json)
  2. asp控件Repeater运用
  3. record
  4. 雅思创始人Keith Taylor谈英语学习
  5. GDAL1.9.1 IN VS2008 C#中的编译及使用
  6. 记一次在Tomcat部署项目后无法启动该项目的例子
  7. B树的实现与源代码二(删除源代码)
  8. Android获得Manifest在<meta-data>元件的值
  9. javascript对象的标签
  10. C#多线程编程序--聊聊线程
  11. 深入理解C++ new/delete, new []/delete[]动态内存管理
  12. RDMA RC UC UD
  13. 假如你不小心干掉了系统,你该怎么办?(一次手贱的记录 ~ Ubuntu and Python3.6)
  14. windows上,任务管理器中,进程命令行太长怎么办
  15. VB.NET网络是否联通Function
  16. java 使用 WebUploader
  17. Swift Defer 延迟调用
  18. Loading Assets from AssetBundles
  19. jQuery操作<input type="radio">
  20. 配置bond

热门文章

  1. PIC单片机的i2c的程序
  2. 全网首发,腾讯T3-3整理Netty学习方案(体系图+项目+学习文档)
  3. Java和NodeJS解析XML对比
  4. 01 . Memcached简介及部署
  5. HotRing: A Hotspot-Aware In-Memory Key-Value Store(FAST ’20)
  6. JavaSE (六)面向对象 -- 类的结构
  7. Java实现 LeetCode 121 买卖股票的最佳时机
  8. Hive的基本介绍以及常用函数
  9. win7 64位系统怎么使用debug
  10. Servlet中的请求转发