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

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

1
入力をいくつかの異なる文字列に制限する
こんにちは私はpostgreSQLで期待どおりに制約が機能していないようです。pgadmin内から、次のSQLクエリを実行します。 -- Check: "TypeCheck" -- ALTER TABLE "ComLog" DROP CONSTRAINT "TypeCheck"; ALTER TABLE "ComLog" ADD CONSTRAINT "TypeCheck" CHECK ("Type" SIMILAR TO 'email|post|IRL|minutes'); COMMENT ON CONSTRAINT "TypeCheck" ON "ComLog" IS 'One of email|post|IRL|minutes'; 実行するとこれに変換されます。 -- Check: "TypeCheck" -- ALTER TABLE "ComLog" DROP CONSTRAINT "TypeCheck"; ALTER TABLE "ComLog" ADD CONSTRAINT "TypeCheck" CHECK …

1
「データベースの作成」コマンドでテーブルスペースを指定すると、PostgreSQLの権限エラーが発生するのはなぜですか?
デフォルトのテーブルスペースを明示的に指定せずにPostgreSQLでデータベースを作成すると、データベースは問題なく作成されます(pgsysユーザーとしてログインしています)。 postgres =>データベースrich1を作成します。 データベースを作成 postgres => \ l + データベースのリスト 名前| オーナー| エンコーディング| 照合| Ctype | アクセス権限| サイズ| テーブルスペース| 説明文 ----------- + ---------- + ---------- + ------------- +- ----------- + ------------------------------------- + ----------- + ------------ + ------------------------- ------------------- postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7455 …

1
Postgresql:default_statistics_targetの値は実際に何を意味するのですか?
default_statistics_targetの値を増やすと、特に分析後にデータベースを高速化できます。 この記事を読むと、https://discuss.pivotal.io/hc/en-us/articles/201581033-default-statistics-target-Explained (...)簡単に言えば、このパラメータは、統計の収集方法を制御します。値1は、最も低い推定/正確な統計であり、値1000は、最も正確な統計です。明らかに、時間/リソースを消費します。 (CPU、メモリ等)/スペース。通常、デフォルト値は正確な計画を得るのに十分ですが、複雑なデータ分布がある場合や、列がクエリで頻繁に参照される場合、高い値を設定すると、テーブルのより良い統計を取得するのに役立つ可能性があります。オプティマイザを実行するためのより良い計画。 これは良い説明ですが、たとえばdefault_statistics_target = 1000を設定した場合、1000は実際には何を意味しますか?1000キロバイトの統計が生成されていますか?または多分それは分析されたテーブルの1000行ですか?多分それは1000列ですか?またはおそらく分析ごとに1000秒... だから私の質問は、この数が分析やクエリプランナーに本当に影響しているのですか?default_statistics_target = 1000は分析を実行するために100より多くの時間を取得し、1000はより良い統計を生成することを理解しています...
11 postgresql 

1
Postgresメタコマンドの同等のSQLクエリを取得する
タイトルはわかりやすいものにしてください。Postgresのメタコマンドを対応する/基になるSQLクエリに何らかの形で変換できるようにしたいのですが、少なくともPostgresと、テーブルにメタ情報を格納する方法について詳しく知りたいのです。 これが可能である場合、何かアイデアはありますか? 例えば: データベースEXAMPLEに接続する\dtとSELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;、同じ結果が返されます 。 可能であれば、関数/マクロ/何でもSELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;入力\dtするときに値を取得する方法を見つけたいです。
11 postgresql 

1
Postgresql:デフォルトのPSQLクライアントエンコーディングを設定する
を使用してPostgresql DBに接続すると、psql次のメッセージが頻繁に表示されます。 => SELECT * FROM question_view ; ERROR: character with byte sequence 0xd7 0x9e in encoding "UTF8" has no equivalent in encoding "LATIN1" このSOの回答に従って、クライアントのエンコーディングをそれに応じて変更する必要があることを理解しています。 SET client_encoding = 'UTF8'; client_encodingDBに接続するたびに変更するのは面倒です。.pgpassファイルまたは他の場所でこの設定を永続的に構成する方法はありますか?

1
リモートサーバーからPostgreSQLデータベースをコピーする
MySQLを使用していたときに、サーバーにSSHで接続するコマンドを実行し、データベースをローカルマシンにコピーできました。 ssh -t remoteserver 'mysqldump --compress -u dbuser --password = "password" db_name' | / usr / local / mysql / bin / mysql -u root --password = "password" local_db_name どうすればPostgreSQLで同じことができますか?
11 postgresql 

1
Postgresの2000万行の「最新」クエリを最適化する
私のテーブルは次のようになります: Column | Type | -----------------------+-------------------+ id | integer | source_id | integer | timestamp | integer | observation_timestamp | integer | value | double precision | インデックスは、source_id、timestamp、およびtimestampとidの組み合わせに存在します(CREATE INDEX timeseries_id_timestamp_combo_idx ON timeseries (id, timeseries DESC NULLS LAST)) そこには20M行あります(OK、120Mありますが、source_id = 1で20Mです)。それは同じのために多くのエントリを持ってtimestamp変化させてobservation_timestamp説明した、valueで発生したtimestamp報告かで観察しますobservation_timestamp。たとえば、今日の午前12時に予測されるように、明日の午後2時に予測される気温。 理想的には、このテーブルはいくつかのことをうまく行います: 新しいエントリのバッチ挿入、時には一度に100K 時間範囲で観測されたデータを選択する(「1月から3月までの気温予測は」) 特定の時点から観測された時間範囲で観測されたデータを選択する(「11月1日に考えたように、1月から3月までの気温予測のビューは何ですか」) 2つ目は、この質問の中心となるものです。 テーブルのデータは次のようになります id source_id timestamp observation_timestamp …

1
同じ列内の日付の合計間隔
インターリーブする行間の同じ列の日付の範囲の違いをどのように合計するのが最適ですか?日時列があり、行間の差を計算したいと思います。秒の差が欲しい。この質問は、2つのタイムスタンプの違いを取得する方法ではなく、同じテーブルの行間で最も効率的に計算する方法に重点を置いています。私の場合、各行には2つの行を論理的にリンクするdatetimeのeventypeがあります。 開始と終了のイベントタイプをグループ化する方法に関連する詳細。(Andriy Mの質問)開始と終了は「すべき」です。開始に後続の終了がない場合は、合計から除外する必要があります。次の開始に移動して、終了があるかどうかを確認します。合計秒数の合計には、連続する開始-終了ペアのみを追加する必要があります。 postgresql 9.xでの作業... 表のデータの例。 eventtype, eventdate START, 2015-01-01 14:00 END, 2015-01-01 14:25 START, 2015-01-01 14:30 END, 2015-01-01 14:43 START, 2015-01-01 14:45 END, 2015-01-01 14:49 START, 2015-01-01 14:52 END, 2015-01-01 14:55 すべての開始日と終了日は連続していることに注意してください。 これが私の最初の試みです。動作しているようです。 SELECT -- starts.* SUM(EXTRACT(EPOCH FROM (eventdate_next - eventdate))) AS duration_seconds FROM ( WITH x AS ( …

2
行の可視性はどの程度正確に決定されますか?
最も単純なケースでは、新しい行をテーブルに挿入すると(そしてトランザクションがコミットすると)、後続のすべてのトランザクションから見えるようになります。xmaxこの例では0であることを参照してください。 CREATE TABLE vis ( id serial, is_active boolean ); INSERT INTO vis (is_active) VALUES (FALSE); SELECT ctid, xmin, xmax, * FROM vis; ctid │xmin │ xmax │ id │ is_active ───────┼─────┼──────┼────┼─────────── (0,1) │2699 │ 0 │ 1 │ f これを更新すると(フラグがFALSE誤って設定されたため)、少し変更されます。 UPDATE vis SET is_active = TRUE; SELECT ctid, xmin, …

3
3つのテーブル間の循環依存(循環参照)を回避するにはどうすればよいですか?
3つのテーブルがあります。 人 役職 いいね ERモデルを設計すると、循環依存関係が発生します。 1:N 人-------- <投稿 1:N 投稿---------- <いいね 1:N 人-------- <いいね ロジックは次のとおりです。 1人が多くの投稿を持つことができます。 1件の投稿に多くの高評価があります。 1人が多くの投稿を高く評価できます(作成された人は自分の投稿を高く評価できません)。 この種類の循環設計を削除するにはどうすればよいですか?それとも私のdb設計は間違っていますか?

1
報告されたインデックスサイズと実行プランのバッファ数の大きな不一致
問題 次のようなクエリがあります SELECT COUNT(1) FROM article JOIN reservation ON a_id = r_article_id WHERE r_last_modified < now() - '8 weeks'::interval AND r_group_id = 1 AND r_status = 'OPEN'; (10分後に)タイムアウトになることが多いため、この問題を調査することにしました。 EXPLAIN (ANALYZE, BUFFERS)出力は次のようになります。 Aggregate (cost=264775.48..264775.49 rows=1 width=0) (actual time=238960.290..238960.291 rows=1 loops=1) Buffers: shared hit=200483 read=64361 dirtied=666 written=8, temp read=3631 written=3617 I/O Timings: …

1
jsonb列のginインデックスがクエリの速度を低下させるのはなぜですか?
テストデータを初期化します。 CREATE EXTENSION IF NOT EXISTS pgcrypto; CREATE TABLE docs (data JSONB NOT NULL DEFAULT '{}'); -- generate 200k documents, ~half with type: "type1" and another half with type: "type2", unique incremented index and random uuid per each row INSERT INTO docs (data) SELECT json_build_object('id', gen_random_uuid(), 'type', (CASE WHEN random() …

1
特権はいつ\ lにリストされ、いつリストされませんか?
\ lによってアクセス権限がリストされるのはいつですか、そうでない場合はいつですか?\ lで一覧表示されるアクセス権限は、付与後に変更され、取り消される場合があります。 $ createuser -EP my_readonly $ psql development development=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------------------------+----------+----------+-------------+-------------+----------------------- development | vagrant | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | ... development=# grant usage on schema public to my_readonly; development=# grant connect …

3
PostgreSQLはインデックスにnullを使用できますか?
私はそれを言っているこの本を読んでいます データベースは、Indexed_Col IS NOT NULLがカバーする範囲が大きすぎて役に立たないと想定しているため、データベースはこの状態からインデックスに移動しません。 この本は10年以上前のものであると認識していますが、すでに非常に有用であることが証明されています。 さらに、クエリを実行EXPLAIN ANALYZEしSELECTているときに、自分のインデックスがまったく使用されていないことがわかりました。 したがって、私の質問は: 列が "NOT NULL"を含む列を持つテーブルがあり、この列をカバーするインデックスが存在する場合、このインデックスは、列がクエリの一部であるテーブルのクエリで使用されますか? お気に入り: CREATE TABLE my_table( a varchar NOT NULL ); CREATE INDEX ix_my_table ON my_table(a); SELECT a from my_table;

2
実行速度の遅いクエリの統計を取得する
私のデータベースアプリケーションは、さまざまなクエリを実行します。私はlog_min_duration_statement1000に設定しました。ただし、そこに記録されたクエリは常に遅くなるとは限りません。ほとんどの場合、数ミリ秒しかかかりません。 すべてのクエリの統計情報を取得することは可能ですか?また、クエリが1000ミリ秒以上かかった頻度はどれくらいですか?

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