MySQLが挿入中にMyISAMテーブルに対してテーブルレベルのロックを実行することを何度も読みました。そのロックが挿入/削除コマンドのみをシリアル化するためのものであれば問題ありません。とにかく私のウェブサイトで挿入は非常にまれです。
しかし、そのロックは、挿入コマンドが終了するまで、すべてのSelectクエリもブロックしますか?
書き込みロックは、ロックしたテーブルを使用するすべての選択をブロックします。
MySQL サーバーで分離レベルを達成するために、SET SESSION コマンドを使用してセッション分離モードを変更できます。
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;
上記のステートメントは、WITH (nolock)、つまり READ UNCOMMITTED データのように機能します。すべての接続に対してグローバルに分離レベルを設定することもできます。
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
MySQL サーバーには、分離レベルに関連する 2 つのシステム変数があります。
SELECT @@global.tx_isolation;
SELECT @@tx_isolation;
最初のステートメントはグローバル分離レベルを返し、2 番目のステートメントは現在のセッションのみを返します。
SQL Server では、このようにトランザクション レベルで分離レベルを設定することもできます。
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO
続きを読む @: nolockを使用した mysql