• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLのINSERT時にたまに重複になる)

MySQLのINSERT時に重複が発生してしまう場合の改善方法

このQ&Aのポイント
  • MySQLのINSERT時に重複が発生してしまう場合の改善方法をご紹介します。
  • 現在、重複インサートの確率が約3%ほどありますが、この問題を解決する方法について考えましょう。
  • まず、AUTO_INCREMENTの値が重複しないのであれば、重複インサートが発生しないことになります。しかし、日付フィールドによるインサートの集中が問題となっています。そこで、インサートを分散させる方法を探りましょう。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

Date, ID, No でユニークインデックスを作成して、DBに重複しないよう管理させてはどうでしょう。 CREATE UNIQUE INDEX idx_reg_data ON reg_data (Date, ID, No);

kzkz-16
質問者

お礼

UNIQUE INDEXの詳しい利用方法を始めて知りました。 複数の組み合わせで ユニークになるようにMySQLに管理させる事が出来るんですね こんな便利な機能があったなんて・・・ 教えて頂きありがとう御座います! 無事に実装でき、重複が無くなりました!

その他の回答 (1)

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

データベースの一意性保証の問題ですね。 質問者さんの問題は、「同じデータがあるか確認」してから、実際に「レコード作成」までの間に、他のプロセスあるいはスレッドの処理が入りこむケースでしょう。 あるデータが、データ確認からレコード作成するまでに、他のプロセスが「データ確認・レコード作成」の処理ができないように、例えばテーブルロックすれば、解決しますね。 もちろん、テーブルロックをすることで全体の処理速度は低下します。それが、許容できるかどうか?許容できるなら、それで解決ですが、許容できないレベルの速度低下となるなら、キー項目の持ち方を変えるなり、何かさらに対策を考えることになると思います。