【发布时间】:2012-01-13 18:00:48
【问题描述】:
我正在为一些数据创建一个小型搜索引擎,并且需要使用 MyiSAM,因为它具有全文搜索功能。不幸的是,我还需要使用事务进行提交和回滚,以确保输入将要搜索的数据。
我创建了一个 InnoDb 表用于数据存储(因为它可以执行提交和回滚),以及一个 MyiSAM 表,它是 InnoDb 表的精确副本,用于使用全文搜索。现在的问题是保持这些表同步。
我正在寻找一种有效的方法来保持 MyiSAM 表与 InnoDb 表同步。我不能使用触发器,因为在将数据提交到 InnoDb 表之前,我不希望在 MyiSAM 表中存储任何内容。
我可以编写一些在提交时同步表的代码,但我不确定组合这两个表的快速方法。这些表可能很大,我不希望用户等待一个小时才能插入一条记录。在相同的上下文中,我不希望用户在一天中的某个时间无法访问搜索引擎一个小时,因为 cron 作业会同步两个表并锁定 MyiSAM 表。
还有一点要提一下,我的 MySQL 服务器在 Bluehost 上,因此 MySQL 被锁定在 5.1 版本,所以我不能在 5.6 版本中使用新的 InnoDb 全文搜索。当然,我不能在 Bluehost 上安装任何第三方搜索服务器,例如 sphinx。
如果有人能很好地解决我的问题,我将不胜感激。
【问题讨论】:
标签: merge innodb sync myisam full-text-search