- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLのINSERT時にたまに重複になる)
MySQLのINSERT時に重複が発生してしまう場合の改善方法
このQ&Aのポイント
- MySQLのINSERT時に重複が発生してしまう場合の改善方法をご紹介します。
- 現在、重複インサートの確率が約3%ほどありますが、この問題を解決する方法について考えましょう。
- まず、AUTO_INCREMENTの値が重複しないのであれば、重複インサートが発生しないことになります。しかし、日付フィールドによるインサートの集中が問題となっています。そこで、インサートを分散させる方法を探りましょう。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Date, ID, No でユニークインデックスを作成して、DBに重複しないよう管理させてはどうでしょう。 CREATE UNIQUE INDEX idx_reg_data ON reg_data (Date, ID, No);
その他の回答 (1)
- lv4u
- ベストアンサー率27% (1862/6715)
回答No.2
データベースの一意性保証の問題ですね。 質問者さんの問題は、「同じデータがあるか確認」してから、実際に「レコード作成」までの間に、他のプロセスあるいはスレッドの処理が入りこむケースでしょう。 あるデータが、データ確認からレコード作成するまでに、他のプロセスが「データ確認・レコード作成」の処理ができないように、例えばテーブルロックすれば、解決しますね。 もちろん、テーブルロックをすることで全体の処理速度は低下します。それが、許容できるかどうか?許容できるなら、それで解決ですが、許容できないレベルの速度低下となるなら、キー項目の持ち方を変えるなり、何かさらに対策を考えることになると思います。
お礼
UNIQUE INDEXの詳しい利用方法を始めて知りました。 複数の組み合わせで ユニークになるようにMySQLに管理させる事が出来るんですね こんな便利な機能があったなんて・・・ 教えて頂きありがとう御座います! 無事に実装でき、重複が無くなりました!