2009年12月1日星期二

MySQL插件式存储引擎



插件式存储引擎本身是数据库服务器的组件,负责对执行真正的数据IO操作,也使得并强制一定的功能集为特定的应用服务.

插入引擎的方法:
mysql> INSTALL PLUGIN ha_example SONAME 'ha_example.so';
拔出引擎的方法:
mysql> UNINSTALL PLUGIN ha_example;


在存储引擎中一些支持底层结构的组件的是什么?一些关键功能如下:
并发 : 锁粒度的要求.以及多版本并发控制和快照读的功能
事务支持: 遵从ACID原则
引用完整性:使服务器强制关系型数据库通过DDL定义的外键保证引用完整
物理存贮:存贮数据到磁盘
索引支持:不同的应用场景总是从不同的索引策略中受益,每个存贮引擎总有它自己的索引方式,虽然一些如B树索引总是对所有引擎通用的.
内存缓冲:采用内存缓冲能取得更好的响应时间
性能辅助:包括多IO的线程来并行操作.线程并发,数据库检查点,大批量插入处理
其它目标的特性:如地理空间操作,安全限制等等

源码:
自定义存贮引擎要实现handler接口,这个是在sql/handler.h.可以参考的例子在storage/下
可参考的实现如 : csv (272k), MyISAM (1.5M), Innobase(5.5M)(InnoDB), Innodb_plugin(6.7M)

handler类主要提供了创建,删除表,写,更新,删除行,索引,更新,Scan,锁的虚函数.子类重载它来实现一个数据存贮引擎.





没有评论:

发表评论