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

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

2
いくつかのテーブルを1つのpostgresデータベースから別のデータベースに複製する
次のような状況です。3台のマシンでpostgresqlデータベースを実行しています。1つのマシンはクライアントアカウント情報を保持し(このマシンをCと呼びます)、他の2つのマシンはクライアントロギング情報を保持します(これらのL1とL2を呼び出します)。分割の理由は、複数のマシンにまたがるロードを分離するためです(そのため、一部のクライアントはログ情報をL1に送信し、一部はL2に送信します...おそらくL3、L4などの時間を送信します)。 ロギング情報を取得するときは、原則として、LnのロギングテーブルとCのクライアントアカウントテーブルの間で結合できるようにしたいと思います。実際には、このような結合はできません(可能な場合でも、 Cの読み込みを回避するため)。 私の考えは、Cのテーブルを各L1、L2、...に複製して、結合を実行できるようにすることです。Cのテーブルに関する限り、Cはマスターで、L1、L2、...はスレーブです。しかし、L1、L2などの他のテーブルでは、これらのマシンはマスターです。これは正確にはマスターマスターレプリケーションではなく、正確にはマスタースレーブではありません。 postgres(私は9.1を実行しています)のレプリケーションでこれを実行するように説得できますか。最後の手段として、テーブルを定期的に同期するコードを書くことができます(多少の遅延は許容できます)が、それはできません。 前もって感謝します。

1
pgAdmin 3で `postgresql.conf`を編集する方法は?
pgAdminアプリで「postgresql.conf」ファイルをどのように編集しますか? Postgres 9.3.xのpgAdmin 1.18.1で、File> Open postgresql.confを選択すると、ファイルピッカーダイアログが表示されます。そして、はい、私はpgAdminでスーパーユーザー「postgres」として接続しています。 古いバージョンのPostgresでこれを行ったことは知っています。

1
pgBouncerはうまく機能しますが、時々利用できなくなります
忙しいpostgres 9データベースの前でpgBouncerを実行しています。ほとんどの場合、問題なく動作します。しかし、数時間ごとに、psycopg2からの例外を除いて、アプリケーションからエラーメールが届きます。 OperationalError(「サーバーに接続できませんでした:要求されたアドレスを割り当てることができません。サーバーはホスト "neo-hulk"で実行されており、ポート6432でTCP / IP接続を受け入れていますか?」) これは、タスクを実行しているセロリワーカーの束を備えたpythonアプリです。これらのエラーが発生したら、pgbouncer dbをチェックし、プールサイズが制限内であることを確認します。いくつかの実験を行った後、プールの最大サイズを400に、プールサイズを200に設定しました。プールモードは「セッション」です(リクエストはほとんど自動コミットで、ほとんどトランザクションはありません)。 何がpgBouncerをそのように「消失」させるのですか?それは短期間のみです(そして、全体としては、処理する要求の膨大な量と比較して、ごく少量の要求について話しています)が、失敗した要求は重要です。 ありがとう!

2
PostgreSQLの複合インデックスの列の順序(およびクエリの順序)
5万行のテーブルがあります。これは実際にはPostGISテーブルです。 クエリには4つの部分があります(1つは必須)(3つはオプション) 緯度と経度が4の交差ボックス(地理長方形)(st_intersectsを使用)[必須] 日付フィールドの日付範囲(最小、最大) 現在IN(.....)を使用しているファイルタイプ(最大8つのテキスト値のセット)ですが、必要に応じて一時テーブルにすることができます。INが嫌いな人が多いようです。 国(テキスト値)。 返される行は約100〜4,000になると思います テーブルに複合インデックスを作成する場合、最初にどの列を使用する必要がありますか。きめ細かいのはおそらく場所です(データは世界中に広がっています)。現在、GISTインデックスとして持っています。 他のインデックスはBTREEです。 私の直感は、きめ細かい、そして最後にコースを使用すると言います。たとえば、ファイルタイプは約12しかないため、インデックスのバケットは非常に大きくなります。 PostgreSQLとPostGISの達人(システムの内部を知っている人)は何と言っていますか? 更新: この質問をもっとはっきりさせましょう。 やるべきことを誰かにやらせてもらいたくない。あなたの時間を尊重しすぎます。ですから、後で説明の分析に行きます。 私が探していたのは、いくつかの指針とヒント、およびガイドラインだけでした。 私はこの優れた小さな投稿を読みました:https : //devcenter.heroku.com/articles/postgresql-indexes#managing-and-maintaining-indexesインデックスについて 私が通常行うことは、4つの個別のインデックス(ジオボックス、国名、file_type、および日付)を作成することですが、複合クエリが何を行うかを確認したいのです。 これらの仮定のいずれかが間違っているかどうか教えてください。(私は複合インデックスのアイデアにかなり新しいです) 順序は重要です。最初のインデックスとして、行を最も削減するインデックスを選択します(私の場合、場所(地理)は単純なポリゴンまたはマルチポリゴンが最も効果的です)。 クエリはインデックスをスキップすることがあります。しかし、キー(#1、#2、#3、#4)を使用して複合クエリを作成した場合、ユーザーが#1、#3を要求するものを作成した場合でも、プランナーは単一の複合クエリを使用します。維持されている。 通常、3つのBTREEクエリと1つのGIST(地理タイプ用)を作成します。PostGISは、複数のインデックスタイプからの複合の作成をサポートしていません。したがって、GISTを複合インデックスとして使用する必要があります。しかし、それは物事を傷つけるべきではありません。 追加の複合インデックスまたは単一値インデックスを作成する場合、プランナーは最もインテリジェントなインデックスを選択するのに十分スマートです。 国名は約250の異なる値を持つことができ、明らかに場所(ジオボックス)に強くリンクされていますが、行サイズを削減するための次善のインデックスがfile_typeの場合は、次に使用する必要があります。ユーザーがクエリセットで国や日付を頻繁に使用するとは思わない。 4つのキーの複合インデックスを作成すると、インデックスデータのサイズが大幅に増加することを心配する必要はありません。つまり、1つのキーのインデックスがパフォーマンス向上の90%になる場合でも、さらに3つの項目を追加して複合させることは問題ありません。逆に、実際には両方のインデックスを作成する必要があります。単一の地理インデックスと複合インデックス。プランナーにどちらが最適かを判断させ、インデックステーブルのサイズを考慮します。 繰り返しになりますが、私は誰かに私のソリューションを設計するように頼んでいません。しかし、PostGreSQLドキュメントが実装について教えてくれないことが必要です [まだEXPLAIN結果を表示できないのは、24Mの行テーブルからこの25Kの行テーブルを作成する必要があるためです。思ったより時間がかかります。私はものを1,000個のアイテムグループにクラスター化し、ユーザーに25K行テーブルに対してクエリを実行させています。しかし、次の質問では、そのクエリの結果を使用してMASTER 25M行テーブルに移動し、物事を引き出します。これが、複合インデックスのパフォーマンスが実際にHITになる場所です。 以下のサンプルクエリ: SELECT public.product_list_meta_mv.cntry_name AS country, public.product_list_meta_mv.product_producer AS producer, public.product_list_meta_mv.product_name AS prod_name, public.product_list_meta_mv.product_type AS ptype, public.product_list_meta_mv.product_size AS size, ST_AsGeoJSON(public.product_list_meta_mv.the_geom, 10, 2) AS …


2
列がカタログに基づく整数ではなくシリアルデータ型として定義されているかどうかを確認するにはどうすればよいですか?
したがって、私は現在、テーブル定義を構築するためにpostgres(9.1)カタログを読むためのSQLをいくつか作成しています。ただし、SERIAL / BIGSERIALデータ型で問題が発生しています。 例: CREATE TABLE cruft.temp ( id BIGSERIAL PRIMARY KEY ); SELECT * FROM information_schema.columns WHERE table_schema='cruft' AND table_name='temp'; "db","cruft","temp","id",1,"nextval('cruft.temp_id_seq'::regclass)","NO","bigint",,,64,2,0,,,,,,,,,,,,,"db","pg_catalog","int8",,,,,"1","NO","NO",,,,,,,"NEVER",,"YES" データベース名(db)、スキーマ名(cruft)、テーブル名(temp)、列名(id)、デフォルト値(nextval(...))、データ型(bigintおよびint8 .. NOT bigserial) ...デフォルト値がシーケンスであるかどうかを確認するだけでよいことはわかっていますが、手動でシーケンスを作成し、デフォルト値が存在する非シリアル列を作成できるため、100%正確であるとは思いません。そのシーケンス。 誰か私がこれを達成する方法についての提案はありますか?nextval(* _ seq)のデフォルト値をチェックする以外に何かありますか? TL; DRまたはpg_catalogに不慣れな新規ユーザーの場合にここに追加されたSQLソリューション用に編集: with sequences as ( select oid, relname as sequencename from pg_class where relkind = 'S' ) select sch.nspname …

1
PostgreSQLでローカルファイルからリモートDBにコピーするにはどうすればよいですか?[閉まっている]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 6年前休業。 私はpsqlの初心者で、助けが必要です。ローカルCSVをリモートDBにロードするにはどうすればよいですか? 次のコマンドを使用しています \COPY test(user_id, product_id, value) FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER; しかし、これはリモートPCのファイルを検索しますが、ローカルPCで検索する必要があります。

1
PostgreSQLはディスク上の新しいレコードを物理的にどのように配列しますか(主キーのクラスターの後)?
PostgreSQLがディスク上のレコードをどのように並べるかを知る必要があります。この場合、docsに記載されているインデックスの組み合わせを利用したいと思います。これは、ビットマップを使用して一致する行を取得し、物理的な場所に従ってそれらを返すことを理解しています。問題のテーブルは、主キーによってクラスター化されています。 私が理解しているように、PostgreSQLはクラスタリングが終了した後、自動的にクラスタリングを継続しません(ただし、特定のインデックスに従ってクラスタリングされたことを覚えています)。さて、これが主キーなので、物理的なストレージの順序はそれに従っているのでしょうか(これがtrueの場合は、特定のクエリに有利に使用したいと思います)。 要約すると、特にクラスタリングの後、PostgreSQLは新しいレコードをどのように順序付けますか? どうもありがとう!

2
カスタムデータベース変数を設定および取得するにはどうすればよいですか?
使用してPGAdmin III私は、データベース上で右クリックをすることができますに移動しVariables、タブ、およびデータベース自体に変数の名前と値のプロパティを置きます。これらをカスタマイズする方法はありますか?application_name変数を見ましたが、変数が欲しいのapplication_versionですが。

2
結果を待たずにpsqlからクエリを実行する方法は?
(既存のテーブルから新しいテーブルを作成するための)クエリに非常に長い時間がかかります。そこで、オフィスにリモートデータベースをセットアップしました-RAMを増やします。 通常どおり、psqlを使用して自宅からデータベースに接続できます。 応答を待たずにターミナルからクエリを実行するようにリモートサーバーに指示するにはどうすればよいですか? (postgresql-9.2、Linux環境) 編集:私は他のソリューションにオープンです、psqlを使用する必要はありません

4
PostgreSQL:ユーザーのパスワードの変更が機能しない
マシンにインストールPostgreSQLしEC2、ユーザーのパスワードを変更したいpostgres 私がやります $ sudo -u postgres psql psql (9.1.5) Type "help" for help. postgres=# ALTER USER postgres WITH PASSWORD 'newpasswd'; ALTER ROLE 次に、シェルを終了し、新しいパスワードでログインしようとします $ psql -U postgres -W Password for user postgres: psql: FATAL: Peer authentication failed for user "postgres" 私のPostgreSQLバージョンは $ psql --version psql (PostgreSQL) 9.1.5 contains support for …

3
pgAdmin3をHerokuのPostgresに接続する
Herjan Postgresデータベース(データベース)をDjangoアプリに関連付けて実行しています。アドオンを参照するドキュメントはこちらです。Herokuは今日、デフォルトであった共有データベースアドオンからすべてを移行することをユーザーに警告したため、これはコミュニティにとって価値のある質問になると思いました。 pgAdmin3をデータベースに接続するときに問題が発生しました。 上記のリンクの指示に従って、次のコマンドを使用してデータベースの資格情報を取得します。 $ heroku pg:credentials HEROKU_POSTGRESQL_OLIVE Mac OSXでPostgresqlの自作インストールを使用しています。 それまでの間、私は次のことを行いました。 私のpg_postgresql.confでSSLをオンにしました。 設定を追加しました: listen_addresses = '*' と追加されました host all all 0.0.0.0/0 md5 私のpostgresサーバーを再起動しました。 次に、pgAdmin3に移動してを選択しますFile > Add Server。 Herokuが提供する資格情報を次のように入力します(1つ目はHeroku資格情報名、2つ目はpgAdminフィールド名です): [プロパティ]タブで: Nameへのdbname; ホストへのホスト。 ポートへのポート。 「Maintenance Database」のpgAdminフィールドは空白のままにします。 ユーザー名にユーザー; Password to Password; [SSL]タブ: SSLのフィールドで、「require」を選択します(Herokuの指示に従います)。 Enterキーを押すと、pgAdminは次のようにエラーをスローします。 An error has occurred: Error connecting to the server: …

1
EC2-PostgreSQLデータを正しくバックアップする方法
これがセットアップです。3つの追加ボリュームを持つ1つの小さなAmazon Linux(EBS-backed)EC2インスタンス。これは、Webサーバーとデータベースサーバーの両方です。コード用の1つのボリューム、PostgreSQL(8.4)データディレクトリ用の1つのボリューム、およびPostgreSQLからのWALファイルを格納するための1つのボリューム。 (1)WALファイルを含むボリュームには、pg_start_backup()を実行した後にコピーされるデータディレクトリのベースバックアップもあります。次に、PostgreSQLからの継続的なアーカイブ出力(WALファイル)を保存します。このボリュームのスナップショットを作成するには、同期を発行してファイルシステムをフリーズする(XFSの場合はxfs_freezeを使用するか、EXT4の場合はdmsetupを使用する)意味がありますか?または、ライブスナップショットを撮ることができますか?WALファイルは、毎分1つの速度で出荷されます。単一のWALファイルがコピーされている間にスナップショットが開始され、データが破損する可能性はありますか? (2)ライブPostgreSQLデータディレクトリを含むボリュームも、適切な方法で(毎日)バックアップされます。このボリュームのスナップショットを作成する前に、pg_dumpを実行すると、結果のSQLファイルがデータディレクトリに保持されます。実際のデータベースデータの整合性を確保するための予防策を講じることに意味はありますか?ライブスナップショットを作成すると、(a)構成ファイル(postgresql.conf、pg_hba.conf、pg_ident.conf)が適切にバックアップされ、(b)SQLダンプファイルがバックアップされると想定して間違いありませんか。SQLダンプファイルと構成ファイルの2つをバックアップすることが、このボリュームのスナップショットの主なポイントになります。DBはそれほど大きくないので、データファイルがこのスナップショットを膨らませることは気にしません。その場合、ライブスナップショットを作成できます-正しいですか? (2a)ルートボリュームにデータディレクトリを保持し、SQLダンプファイルと構成ファイルを別のボリュームにコピーするバックアップスクリプトを用意し、コピーが完了したらそのボリュームのスナップショットを作成するほうがよいでしょうか? (3)コードが含まれているボリュームについて、ファイルシステムを同期してフリーズするポイントはありますか?または、ライブスナップショットのみを取得できますか?このデータはかなり「静的」である必要があります。 (4)これは確かなバックアップスキームですか?ルートボリュームは定期的にバックアップされません。これは、セットアップして構成した後のマシンイメージを保持するだけだからです。 ありがとう

2
PostgreSQL PITR復元
CentOS 5.8 32ビットOSで実行されているPostgreSQL 9.1サーバーを使用していて、WALアーカイブを有効にしています。このサーバーには、databaseA、databaseB、およびdatabaseCの3つのデータベースがあります。誰かがdatabaseBの午後12時にテーブルを削除し、テーブルが削除された時刻の直前にdatabaseBを復元したいと考えています。時間は今午後3時です。 他の2つのデータベースの3時間分のデータを失うことなく、データベースBを午後12時まで復元するにはどうすればよいですか? postgresql.conf wal_level = archive archive_mode = on archive_command = 'test ! -f /opt/pgsql/logs/%f && cp %p /opt/pgsql/logs/%f' max_wal_senders = 100 recovery.conf restore_command = 'cp /opt/pgsql/logs/%f %p' recovery_target_time = '2012-06-29 11:59:59 CEST' 午前9時にベースバックアップを実行しました pg_basebackup -h 127.0.0.1 -D /opt/pgsql/backup PostgreSQLサービスは午後3時にシャットダウンされました。

3
最大数のレコードをpostgresqlに保持することは可能ですか?
基本的に、Postgresqlテーブルの一部はサーバーアクセスログを保持するために使用されます。そのため、本番環境では、これがかなり大きくなる場合があります。postgresqlでテーブルが持つことができるレコードの最大数を設定し、最も古いレコードをプッシュする方法はありますか?

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