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

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

4
PostgreSQLデータベーステーブルの最終変更日を取得する
私は私のテーブルは、それが中に記述されているように、そのファイルの更新日時をチェックすることによって、変更されたときに取得しようとしているこの回答。しかし、結果は常に正しいとは限りません。ファイルの更新日は、テーブルを更新してから数分後に更新されます。それは正しい行動ですか?PostgreSQLはテーブルの変更をキャッシュに保存してからハードドライブにフラッシュしますか? だから、テーブルの正しい最終変更日を取得するにはどうすればよいですか(自動バキューム変更も大丈夫だと仮定しましょう)? Linux Centos 6.2 x64でPostgreSQL 9.2を使用しています。
35 postgresql 

4
PostgreSQLクエリがどれくらい進んでいるかを調べるにはどうすればよいですか?
SELECT ... INTOクエリが実際に処理する行の数については、かなりまともな考えがあります(たとえば、何行が具体化されるかがわかります)。 Postgresは完全なパーセンテージを教えてくれないことを理解していますが、宛先テーブルにポンプで送られた行またはSELECTクエリによって読み取られた行数を見つけることができる方法(ログ、システムテーブルなどに深く埋め込まれている)があります?
35 postgresql 

5
PostgreSQLでの同時DELETE / INSERTのロックの問題
これは非常に簡単ですが、PG(v9.0)の機能に困惑しています。簡単な表から始めます。 CREATE TABLE test (id INT PRIMARY KEY); 数行: INSERT INTO TEST VALUES (1); INSERT INTO TEST VALUES (2); お気に入りのJDBCクエリツール(ExecuteQuery)を使用して、2つのセッションウィンドウをこのテーブルが存在するdbに接続します。両方ともトランザクション対応です(つまり、auto-commit = false)。それらをS1およびS2と呼びましょう。 それぞれに同じコードのビット: 1:DELETE FROM test WHERE id=1; 2:INSERT INTO test VALUES (1); 3:COMMIT; 次に、これをスローモーションで実行し、ウィンドウで1つずつ実行します。 S1-1 runs (1 row deleted) S2-1 runs (but is blocked since S1 has a write …


1
JOIN句にUSING構文を使用すると、特定の場合に最適化の障壁が生じる可能性がありますか?
クエリの節のUSING(ではなくON)コンストラクトが、FROMSELECT一定の場合には、最適化の障壁を導入することがあります。 私はこのキーワードを意味します: 選択* から 参加b 使用した(A_ID) より複雑な場合にのみ。 コンテキスト:このコメントにこの質問。 私はこれをよく使いますが、これまでに気づいたことはありません。効果やリンクを示すテストケースに非常に興味があります詳細情報にます。私の検索努力は空っぽになりました。 完璧な答えは、表示するために、テストケースとなりUSING (a_id)、代替句に参加すると比較して劣った性能をON a.a_id = b.a_id- 場合はそれが実際に起こることができます。

4
VARCHAR列に任意の長さ制限を追加する必要がありますか?
PostgreSQLのドキュメントによるとVARCHAR、VARCHAR(n)との間にパフォーマンスの違いはありませんTEXT。 名前または住所列に任意の長さ制限を追加する必要がありますか? 編集:だまされていない: すべての値が36文字の場合、char vs varcharを使用すると、インデックスルックアップは著しく高速になりますか このCHARタイプは過去の遺物であり、パフォーマンスだけでなく、アーウィンのような他の長所と短所も彼の驚くべき答えで述べています。

1
PostgreSQLクエリをベンチマークするにはどうすればよいですか?
PostgreSQL用に作成したユーザー定義関数を含むクエリのベンチマークを行いたいです。そのようなベンチマークを実行する標準的な方法はありますか? 私はタイミングが\timingpsqlプロンプトでオンにできることを知っていますが、理想的にはすべてを自動的に処理するスクリプトが欲しいです:クエリを数回実行し、各実行後にPostgreSQLキャッシュをクリアします(おそらくPostgreSQLの再起動によって)サービス)、および平均実行時間(および使用されるメモリはプラス)を出力します。


2
PostgreSQLでマテリアライズドビューを段階的に更新する
PostgreSQLでマテリアライズドビューを段階的に更新することはできますか。つまり、新規または変更されたデータに対してのみですか。 次の表とマテリアライズドビューを検討してください。 CREATE TABLE graph ( xaxis integer NOT NULL, value integer NOT NULL, ); CREATE MATERIALIZED VIEW graph_avg AS SELECT xaxis, AVG(value) FROM graph GROUP BY xaxis 定期的に、新しい値が追加されるgraphか、既存の値が更新されます。graph_avg更新された値についてのみ、数時間ごとにビューを更新します。ただし、PostgreSQL 9.3では、テーブル全体が更新されます。これにはかなり時間がかかります。次のバージョン9.4ではCONCURRENT更新が可能ですが、ビュー全体が更新されます。何億行もあるため、これには数分かかります。 更新された新しい値を追跡し、部分的にのみビューを更新する良い方法は何ですか?

3
CPUパフォーマンスはデータベースサーバーに関連していますか?
これは純粋に理論的な質問です。複数のサーバーにデプロイされたアプリケーションがあるとします。 ロードバランサー、 複数/スケーラブルなアプリケーションサーバー (単一の)データベースサーバー(現時点では) 最初の2つの部分では、何を探すべきかがわかります。しかし、データベースサーバーはどうでしょうか。どのようなハードウェアを探すべきですか? CPU周波数はデータベースサーバーに関連していますか? 複数のコアCPUが関連していますか? RAMはCPUよりも重要ですか? PS:選択したデータベースがMySQLまたはPostgreSQLであると仮定します。


2
大きなテーブルに新しい列を追加する最良の方法は?
Postgresには7,801,611行の2.2 GBのテーブルがあります。uuid / guid列を追加していますが、その列にデータを入力する最良の方法は何ですか(NOT NULL制約を追加したいので)。 Postgresを正しく理解している場合、更新は技術的には削除と挿入であるため、これは基本的に2.2 gbテーブル全体を再構築しています。また、スレーブが実行されているため、遅れることを望みません。 時間をかけてゆっくりと入力するスクリプトを書くよりも良い方法はありますか?

2
スーパーユーザーはログインできません
次のコマンドでスーパーユーザーポータルを作成しました create role portal with superuser password 'portal' ポータルユーザーでpostgresにログインしようとすると、レールで次のエラーが発生します。 FATAL: role "portal" is not permitted to log in 私は何が起こっているのかを追うことができません。 もちろん、ログインコマンドを使用してユーザーを変更し、ポータルユーザーがログインできるようにします。スーパーユーザーがログインできない理由を理解したいと思います。
32 postgresql 

3
listen_addressesを実際にリストに設定できますか?
postgreSQLを実行しているIPアドレス192.168.0.192のVMがあります。 指定する場合 listen_addresses = '*' その後、192.168.0.191の別のVMおよびlocalhostから接続できます。 しかし、リストを使用して postgreSQLにこれら2つのアドレスを使用するように指示することはできません。listen_addressesをリストに変更した場合: listen_addresses = '192.168.0.191, localhost' 192.168.0.191から接続できなくなりました。 stackexchangeのほとんどすべての例でlisten_addressesが「*」に設定されていることがわかります。これは、リストフォームが機能しないためですか?
32 postgresql 

3
VARCHARカラムにインデックスを付けるのは良いアイデア/アプローチですか?
PostgreSQL v8.2.3を使用しています。 関係するテーブルがあります:EMPLOYEEとEMAILLIST。 Table 1: EMPLOYEE (column1, column2, email1, email2, column5, column6) Table 2: EMAILLIST (email) 2つのテーブルは、EMPLOYEE.EMAIL1またはEMPLOYEE.EMAIL2に一致するエントリがない場合、それらの行が返されるように結合されます。 SELECT employee.email1, employee.email2, e1.email IS NOT NULL AS email1_matched, e2.email IS NOT NULL AS email2_matched FROM employee LEFT JOIN emaillist e1 ON e1.email = employee.email1 LEFT JOIN emaillist e2 ON e2.email = employee.email2 …

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