2011-12-06 297 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表

全文索引展望未來

我以前認爲這