mysql如何查看读写_MySQL代码学习第十一——看一眼从page中读取数据

这一段有点停滞,想从读写锁或者mini transaction入手,但是调用的地方太多了。虽然尝试导入数据库,过滤出既有加锁也有解锁的那些锁,还是不够直观。还得再试试。

老不出成果也不是个事。转向我之前看过的和page访问相关的代码。把gdb跟踪用的python代码以及jupytor notebook里跑的python改来改去。貌似有一点曙光了。先上图。

这两个函数是在page树以及page中查找符合条件的记录位置。

block=是函数的第一个参数

index是第二个参数,我在pyhton里把这个参数的两个属性给拼在一起了。其中mysql/columns是表名,table_id是索引名。即这个索引是mysql database中的columns表上的table_id索引。

上面这图,最下面应该是用来存统计数据的表的主键。右侧是一个和slot相关的函数,slot是page中用来保存记录的位置的一种结构。可以看到这个函数被调用了多次,是要得到不同page的slot。回头可以考虑把page id存下来,替代那个指针的值,更直观一些。

这5个block应该都属于同一个索引。

虽然还不够理想,但是感觉出现了索引名和表名之后,已经能够提供更多的直观信息了。

gdb python扩展代码中最主要的修改是:

#如果有需要查看的参数值,参数名和值单独成一个节点

#如果有多个参数,要把这些节点顺序连接起来

args = getFunctionArgs(name)

for i in range(len(args)):

argname = args[i]

#argvalue = frm.read_var( argname )

if( argname == "index" ):

argvalue = gdb.parse_and_eval("index->table_name").string() + " " + gdb.parse_and_eval("index->name->m_name").string()

vnodename = argname + "=" + argvalue

else:

argvalue = gdb.parse_and_eval( argname )

vnodename = argname + "=" + hex(long(argvalue))

nodes.append({"starttime":starttime,"stopid":MySQL_last_log.stopid,"name":vnodename})

if(i>0):

#如果有多个参数,要把这些节点顺序连接起来

links.append({"starttime":starttime,"stopid":MySQL_last_log.stopid,"linkorder":linkorder,"source":last_vnodename, "target":vnodename})

else:

links.append({"starttime":starttime,"stopid":MySQL_last_log.stopid,"linkorder":linkorder,"source":short_name, "target":vnodename})

linkorder += 1

last_vnodename = vnodename

当然,更重要的是,ACMUG成都活动马上开始了。咱们8月10日成都见吧。报名报名。【成都】安可数据库论坛暨「ACMUG」技术沙龙​www.huodongxing.com7a35f8895432ea965a34ee5fc373f93f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值