タグ

ブックマーク / kaigai.hatenablog.com (2)

  • CitusDB + PG-StromでScale-up+outする。 - KaiGaiの俺メモ

    PostgreSQL Advent Calendar 2019の14日目です。 PG-Stromの開発をやってると、しばしば聞かれるのが 『マルチノードの並列処理って対応してるんですか?』 という質問。 まぁ、『対応しておりませんし、対応する予定もございません』という回答になるんですが、別にこれはウチのやる気の問題ではなく、PG-StromはPostgreSQLの拡張モジュールとして設計されているため、並列分散処理に関しては他のメカニズムに任せてしまえばよい、というだけの話である。 そこで、今回は同じくPostgreSQLの拡張モジュールとして実装されているスケールアウト機能の Citus と、PG-Stromを組み合わせてちゃんと動作するんですよという事を検証してみる事にする。 Citusとは? PostgreSQLにデータ分散と並列処理機構を付加する拡張モジュールで、PostgreSQ

    CitusDB + PG-StromでScale-up+outする。 - KaiGaiの俺メモ
    msykt
    msykt 2019/12/16
    CitusDB + PG-Strom という構成が取れるのか…凄い / “実行時間は24.67sで、合計 353GB のテーブルをスキャンした結果としては中々のものである。”
  • 俺様スキャンの並列実行 - KaiGaiの俺メモ

    PostgreSQL v9.6からはパラレルスキャンが導入される事になっている。 この機能をざっくり説明すると 共有メモリ上に『次に読むブロックの番号』という状態を作っておく。 Gatherノードが複数のワーカープロセスを起動する。 各ワーカーで実行されるSeqScanが『次に読むブロックの番号』をアトミックにインクリメントしながらシーケンシャルスキャンを行う。 結果、個々のワーカーは来読むべきテーブルの内容を一部しか返却しない。しかし、各ワーカーの実行結果を全てマージするとテーブルの内容は全て読み出されている。(しかも並列に) という代物である。 読み出すブロック番号を共有メモリ上の情報から得ている以外は、全てシングルスレッド実行と同じコードを使用しているところがポイントである。 で、これと同じ事をForeignScanやCustomScanを使用して実装したい場合、並列対応版とそうで

    俺様スキャンの並列実行 - KaiGaiの俺メモ
    msykt
    msykt 2018/08/13
    PostgreSQLのforeign tableのparallel scanの仕方を追っかけていたらこのページに辿り着いた。"EstimateDSMCustomScan"等の関数はこの時に入ったのかな
  • 1