源码学习
文章平均质量分 73
slwang001
这个作者很懒,什么都没留下…
展开
-
mysql 8.0 源码笔记:REDO日志(3)
版本mysql-8.0.22 社区版源码结合源码来介绍redo日志的各个模块。redo日志的写入写入系统磁盘redo日志刷盘是将所有的redo文件进行fsync,确保系统缓存中的redo日志内容存储到磁盘上。redo刷盘由用户线程执行、或者系统后台线程执行。刷盘接口为统一的接口、相关变量定义log_t *log_sys| flushed_to_disk_lsn //当前磁盘刷新到的位置刷新磁盘刷新磁盘的源码如下:log_flush_low| const lsn_t last原创 2021-04-05 16:45:12 · 236 阅读 · 0 评论 -
mysql 8.0 源码笔记:REDO日志(2)
版本mysql-8.0.22 社区版源码结合源码来介绍redo日志的各个模块。redo日志的写入写入系统缓存log buffer是循环使用,需要将log buffer中的内容,持续的写入到系统缓存中。有较多的地方会将log buffer中的内容写入系统缓存,比如commit、比如后台线程持续的写入等等。相关变量定义log_t *log_sys| write_lsn // 当前写入系统缓存的最大的LSN| current_file_lsn // 通过LSN计算对应物理文原创 2021-04-02 17:33:47 · 460 阅读 · 2 评论 -
mysql 8.0 源码笔记:REDO日志(1)
版本mysql-8.0.22 社区版概述redo日志中记录了Innodb引擎对于数据页的修改,主要作用是用来在崩溃恢复过程中,保证数据的完整性。Innodb引擎采用WAL机制来记录数据,即修改数据时,将redo日志优先记录到磁盘中,真正的数据修改会在后续刷脏过程中记录到磁盘。如果此时数据库意外退出,可以通过redo日志来恢复修改的数据。源码后续结合源码来介绍redo日志的各个模块。文件redo log的文件以格式ib_logfile[N]来命名,通过如下参数控制:innodb_log_fi原创 2021-04-01 13:53:54 · 339 阅读 · 0 评论 -
mysql源码学习笔记:插件的安装和卸载
mysql支持插件的开发,以插件的方式实现mysql的附加功能,既可以减少对mysql服务器源码的入侵,也可以实现动态的插拔。可以较好的实现我们需要的功能。本文从源码层面分析mysql插件框架相关内容。原创 2017-08-18 00:14:55 · 1410 阅读 · 1 评论 -
mysql源码学习笔记:基于binlog的recovery机制
mysql开启binlog后,对于事务引擎的DML操作,会以内部二阶段提交的方式对binlog和date文件进行写入。在非正常关闭后,重启mysql时,会根据binlog对事务引擎进行未完成事务进行恢复。本文在源码层面分析了mysql server根据binlog恢复事务的具体流程。原创 2017-08-17 22:40:03 · 949 阅读 · 2 评论 -
mysql源码学习笔记:系统变量variables
本文从源码层面分析mysql的系统变量的定义、装载、更新等行为。原创 2017-08-17 22:25:01 · 1078 阅读 · 0 评论 -
mysql源码学习笔记:文件读写模块IO_CACHE
概述IO_CACHE为mysql读写文件的模块,在mysql操作文件时,通过该模块与文件进行交互。该模块类似于mysql的文件缓存,通过对文件的整读、整写来提高mysql的io效率。读写binlog、读写relay log等文件操作均是通过该模块进行。原创 2017-04-30 21:55:09 · 1119 阅读 · 1 评论 -
mysql源码学习笔记:内存管理模块MEM_ROOT
源码为mysql-5.7.16社区版。MEM_ROOT为mysql的内存管理模块,用于统一申请和释放内存,减少在堆中的内存申请操作的次数,以提升性能。这种内存管理的方法可以移植到其他的应用程序中,用于解决内存管理问题。原创 2017-03-30 23:30:12 · 1225 阅读 · 0 评论 -
mysql 源码学习笔记:mysqld启动流程
mysql 5.7.16 源码学习笔记:mysqld启动流程主要介绍mysqld启动过程中,对各个模块的启动顺序,为后续深入学习打下基础。原创 2016-12-20 20:52:13 · 4225 阅读 · 2 评论 -
mysql 源码学习笔记:配置文件和命令行参数的装载
mysql可以通过加载配置文件或者在启动时输入命令行参数的方式来完成初始化系统变量、装载插件等操作。本文主要梳理了装载配置文件和命令参数的过程,以及配置文件内容和命令行参数生效的过程。mysql版本为mysql-5.7.16 社区版原创 2017-03-14 22:43:16 · 1830 阅读 · 0 评论 -
mysql 源码学习笔记:客户端连接处理流程
mysql通过监听本地unix sock和tcp连接的端口,分别处理本机和远程客户端的连接,以每个客户端连接对应一个线程的(默认)方式,处理客户端发送的命令。版本为mysql-5.7.16社区版,这里对服务器端的源码做分析,不对客户端的源码作分析。原创 2017-03-14 23:46:12 · 1678 阅读 · 0 评论