暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql 8.0.18 source code源码初识

lovedb 2019-12-04
952

摘要

    mysql 源码结构宏大,我自己主要学习方法准备从几个方面展开:
    1,mysql 8.0.18 internal官方手册
    2, mysql大牛blog
    3, baidu经典好文章
    4, 各种媒介请教技术大牛


    通过不同维度实践,力争初步掌握mysql 8.0.18源码,最终提升增强自己分析诊断mysql机制及原理的能力
    复制


    联系方式

    • 微信公众号


    • 微信



    培训课件

    (收费20元已共享到百度云盘便于同学们获取)



    相关阅读

      升级redhat 6.8 默认gdb 7.2到gdb 8.3.1操作指南
      http://blog.itpub.net/9240380/viewspace-2666802/
      复制



      目录

      • 调试操作环境

      • gdb跟踪mysql 8.0.18源码

      • mysql 8.0.18源码主要目录结构

      • sql_parse.cc及sql_parse.h

      • sql_class.cc及sql_class.h 


      调试操作环境

        redhat 6.8


        gdb-8.3.1


        mysql 8.0.18
        复制


        gdb跟踪mysql 8.0.18源码


        • gdb跟踪mysqld

          [root@mysql8018 ~]# pidof mysqld
          17227


          [root@mysql8018 ~]# usr/local/gdb-8.3.1/bin/gdb -p 17227
          复制


          • 产生一个新登陆线程会话

            [root@mysql8018 sql]# usr/local/mysql/bin/mysql -uroot -psystem
            复制


            • gdb打上断点

              (gdb) b mysql_execute_command
              Breakpoint 1 at 0x35bf14e: file mysql8018_dir/mysql-8.0.18/sql/sql_parse.cc, line 2625.
              复制


              • 新登陆线程会话执行sql

                mysql> select count(*) from mysql.user;
                复制


                • gdb继续执行

                  (gdb) c
                  复制


                  • gdb显示执行sql

                    (gdb) p thd->m_query_string
                    $1 = {str = 0x7fdb28004b28 "select * from mysql.user", length = 24}
                    复制



                    mysql 8.0.18源码主要目录结构



                    sql_parse.cc及sql_parse.h

                      sql_parse.cc是一个极重要的文件,里面处理逻辑关于sql解析相关的代码。
                      sql_parse.h可以理解为c++虚类或抽象类
                      sql_parse.cc是基基于sql_parse.h抽象类型的具体实现
                      2个文件在sys目录
                      复制


                         源码中每个函数前会有注解,注解极重要,描述函数的含义及处理逻辑



                      sql_class.cc及sql_class.h 

                      上述mysql_execute_command函数输入参数*thd的类型是THD,THD是mysql核心类,它分布在2个源码文件sql_class.h和sql_class.cc


                        可以通过ul工具或eclipse或vscode IDE调测mysql源码,主要侧重查看方法或函数之间的依赖及引用,否则
                        不要太过专于细心,否则会陷入源码。碰到具体问题,再用gdb精研分析源码,定位mysql问题。
                        复制




                        文章转载自lovedb,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                        评论