タグ

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

  • HyperLogLogを使ったカーディナリティの推測 - KaiGaiの俺メモ

    高校生の頃までは滋賀県に住んでいた事もあり、夜、勉強の合間に、KBS京都で放送されていた『日髙のり子のはいぱぁナイト』を聞いており、日々ネタを考えては、番組へハガキを投稿する常連だった*1のですが(←勉強はどうした)、今回は、PG-Stromに実装した『はいぱぁ』な機能を紹介したいと思います。 ja.wikipedia.org SELECT COUNT(distinct KEY) は結構難しい SELECT COUNT(KEY) FROM my_table;が SELECT COUNT(distinct KEY) FROM my_table;になった瞬間、特にサイズの大きなテーブルをスキャンする場合には、非常に難しい問題になってしまいます。 最初の例は、KEYが非NULLである行数を全部カウントして返せば良いのですが、後者の場合はKEYが重複する場合にはカウントしないため、重複排除を行うた

    HyperLogLogを使ったカーディナリティの推測 - KaiGaiの俺メモ
  • GPUメモリストア(Gstore_Fdw) - KaiGaiの俺メモ

    この記事は「PostgreSQL Advent Calendar 2020」の 16日目です。 GPU版PostGISの他に、今年のPG-Stromの機能強化のうち比較的大きめのものについてもご紹介したいと思います。 GPUメモリストア(Gstore_Fdw)とは GPUデバイスメモリ上に予め確保した領域にデータを保存し、これをPostgreSQLのFDW(Foreign Data Wrapper)を通じて読み書きする機能。GpuScan/GpuJoin/GpuPreAggといったPG-Stromの提供する各種ロジックにおいてデータソースとして活用する事ができ、その場合、ストレージやホストRAM上のバッファからデータを読み出す必要がないため、その分の処理を節約する事ができる。 この手の機能を持ったGPU-DBというのは他にもあるが、Gstore_Fdwのポイントは更新系ワークロードもきちん

    GPUメモリストア(Gstore_Fdw) - KaiGaiの俺メモ
  • スキャン速度10GB/sへの挑戦~その②~ - KaiGaiの俺メモ

    一年半ほど前、次のようなエントリーを書いた。 kaigai.hatenablog.com かいつまんで言うと、多段JOINのように、実際に実行してみないと結果行数が明らかではなく、かつ、ステップ(k+1)の最適な問題サイズがステップkの結果に依存する場合、Kepler以降のGPUでサポートされた Dynamic Parallelism を使えば素直に実装できるという話である。 実際、この時期以降のGpuJoinロジックはDynamic Parallelismを用いて実装されていた。 だが、プロファイラ等を用いて詳しく調べてみると、どうやら、ある程度以上のパフォーマンスでクエリを処理している状況においては、このような設計はGPUが持つ来の能力を引き出す上で必ずしも適切ではないという事が明らかになった。 例えば、以下のグラフは半年ほど前にStar Schema Benchmark(SSBM)

    スキャン速度10GB/sへの挑戦~その②~ - KaiGaiの俺メモ
  • 1