mysql split函数_MySQL代码学习第六——还用python扩展gdb

36c6e7d9a2975f577f5f8ab5b7f206fe.png

用python扩展gdb,把断点触发时收集的信息输出到几个json文件里,这样在jupyter notebook或者其他需要的环境中,把数据表达出来。

比《MySQL代码学习第三——用python扩展gdb》中加了一些代码。

#!/usr/bin/python

mysql的客户端要在screen中打开,此screen启动的时候,要命名为mysql。

screen -S mysql

目前上面python代码中调用了screen -S mysql -X hardcopy -h 文件名,这是拷贝名称为mysql的screen屏幕到指定文件。之前用的是screen的日志,但是日志中会有控制字符(上下左右键等)。找了半天发现可以用screen的hardcopy。

目的是把当前mysql客户端的输入输出记录下来,能和断点信息相对应。将来在展示的界面展示出来可以参考。

目前一般的跟踪顺序如下:

  1. 打开gdb,比如 gdb /usr/local/mysql80/bin/mysqld
  2. 设置一个在启动以后容易触发,但又不会触发很多次的断点,比如do_command
  3. 在gdb中让mysqld运行起来,比如 r --defaults-file=/data/mysql8015/my.cnf
  4. 在screen中开的mysql中进行操作(比如登录)
  5. 断点触发了以后,开始设置真正想跟踪的断点,并执行一次python脚本,比如 source /data/source/bt_graph_data.py
  6. 用命令c继续执行
  7. 然后在mysql客户端可以进行各种操作,断点收集的信息写在了几个文件里
  8. 利用python脚本输出的几个文件,就可以进行后续的展示和分析了

先是把node.data和edge.data导入了gephi看一下,发现太复杂了,很难看得清楚。

因此转向jupyter notebook,使用pyecharts,边画边改代码。目前的方法是让扩展gdb的代码输出两个json文件,同时从screen中抓取的mysql客户端输入输出信息,也保存为json文件。在jupyter notebook中读取这几个json,并把数据切分成多份,让每个图相对简单一些。同时,mysql客户端的输入输出信息与对应的断点信息输出在同一个图上,以作参考,在一些比较关注客户端操作的场景可能会特别有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值