2017-06-27 15 views
1

Djangoでsqlite3からMySQLに移行したいと思います。今私はOracle、MS Serverで作業していますが、私はExceptionをやりなおすまで繰り返し試すことができると知っています...しかし、これはデータがINSERTされなければならない同じテーブルに挿入されます。同じテーブルのINSERTを待つことに満足できないでしょう。MySql:多くの挿入にデッドロックしますか - Django?

多くのユーザーが同じ時間に挿入を行い、それを回避するために何をすべきなのか、ユーザーがそれを感知しないようにするために、デッドロックが発生するのだろうか?

+0

あるスレッドが別のスレッドが挿入を行っているときに同じ時間に挿入を行いたいときに、よくロックされることがあります。私は20スレッドがWebデータを挿入することがわかっているので、私はMS Serverのそれらのロックでの経験があると言うことができます。タイムアウトだとは分かりません。 –

+0

私は確信していませんが、私は原子的なトランザクションはここで動作すると思います。 –

答えて

1

私はあなたが急な挿入からちょうどデッドロックを得ることはできないと思います。デッドロックは、他のプロセスが待っている変更を行う前に、もう一方が何かを行うのを待っている2つのプロセスがある場合に発生します。 2つのプロセスがちょうど挿入されている場合、データベースは受け取った順に単純に処理しますが、それらの間に依存関係はありません。

InnoDBを使用している場合は、行レベルのロックが使用されます。したがって、2つの挿入が同じユニークキーを挿入しようとしない限り、互いにロックしてはならず、同時に実行できます。

+0

あなたが選択してから悪いものを挿入すると、テーブルロックが起こります。しかし、このInnoDBはすばらしい回避策だと思うので、私はgoogleを使ってhttps://dev.mysql.com/doc/refman/5.7/en/table-locking.htmlを見つけました。基本的には、エンジンInnoDBとthatsのテーブルを変更するだけですそれ。 Tnx! –

関連する問題