2011-12-06 17 views
1

一部のデータ用に小さな検索エンジンを作成しています。全文検索機能を備えているため、MyiSAMを使用する必要があります。残念ながら、私はまた、コミットとロールバックのトランザクションを使用して、検索されるデータの入力を確実にする必要があります。MySQLはInnoDbテーブルとMyiSAMテーブルをマージする

データストレージ用のInnoDbテーブル(コミットとロールバックができるため)と、フルテキスト検索を使用するためのInnoDbテーブルの完全コピーであるMyiSAMテーブルを作成しました。問題は、これらのテーブルを同期させておくことです。

InnoDbテーブルと同期したMyiSAMテーブルを効率的に保存する方法を探しています。 InnoDbテーブルにデータがコミットされるまでMyiSAMテーブルに格納されているものは欲しくないので、トリガは使用できません。

私は大丈夫ですが、コミット時にテーブルを同期するコードを書くのは大丈夫ですが、私は2つのテーブルを組み合わせる方法が不明です。テーブルが巨大になる可能性があり、ユーザーがレコードを1時間挿入するのを待たせたくありません。同じコンテキストでは、cronジョブが2つのテーブルを同期させてMyiSAMテーブルをロックするため、1日のうちのある時間にユーザーが検索エンジンにアクセスできないようにしたくありません。

私のMySQLサーバはBluehost上にあるため、MySQLはバージョン5.1でロックされているため、新しいInnoDbフルテキスト検索をバージョン5.6で使用することはできません。もちろんBluehostにはsphinxのようなサードパーティの検索サーバーをインストールすることはできません。

誰かが私の問題の良い解決策を持っているなら、私は非常に感謝しています。

答えて

0

これは古い質問ですが、検索でこの質問をする人にとっては、InnoDBテーブルはMySQL 5.6.4以降のFULLTEXTインデックスをサポートしています。

0

私はマスター に若干の問題を回避するに

  1. セットアップMySQLのレプリケーション
  2. を持って
    • InnoDBの
  3. にMyISAMテーブルを変換
  4. MyISAMテーブル上でFULLTEXTインデックスを削除
  5. スレーブ上
    • すべての挿入、更新、上の削除を行うMyISAMテーブル上でFULLTEXTインデックス

  • 前方

    を行く作り直すバックのMyISAM
  • をInnoDBのテーブルを変換しますマスター。
  • すべてのFULLTEXTがスレーブで検索します。

私は前にこれを示唆している:https://dba.stackexchange.com/a/22425/877

関連する問題