- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MySQL 5简体中文手册 第16章:编写自定义存储引擎
第16章:编写自定义存储引擎
目录
16.1. 前言
16.2. 概述
16.3. 创建存储引擎源文件
16.4. 创建handlerton
16.5. 对处理程序进行实例化处理
16.6. 定义表扩展
16.7. 创建表
16.8. 打开表
16.9. 实施基本的表扫描功能
16.9.1. 实施store_lock()函数
16.9.2. 实施external_lock()函数
16.9.3. 实施rnd_init()函数
16.9.4. 实施info()函数
16.9.5. 实施extra()函数
16.9.6. 实施rnd_next()函数
16.10. 关闭表
16.11. 为存储引擎添加对INSERT的支持
16.12. 为存储引擎添加对UPDATE的支持
16.13. 为存储引擎添加对DELETE的支持
16.14. API引用
16.14.1. bas_ext
16.14.2. close
16.14.3. create
16.14.4. delete_row
16.14.5. delete_table
16.14.6. external_lock
16.14.7. extra
16.14.8. info
16.14.9. open
16.14.10. rnd_init
16.14.11. rnd_next
16.14.12. store_lock
16.14.13. update_row
16.14.14. write_row
16.1. 前言
对于MySQL 5.1,MySQL
AB公司引入了插件式存储引擎体系结构,这样,就能创建新的存储引擎,并将它们添加到正在运行的MySQL服务器上,而不必重新编译服务器本身。
该体系结构简化了新存储引擎的开发和部署。
本章的意图是作为指南,用于帮助你为新的插件式存储引擎体系结构开发存储引擎。
关于MySQL插件式存储引擎体系结构的更多信息,请参见第14章:插件式存储引擎体系结构。
16.2. 概述
MySQL服务器采用了模块化风格。
图16.1:MySQL体系结构
存储引擎负责管理数据存储,以及MySQL的索引管理。通过定义的API,MySQL服务器能够与存储引擎进行通信。
每个存储引擎均是1个继承类,每个类实例作为处理程序而被引用。
针对需要与特殊表一起工作的每个线程,处理程序是在1个处理程序的基础上实例化的。例如,如果3个连接全都在相同的表上工作,需要创建3个处理程序实例。
一旦创建了处理程序实例,MySQL服务器将向处理程序发送命令,以便执行数据存储和检索任务,如打开表、操纵行和管理索引等。
能够以累进方式创建定制存储引擎:开发人员能够以只读存储引擎启动,随后添加对INSERT、UPDATE和DELETE操作的支持,甚至能够增加对索引功能、事务和其他高级操作的支持。
16.3. 创建存储引擎源文件
实施新存储引擎的最简单方法是,通过拷贝和更改EXAMPLE存储引擎开始。在MySQL
5.1源码树的sql/examples/目录下可找到文件ha_example.cc和ha_example.h。关于如何获得5.1源码树的说明,请参见2.8.3节,“从开发源码树安装”。
复制文件时,将名称从ha_example.cc和ha_example.h更改为与存储引擎相适应的名称,如ha_foo.cc和ha_foo.h。
拷贝并重命名了这些文件后,必须更换所有的EXAMPLE示例,以及具有存储引擎名称的示例。如果你熟悉sed,也能自动完成这些步骤:
sed s/EXAMPLE/FOO/g ha_example.h | sed s/example/foo/g ha_foo.hsed s/EXAMPLE/FOO/g ha_example.cc | sed s/example/foo/g ha_foo.cc16.4. 创建handlerton
handlerton(“单个处理程序”的简称)定义了存储引擎,并包含指向函数的函数指针,它以整体方式作用在引擎上,而函数工作在单独的处理程序实例中。在这类函数的一些示例中,包含用于处理注释和回滚的事务函数。
下面给出了一个来自EXAMPLE存储引擎的示例:
handlerton example_hton= { EXAMPLE, SHOW_OPTION_YES, Example storage engine, DB_TYPE_EXAMPLE_DB, NULL, /* Initialize */ 0,
您可能关注的文档
最近下载
- DL_T 5434-2021 电力建设工程监理规范.docx VIP
- 2025年中级银行从业资格之中级银行业法律法规与综合能力考试题库及答案【基础+提升】.docx VIP
- 海南省中医医术确有专长人员医师资格考核中医医术专长综述表.docx
- T0305系统项目测试总结报告.doc VIP
- 江苏省2025学位英语考试真题及答案解析2025.pdf VIP
- 2023年广东省广州市中考生物试题卷(含答案解析).docx
- 互联网医院整体方案介绍ppt课件.pptx VIP
- DB32∕T4304-2024高速公路经营管理安全生产隐患排查治理规程.pptx VIP
- 2024年秋季新人教PEP版英语三年级上册全册教案.docx
- 黑龙江省自然科学的研究系列中高级专业技术职务任职资格评审标准.doc VIP
文档评论(0)