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

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

14
PostgreSQLはローカルで実行されていますが、接続できません。どうして?
最近、私のマシンをMac OS X Lion(10.7.4)からMountain Lion(10.8)に更新したため、PostgreSQLのインストールが中断されたと思います。もともとはHomebrew経由でインストールされました。私はDBAではありませんが、誰かがこれのトラブルシューティング方法を教えてくれることを望んでいます。 接続できません(ただし、Mountain Lionの前に接続できました): $ psql -U rails -d myapp_development psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"? しかし、Postgresはまだ明確に実行されています。 $ ps aux | grep postgres meltemi 2010 0.0 0.0 2444124 5292 …


5
PostgreSQLの選択クエリでデフォルト値を使用するにはどうすればよいですか?
行が返されない場合に使用する列のデフォルト値を使用したいと思います。PostgreSQLで可能ですか?どうすればいいですか?または、これを解決できる他の方法はありますか? たとえば、次のようなものです。 SELECT MAX(post_id) AS max_id DEFAULT 0 FROM my_table WHERE org_id = 3 そしてorg_id = 3、テーブルに行がない場合、私は返したいです0。

3
絶対的なパフォーマンスのために、SUMは高速ですか、それともCOUNTですか?
これは、特定の条件に一致するレコードの数のカウントに関連していますinvoice amount > $100。 私は好む傾向がある COUNT(CASE WHEN invoice_amount > 100 THEN 1 END) ただし、これは有効です SUM(CASE WHEN invoice_amount > 100 THEN 1 ELSE 0 END) 次の2つの理由から、COUNTの方が望ましいと考えていました。 意図を伝えます COUNT COUNT おそらくi += 1どこかで単純な操作が行われますが、SUMはその式が単純な整数値であると期待することはできません。 特定のRDBMSの違いに関する特定の事実はありますか?

2
複数列のインデックスとパフォーマンス
複数列のインデックスを持つテーブルがあり、クエリのパフォーマンスを最大にするためのインデックスの適切な並べ替えについて疑問があります。 シナリオ: PostgreSQL 8.4、約100万行のテーブル 列c1の値には、約100の異なる値を指定できます。値は均等に分布していると想定できるため、可能な値ごとに約10000行あります。 列c2には1000個の異なる値を指定できます。可能な値ごとに1000行あります。 データを検索するとき、条件には常にこれら2つの列の値が含まれるため、テーブルにはc1とc2を組み合わせた複数列のインデックスがあります。フィルタリングに1列のみを使用するクエリがある場合、複数列インデックスの列を適切に順序付けることの重要性について読みました。これは、このシナリオには当てはまりません。 私の質問はこれです: フィルターの1つが非常に小さなデータセットを選択するという事実を考えると、最初のインデックスが最も選択的なインデックス(より小さなセットを許可するインデックス)である場合、パフォーマンスを改善できますか?参照記事のグラフィックを見るまで、この質問を考えたことはありませんでした。 複数列インデックスについての参照記事から抜粋した画像。 クエリは、フィルタリングに2つの列の値を使用します。フィルタリングに1列のみを使用するクエリはありません。それらはすべて次のとおりWHERE c1=@ParameterA AND c2=@ParameterBです。次のような条件もあります。WHERE c1 = "abc" AND c2 LIKE "ab%"

3
忘れたPostgreSQL Windowsパスワード
今朝、Windows 7 ProfessionalデスクトップでPostgreSQLデータベースに接続しようとしています。 デフォルト値は「postgres」ですが、最初にインストールしたときに使用したパスワードを忘れてしまいました。 私はグーグルで検索し、パスワードのリセットに関連する投稿を見つけました。手順に従いましたが、最終結果は投稿で言及されたものとは少し異なります。私は使用しました— net user postgres postgres データベースのパスワードをリセットしますが、成功メッセージの代わりに私は得ています: 「システムエラー5が発生しました。アクセスが拒否されました。」 システムエラー。このエラーを回避してパスワードをリセットするにはどうすればよいですか?

1
外部キーのインデックスが必要
私はインデックス、プライマリキー、外部キーに苦労しています...そしてそれらすべてを持つ必要があります。 2つのテーブルがある場合、両方ともプライマリキーとして整数を持ちます。 最初のテーブルは、FKを介して2番目のテーブルの主キーを参照します。 両方のテーブルで、ID列に主キーインデックスがあります table1.ref_field2番目のテーブルのPKを参照するFK制約を作成しました(table2.id) にインデックスを追加しました table1.ref_field これは、これらのインデックス、プライマリキー、外部キーを整理する最良の方法ですか?


1
すべての値が36文字の場合、char vs varcharを使用すると、インデックスルックアップは著しく高速になりますか
すべてのテーブルのプライマリキーにハッシュベースの生成されたIDを使用するレガシースキーマ(免責事項!)があります(多数あります)。このようなIDの例は次のとおりです。 922475bb-ad93-43ee-9487-d2671b886479 このアプローチを変更する可能性はありませんが、インデックスアクセスのパフォーマンスは低下します。これが無数にある理由は別として、多くのテーブルのすべてのid値が正確に36文字の長さであるにもかかわらず、列タイプはvarchar(36)でなく 、最適ではないように思われることが1つありchar(36)ます。 固定長に列の型を変更することだろうchar(36)任意の提供の重要なインデックスページなどあたりのエントリの数が非常に少ないの増加を超えて、インデックスのパフォーマンス上の利点? つまり、固定長型を扱う場合、可変長型よりもpostgresの方がはるかに高速ですか? わずかなストレージの節約については言及しないでください-列に変更を加えるために必要な手術と比較しても問題にはなりません。

3
書き込みパフォーマンスのためのPostgreSQLの構成
PostgreSQLサーバーの1つは、一定のデータストリームを受信する複数の(1〜3)データベースをホストしています。データは特に構造化されておらず、現在の時刻とその特定の瞬間のさまざまな観測データになります。データレートはかなり高いです。あるデータベースでは1日に約1ギガバイト、別のデータベースでは約10分の1になります。この率が上がるとは思わない。読み取りパフォーマンスは、はるかに低い優先度であり、現在許容されています。 ログにこのメッセージがあります: LOG: checkpoints are occurring too frequently (15 seconds apart) HINT: Consider increasing the configuration parameter "checkpoint_segments". 現在、この値は16に設定されていpgtuneます。 書き込みパフォーマンスを改善するために考慮すべき設定は何ですか?私は可能な限り安全に保つことを好むでしょう。入ってくるデータの量を考えると、データの大部分が無傷である限り、障害で最近のデータを失うことを受け入れることができます。 編集:今のところPostgreSQL 9.0を使用していますが、9.1にアップグレードする予定です。ハードウェアの詳細は掲載していませんが、その重要性は認識していますが、最終的には非常に多様なハードウェアを持つ複数のマシンでこの最適化を行う必要があります。ハードウェアが答えに不可欠な場合は、一般的な情報を教えてください。異なるハードウェア構成のマシンに答えを適用できます。

2
大規模なINを使用したPostgresクエリの最適化
このクエリは、フォローしている人が作成した投稿のリストを取得します。フォローできる人の数に制限はありませんが、ほとんどの人は1000人未満をフォローしています。 このスタイルのクエリでは、明らかな最適化は"Post"ID をキャッシュすることですが、残念ながら今のところその時間はありません。 EXPLAIN ANALYZE SELECT "Post"."id", "Post"."actionId", "Post"."commentCount", ... FROM "Posts" AS "Post" INNER JOIN "Users" AS "user" ON "Post"."userId" = "user"."id" LEFT OUTER JOIN "ActivityLogs" AS "activityLog" ON "Post"."activityLogId" = "activityLog"."id" LEFT OUTER JOIN "WeightLogs" AS "weightLog" ON "Post"."weightLogId" = "weightLog"."id" LEFT OUTER JOIN "Workouts" AS "workout" ON …


5
PostgreSQLで非常に遅いDELETE、回避策?
PostgreSQL 9.2には、約70個のテーブルを持つメインスキーマと、それぞれ30個のテーブルからなる可変構造のクライアントごとのスキーマを持つデータベースがあります。クライアントスキーマには、メインスキーマを参照する外部キーがあり、その逆はありません。 以前のバージョンから取得した実際のデータをデータベースに入力し始めたところです。メインスキーマの非常に中央のテーブルで一括削除を行う必要があったときに、DBは約1.5 GBに達しました(数週間で数十GBに達すると予想されています)。関係するすべての外部キーは、DELETE CASCADEでマークされます。 これに長い時間がかかることは驚きではありませんでしたが、12時間後には、最初からやり直してDBを削除し、移行を再開する方が良いことが明らかになりました。しかし、後でDBが稼働し、さらに大きくなったときにこの操作を繰り返す必要がある場合はどうなりますか?より高速な代替方法はありますか? 中央テーブルから最も遠いテーブルから開始し、テーブルごとに依存する行を削除する依存テーブルを参照するスクリプトを書いたら、もっと速くなるでしょうか? 重要な詳細は、いくつかのテーブルにトリガーがあることです。

1
巨大なpostgresテーブルを複製するには?
巨大なpostgresテーブルがあります(10GBのデータ-160Mレコード)。テーブルは静的であり、実行された書き込み操作はありません。複製し、書き込みを実行し、インデックスを再作成し、単一の高速トランザクションで古いトランザクションを削除し、新しいトランザクションの名前を元の名前に変更したい。 このような巨大なテーブルを複製する最速の方法は何ですか?
29 postgresql 

4
大量のRAMに対するpostgresqlのチューニング
(ハードウェアの点で)2つの同一のサーバーがあり、どちらもWindows Server 2008 r2の標準インストールであり、最小限のソフトウェアがインストールされています(基本的には私のコードとjvmなどの必要なもの)。 1台のサーバーで、2台目のサーバーpostgresql 9.1でSQL Server 2005を実行しています。これら2台のサーバーでのパフォーマンスの違いは驚異的であり、上司への最初の「SQLサーバーライセンスの代金を支払う代わりにpostgresqlを使用しましょう」と後悔しています。同じコマンドで30秒と15分という違いを話しているのですが、これはこの1つのコマンドだけでなく、私が投げるクエリやコマンドでもあります。両方ともほぼ同じデータを持ち(レコードは異なる順序で挿入されました)、両方のデータベースはまったく同じ構造/インデックスなどを持っています。 しかし、それは単なるパフォーマンスチューニングの問題だと思います。実は、SQLサーバーはサーバー上で32ギガバイトすべてのRAMを使用していますが、postgreslは何も使用しておらず、ギグよりも確実に少ないのですが、実際には詳細に把握していません。 postgresqlで20ギガバイト以上のRAMを使用するにはどうすればよいですか?これらのサーバーはこのデータベース専用に構築されているため、データベースとサポートプロセスで使用されていないラムは無駄になります。

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