問題タブ [citus]
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 - Citus: 既存のデータベースを citus のワーカー ノードにする
Web アプリで使用されるサーバーの 1 つに既にデータベースがあります。D1としましょう
D1と何らかの関係を持つ他のサーバー上に、新しいデータベースD2を使用して新しい Web アプリを作成したいと考えています。
シタスデータ サーバーを作成し、 D1とD2の両方をシャード テーブルとして追加し、ワーカー ノードをそれぞれのサーバーとして追加したいと考えています。
citus のドキュメントで見つけたのは、シャード データベース テーブルがcitusサーバー上に作成され、利用可能なワーカー ノードに自動的に配布されるということです。
既存のデータベースをワーカー ノードおよびシャード テーブルとして新しく新しいcitus サーバーで使用するにはどうすればよいですか。
sql - タイムスタンプの違いでグループ化するとパフォーマンスが低下する
列をLEFT JOIN
持つ2つのテーブルを作成し、結果をグループ化するクエリがありますtimestamptz
このような手探りでは、クエリのパフォーマンスが 1 秒 (他の列でグループ化する場合) から 40 ~ 60 秒に低下します。これは既知の問題ですか?回避策はありますか? この動作は、ハードウェア構成に依存しません (最適化された Postgres 構成のサーバー マシンでテストされています)。Citus拡張機能も使用しています。テーブルは日付範囲で分割されていますが、これは関連していません (テスト済み)。
テーブル DLL
クエリ
のみでグループ化する場合の計画table_one_day
table_one_day
および でグループ化する場合の計画period
postgresql - <=結合を使用せずに時系列に対して欠落データをバックフィルしますか?
このスキーマにほぼ従うテーブルがあります。
テーブルはとても大きいです。
次の結果を生成しようとしていますが、フィルタリングにはいくつかの IDS (1 と 2 のみなど) のみが含まれます。
last_value ウィンドウ関数を試してみましたが、表示されるレコードを取得できますが、レコードがテーブルに表示されない場合、データが遅れる必要があるという問題があります。たとえば、月 3 の場合、レコードがないため、これより前の日付の最後に確認されたレコードを取得する必要があると想定されます。
私の現在のソリューションは <= 結合を使用していましたが、これがボトルネックであり、何百万もの ID を試行すると、遅すぎて、必要な速度で実行されません。
私は次のように generate_series に対して参加していました:
これをより効率的に行い、<= 結合を削除する方法についてのアイデアはありますか? これにより、ネストされたループが発生し、オーバーヘッドが大きくなりすぎます。