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

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

3
クエリ中にディスクから何が取得されますか?
かなり簡単な質問で、おそらくどこかで答えられましたが、Googleの正しい検索質問を作成できないようです... 特定のテーブルの列の数は、そのテーブルのサブセットでクエリを実行するとき、クエリのパフォーマンスに影響しますか? たとえば、テーブルFooに20個の列があり、クエリでそれらの列のうち5個しか選択されていない場合、20個(たとえば10個)の列があるとクエリのパフォーマンスに影響しますか?簡単にするために、WHERE句のすべてがこれらの5つの列に含まれていると仮定します。 オペレーティングシステムのディスクキャッシュに加えて、Postgresのバッファキャッシュの使用が心配です。Postgresの物理ストレージ設計に対する理解が非常に失われています。テーブルは複数のページに保存されます(デフォルトではページごとに8kのサイズに設定されています)が、そこからタプルがどのように配置されているのかよくわかりません。PGは、これら5つの列を構成するデータのみをディスクからフェッチするのに十分スマートですか?

1
削除とバキュームのディスクファイル効果
私は、2億4000万行の非常に頻繁に更新されるテーブルを持っています(そして成長しています)。3時間ごとに150万行が挿入され、150万行が削除されます。クラスターをSSDに移動すると、この一括挿入(コピーを使用)時間は22分から2.3分に短縮されました。削除時間も改善されました。この一括更新は2時間ごとまたは1時間ごとに行う予定です。 現在のパフォーマンス(SSD後)は、より頻繁な更新と互換性がありますが、書き込みの増幅と組み合わされたNANDの耐久性の限界によるSSDの死に関するいくつかの恐ろしい話を読みました。SSDは高価なので、可能な限り将来的にその死を押し上げたいと思います。したがって、私の質問:削除とその後のバキュームでディスクファイルは実際にどうなりますか?私は2つのディスク書き込みがあると思います。1つは行を削除済みとしてマークし、もう1つはバキュームして上書き可能としてマークします。削除とバキュームを行う代わりに、一括挿入/削除のたびにテーブルを作成および削除するテーブルをパーティション分割すると、SSDの摩耗を最小限に抑えることができますか?

5
PostgreSQLデータベース内のすべてのオブジェクトの所有者を同時に設定する方法はありますか?
/programming/1348126/modify-owner-on-all-tables-simultaneously-in-postgresqlは、テーブルやその他のオブジェクトを特定のユーザーに変更するいくつかの気の利いた方法を説明します。提案は、私が作成した関数を無視するようです。 関数を含む、データベース内のすべてのオブジェクトの所有者をリセットするかなり簡単な方法はありますか?手作業で行うことは非常に望ましくありません。

2
PostgreSQLで既存のインデックスを主キーに昇格させる方法
テーブル内で主キーを作成する方法は知っていますが、既存のインデックスを主キーにするにはどうすればよいですか?あるデータベースから別のデータベースに既存のテーブルをコピーしようとしています。テーブルを表示すると、下部のインデックスは次の形式になっています。 "my_index" PRIMARY KEY, btree (column1, column2) 私はインデックスを作成しました: CREATE INDEX my_index ON my_table (column1, column2) しかし、私はそれを主キーにする方法を知りません... 更新:サーバーのバージョンは8.3.3です

4
PostgreSQL設計ツール[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 PostgreSQLで実行するデータベースを設計しようとしています。私は、MySQLデータベース用のMySQL Workbenchという素晴らしいツールに慣れています。便利で、見栄えがよく、データベース設計ソフトウェアに期待しています。 新しいデータベース設計ツールを学ぼうとしているのであれば、最も人気のあるものにしたいです。したがって、私の質問は、PostgreSQLでデータベースを設計するための最も一般的なツールは何ですか?

3
SQL JOINまたはIN句を使用する必要がありますか?
最善のアプローチについて質問があります。データのサイズが可変であると考えられる場合、どのアプローチが最適かはわかりません。 次の3つの表を検討してください。 社員 EMPLOYEE_ID、EMP_NAME 事業 PROJECT_ID、PROJ_NAME EMP_PROJ(上記の2つのテーブルの多くに多数) EMPLOYEE_ID、PROJECT_ID 問題:EmployeeIDを指定すると、このEmployeeが関連付けられているすべてのプロジェクトのすべての従業員を見つけます。 私はこれを2つの方法で試しました。どちらのアプローチも、使用するデータのサイズに関係なく、数ミリ秒だけ異なります。 SELECT EMP_NAME FROM EMPLOYEE WHERE EMPLOYEE_ID IN ( SELECT EMPLOYEE_ID FROM EMP_PROJ WHERE PROJECT_ID IN ( SELECT PROJECT_ID FROM EMP_PROJ p, EMPLOYEE e WHERE p.EMPLOYEE_ID = E.EMPLOYEE_ID AND E.EMPLOYEE_ID = 123) 行く select c.EMP_NAME FROM (SELECT PROJECT_ID FROM EMP_PROJ WHERE …
13 postgresql  join 

1
コンテキストで例外を生成する
PostgreSQLが例外をスローすると、次のような行「CONTEXT」があります。 ERROR: INSERT has more target COLUMNS than expressions LINE 3: ... ^ QUERY: INSERT INTO ... CONTEXT: PL/pgSQL FUNCTION "XXXXX" line 4 at SQL statement しかし、例外をスローすると、この行はありません。追加する方法が見つかりませんでした。 RAISE EXCEPTION 'blablabla' USING HINT = 'blablablabla'; この行を例外に追加することはできますか?

2
postgresデータベースから他のすべてのユーザーをデタッチするにはどうすればよいですか?
データベースへの排他的アクセスが必要です。SQLコマンドを使用して、postgresデータベースから他のすべてのユーザーを「切り離す」ことは可能ですか?または、他のすべての接続を閉じてから排他アクセスを取得することもできます。 これは単体テスト用であり、テストは手動でのみ実行されるため、危険はありません。古いデッド接続のみが影響を受けます。 これらの単体テストデータベースに接続している他のユーザーはいません。 古いデッド接続は開発から来ています。これは、書き込まれているテストまたは失敗したテストがクリーンに終了しない場合に常に発生します。 生産シナリオで他のユーザーを切断した後、他のユーザーをしばらくロックアウトしたままにする必要がある場合は、以下のScott Marloweの回答を参照してください。https://dba.stackexchange.com/a/6184/2024 dbaに関する同様の質問もご覧ください。サーバーを停止せずに特定のデータベースへのすべての接続をドロップする方法は?
13 postgresql 


1
「WHERE field IS NULL」でクエリにインデックスを付ける方法は?
多数の挿入を含むテーブルがあり、フィールド(uploaded_at)の1つをに設定していNULLます。次に、定期タスクがすべてのタプルを選択し、WHERE uploaded_at IS NULLそれらを処理して更新し、uploaded_at現在の日付に設定します。 テーブルにインデックスを付けるにはどうすればよいですか? 次のような部分インデックスを使用する必要があることを理解しています。 CREATE INDEX foo ON table (uploaded_at) WHERE uploaded_at IS NULL またはそのようなsmth。しかし、常にフィールドにインデックスを付けることが正しい場合、私は少し混乱していますNULL。または、bツリーインデックスを使用することが正しい場合。ハッシュはより良いアイデアのように見えますが、廃止されており、ストリーミングホットスタンバイレプリケーションを介してレプリケートされません。どんなアドバイスも大歓迎です。 私は次のインデックスで少し実験しました: "foo_part" btree (uploaded_at) WHERE uploaded_at IS NULL "foo_part_id" btree (id) WHERE uploaded_at IS NULL クエリプランナーは常にfoo_partインデックスを選択するようです。explain analyseまた、foo_partインデックスの結果が若干良くなります: Index Scan using foo_part on t1 (cost=0.28..297.25 rows=4433 width=16) (actual time=0.025..3.649 rows=4351 loops=1) Index Cond: (uploaded_at …

1
PostgreSQLは共有メモリについて文句を言っていますが、共有メモリは問題ないようです
私はPostgreSQLサーバー上で一種の集中的なスキーマのドロップと作成を行ってきましたが、今は文句を言います。 WARNING: out of shared memory ERROR: out of shared memory HINT: You might need to increase max_locks_per_transaction. しかし、PostgreSQLをで再起動しただけでは問題が残りますservice postgresql restart。max_locks_per_transactionは何も調整しないと思われます。 このエラーのトラブルシューティングリストが機能していないため、少し疎遠になっています。 詳細1409291350:一部の詳細が欠落していますが、コアSQLの結果は保持しています。 postgres=# SELECT version(); PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit そして: $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: …

1
Postgresでは、現在定義されているセーブポイントのリストを取得する方法は?
現在のトランザクション内に新しいセーブポイントを作成するpostgres SAVEPOINTを使用しており、接続で現在定義されているセーブポイントのリストを表示したいと思います。 より正確に言うと、どの名前が接続で「no such savepoint」エラーを引き起こさないかを確認したいと思います。

3
2つの類似したPostgresデータベースの違いを比較する
私は時折、公開されているデータセットをPostgres dBの形式でダウンロードします。これらのデータセットは、リポジトリホストによって時間の経過とともに更新/変更/拡張されます。 古いと新しいPostgresデータベースの違いを表示できるPostgresコマンドまたはツール(理想的にはFOSS)はありますか?(動作する前提は、エントリの95%が変更されておらず、テーブルと関係も変更されないことです)。

2
スーパーユーザーにならずにpg_stat_activityで別のセッションのクエリを表示するにはどうすればよいですか?
Postgresql 9.2データベースがあります。このデータベースに2人のユーザーが作成されます。スーパーユーザーとして次のクエリを実行すると、すべてが表示されます。 select * from pg_stat_activity ただし、スーパーユーザーとして接続せずに同じ結果を達成することは可能ですか? スーパーユーザーが表示できる結果を得るには、どの特権/ロールを付与/作成する必要がありますか?

2
pg_upgradeの認識されない構成パラメーター「unix_socket_directory」
このコマンドをpostgresユーザーとして使用して、Fedora 18でPostgresqlを9.2から9.3にアップグレードしようとしています。 $ pg_upgrade -b /bin -B /usr/pgsql-9.3/bin -d /var/lib/pgsql/data -D /var/lib/pgsql/9.3/data/ -j 2 -u postgres ログのエラー コマンド: "/ bin / pg_ctl" -w -l "pg_upgrade_server.log" -D "/ var / lib / pgsql / data" -o "-p 50432 -b -c listen_addresses = '' -c unix_socket_permissions = 0700 -c unix_socket_directory = '/ …

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