問題タブ [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 - OracleのREADCOMMITTEDデータベース分離レベル
オラクルに接続されたWebアプリに取り組んでいます。Oracleには、「アクティブ化された」列を持つテーブルがあります。この列を一度に1に設定できるのは1行だけです。これを強制するために、JavaでSERIALIZED分離レベルを使用していますが、「トランザクションをシリアル化できません」というエラーが発生し、その理由を理解できません。
READCOMMITTEDの分離レベルでうまくいくかどうか疑問に思っていました。だから私の質問はこれです:
次のSQLを含むトランザクションがある場合:
これらのトランザクションの複数が同時に実行される可能性があるとすると、複数のMODEL行でアクティブ化されたフラグを1に設定することは可能でしょうか?
どんな助けでもいただければ幸いです。
mysql - mysql 分離レベル
ここのドキュメントに少し混乱しています。私はトランザクションを持っています。
- 取引開始
- いくつかの更新を行います
- いくつかの選択を行います
- さらにいくつかの更新を行います
- 専念
ステップ3の選択でステップ2の更新の結果を確認したいのですが、すべてをロールバックできるようにしたいと考えています。
コミットされた読み取りは、選択がコミットされたデータのみを表示することを暗示しているようであり、反復可能な読み取りは、後続のすべての選択が最初の選択時に存在していたのと同じデータを参照することを暗示しているようです。したがって、私の更新は無視されます。read uncommittedは正しいことをしているように見えますが、「しかし、行の以前のバージョンが使用される可能性があります」 - これも受け入れられません。
ここで本当に私の唯一の希望はシリアル化可能ですか?
ここでドキュメントに取り組んでいます
sql-server - SQL Server 2005 で既定の TRANSACTION ISOLATION LEVEL を変更するにはどうすればよいですか?
SQL Server のデフォルトの TRANSACTION ISOLATION LEVEL が「読み取りコミット」であることは知っています。「READ UNCOMMITTED」に変更したい場合、この設定変更を行うにはどうすればよいですか?
注: 現在のセッションでのみ適用される SET TRANSACTION ISOLATION LEVEL は使用できません。何千ものクエリが関係しているため、クエリに NOLOCK を追加することはできません。
ありがとう
ご回答有難うございます。ダーティな行を読み取っても問題ありません。私たちの場合も更新は問題ではありません。しかし、私は本当にこの分離レベルのデフォルト設定を変更したいと思っています。親切に助けてください。
「SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED」ができません。私は世界的な変化を起こさなければなりません。
両方のスナップショット分離レベルを慎重に確認しました。私たちの状況では使用できません。
sql-server - SQLServerの分離レベル-繰り返し可能な読み取り
なぜこれが起こっているのか、頭を丸めるのに問題があります。私は理論を理解していると確信していますが、私には見えない何かが起こっているに違いありません。
表Aのスキーマは次のとおりです。
SprocAは、分離レベルを反復可能読み取りに設定し、テーブルAから。を持つ行を選択しますType=1
。また、これらの行を更新します。
SprocBは、テーブルAから。を持つ行を選択しますType=2
。
これらは完全に異なる行セットであるため、両方を同時に実行すると(そして、WAITFOR
速度を落とすために呼び出しを行うと)、SprocBはSprocAまで完了しません。
プライマリIDに基づいて選択した場合と同様に、タイプのクエリに関係していることはわかっています。これにより、テーブルへの同時アクセスが可能になります。
誰かが光を当てますか?
乾杯
php - mySQL - PHP の mysqli を使用して分離レベルを設定する
mysqli を使用して PHP でトランザクションの分離レベルを「SERIALIZABLE」に設定するにはどうすればよいですか? 私はどこでも見ましたが、それに関する情報は見つかりませんでした。
ここでは、分離レベルについて説明します。
sql-server - Crystal Reports with SQL Server 2005: トランザクション分離レベルの設定
Crystal Reports が SQL Server 2005 データベースを照会するときに、次のいずれにも頼らずにトランザクション分離レベルを指定する方法はありますか?
SET TRANSACTION ISOLATION LEVEL...
クエリ自体の前に実行されるストアド プロシージャにレポートのクエリをカプセル化する- Crystal Reports で SQL クエリを手書きして実行する
SET TRANSACTION ISOLATION LEVEL...
sql-server - msdtc と分離レベル
以下に示すシナリオでMS-DTCがどのように動作するかを明確にする必要があります
1) トランザクション スコープ (分離レベル - ReadCommited) 内に複数の接続があります。これにより、MS-DTC が動作します。
a) MS-DTC は自動的に分離レベルを SERIALIZABLE に変更しますか。
b) (Imp) 上記の答えが「はい」で、行のバージョン管理ベースの分離レベルを実装している場合、つまり TransactionScope に加えて、READ_COMMITTED_SNAPSHOT データベース オプションも有効にしています。レベル。
ありがとう
sql - UPDATE ステートメントでコミットされていないデータをセルに更新する
名前と値のペアのデータを格納するテーブルを、SQL Server 2008 でリレーショナル形式に変換したいと考えています。
ソース テーブル
対象が必要
私は以下の戦略に従っています。
顧客テーブルに文字列テーブルの ID 値を入力します
次のものが得られます
ID 列を使用して文字列に結合することにより、残りの属性で Customers を更新します。このように、Customers の各レコードには、対応する 2 つの一致するレコードがあります。
中間状態は似ていますが、
しかし、これは期待どおりに機能していません。句で値を割り当てるSET
と、コミットされていない値ではなく、コミットされた値のみが設定されるためです。コミットされていない値を (クエリの処理時間内に)UPDATE
ステートメントに設定する方法はありますか?
PS:代替ソリューションを探しているわけではありませんが、コミットされていないデータをUPDATE
.
ado.net - ADO.Net トランザクションに関するヘルプが必要
Microsoft SQL Server 2005 sp3 で C# ウィンドウ アプリケーションを開発しています。
クライアントの 1 つが注文ドキュメントを保存しているときに、アプリケーションに問題があります。
別のクライアントが Order テーブルからデータを選択できません。保存プロセスが完了しました。
Order Document を保存するために Transaction と Isolation=ReadUncommit を使用しました。
私のアプリケーションには、OrderHd、OrderLine、OrderSerial の 3 つのテーブルがあります。
オーダードキュメント1件あたりのOrderSerialの記録 約1,000~5,000記録
//My Saving Process
try
{
dbConn.Open();
dbTran = dbConn.BeginTransaction(IsolationLevel.ReadUncommitted);
//1) OrderLine を保存
//2) OrderSerial を保存
//3) OrderHd を保存
dbTran.Commit();
}
例外
{
dbTran.Rollback();
}
最後に
{
dbConn.Close();
}
この問題を解決するにはどうすればよいですか??? _ _"
sql - TSQL スナップショット分離
SQL2k5 を使用して、他の多数のテーブルにデータを入力する列を含むステージング テーブルを作成しました。たとえば、次のようなステートメントです。
[appTable1] のトリガーは、新しく挿入された行の ID 列の値を [stageTable] に戻します。この例では、それは [stageTable].[appTable1_ID] であり、FK として他のテーブルに挿入されます。より類似したステートメントは次のように続きます。
このプロセスは、このような多数のテーブルを介して続行されます。ご覧のとおり、ステージング テーブルからの SELECT には WHERE 句を含めていません。このテーブルはプロセスの最後で切り詰められるからです。ただし、これにより、このトランザクションの途中で別のプロセスがこのステージング テーブルにレコードを追加する可能性が残り、それらのレコードには以前に入力された FK が含まれなくなります。これを防ぐために、このステートメントを発行しますか?:
これが最善の解決策である場合、この方法の欠点は何ですか?