我目前正在探索自定义 MySQL 引擎是否可以满足我的需求。我一直在看http://forge.mysql.com/wiki/MySQL_Internals_Custom_Engine .我想知道的一件事是:我可以使用现有的(二进制)文件创建引擎吗?
如果是,我猜(?)没有“CREATE TABLE...
”那么,MySQL 是如何知道这个表的?
已编辑 假设我有一个工具编写一个名为“records.bin”的大二进制文件,它是以下 C 结构的串联
struct Record
{
char field1[10];
int field2;
};
我想编写一个自定义的 MySQL 引擎来执行以下查询:
((declare table t1 as 'records.bin' exists somewhere ???))
select field1 from t1 where field2=1;
应该是可以的,正如文档所说:
The most basic storage engines implement read-only table scanning. Such engines might be used to support SQL queries of logs and other data files that are populated outside of MySQL.
最佳答案
是的,这是可能的。仅仅因为 CREATE TABLE 实际上在 myisam 等传统存储引擎中创建文件并不意味着您必须这样做。
事实上,CSV 存储引擎将使用数据目录中现有的适当命名的 CSV 文件。如果该文件不存在,则会创建一个空白文件。
关于MySQL 自定义引擎 : already existing data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1677105/