博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql中存储引擎模板
阅读量:4214 次
发布时间:2019-05-26

本文共 1717 字,大约阅读时间需要 5 分钟。

mysql中的存储引擎都在storage 目录下,目前看有csv/federated/heap/innobase/myisam/myisammrg/ndb等,这里最简单的应该就是csv同时这个目录下有个example的目录可以作为自己写的存储引擎模板mysql_declare_plugin(example){    MYSQL_STORAGE_ENGINE_PLUGIN,    &example_storage_engine,    "EXAMPLE",    "Brian Aker, MySQL AB",    "Example storage engine",    PLUGIN_LICENSE_GPL,    example_init_func, /* Plugin Init */    NULL,              /* Plugin check uninstall */    NULL,              /* Plugin Deinit */    0x0001 /* 0.1 */,    func_status,              /* status variables */    example_system_variables, /* system variables */    NULL,                     /* config options */    0,                        /* flags */} mysql_declare_plugin_end;从这里可以知道存储引擎是作为plugin 放在mysql中的,可以最重要的函数就是example_init_func, /* Plugin Init */static int example_init_func(void *p) {  DBUG_ENTER("example_init_func");  example_hton = (handlerton *)p;  example_hton->state = SHOW_OPTION_YES;#可以指定创建handler的callback函数  example_hton->create = example_create_handler;  example_hton->flags = HTON_CAN_RECREATE;  example_hton->is_supported_system_table = example_is_supported_system_table;  DBUG_RETURN(0);}*example_create_handler的实现如下:可以看到这里会新建class ha_examplestatic handler *example_create_handler(handlerton *hton, TABLE_SHARE *table,                                       bool, MEM_ROOT *mem_root) {  return new (mem_root) ha_example(hton, table);}ha_example 是handler的子类,这个类中实现具体对mysql的操作,例如write_row/rename_table等具体操作class ha_example : public handler 这里以rename_table 为例,可以看到当使用这个存储引擎是rename操作就仅仅打印一行log而已int ha_example::rename_table(const char *, const char *, const dd::Table *,                             dd::Table *) {  DBUG_ENTER("ha_example::rename_table ");  DBUG_RETURN(HA_ERR_WRONG_COMMAND);}

 

转载地址:http://ainmi.baihongyu.com/

你可能感兴趣的文章
数据库知识点小结
查看>>
指针、内存和字节
查看>>
设计模式中类的关系
查看>>
策略模式、代理模式
查看>>
单例模式(singleton),工厂方法模式(factory),门面模式(facade)
查看>>
抽象模式,适配器模式(Adapter),模板方法模式(Template method)
查看>>
建造者模式(builder),桥梁模式(bridge mode),命令模式(Command mode)
查看>>
装饰模式(Decorator),迭代器模式(Iterator),组合模式(composite)
查看>>
观察者模式(Observer),责任链模式,访问者模式(Visitor)
查看>>
状态模式(State)
查看>>
堆、归并排序
查看>>
总结23中设计模式应用场景
查看>>
插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序
查看>>
C#命名空间
查看>>
C++中模版的使用
查看>>
TCP链接(三次握手)和释放(四次握手)
查看>>
面试中各类二叉树题型的整理
查看>>
快速排序
查看>>
插入算法
查看>>
希尔排序
查看>>