検索

ホームページ  >  に質問  >  本文

ロック待機タイムアウトを回避するために、大量のデータ量の更新クエリを実行する場合の推奨事項は何ですか?

基本的に、現在次のクエリがあります:

リーリー

大量のデータがあるため、現在タイムアウトになっています。データベース構成を変更せずにタイムアウトを回避する方法はありますか?

P粉842215006P粉842215006281日前458

全員に返信(1)返信します

  • P粉675258598

    P粉6752585982024-03-30 00:05:32

    使用する パッケージは、ホスト RDBMS のトランザクション セマンティクスを使用して、不完全な操作を完全にロールバックできるようにするのに最適です。これは、単一の ACID 準拠のトランザクションで示したような更新操作を実行するように設計されていることを意味します。

    関連するテーブルが大きい場合 (数百万行以上)、トランザクションが非常に大きくなる可能性があります。 MySQL サーバーをクラッシュさせ、トランザクション ログをディスクまたは SSD に流出させる可能性があります。これらのトランザクション ログのコミットには長い時間がかかる場合があります。行数については言及しませんでしたが、行数が多い場合、Flyway はそのジョブに適したツールではない可能性があります。

    ロック タイムアウトは、他の同時アクティビティがあるデータベースに対してこれを実行していることを意味します。最良の結果を得るには、静かなデータベースでこれを実行することをお勧めします。

    これを行うことで、ロック待機タイムアウトを増やすことができます。

    リーリー

    それなら、休日の日の出前か、別の静かな時間にもう一度試してみてください。詳細については、こちらをご覧ください。

    Flyway ジョブが完了したら、ロック タイムアウトを以前の値に戻すことを検討してください。

    一度に 1000 行を更新するなど、バッチ更新を検討することもできます。しかし、フライウェイはこれをサポートしていないようです。このルートに進む場合は、別の質問をすることができます。

    返事
    0
  • キャンセル返事