タグ付けされた質問 「postgresql」

PostgreSQLのすべてのバージョン。そのコンテキストが重要な場合は、postgresql-11などのバージョン固有のタグを追加します。

2
Amazon RDS Postgresqlに新しい拡張機能を追加
jsonbxをRDSインスタンスにダウンロードしたい。サポートされているRDS PostgreSQLの機能には、組み込みの機能のみが表示されます。これは、機能マトリックスにない拡張機能をRDSにインストールする方法がないことを意味しますか?これの回避策はありますか?

1
部分的に構築され、停電によって終了したインデックスによって使用されたスペースを再利用する方法
Mac(10.10.4)でpostgres(postgis)9.4.2を実行しています。 私はいくつかの大きなテーブル(数TB)を持っています。 そのうちの1つで約1週間かかるインデックス作成中に、停電がバッテリーユニットとシステムよりも長く続いたときにインデックスが終了するポイントに近いと予想されるので、利用可能なHDスペースの低下を観察しました降りた。fillfactor=100静的データソースであるため、私はバッファをオフにしていて、ビルド中にそれを行いました。再起動時に、ドライブに残っている使用可能なスペースは、インデックスビルドのほぼ終了時とまったく同じです。真空分析はスペースを解放しません。 テーブルを落として再度取り込みましたが、スペースは落ちませんでした。現在、インデックスを作成するための十分なスペースがない場所にいます。 インデックスの構築中に生成されたファイルは、停電中にマシンがダウンした方法が原因でシステムによって削除できない場所でスタックしていますか? テーブルサイズとデータベース内のインデックス(そのドライブ上の唯一のデータ)を見ると、合計で約6TBです。ドライブです8TB未満、そこにある500ギガバイトは、インデックスがあったであろうという大きさです1.5TB失われたどこかに約あるようですので、ドライブに残しました。 何か案は?

2
範囲内のすべての日付に対して複雑なクエリを実行する
注文表があります Column | Type | Modifiers ------------+-----------------------------+----------------------------------------------------- id | integer | not null default nextval('orders_id_seq'::regclass) client_id | integer | not null start_date | date | not null end_date | date | order_type | character varying | not null データにはclient_idの重複しない永続的な注文があり、時にはclient_idが一致する場合、start_dateの永続的な注文を上書きする一時的な注文があります。同じタイプの注文が重複しないようにするアプリケーションレベルの制約があります。 id | client_id | start_date | end_date | order_type ----+-----------+------------+------------+------------ 17 …

3
1つを除くすべての列を主キーとしてマークすることは妥当ですか?
映画を表すテーブルがあります。フィールドは次のとおり id (PK), title, genre, runtime, released_in, tags, origin, downloadsです。 重複する行によってデータベースを汚染することはできないため、一意性を強制したいと思います。問題は、異なる映画が同じタイトルを持つ可能性があることです、または同じフィールドを除くtagsとdownloads。一意性を強制する方法は? 私は2つの方法を考えました: downloads主キーを除くすべてのフィールドを作成します。downloadsそれはJSONであり、おそらくパフォーマンスに影響を与えるため、私は締め出します。 id主キーとしてのみ保持しますが、他のすべての列(再度、を除くdownloads)で一意制約を追加します。 よく似たこの質問を読みましたが、どうすればいいのかよくわかりませんでした。現在、このテーブルは他のテーブルとは関係ありませんが、将来的には関係する可能性があります。 現時点では20,000件弱のレコードですが、その数は増えると思います。これが問題にある程度関連しているかどうかはわかりません。 編集:私はスキーマを変更しました、そしてここに私がテーブルを作成する方法があります: CREATE TABLE movies ( id serial PRIMARY KEY, title text NOT NULL, runtime smallint NOT NULL CHECK (runtime >= 0), released_in smallint NOT NULL CHECK (released_in > 0), genres text[] NOT NULL default …

2
Postgres 9.4でJSON配列要素でjson_to_recordを使用すると、「エラー:不正な形式の配列リテラル」
これは問題をうまく説明しています: 列bがテキストではなく配列である場合、次のように機能します。 select * from json_to_record('{"a":1,"b":["hello", "There"],"c":"bar"}') as x(a int, b text, d text); a | b | d ---+--------------------+--- 1 | ["hello", "There"] | しかし、b列を配列として定義すると、次のエラーが発生します。 select * from json_to_record('{"a":1,"b":["hello", "There"],"c":"bar"}') as x(a int, b text[], d text) ERROR: malformed array literal: "["hello", "There"]" DETAIL: "[" must introduce explicitly-specified array …

2
整数シーケンスが特定のサブシーケンスを含む行を検索します
問題 注:PostgreSQLのシーケンスメカニズムではなく、数学的なシーケンスを参照しています。 整数のシーケンスを表すテーブルがあります。定義は次のとおりです。 CREATE TABLE sequences ( id serial NOT NULL, title character varying(255) NOT NULL, date date NOT NULL, sequence integer[] NOT NULL, CONSTRAINT "PRIM_KEY_SEQUENCES" PRIMARY KEY (id) ); 私の目標は、指定されたサブシーケンスを使用して行を見つけることです。つまり、sequenceフィールドが指定されたサブシーケンスを含むシーケンスである行(私の場合、シーケンスは順序付けされています)。 例 テーブルに次のデータが含まれているとします。 +----+-------+------------+-------------------------------+ | id | title | date | sequence | +----+-------+------------+-------------------------------+ | 1 | BG703 | 2004-12-24 …

2
PostgreSQLでのM:N関係の一括挿入
古いデータベースのデータを、構造が少し異なる新しいデータベースにインポートする必要があります。たとえば、古いデータベースには、従業員とその上司を記録するテーブルがあります。 CREATE TABLE employee (ident TEXT PRIMARY KEY, name TEXT, supervisor_name TEXT) 現在、新しいデータベースは次のとおりです。 CREATE TABLE person (id BIGSERIAL PRIMARY KEY, name TEXT, old_ident TEXT); CREATE TABLE team (id BIGSERIAL PRIMARY KEY); CREATE TABLE teammember (person_id BIGINT, team_id BIGINT, role CHAR(1)); つまり、上司の名前を持つ従業員のプレーンテーブルの代わりに、新しい(より汎用的な)データベースを使用して、人々のチームを作成できます。従業員は役割を持つメンバー、役割'e'を持つ上司's'です。 問題は、データをemployee新しい構造に簡単に移行する方法であり、従業員と監督者のペアごとに1つのチームです。たとえば、従業員 employee: ('abc01', 'John', 'Dave'), ('abc02', 'Kyle', 'Emily') 移行する …

3
Postgresはインデックススキャンではなく順次スキャンを実行しています
約1,000万行のテーブルと日付フィールドのインデックスがあります。結果セットに26項目しかない場合でも、インデックス付きフィールドの一意の値を抽出しようとすると、Postgresは順次スキャンを実行します。オプティマイザがこの計画を選ぶのはなぜですか?そして、私はそれを避けることができますか? 他の答えから、これはインデックスと同じくらいクエリに関連していると思います。 explain select "labelDate" from pages group by "labelDate"; QUERY PLAN ----------------------------------------------------------------------- HashAggregate (cost=524616.78..524617.04 rows=26 width=4) Group Key: "labelDate" -> Seq Scan on pages (cost=0.00..499082.42 rows=10213742 width=4) (3 rows) テーブル構造: http=# \d pages Table "public.pages" Column | Type | Modifiers -----------------+------------------------+---------------------------------- pageid | integer | not null default nextval('... …

1
Postgresに大量のテキストを保存するための圧縮オプションは何ですか?
大量のテキストをPostgresに保存する必要があります。主にコマンドログと長時間実行コマンドの出力であり、zlibなどのツールを使用してデータを透過的に圧縮できるいくつかの設定があるかどうか、または他のネイティブなスペース節約方法を知る必要があります。 。 データは主に読み取り専用データであるため、書き込みは問題になりません。

1
PostgreSQL byteaとsmallint []
大規模な(100Mb-1 GB)マルチチャネル時系列データをPostgreSQLデータベースにインポートしようとしています。データは、通常はそれぞれ数秒の「レコード」または「エポック」にデータを分割するEDF形式のファイルから取得されます。各エポックのレコードは、データの各チャネルの信号を短い整数の順次配列として保持します。 最悪の場合、BLOBとしてデータベース内にファイルを保存するように義務付けられています。そこで、信号データに基づくクエリを容易にするなど、データベース内のデータをさらに活用できるオプションを調査したいと思います。 私の最初の計画は、エポックレコードごとに1行としてデータを格納することです。私が比較検討しているのは、実際の信号データをbyteaまたはsmallint [](またはsmallint [] [])のどちらのタイプとして格納するかです。誰かが他のものを推薦することはできますか?ストレージとアクセスのコストに興味があります。使用法は、1回挿入され、時々読み取られ、決して更新されない可能性があります。レコードを比較して分析するための関数を追加できるように、カスタムタイプとしてより簡単にまとめることができれば、はるかに優れています。 間違いなく私は詳細が低いので、私が明確にしてほしいことについてコメントを追加してください。

2
1つのSELECTステートメントで複数の範囲のカウントを返す
fooとりわけ、score0から10の範囲の列を持つPostgresデータベーステーブルがあります。クエリで、スコアの合計数、0から3までのスコアの数、4の間のスコアの数を返します。 6、7から10までのスコアの数。次のようなもの: SELECT COUNT(*) as total, COUNT( SELECT * from foo where score between 0 and 3; ) as low, COUNT( SELECT * from foo where score between 4 and 6; ) as mid, COUNT( SELECT * from foo where score between 7 and 10; ) as high FROM foo; …

1
完全なブロッキングpostgresクエリを表示する方法は?
このページのステートメントを使用して、Postgresでクエリのブロックを表示しています SELECT bl.pid AS blocked_pid, a.usename AS blocked_user, ka.query AS blocking_statement, now() - ka.query_start AS blocking_duration, kl.pid AS blocking_pid, ka.usename AS blocking_user, a.query AS blocked_statement, now() - a.query_start AS blocked_duration FROM pg_catalog.pg_locks bl JOIN pg_catalog.pg_stat_activity a ON a.pid = bl.pid JOIN pg_catalog.pg_locks kl ON kl.transactionid = bl.transactionid AND kl.pid != …

2
Postgresに何千人ものユーザーを抱えることは可能ですか?
最大50.000の顧客を持つSAASを作成しています。Postgresデータベースに顧客ごとにユーザーを作成することを検討しています。サービスにログインする各ユーザーをデータベース内のユーザーにマップして、ユーザーが自分のデータにのみアクセスできることを確認します。また、トリガーを利用するこのソリューションによって、監査証跡をデータベースに直接実装したいと考えています。各顧客に独自のデータベースユーザーがいる場合、2人の顧客が同じデータを共有する場合でも、誰が何をしたかを簡単に確認できます。 データベースに50.000人のユーザーがいるため、予期しない問題が発生しますか?パフォーマンス面または管理面。たぶん接続プーリングはもっと難しいでしょうが、私はそれが必要になるかどうか本当に知りません。

2
複数行挿入と複数の単一行挿入
私のアプリでは、dbとアプリの間の往復回数が減ったという理由だけで、可能な場合は複数行の挿入を行います。 しかし、気になったのですが、他にメリットはありますか?たとえば、次のように複数の行が一度に挿入された場合: insert into tbl (c1, c2) values (v1, v2) (v3, v4) 対: insert into tbl (c1, c2) values (v1, v2) insert into tbl (c1, c2) values (v3, v4) テーブルにインデックスがありますが、最初のケースではインデックスが1回計算され、2番目のケースでは2回計算されますか?それとも、挿入ごとに常に1回ですか?両方のクエリが同じトランザクションにあると仮定します。 PostgreSQLを使用しています。

1
Postgresでの同時更新の最適化
私はこのようなPostgresクエリを同時に実行しています: UPDATE foo SET bar = bar + 1 WHERE baz = 1234 各クエリは固定のK行数に影響し、行が更新される順序を強制する方法が見つからないため、デッドロックが発生します。現在、私は手動で順序を強制することで問題を解決していますが、これは、通常よりも多くのクエリを実行しなければならず、検索の複雑さをO(log N + K)からO(K log N)に上げる必要があることを意味します。 デッドロックに脆弱になることなくパフォーマンスを向上させる方法はありますか?Postgresが行をスキャンしたのと同じ順序で行を更新すれば(baz)、(baz, id)索引を索引に置き換えるとうまくいくと思いますが、これは追求する価値のあるアプローチですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.