加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

MySQL存储引擎之Spider内核深度解析

发布时间:2021-01-13 21:15:56 所属栏目:电商 来源:网络整理
导读:《MySQL存储引擎之Spider内核深度解析》要点: 本文介绍了MySQL存储引擎之Spider内核深度解析,希望对您有用。如果有疑问,可以联系我们。 作者介绍 朱阅岸 ,中国人民大学博士,现供职于腾讯云数据库团队.研究方向主要为数据库系统理论与实现、新硬件平台下的

图8-1. 索引扫描实现

图8-2. 全表扫描

2、INSERT操作

MySQL的handler类对于INSERT操作提供的接口函数的名字是write_row.存储引擎想要支持INSERT操作就必须实现write_row方法.Spider对于write_row方法的实现是简单地根据查询解析的信息拼接一条INSERT语句,发往后端节点处理.如果是批量插入操作则需要与MySQL Server层配合,将INSERT语句批量发到后端节点.

图9结合一条批量插入的INSERT语句给出MySQL中INSERT操作的具体实现.

mysql_insert调用write_row执行具体的插入操作(第8行).这是存储引擎必须实现的方法.对应于spider,spider根据查询涉及到的列(field)拼成一条INSERT语句(如果是分片数据库,VALUSE中的列必须包含分区键,分区键是自增列的情况除外).图9中的QUERY将用户ID(ID)和用户名(Name)插入到user表,其中ID是分区键.mysql_insert根据VALUES包含的元组数目,判断是否需要进行批量插入操作.该例子的QUERY的VALUES包含4条元组,所有需要进行批量插入操作.MySQL循环调用write_row方法触发spider生成INSERT语句.Spider的write_row方法实现中会根据分区键将INSERT语句进行分组(第5行~第9行).图9给出的实例只有两个数据分片,所以SQL语句被分成两组.处理完VALUES以后,Spider的INSERT语句也拼接完成.

ha_end_bulk_insert方法通知Spider完成VALUES处理.此时,Spider将INSERT发送到后端节点进行处理(第11行).

图9. Spider中INSERT操作的实现

3、DELETE实现

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读