24

データベースを修復した後、次のエラーが発生しました。

scode_tracker.ap_visits
note     : The storage engine for the table doesn't support repair
scode_tracker.visit_length
note     : The storage engine for the table doesn't support repair

テーブルの種類がInnoDBであることがわかりました。もう1つのテーブルはMyISAMで、正常に修復されました。

ここでいくつかのトピックを読んだ後、解決策はそれをMyISAMに変更することです。InnoDBとMyISAMについてはよくわかりません。テーブルを作成したときにタイプを指定しません。だから私の質問は、InnoDBの代わりにMyISAMを使用する必要がありますか?はいの場合、どうすればInnoDBからMyISAMに変更できますか?

4

3 に答える 3

11

MyISAMまず、とInnoDBエンジンの違いを理解する必要があります。そして、これはこのリンクに明確に述べられています。InnoDBをMyISAMに変換する場合は、このSQLステートメントを使用できます。

 ALTER TABLE t1 ENGINE=MyISAM;
于 2012-04-30T01:18:47.500 に答える
11

InnoDBはMyISAMとは少し異なり、どちらも実行可能なオプションです。プロジェクトに適していると思うものを使用する必要があります。

いくつかのキーポイントは次のとおりです。

  1. InnoDBはACID準拠のトランザクションを実行します。http://en.wikipedia.org/wiki/ACID
  2. InnoDBは参照整合性(外部キー関係)を実行しますhttp://www.w3resource.com/sql/joins/joining-tables-through-referential-integrity.php
  3. MyIsamは全文検索を行いますが、InnoDBは行いません
  4. InnoDBは書き込みの実行は高速ですが、MyISAMが読み取りを実行するよりも遅いと言われています(これをバックアップできず、これを分析する記事が見つかりませんでしたが、これを高く評価してくれた人がいます)、お気軽にこの点を無視するか、独自の調査を行ってください。
  5. デフォルト設定はうまく機能しません。InnoDBをそれに応じて微調整する必要があるため、http://mysqltuner.pl/mysqltuner.plなどのツールを実行してください。

ノート:

  • 私の意見では、2番目のポイントはおそらくInnoDBがMyISAMよりも大きな利点を持っているということです。
  • 全文検索がInnoDBで機能しないのは少し面倒ですが、異なるストレージエンジンを混在させることができますが、そうする場合は注意が必要です。

注2:-私はこの本「高性能MySQL」を読んでいます。著者は「InnoDBはデータをロードし、MyISAMよりも遅いインデックスを作成します」と述べています。これは、何を使用するかを決定する際の非常に重要な要素でもあります。

于 2012-09-27T11:22:33.833 に答える
1

コマンドに間違ったテーブルが設定されています。セットアップでは以下を使用する必要があります。

ALTER TABLE scode_tracker.ap_visits ENGINE=MyISAM;
于 2014-04-29T13:20:36.343 に答える