MySQL源码修改入门途牛网王强

MySQL源码修改入门途牛网王强

ID:37324339

大小:1.06 MB

页数:51页

时间:2019-05-21

MySQL源码修改入门途牛网王强_第1页
MySQL源码修改入门途牛网王强_第2页
MySQL源码修改入门途牛网王强_第3页
MySQL源码修改入门途牛网王强_第4页
MySQL源码修改入门途牛网王强_第5页
资源描述:

《MySQL源码修改入门途牛网王强》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ZHDBA.COM 中华数据库行业协会2015中华数据库与运维大会 2015.06.06MySQL源码修改入门途牛网-王强缘由近期开始学习和研究MySQL数据库,总体感觉开源的产品还是不如商业数据库来的成熟,很多Oracle现成的东西,在MySQL下都没有,好在有源码可以看,自己也算写过2年C程序的人,那就试着看看源码吧。首先还是要有合适的看源码的工具,在此推荐sourceinsight。sourceinsightMySQL主要函数查看MySQL各个线程cpu使用情况以前在Oracle下,我们通常会用top看哪个Oracle会话特别耗费cpu,这个方法我也想在MySQL下用用

2、,知道MySQL是基于多线程的,查了一下如何查看线程耗费cpu的情况,用的是下面的命令:psH-eouser,pid,ppid,tid,time,%cpu

3、head-1&&psH-eouser,pid,ppid,tid,time,%cpu--sort=%cpu

4、grep20033

5、tail-n20其中20033表示的是MySQLd的进程pid查看MySQL各个线程cpu使用情况输出结果图中我们看到的TID应该就是线程idMySQL系统的线程ID然后我们在MySQL用showengineinnodbstatusG查看线程的ID我们这里看到线程ID是0x7fdb6a0f8

6、700,和ps看到的不一样,ps看到的最多是5位的一个数字,如46530linux线程Google了很多次,终于知道了ps看到的其实是轻量级进程id,下图是我找到的关于linux线程的一篇文章的截图,原作者名字没有记录,在此也备注一下吧。linux线程Linux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型pthread_t,由pthread_self()取得,该id由线程维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id)。Linux中的POSIX线程库实现的线程其实也是一个进程(LWP),

7、只是该进程与主进程(启动线程的进程)共享一些资源而已,比如代码段,数据段等。有时候我们可能需要知道线程的真实pid。比如进程P1要向另外一个进程P2中的某个线程发送信号时,既不能使用P2的pid,更不能使用线程的pthreadid,而只能使用该线程的真实pid,称为tid。有一个函数gettid()可以得到tid,但glibc并没有实现该函数,只能通过Linux的系统调用syscall来获取。使用syscall得到tid只需一行代码,但为了加深各位看官的印象,简单提供下面场景。首先,在线程函数中显示线程ID#include#include

8、ys/types.h>void*thread_func(void*args){intli_tid=syscall(SYS_gettid);//~gettid()printf("%s",li_tid);sleep(20);}intmain(){pthread_tid;pthread_create(&id,NULL,thread_func,NULL);}在程序执行以后,我们同时用ps去看进程包含的线程id,判断程序输出和ps进程显示的是否一致。从上面测试的demo可以看到ps看到的就是用syscall(SYS_gettid)得到的线程ID,和用pthread_self(

9、)得到的值是不一样的,那么下面我们要做的就是在mysql线程中获取并保存syscall(SYS_gettid)。首先修改THD类,在real_id的附近,我们添加一个tid的成员变量。添加成员变量修改线程建立函数然后我们根据前面的MySQL源码主要函数图,找到实际建立线程的函数handle_one_connection,在这个函数中获取syscall(SYS_getid)的值。添加输出显示获取到了TID,我们还需要在适当的地方显示这个ID,我们选择在showengineinnodbstatus的地方,把新添加的tid输出。实际输出结果总结通过这个小小的改动的例子,我有了以下几

10、个方面的收获:首先加深了我对MySQL源码结构层次的了解。带着问题去看源码,也给了自己目标和动力。尝试从小的改动开始,给自己树立了信心,是的看源码这个事情,能够坚持下去。开源数据库之所以现在这么火热,就是因为把自己完全暴露出来,提供给广大技术人员一个路径,去了解数据库的细节,同时能够定制自己的软件。PostgreSQL入门、PG与MySQL的对比途牛网-王强PostgreSQL介绍世界上用钱能买到的最好的数据库世界上不花钱使用最广泛的数据库世界上不花钱能用到最好

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。