MySQL实战45讲笔记一
2024-09-08 09:28:36
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有没有执行权限,没有则返回错误
有就调用指定引擎提供的接口,一行一行遍历表,将所有满足条件的行组成的记录集作为结果返回给客户端
最新文章
- Newtonsoft.Json(C#处理json)
- asp控件Repeater运用
- record
- 雅思创始人Keith Taylor谈英语学习
- GDAL1.9.1 IN VS2008 C#中的编译及使用
- 记一次在Tomcat部署项目后无法启动该项目的例子
- B树的实现与源代码二(删除源代码)
- Android获得Manifest在&;lt;meta-data&;gt;元件的值
- javascript对象的标签
- C#多线程编程序--聊聊线程
- 深入理解C++ new/delete, new []/delete[]动态内存管理
- RDMA RC UC UD
- 假如你不小心干掉了系统,你该怎么办?(一次手贱的记录 ~ Ubuntu and Python3.6)
- windows上,任务管理器中,进程命令行太长怎么办
- VB.NET网络是否联通Function
- java 使用 WebUploader
- Swift Defer 延迟调用
- Loading Assets from AssetBundles
- jQuery操作<;input type=";radio";>;
- 配置bond