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

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


1
複数の結合を持つ個別の行の合計
スキーマ: CREATE TABLE "items" ( "id" SERIAL NOT NULL PRIMARY KEY, "country" VARCHAR(2) NOT NULL, "created" TIMESTAMP WITH TIME ZONE NOT NULL, "price" NUMERIC(11, 2) NOT NULL ); CREATE TABLE "payments" ( "id" SERIAL NOT NULL PRIMARY KEY, "created" TIMESTAMP WITH TIME ZONE NOT NULL, "amount" NUMERIC(11, 2) NOT NULL, …


3
セッションの設定-ユーザーIDを格納するカスタム変数
ユーザーIDをカスタムセッション変数に保存し、それをトリガープロシージャで使用(読み取り)して、ユーザーアクションを承認します。私はこのようなものを見つけました: set session "myapp.user" = '12345'; ... SELECT current_setting('myapp.user'); 動作するようです-"myapp.user"は.confファイルで宣言する必要があると思いましたが、その場でセッション変数を作成できるようです(私は.confファイルをまったく変更していません)。 このようにすることの欠点はありますか?

2
プレーンテキストのパスワードなどの機密情報をログから非表示にするにはどうすればよいですか?
Postgresのインストールにアクセスできないため、確認できません。 私はセキュリティ担当者であり、ログにプレーンテキストのパスワードが表示されています。 create user user1 with password 'PLAINTEXT PASSWORD' DBAは、パスワードをログに記録せずにパスワードを変更または作成するにはどうすればよいですか? 私が見てきた、このパスワードのMD5ハッシュを使用できる状態を、が、その後ハッシュは平文でもあります。もっと良い方法はありますか?

1
PostgreSQL-複数のクエリを同時に実行すると、どのような状況で速度が向上しますか?どのような状況で減速が見られますか?
私はDBAではない人として謙虚にあなたにアプローチします。そして、私の質問は概念的な欠点と「それは地雷に依存している」に満ちていると確信しています。また、私が回答することを選択したすべての人が、私が現在提供できるよりも詳細な方法で多くのことを望んでいることもかなり確信しています。 とはいえ、私は一般的に次のシナリオに興味があります。 2つの重要なクエリがあるとします。 クエリ1の平均所要時間は2分です。 クエリ2の平均所要時間は5分です。 順次実行すると、平均して完了するまでに7分かかると思います。これは妥当ですか? ただし、2つのクエリを同時に実行するとどうなるでしょうか。同時に2つの別々の接続。 どのような条件下でスピードアップが見込めますか?(合計時間<7分) どのような状況下で減速が予想されますか?(合計時間> 7分) さて、1,000個の重要なクエリを同時に実行していると、全体的に速度が低下するという直感があります。その場合、ボトルネックはどこにあるでしょうか?プロセッサー?羊?ドライブ? 繰り返しますが、詳細を知らない限り、質問に正確に答えることはおそらく不可能であることを知っています(私は持っていません)。次の質問をするときに検討するいくつかの一般的なガイドラインを探しています: どのような状況下で、同時クエリによって全体的な速度が向上しますか? どのような状況で同時クエリが全体的な速度低下を引き起こしますか?

1
PostgreSQLのロールにテーブル/関数の削除権限を付与するにはどうすればよいですか?
drop特定のデータベースの特定のスキーマにあるすべてのテーブルと関数(ユーザーが所有するものだけでなく)に対する特権を特定のロールに付与したい。しかし、GRANT ALL PRIVILEGESそれだけでは不十分であり、スーパーユーザーにすることなしにその方法を見つけることができませんでした。スーパーユーザーは、同じサーバー上の他のデータベースに対する権限を持っています。スーパーユーザーの権限が特定のデータベースに限定されていてもかまいませんが、その方法はわかりません。 私のコード: CREATE USER _administrator PASSWORD 'pwd12345'; CREATE ROLE administrator NOLOGIN ADMIN _administrator; GRANT ALL PRIVILEGES ON DATABASE "myDB" TO administrator; GRANT ALL PRIVILEGES ON SCHEMA public TO administrator; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO administrator; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA …

1
PostgreSQLデータベースの所有権とは
PostgreSQLデータベースを作成するとき、そのデータベースの所有者になる別のロールを割り当てることができます。新しい所有者はこのデータベースで何ができますか?助成金と比較してどうですか?
10 postgresql 

2
SELECTは、VACUUMのようにデッド行を削除しますか?
私はいじくり回していて、テーブルから行をingすることで、後で行う必要のある作業が減るようVACUUMな予期しない動作に気づきました。SELECTVACUUM テストデータ 注:自動バキュームは無効になっています CREATE TABLE numbers (num bigint); ALTER TABLE numbers SET ( autovacuum_enabled = 'f', toast.autovacuum_enabled = 'f' ); INSERT INTO numbers SELECT generate_series(1, 5000); 試験1 次に、すべての行に対して更新を実行します。 UPDATE numbers SET num = 0; そして走るVACUUM (VERBOSE) numbers;と、 INFO: vacuuming "public.numbers" INFO: "numbers": removed 5000 row versions in 23 pages INFO: …

3
キーワード「ALIAS」は実際に使用されていますか?
PostgreSQL 7.1から9.1(現在はサポートされていません)によればALIAS、少なくともSQL-99では予約語としてリストされています。それ以降のバージョンでは表示されません-予約語として削除されたことを示しています。古いPostgreSQLのドキュメントには、「キーワードの存在は機能の存在を示すものではありません」と書かれています。テーブルまたは列にエイリアスを付けるとき、私は見ましたが、見ASたことはありませんALIAS。 SQLキーワードはどこでALIAS使用されましたか(または使用されましたか)?使用中だったのか、将来使用するために予約されただけなのか。

1
PostgresでのWALセグメントのゼロ化
比較的少量のPostgresデータベースがあり、各WALセグメントを圧縮してS3に送信するために継続的なアーカイブがセットアップされています。これはボリュームの少ないシステムであるarchive_timeoutため、10分ごとにヒットし、ほとんど使用されていないWALセグメントをアーカイブします。これは、ほとんどがゼロであったため、非常によく圧縮されていました。 ただし、PostgresはWALセグメントをリサイクルして、各WALスイッチで新しいファイルを割り当てるコストを回避します。これは、高負荷の状況で役立ちますが、通常よりも重いアクティビティのバーストの後、WALセグメントファイルがいっぱいになることを意味します以前のセグメントからのジャンクであり、まったくうまく圧縮されません。私たちはこのジャンクのすべてのコピーをたくさん保存しています。 WALアーカイブを保持するために使用しているスペースの量を減らす方法はありますか?いくつかの次善の可能性: Postgresが何らかの方法でWALセグメントをリサイクルしないようにして、毎回ゼロのファイルから開始します。ドキュメントはこれを行うためのオプションがあることを示していませんが、私はそれを逃したかもしれません。 Postgresが使用を開始/終了するときに、WALセグメントファイルをゼロにするようにします。再び、ドキュメントはこれが可能であることを示唆していないようです。 一部のWALセグメントファイルを使用していない間に外部的にゼロにするか削除します。これがどのファイルかを判別する安全な方法はありますか? からの出力を使用してセグメントをアーカイブする前に、セグメントの未使用部分をゼロにしてpg_xlogdump、ジャンクの開始位置を見つけます。可能ですが、好きではありません。少なくとも、archiveコマンドでこれを行うことにより、Postgresがファイルを再利用しないことを確認できます。 セグメントファイルの使用された部分のみをアーカイブします。これも、pg_xlogdump何らかの方法で出力を解釈し、復元中にゼロで埋めます。あまり好きではありませんが、可能だと思います。

1
テーブル全体のクエリで使用されていないパーティションのインデックスに関する統計
次の結合では、パーティションで結合を行う場合とテーブル全体で結合する場合の行の見積もりが大きく異なります。 CREATE TABLE m_data.ga_session ( session_id BIGINT NOT NULL, visitor_id BIGINT NOT NULL, transaction_id TEXT, timestamp TIMESTAMP WITH TIME ZONE NOT NULL, day_id INTEGER NOT NULL, [...] device_category TEXT NOT NULL, [...] operating_system TEXT ); すべてのパーティション: CREATE TABLE IF NOT EXISTS m_data.ga_session_20170127 ( CHECK (day_id = 20170127) ) INHERITS (m_data.ga_session); …

4
PostgreSQLで時系列を生成するにはどうすればよいですか?
日付系列を生成したい場合は、この質問を参照してください たとえば、5分ごとに24時間シリーズを生成するとします。PostgreSQLでそれを行うにはどうすればよいですか? PostgreSQLはgenerate_series()からはできますが、からはできtimestampませんtime。 任意のタイムスタンプを選択する方が良いですか、それともシリーズを生成する別の方法がありますか?

2
配列を含むjsonbキーの並べ替え順序をカスタマイズする
PostgreSQLにいくつかのデータを含むテーブルがあります。 create table t2 ( key jsonb, value jsonb ); INSERT INTO t2(key, value) VALUES ('1', '"test 1"') ,('2', '"test 2"') ,('3', '"test 3"') ,('[]', '"test 4"') ,('[1]', '"test 5"') ,('[2]', '"test 6"') ,('[3]', '"test 7"') ,('[1, 2]', '"test 8"') ,('[1, 2, 3]', '"test 9"') ,('[1, 3]', '"test 10"') ,('[1,2,4]', …

2
pgpoolアーキテクチャを備えたPostgres
以下はpgpoolアーキテクチャの例です: これは、単一のサーバーにpgpoolを置くだけでよいことを意味します。これは本当ですか?構成を見ると、内でバックエンドを構成していることもわかりますpgpool.conf。これはさらにこれを意味します。ただし、バックエンドサーバーでもpgpoolが表示される理由は説明されていません。 見ているときのドキュメント私はまた、以下を参照してください。 PostgreSQL 8.0以降を使用している場合は、pgpool-IIが内部で使用するため、pgpool-regclass関数をpgpool-IIがアクセスするすべてのPostgreSQLにインストールすることを強くお勧めします。 だから私は何を考えればいいのかわかりません。すべてのバックエンドまたは専用サーバーにpgpoolを配置することがベストプラクティスである場合

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