2011-12-06 314 views
1

我为一些数据创建了一个小型搜索引擎,并且需要使用MyiSAM,因为它具有全文搜索功能。不幸的是,我还需要使用事务进行提交和回滚,以确保输入将被搜索的数据。MySQL合并InnoDb和MyiSAM表

我创建了一个用于数据存储的InnoDb表(因为它可以执行提交和回滚)以及一个MyiSAM表,它是InnoDb表的完全副本,用于使用全文搜索。现在的问题是保持这些表同步。

我正在寻找一种有效的方法来保持与InnoDb表同步的MyiSAM表。我不能使用触发器,因为在数据提交到InnoDb表之前,我不希望存储在MyiSAM表中的任何内容。

我很好,编写一些代码可以同步表上的提交,但我不确定快速的方法来结合这两个表。这些表格可能会很大,我不希望用户在一个小时内插入一条记录。在相同的上下文中,我不希望用户无法在当天的某个时间访问搜索引擎一个小时,因为cron作业会同步这两个表并锁定MyiSAM表。

有一点要提到的是,我的MySQL服务器在Bluehost上,因此MySQL在5.1版上被锁定,所以我不能在版本5.6中使用新的InnoDb全文搜索。当然,我不能在Bluehost上安装任何第三方搜索服务器,如狮身人面像。

如果有人对我的问题有很好的解决方案,我会非常感激。

回答

0

这是一个古老的问题,但是对于在搜索时碰到这个问题的人来说:InnoDB表支持从MySQL 5.6.4开始的FULLTEXT索引。

0

我有轻微的解决方法

  1. 安装MySQL复制
  2. 在主
    • 砸在MyISAM表
    • MyISAM表转换为InnoDB的
  3. 全文索引
  4. 在奴隶
    • 转换InnoDB表回的MyISAM
    • 重新创建MyISAM表

全文索引展望未来

我以前认为这