文档章节

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

乱蓬头
 乱蓬头
发布于 2017/07/07 15:19
字数 799
阅读 1
收藏 0

摘要: Spider是为MySQL/MariaDB开发的一个特殊引擎,具有内嵌分片功能。现在它已经被集成到MariaDB10.0及以上版本中,作为MariaDB的一个新的主要特性。Spider的主要功能是将数据分散到多个后端节点,它的作用类似于一个代理。

Spider是为MySQL/MariaDB开发的一个特殊引擎,具有内嵌分片功能。现在它已经被集成到MariaDB10.0及以上版本中,作为MariaDB的一个新的主要特性。Spider的主要功能是将数据分散到多个后端节点,它的作用类似于一个代理。

 

本文主要分成四个部分来介绍Spider:

 

  1. 表链接:利用Spider,多个后端节点的表看起来就像存在于单一实例上一样。

  2. 事务:Spider实现了XA事务/单机事务接口,支持XA事务,以便在多个数据节点之间同步或者更新数据。

  3. 插拔式引擎:Spider作为MySQL/MariaDB的一个插拔式引擎,实现handler类定义的表访问方法。

  4. 读写流程:受MySQL Server层驱动,执行访问数据的动作。

 

一、表链接  

 

Spider的表链接的技术参考ISO/IEC 9075-9:2008 SQL/MED标准。利用Spider的这个特性,你可以像操作本地MariaDB实例的表一样来操作远程MariaDB实例上的表,也可以像操作本地MariaDB实例的表一样来操作分布在多个MariaDB实例上的表。

 

当创建一个Spider存储引擎的表时,该表指向远程服务器上对应的一张表或者多个实例上的表,就像UNIX/Linux中的软链接一样。远程服务器上的表可以是任何存储引擎的表。在执行CREATE TABLE命令创建Spider引擎的表时,需要添加COMMENT或CONNECTION语法来指定远程服务器的地址等信息。例如,在远程服务器(该服务器是数据节点,假设IP为192.168.0.1)上创建了如下一张表: 

 

CREATE TABLE s(id INT NOT NULL AUTO_INCREMENT, code VARHCAR(10), PRIMARY KEY(id));

 

在Spider节点创建一张表指向该表:

 

CREATE TABLE s(id INT NOT NULL AUTO_INCREMENT, code VARHCAR(10), PRIMARY KEY(id)) ENGINE=SPIDER COMMENT ‘host “192.168.0.1”,user “user1”, password “pwd1”, port “3307”’

 

在Spider节点,表字段定义可以忽略。Spider第一次访问表的时候,如果发现没有表字段定义,会从后端节点拉取相关元数据,然后缓存在本地。

 

Spider的系统表spider_tables记录了各个数据分片的位置信息,类似于编程语言中指针作用。该系统表可以便利Spider跨节点的join操作:访问数据所在的机器,然后把数据拉取到本地进行join操作;如果进行join操作字段不是分片字段,那么需要广播SQL语句将数据拉取到Spider节点进行join操作。

 

Spider_tables类似图1所示。

 

20170503093701236.jpg

图1. Spider表链接

 

二、事务  

 

Spider分别针对单机事务与XA事务实现了相应的操作事务的方法。图2列出了部分实现的方法。

本文转载自:http://click.aliyun.com/m/25251/

共有 人打赏支持
乱蓬头
粉丝 0
博文 382
码字总数 2595
作品 0
摆脱垂直&水平拆分的窘境,这一招管用!

作者介绍 张秀云,网名飞鸿无痕,现任职于腾讯,负责腾讯金融数据库的运维和优化工作。2007年开始从事运维方面的工作,经历过网络管理员、Linux运维工程师、DBA、分布式存储运维等多个IT职位...

张秀云
2017/06/22
0
0
摆脱垂直&水平拆分的窘境,这一招管用!

作者介绍 张秀云,网名飞鸿无痕,现任职于腾讯,负责腾讯金融数据库的运维和优化工作。2007年开始从事运维方面的工作,经历过网络管理员、Linux运维工程师、DBA、分布式存储运维等多个IT职位...

张秀云
2017/06/22
0
0
MariaDB Spider:实现MySQL横纵向扩展的小能手

什么是Spider? 当您的数据库不断增长时,您绝对需要考虑其他技术,如数据库分片。Spider 是 MariaDB 内置的一个可插拔用于 MariaDB/MySQL 数据库分片的存储引擎,充当应用服务器和远程后端 ...

hcymysql
2017/04/27
0
0
[MySQL][Spider][VP]Spider-3.2 VP-1.1 发布

Spider 是一个MySQL的存储引擎,支持事务处理,无限用户数访问,支持分区和集群。 Spider 团队很高兴的宣布 Spider 存储引擎 3.2 RC 版本和垂直分区存储引擎 1.1 Beta 版本发布了。 Spider 是...

oschina
2014/03/24
1K
1
[MySQL][Spider][VP]Spider-3.1 VP-1.0 发布

我很高兴的宣布 Spider 存储引擎 3.1 Beta 版本和垂直分区存储引擎 1.0 Beta 版本发布了。 Spider 是数据库拆分的存储引擎: http://spiderformysql.com/ Vertical Partitioning 是表垂直分区...

oschina
2013/10/08
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

微信小程序开发系列六:微信框架API的调用

微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发...

JerryWang_SAP
40分钟前
4
0
5 个用 Python 编写 web 爬虫的方法

大家在读爬虫系列的帖子时常常问我怎样写出不阻塞的爬虫,这很难,但可行。通过实现一些小策略可以让你的网页爬虫活得更久。那么今天我就将和大家讨论这方面的话题。 我刚整理了一套2018最新...

糖宝lsh
40分钟前
6
0
docker安装redis、mongodb、mysql等

一、启动docker服务,设置镜像: systemctl start dockervi /etc/docker/daemon.json{ "registry-mirrors": ["https://registry.docker-cn.com"]} 二、下拉镜像: 在镜像中心h...

狼王黄师傅
今天
5
0
deepin系统使用deepin-wine安装exe程序

deepin自带原生deepin-wine使用命令如下: deepin-wine QQBrowser.exedeepin-wine QQMusicSetup.exe 默认安装的快捷方式位置: /root/.wine/drive_c/'Program Files'/Tencent/QQBrowser/......

临江仙卜算子
今天
4
0
快速get到学习Linux操作系统的点

快速get到学习Linux操作系统的点 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能够运行主要的UNIX工具软件...

linuxCool
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部