2 人のユーザーがINSERT INTO
同じターゲット テーブルに対してステートメントを同時に実行する場合、これらは並列で実行されますか、それとも順番に実行されますか?
この動作は、ターゲット テーブルに主キーがあるかどうかによって変わりますか?
これは、すべてのリレーショナル データベースに対して定義されたルールですか? それとも、ベンダーごとに異なる方法で実装されていますか?
2 人のユーザーがINSERT INTO
同じターゲット テーブルに対してステートメントを同時に実行する場合、これらは並列で実行されますか、それとも順番に実行されますか?
この動作は、ターゲット テーブルに主キーがあるかどうかによって変わりますか?
これは、すべてのリレーショナル データベースに対して定義されたルールですか? それとも、ベンダーごとに異なる方法で実装されていますか?
一般に、主キーが定義されている場合でも、それらは並行して実行されます (すべきです)。
動作は DBMS に大きく依存します。MyISAM を使用する MySQL は、たとえば、DML がテーブルに対して実行されている場合、テーブルへのそれ以降のアクセスをブロックします。デフォルト インストールの SQL Server と古いバージョンの DB2 についても同じことが言えます。
一般に、DBMS がMVCC (Oracle、PostgreSQL、Firebird、MySQL/InnoDB など) を使用している場合は、挿入が並行して実行されることが期待できます。
同時挿入をブロックできることの1 つは、2 つのトランザクションが同じ主キー値を挿入する場合です。その場合、2 番目のトランザクションは、最初のトランザクションがコミットする (2 番目のトランザクションで pk 違反エラーが発生する) か、ロールバックする (2 番目のトランザクションが成功する) まで待機する必要があります。