問題タブ [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.
sql - 非常に大きな PostgreSQL データベース テーブルを効率的に更新する
PostgresQL に非常に大きなデータベース テーブルがあり、「コピー済み」のような列があります。すべての新しい行はコピーされずに開始され、後でバックグラウンド プログラムによって別のものに複製されます。そのテーブルには部分インデックス「btree(ID) WHERE replicated=0」があります。バックグラウンド プログラムは、最大 2000 エントリ (LIMIT 2000) の選択を行い、それらを処理してから、2000 の準備された SQL コマンドを使用して 1 つのトランザクションで変更をコミットします。
ここでの問題は、この複製された値をリセットするオプションをユーザーに提供し、すべてをゼロに戻すことです。
更新テーブル セット レプリケート = 0;
不可能です:
- とても時間がかかります
- MVCCのため、テーブルのサイズが重複しています
- 1 つのトランザクションで実行されます。失敗するか、通過します。
この場合、実際にはトランザクション機能は必要ありません。システムがダウンした場合、システムはその一部のみを処理します。
その他のいくつかの問題:
また、悪いことです。テーブル全体でシーケンシャル スキャンを実行するため、遅すぎます。そうしないと、シークが多すぎるため、まだ遅くなります。
私が本当に必要としているのは、すべての行を通過し、それらを変更し、巨大なトランザクションに縛られない方法です。
奇妙なことに、
良いことではありますが、これも遅いです: DISK 順にテーブルを調べます...
(その場合、これをカバーする索引もあったことに注意してください)
(Mysql のような更新 LIMIT は PostgresQL では使用できません)
ところで: 本当の問題はもっと複雑で、既に展開されている組み込みシステムについて話しているので、リモートでスキーマを変更することは困難ですが、残念ながら PostgresQL 7.4 である可能性があります。
私が話している行の量は、たとえば 90000000 です。データベースのサイズは、数十ギガバイトになる場合があります。
データベース自体には 5 つのテーブルしか含まれておらず、そのうちの 1 つは非常に大きなものです。しかし、これは悪い設計ではありません。これらの組み込みボックスは、ERP システムなどではなく、1 種類のエンティティでのみ動作するからです。
何か案は?
c++ - VCC .sln のコンパイルが標準出力なしでバックグラウンドで実行されるのはなぜですか?
次のように、コマンド ラインからプロジェクトをコンパイルしようとしています。
コードはうまくコンパイルされているように見えますが、必要なのはそれだけではありません。
発生したコンパイラからの出力 (警告、エラーなど) をキャプチャできるようにしたいと考えています。残念ながら、上記のコマンドを発行するとすぐに、コマンド プロンプトに戻ります。
process-explorer または taskmgr.exe を見ると、devenv.exe プロセス (および他のいくつかのサブプロセス) が機能していないことがわかります。出力フォルダーを見ると、すべてのファイルが徐々に表示されていることがわかります。
VCC を GCC のようにもう少し機能させる方法はありますか?ビルド コマンドを発行するか、Makefile を使用してプロジェクトを作成すると、一連のメッセージが表示され、プロセスが完了するまでコンソールがブロックされます。
更新: ありがとう、2 つの優れたソリューション。動作確認できました。
amazon-web-services - Amazon SimpleDB で MVCC を実装するクライアント ライブラリはありますか?
Amazon の SimpleDB が一貫した読み取りと条件付きの更新/削除を実装するようになったので、MVCC を使用してクロスドメイン トランザクションを実装することが可能になります。
それを提供するクライアント ライブラリはありますか?
oracle - oracleからdb2への移行に対するMVCCの影響
私は単純な(実際には単純化された:))シナリオを持っていますが、これが過去数日間の頭痛の原因である可能性があります...
私の現在のアプリケーション(数百人のユーザーにサービスを提供)は現在、データベースとしてOracleを使用しています。ストアドプロシージャがありません(実際に欲しいです)。
ここで、データベースとしてIBMDB2に移行した場合に製品が機能するかどうかを尋ねられました。
したがって、Oracleを当然のことと考えて、MVCC(Multiversion Concurrency Control)に関するTomの記事を読み直し、DB2が「リストに載っていない」または「ただのつま先立ち」ではないことを示すこの投稿を読んだ後この地域は、いわば...製品がDB2でそのまま動作するかどうかはわかりません。
希望はありませんか..または私が使用できる素晴らしい免責事項がありますか..?
更新:DB2はアンティを引き上げ、少なくとも紙の上ではこれを見栄えよくしました。さて、db2-migration-requirementsに追加する「句」を取得しました。
c# - MVCcontribグリッドの各行にチェックボックスを追加する
MVCcontribグリッドの各行にチェックボックスを追加するにはどうすればよいですか。次に、フォームが投稿されたときに、どのレコードが選択されたかを調べますか?これを検索するとき、私はあまり見つけていません。ありがとうございました
sql - 高レベルの Postgres は INSERT/UPDATE 速度を低下させますか?
UPDATE
Pgで行を作成すると、その行が書き換えられ、新しい行がアクティブになると古い行が非アクティブになることがわかっています。これは、MVCC レイヤーの実装方法によるものです。
以上の利点は何UPDATE
ですかDELETE ... INSERT
?PostgresqlでのUPDATE
との関係について他に何か言いたいことはありますか? DELETE
このことやメーリング リストの投稿について言及しているドキュメントが見つかりません。明らかに、それらは異なるユーザー トリガーを実行しますが、異なるパフォーマンス プロファイルを与えるために内部で何が起こるのでしょうか?
database - インデックスはMVCCにどのように対処しますか?
あいさつOverflowers、
- 私の理解では(そして私が正しくないことを願っていますが)、インデックスへの変更をMVCC化することはできません。
- コピーにはコストがかかる可能性があるため、これは大きなレコードにも当てはまるのではないかと思います。
- レコードは(通常)インデックスを介してアクセスされるため、MVCCはどのように効果的ですか?
- たとえば、インデックスはMVCCされたレコードのさまざまなバージョンを追跡しますか?
この主題に関する最近の良い読み物はありますか?本当に感謝 !
よろしく
sas - MVCC を実装するにはどうすればよいですか?
MVCC (マルチバージョン同時実行制御) の概念の概要を説明している Web 上の多くのリソースを見つけましたが、それがどのように機能し、どのように実装されるべきかについての詳細な技術リファレンスはありません。実装の基礎となる十分な理論 (および理想的には少しの実用的なヘルプ) を含むオンラインのドキュメントまたはオフラインの書籍はありますか? 多かれ少なかれ PostgreSQL の機能をエミュレートしたいと考えています。
(情報については、SAS/Share を使用して SAS に実装します。これは、いくつかのロック プリミティブと、基になるデータ ストアへの同時読み取り/書き込みアクセスを提供しますが、トランザクションの分離や適切な DBMS 機能の方法には何もありません。 SAS/Share は、これは不可能な作業だと考えています。大声で言ってください!)
mongodb - MongoDB の上にマルチバージョン同時実行制御 (MVCC) を実装することは可能ですか?
MongoDB は私にとって素晴らしいデータベースです。ただし、アトミックなマルチドキュメント トランザクションが本当に必要な場合があります。たとえば、アカウント間で物 (お金や評判など) を転送するには、完全に成功するか完全に失敗する必要があります。
MultiVersion Concurrency Control パターンを実装するライブラリを介して MongoDB とやり取りすることは可能でしょうか。
パフォーマンスに関してはどれほど悪いでしょうか?必要な場合にのみ「mongo-mvcc」ライブラリを使用し、単一のドキュメントでのみ作業する場合に従来のデータベース接続を使用するハイブリッドアプローチを使用することは可能であり、有益でしょうか?それとも mvcc のものを壊しますか?