問題タブ [mvcc]
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.
postgresql - MVCC で DML ステートメントのロックが必要な理由
PostgreSQL では、MVCC 同時実行制御メカニズムは次のように述べています。
データのクエリ (読み取り) のために取得された MVCC ロックは、データの書き込みのために取得されたロックと競合しないため、読み取りによって書き込みがブロックされることはなく、書き込みによって読み取りがブロックされることもありません。
したがって、READ_COMMITTED の場合でも、 UPDATE ステートメントは現在影響を受けている行をロックするため、現在のトランザクションがコミットまたはロールバックされるまで、他のトランザクションはそれらを変更できません。
並行トランザクションがロックされた行に対して UPDATE を発行すると、最初のトランザクションがロックを解放するまで、2 番目のトランザクションはブロックされます。
この動作は、書き込みと書き込みの競合を防止しようとしていますか?
最初のトランザクションがコミットされた後、2 番目のトランザクションが行を上書きするため (UPDATE クエリの開始とクエリの終了の間にデータベースが変更された場合でも)、更新の損失は READ_COMMITTED でも発生する可能性があります。それでも更新が失われる可能性がある場合、2 番目のトランザクションを待たなければならないのはなぜでしょうか? 行レベルのスナップショットを使用してコミットされていないトランザクションの変更を保存し、トランザクションが書き込みロックが解放されるのを待たなければならないのを回避できませんでしたか?
ssis - SSIS 経由の Ingres 接続で LOCKMODE SESSION WHERE LEVEL = MVCC を設定する方法
SSIS から MVCC セッションに参加する方法についてアドバイスをいただけますか?
Ingres DB から読み取ると、MVCC を有効にし、SSIS 2008 R2 パッケージ内から分離レベルを指定する必要があります。
このデータベースには、MVCC を使用しない既存のアプリケーションが存在するため、既存の DBMS で単純に MVCC を有効にすることは適切ではありません。読み取りを MVCC に登録する理由は、ロックを引き起こしてこの既存のアプリケーションを壊さないようにするためです (これらの読み取りを実行するために MVCC を使用しない場合に現在定期的に発生しているように)。
DBのバージョンはIngres II 10.0.0 (su9.us5/132)
ADO.NET ドライバーのバージョンはIngres.Client.IngresConnection, Ingres.Client, Version=2.1.0.0
ドライバー、
Tibco BusinessWorks 内からプログラムで、また SQL Squirrel などを介してインタラクティブに行うという同様の要件があり、SQL の直接実行 (JDBC 経由) を介して次のコマンドを発行することで、このニーズを満たします。
IsolationLevel
SSIS では、タスク/シーケンスのプロパティを使用してセッション分離レベルを設定できます。しかし、MVCC コマンドを直接発行する手段が見つかりません。
ステップ経由でコマンドを発行しようとしExceute SQL Task
ましたが、次のエラーが発生しました。
行 1 の構文エラーです。最後に読み取られたシンボルは次のとおりです: 'SET LOCKMODE'
私が試したこと、無駄に:
- 終了の有無にかかわらず
;
- シーケンス内またはシーケンス外に配置された実行ステップ
DelayValidation
シーケンス レベルとステップ レベルの両方でプロパティを有効にしましたTransactionOption
シーケンスおよびタスクレベルでのさまざまな設定 (重要な場合に備えて!)- Windows 環境変数を介して lockmode を設定します
ING_SET = "SET LOCKMODE SESSION WHERE LEVEL = MVCC"
。しかし、私のテストでは、これはSSIS で使用している ADO.NET ドライバーでは受け入れられないことが示されています (ちなみに、SQL Squirrel または Tibco で使用している JDBC ドライバーでも受け入れられません)。これはおそらく ODBC の機能だと思います。 - データフロー内の ADO.NET ソース ステップ内からコマンドを発行する。同じ構文エラー。
- [UPDATE]
SET ...
Ingres プロシージャでコマンドをラップすることも試みましたが、SET ...
コマンドがプロシージャ内のどこでも有効ではないことを示す構文エラーが発生しました。
SSIS から MVCC セッションに参加する方法についてアドバイスをいただけますか?
この段階では (私は信じています)、ADO.NET ドライバーに制限されていますが、ODBC を使用する他のオプションがない場合は、そうする必要があります。
mongodb - 大きなドキュメント (> 1 MB) が頻繁に更新される場合、Monodb の更新パフォーマンスはどのように影響を受けますか?
ワイヤードタイガーストレージエンジンを使用するMongodbにはMVCCがあり、同時実行性を高めるために同じドキュメントの複数のバージョンを作成する場合があることを読みました。(MMAPv1 ストレージ エンジンを使用する Mongo には MVCC がありません。この質問は、有線タイガー ストレージ エンジンを使用する Mongo に関するものです。)
大きなドキュメント (> 1MB) を頻繁に更新する場合、そのドキュメントの複数のバージョンがディスクだけでなくキャッシュにも存在しますか? 古いバージョンはいつ削除されますか? Mongodb に適切な更新はありますか?
コレクション内のいくつかの大きなドキュメントを維持する予定であり、そのドキュメントは逆索引のように見えます。そのスキーマは次のようなものです {"userid" : ["follower1", "follower2", "follower3",....]} フォロワーのリストには 100,000 人以上のフォロワーが含まれる場合があります。いつでも、新しいフォロワーが追加されたり、古いフォロワーがリストから削除されたりする可能性があります。フォロワーのリストに新しいフォロワーを追加した場合のパフォーマンスはどうなりますか? ドキュメント内のフォロワー リストが 1 秒以内に 10 回更新された場合、少なくともしばらくの間、ドキュメントのコピーが 10 個あるでしょうか?
postgresql - クエリとレプリケーションが同時に発生すると、Postgresql でのレプリケーションが一時停止する
Postgress は MVCC ルールに従います。そのため、テーブルで実行されるクエリは、テーブルで発生する書き込みと競合しません。クエリは、クエリを実行した時点でのスナップショットに基づいて結果を返します。
今、私はマスターとスレーブを持っています。スレーブは、アナリストがクエリを実行して分析を実行するために使用されます。スレーブが複製していて、アナリストがクエリを同時に実行している場合、レプリケーションのラグが長時間表示されます。クエリが長時間実行されている場合、レプリケーションは長時間ラグが発生し、マスターへの書き込み数がたまたまかなり高い場合、WAL ファイルが失われ、レプリケーションを続行できなくなります。別のスレーブをスピンアップする必要があります。なぜこれが起こるのですか?ポスチャでクエリとレプリケーションを同時に実行するにはどうすればよいですか? これを実現するために適用できるパラメータ設定はありますか?
json - Swiftでinit()メソッドを持つクラスのインスタンスを作成するには?
これは私の LoginData モデル クラスです。
以下のクラスにクラスのインスタンスを作成したい:
parallel-processing - コンカレント データベース MVCC タイムスタンプ生成方法
MVCC スナップショット分離のためにデータベースのタイムスタンプを生成する必要があります。利用される典型的な方法:
「トランザクション アクションは、次のように SI-TM で実装されます。TM BEGIN: トランザクションの論理スナップショットは、グローバル タイムスタンプ カウンターへのアトミック インクリメントを使用して一意のタイムスタンプを取得することによって生成されます。」
数百のコアを持つシステムでこのアプローチを使用する際の問題は、スケーリングできないことです。競合するメモリ位置には、毎秒 10M アトミック インクリメントのハードウェア制限があります。
何か案は?
concurrency - MVCC & B ツリー & 同時実行性
私は現在dbmsの本を読んでいます.Mvcc(Multi version concurrency control)が同時読み取りおよび書き込みトランザクションに使用されていることを理解しています。ただし、「検索構造の同時実行制御」の章では、B ツリーのさまざまなロックの概念 (ロック結合、リンク手法など) について言及しています。
Mvcc は B-Tree の内部および dbms のリーフ ノードに適用されませんか? Bツリーの同時実行性とMVCCは完全に異なるものですか?そうであれば、Mvvcはdbmsにどのように実装されていますか?
hbase - コプロセッサに入れる postBatchMutate
現在の行の新しいキー値を BaseRegionObserver.postBatchMutate に入れたいのですが、MVCC でスタックしてデッドロックが発生しています。これが私のコードです:
出力には、次の WARN メッセージが繰り返し表示されます。
警告 regionserver.MultiVersionConcurrencyControl: STUCK: MultiVersionConcurrencyControl{readPoint=3, writePoint=5}
java - 単純な MVCC データ構造を実装する方法
さまざまな同時実行モデルとさまざまな同時実行機能について読んでいますが、単純な MVCC データ構造を実装する方法についてのテキストはありません。MVCC ベースの同時実行性を提供する単純な配列ベースのデータ構造を実装する必要があるとしましょう。私のコードはどのように見えるべきですか?
MVCC が基本的に次のことを意味することを理解しています: (マルチバージョン同時実行制御)
1) 読み取りの分離 - 書き込みによって読み取りがブロックされないようにする必要があります
2) 先行発生関係/順序付けを確立するためのタイムスタンプに基づく順序付け。
他の側面に注意する必要がありますか?
また、以下のコードは最初の要件を処理しますが、タイムスタンプの順序を実装するにはどうすればよいですか?
PS : 一般的な方法で実装されている方法を理解したいです。特定のデータベースでの実装方法の説明は控えてください。