MySQL源码
文章平均质量分 54
aeolus_pu
这个作者很懒,什么都没留下…
展开
-
如何阅读mysql源码
在微博上问mysql高手,如何阅读mysql 源码大致给了下面的一些建议:step 1,知道代码的组织结构(官方文档http://t.cn/z8LoLgh;Step2: 尝试大致了解一条sql涉及的上层接口Step3:使用gdb单步调试Step4 理解每个新版本mysql changelog的具体实现以后深入关注mysql源码,今天以此为证。原创 2013-08-29 14:01:49 · 2890 阅读 · 0 评论 -
mysql中ut_d宏定义用法
源码摘抄 #ifdef UNIV_DEBUG/** Debug assertion. Does nothing unless UNIV_DEBUG is defined. */#define ut_ad(EXPR) ut_a(EXPR)/** Debug statement. Does nothing unless UNIV_DEBUG is defined. */原创 2017-03-03 17:55:21 · 1847 阅读 · 0 评论 -
lock0lock.c里面函数总结
google了大部分资料,结合自己的理解,总结下lock0lock.c文件里函数lock_deadlock_recursive():死锁判断 死锁日志产生lock_deadlock_trx_print():死锁中事务信息处理打印lock_deadlock_lock_print():每个事务持有、等待的锁信息lock_rec_print():记录被锁的信息死锁原创 2017-02-27 18:15:42 · 1157 阅读 · 0 评论 -
innodb 引擎相关模块
mysql插件式存储引擎模式。因此引擎相关的代码都在storage目录下,在storage目录下,各个引擎单独自己的目录:blockhole 、csv、federated、heap、innobase、myisam、ndb、perfschema。特别注意的是perfschema在引擎目录下。 主要关注innobase:btr:B+tree 源码相关buf:buffer 缓存源码相关原创 2017-02-04 13:57:52 · 353 阅读 · 0 评论 -
mysql查询相关的函数调用
mysql 版本 5.5.31 mysql 查询相关的函数指向流程 查询相关的入口函数mysql_select mysql_select /sql/sql_select.cc:2577 handle_select /sql/sql_select.cc:297 execute_sqlcom_select /sql/sql_parse.cc:4590原创 2017-01-24 15:14:58 · 800 阅读 · 0 评论 -
mysql的核心类和重要的源码文件
sql/sql_select.cc :包含着一些优化函数和一些数据检索算法的具体实现 ITEM_类 ITEM_类是mysql的每一个子系统都要用到的东西。之所以称之为ITEM_类,是因为从ITEM基类派生出许多子类甚至孙类。这些派生类被用来存储和处理mysql系统里的许多种数据,其中包括:参数、标识符时间、字段、函数、数值、字符串等。ITEM基类定义在/sql/item.h源代原创 2017-02-04 09:29:19 · 1019 阅读 · 0 评论 -
mysql 源码阅读入口
mysql源码太多,初次看到不免让人没有头绪,如果根据特定需求,分模块的去阅读分析,查找特定功能如何实现之类的需求,可以从有限的几个入口看起,有两个主要入口:服务器启动,客户端请求处理。市面上的书大部分都是通过客户端请求处理来讲起如何阅读mysql源码,举的例子通过select 查询,如《深入理解mysql核心技术》以及《深入理解mysql》两本书。 1 服务器初始化启动过程,包含参数以及参转载 2017-02-04 09:10:28 · 8459 阅读 · 0 评论 -
mysql 命令集合添加 --mysql5.5.31
5.6之后新功能特性引进,此sql命令集合会继续变化。在/sql/sql_lex.cc 中 mysqld.cc中 两者完全一致enum enum_sql_command { SQLCOM_SELECT, SQLCOM_CREATE_TABLE, SQLCOM_CREATE_INDEX, SQLCOM_ALTER_TABLE, SQLCOM_UPDATE, SQLCOM_INS原创 2017-02-03 11:03:45 · 840 阅读 · 0 评论 -
锁相关的几个重要函数
记录下锁相关的几个重要函数: lock_table (): 负责加表锁lock_rec_lock():锁记录的重要函数row_lock_table_autoinc_for_mysql(): 负责管理表auto increment自增锁的重要函数。自增锁 是表基本锁。实现在/innobase/row/row0mysql.cc 源码中(ps: auto_increment 自增锁 因原创 2017-02-23 17:09:52 · 418 阅读 · 0 评论 -
insert into 加锁机制
关于MySQL innodb Insert into 加锁的机制的文章网上很少,个人对于insert 的加锁机制比较感兴趣,所以通过此wiki对研究的过程做个总结,如有不对的地方,欢迎指正。我先把官方文档对于insert 加锁的描述贴出来INSERT sets an exclusive lock on the inserted row. This lock is an index-转载 2017-02-15 09:38:57 · 1954 阅读 · 0 评论 -
mysql5.5.31 log0log.c中log_write_up_to 函数代码
/******************************************************//**This function is called, e.g., when a transaction wants to commit. It checksthat the log has been written to the log file up to the last原创 2017-02-14 09:46:43 · 697 阅读 · 0 评论 -
mysql lock_rec_insert_check_and_lock 设置断点调试
LOCK_MAX_DEPTH_IN_DEADLOCK_CHECK 死锁检测等待图中wait-for-graph定义深度搜索的次数,如果搜索200次就认定为死锁。 lock queue: 锁队列设置断点函数 lock_rec_insert_check_and_lock insert into 操作函数调用过程#0 btr_cur_ins_lock_and_undo (原创 2017-02-17 21:25:30 · 1150 阅读 · 0 评论 -
GDB调试利器
1. gdb 调试利器GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c++程序员,gdb是必不可少的工具;1.1. 启动gdb对C/C++程序的调试,需要在编译前就加上-g选项:$g++ -g hello.cpp -o hello调试可执行文件:$gd转载 2017-02-08 17:23:49 · 288 阅读 · 0 评论 -
vs2013 调试mysql
参考链接http://blog.csdn.net/cdsdtt123/article/details/39341003http://blog.csdn.net/u012107685/article/details/39085317原创 2017-02-08 17:22:01 · 830 阅读 · 0 评论 -
mysql insert 相关的锁函数lock_rec_insert_check_and_lock 源码
/*============ RECORD LOCK CHECKS FOR ROW OPERATIONS ====================*//*********************************************************************//**Checks if locks of other transactions prevent原创 2017-02-16 18:01:26 · 650 阅读 · 0 评论 -
kernel_mutex--mysql5.5.18
在mysql innodb中,随处可见的kernel_mutex。全局锁,事务开始的一段代码段 /trx/trx0trx.c 中 trx_start()函数/****************************************************************//**Starts a new transaction.@return TRUE */原创 2017-02-06 13:24:44 · 345 阅读 · 0 评论 -
innodb_flush_log_at_trx_commit 参数
innodb_flush_log_at_trx_commit 三种取值 0 、1、2 对性能有很大影响,现在从源码瞧瞧是如何实现定义。涉及的文件以及函数调用如下:innobase/srv/srv0srv.c中srv_master_thread() innodbase/trx/trx0trx.c 中 trx_commit_off_kernel() ( 查看log_write_up_to(原创 2017-02-06 14:54:10 · 623 阅读 · 0 评论 -
mysql启动流程
mysql主函数main()在/sql/main.cc 里,main.cc里调用mysqld_main()函数,mysqld_main函数在/sql/mysqld.cc里 int mysqld_main(int args,char **argv) 在4783行开始mysqld_main()函数实现。有对不同平台的实现,如windows平台通过文件执行全部命令static v原创 2017-02-04 16:30:43 · 655 阅读 · 0 评论 -
mysql源码心得--how to read mysql source
1、深入了解某一模块前,要一步步来,否则会有很大的挫败感。首先了解下模块重要的数据结构和算法 2、设置断点,了解执行流程,了解重要函数 3、接下来深入阅读重要函数的源码,同时回顾与其他模块(已经了解过)的交互衔接。关于资料寻找 手中要有系统的书,另外利用google搜索优势(不要用百度,百度搜索出来的资料太差了),搜索出来的老外的经典文章 系统的书推荐 《原创 2017-02-25 10:46:49 · 1240 阅读 · 0 评论