1

テーブル(ストレージとしてのinnodb)に約1,000万件のデータレコードがあります。通常、一括編集、挿入、追加を実行すると、最大ロックを超えてしまいます。いくつかのヘルプのヒントを読んだら、テーブルをMyISAMに変換して、いくつかの改善があるかどうかを確認したいと思います。

しかし、phpmyadminでストレージタイプをinnodbからmyisamに変更しようとすると、「ロック数がエラーを超えました」と表示されます。

  1. myIsamに変更するのは良いですか?
  2. 'maxnoを取得しないようにするためにどの手順を使用しますか。ロックの数がエラーを超えましたか?」

ありがとう

4

1 に答える 1

2

MyISAMに変更するのはおそらく非常に悪い考えです。トランザクションのサポートが失われ、データベースがジャーナル処理されないため、クラッシュによって回復可能性を超えてデータベースが簡単に破損する可能性があります。

サーバーのロックタイムアウトパラメータを調整して、操作の完了にかかる時間を長くすることができます。バッチ操作の場合、これは不可欠です。これは、innodb_lock_wait_timeout手動で調整するか、で設定できる構成パラメーターですmy.cnf。これは通常非常に短く、通常は50秒であるため、これを変更しない限り、多くの大きな操作は失敗します。

また、厳密に必要とされていないインデックスは、多くの遅延の原因となる可能性があるため、削除するように注意する必要があります。SHOW TABLE STATUSテーブルに関連付けられているインデックススペースの量がわかります。インデックスが大きいほど、特に一括挿入を行う場合、維持に費用がかかります。

于 2012-09-20T18:20:13.723 に答える