問題タブ [isolation-level]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - READ_COMMITTED_SNAPSHOT が有効になっていることを検出する方法は?
Microsoft SQL Server で、T-SQL コマンドを使用してデータベースの分離レベルが設定されているかどうかを検出する方法はありますALTER DATABASE <database> SET READ_COMMITTED_SNAPSHOT ON;
か?
T-SQL または Management Studio の GUI を介してこれを検出する簡単な方法が見つかりません。
sql-server - SET READ_COMMITTED_SNAPSHOT ON にかかる時間は?
実行にかかる時間
実行したところ、10分かかりました。
適用されているかどうかはどうやって確認できますか?
sql-server - SQL ServerでREAD COMMITTED SNAPSHOTをプログラムで有効にする方法は?
SQL Server で READ COMMITTED SNAPSHOT をプログラムで有効にする必要があります。どうやってやるの?
sql-server-2008 - Web アプリケーション用の SQL Server 2008 のチューニング
Stackoverflow ポッドキャストの 1 つで、Jeff Atwood が、SQL Server 2008 にはロックを削減する構成オプションがあり、すべてのクエリで "with (nolock)" を使用する代わりのようなものだと言ったことを覚えています。彼が話していた機能を有効にする方法を知っている人はいますか? おそらくジェフ自身でさえも. SQL Server 2008 の展開を検討しており、このような機能を使用することが Web アプリケーションに役立つかどうかを確認したいと考えています。
oracle - 別のOracleセッションの内部を覗く方法はありますか?
データベースを調べているクエリエディタ(Toad)があります。
同時に、独自の接続を使用してアプリケーションをデバッグしています。
私のアプリケーションはトランザクションを開始し、いくつかの更新を行い、次にいくつかのSELECTステートメントに基づいて決定を下します。更新ステートメント(多くの複雑なもの)はまだコミットされていないため、アプリケーションがSELECTから取得する結果は、Toadで同じステートメントを実行した場合に取得する結果と同じではありません。
現在、アプリからのクエリ出力をテキストファイルにダンプし、それを読み取ることでこれを回避しています。
コミットが完了する前に、別のOracleセッションの内部を覗いて、そのセッションが何を表示するかを確認するためのより良い方法はありますか?
これを尋ねる別の方法は次のとおりです。Oracleでは、他の人のセッションに影響を与えることなく、2つのセッション間でのみダーティ読み取りを有効にできますか?
sql-server - 読み取りコミットされた分離レベルとテーブル制約のあるトランザクション
テーブル制約は同じトランザクションで実行されますか?
テーブルにいくつかの行を挿入する読み取りコミット分離レベルのトランザクションがあります。テーブルには、同じテーブルからいくつかの行を選択する関数を呼び出す制約があります。
関数はトランザクションについて何も知らずに実行されているように見え、関数のselectは、トランザクションの前にあったテーブルの行を返します。
回避策はありますか、それとも何か足りないものがありますか?ありがとう。
トランザクションと制約のコードは次のとおりです。
sql-server - 共有読み取りロックはいつ解除されますか?
SQL Server オンライン ブックで、「リソースの共有 (S) ロックは、読み取り操作が完了するとすぐに解放されます。ただし、トランザクションの分離レベルが反復可能な読み取り以上に設定されているか、ロック ヒントを使用して共有 ( S) トランザクションの間ロックします。」
デフォルトの分離レベル (Read Committed) で、明示的なトランザクションのない行レベルのロックについて話していると仮定すると、「読み取り操作」とは何を指しますか?
- 単一行のデータの読み取り?
- 単一の 8k IO ページの読み取り ?
- または、ロックが作成された完全な Select ステートメントの実行が完了するまで、他にいくつの行が含まれていてもかまいませんか?
注: これを知る必要がある理由は、データ レイヤー Web サービスによって生成された数秒間の読み取り専用の select ステートメントがあり、ページ レベルの共有読み取りロックを作成し、行レベルの排他的更新ロックと競合するためにデッドロックを生成するためです。サーバーを最新の状態に保つ複製プロセスから。選択ステートメントはかなり大きく、多くの副選択があります。ある DBA は、「ロックが保持される時間を短縮するために」複数の小さなステートメント (より短い実行部分) に分割するように書き直すことを提案しています。これは、選択ステートメントが完了するまで共有読み取りロックが保持されることを前提としているため、それが間違っている場合 (行またはページが読み取られるときにロックが解放される場合)、そのアプローチはまったく効果がありません....
sql-server - MS SQL Serverの追加専用テーブルのロックを最小限に抑えるためのアドバイスはありますか?
(エラーがスローされたときや開発中だけでなく)本番環境で実行されるロギング/監査コードを書いています。Coding Horrorのデッドロックとロギングの経験を読んだ後、私はアドバイスを求めるべきだと決めました。(「ログに記録しない」というJeffのソリューションは私には機能しません。これは、法的に義務付けられているセキュリティ監査です)
競合とデッドロックを最小限に抑えるための適切な分離レベルはありますか?挿入ステートメントまたはストアドプロシージャに追加できるクエリヒントはありますか?
私は、監査テーブルを除くすべてのトランザクションの整合性に深く関心を持っています。非常に多くのログが記録されるため、いくつかのエントリが失敗しても問題はありません。ロギングが他のトランザクションを停止した場合、それは悪いことです。
データベースまたはファイルにログを記録できますが、ファイルへのログ記録は、結果を何らかの方法で表示できる必要があるため、あまり魅力的ではありません。ただし、ファイルにログを記録すると、ログが他のコードに干渉しないことが(ほぼ)保証されます。
sql - 現在のトランザクションレベルを見つける方法は?
SQL Serverで現在のデータベースのトランザクションレベルをどのように見つけますか?