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

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

2
PostgreSQLチェックポイントで何が起こりますか?
チェックポイントログの一部を次に示します。 2014-03-26 11:51:29.341 CDT,,,18682,,532854fc.48fa,4985,,2014-03-18 09:15:24 CDT,,0,LOG,00000,"checkpoint complete: wrote 15047 buffers (1.4%); 0 transaction log file(s) added, 0 removed, 30 recycled; write=68.980 s, sync=1.542 s, total=70.548 s; sync files=925, longest=0.216 s, average=0.001 s",,,,,,,,,"" 2014-03-26 11:56:05.430 CDT,,,18682,,532854fc.48fa,4987,,2014-03-18 09:15:24 CDT,,0,LOG,00000,"checkpoint complete: wrote 16774 buffers (1.6%); 0 transaction log file(s) added, 0 removed, 31 …
22 postgresql 

5
PostgreSQL:データベースから1つのスキーマのみをバックアップし、別のサーバーに復元する方法
2つのスキーマ「B」と「C」を持つ「A」という名前のデータベースがあります。別のサーバーでスキーマ「B」をバックアップおよび復元したいですか?私はPostgresが初めてなので、これを行う方法がわかりません。「A」という名前の新しいサーバーに新しいDBを作成し、その上にスキーマ「B」を復元する必要がありますか。plsはコマンドを支援します。 --- ピーターの答えに対するコメントからの情報: スキーマ「B」+データをバックアップおよび復元したい。第二に、Ubuntu 12.04で実行されているPostgresql 9.1について言及するのを忘れました

2
データが「自然にパーティション化可能」である場合、マシン間でPostgreSQLをパーティション分割する最新の方法は何ですか
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 6年前に移行され ました。 「NoSQL」の分野に数年滞在した後、今ではその性質が非常に「リレーショナル」な問題を抱えています。今日、私は以前とはまったく異なる目でデータストアを見ています。Riakのようなものは、単一の障害点、「メンテナンスのためのダウン」などに耐えることができないという方法で私を台無しにしました。これは、非常に高い要件を持たない(またはまだ)個人的なプロジェクトです。 おそらく、私の問題は解決が非常に「簡単」だからです。少なくとも概念レベルでは(RDBM自体がテーブルにもたらす制約を無視して)。 少量の「共有」データがあり、自由に複製できます。ハード一貫性の要件はありません。これはダイナモのようなデータベースに保存でき、無限に拡張できます。ただし、可能であれば、単一のデータベースを使用したいと考えています。 「ユーザーごとの」データがたくさんあります。つまり、すべてのユーザーが絶対に妥当なサイズのデータ​​を持っている多くのユーザーが、単一のPostgreSQLノードに保存するのに本当に適しています。最大で数万件のレコードについて話しています。 クロスユーザーに問い合わせる必要はなく、クロスユーザーの原子性は必要ありません。 これは非常に簡単に実現できます。少なくとも「NoSQLの目」で見ているときは。 ここに私の素朴なスターターのアイデアがあります: 極端な場合、ユーザー全体をRiakの単一のキー/値としてシリアル化できます。もちろん、数メガバイトのデータを絶えずデシリアライズするのは遅いので、PostgreSQLの使用を検討しています。各ユーザーのデータ内に原子性/トランザクションが必要なため、Riak K / Vの多くは不要です。 ユーザーごとにSQLiteデータベースを使用し、GlusterFSのようなものを使用して冗長性と可用性を実現できます。これはおそらく、PostgreSQLを使用しても同様に良いものが見つからない場合に選択するソリューションです。長所:本当にうまくスケールダウン/スケールアップできます; 短所:SQLiteよりもPostgreSQLの型と厳格さを好む したがって、PostgreSQLシャーディングソリューションから私が理想的に要求するものは次のとおりです。 すべてのユーザーのデータのコピーを(異なるマシン上に)自動的に保持します。ユーザー/シャードごとにマスターノードを動的に切り替えることができる(以前のマスターがダウンした場合)。 サーバーノードを追加/削除することにより、動的にスケールアップ/ダウンすることができます。たいていはRiakができるように。 アプリケーションが、どのノードといつ通信するかを知る必要はありません。

1
pgAdmin3を使用してUbuntuのリモートPostgreSQLデータベースに接続する方法
UbuntuマシンでPostgreSQLデータベースをセットアップしようとしています。リモートマシンからpgAdmin3を使用してアクセスできるようにしたいと思います。これを設定するにはどうすればよいですか? UbuntuにPostgreSQLデータベースをインストールしました: sudo apt-get install postgresql 私の/etc/postgresql/9.1/main/pg_hba.conf持っているこの行: host all all all password したがって、すべてのIPv4アドレスからの接続を受け入れ、パスワードはクリアテキストで送信する必要があります(これは開発上の理由によるものです)。 このコマンドを実行して、実行中のサービスを確認すると: sudo netstat -tulpn これらの行を見ると、PostgreSQLがデフォルトポートで接続を受け入れていることがわかります。 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 3561/postgres 同じローカルネットワーク上のリモートコンピューターからこのPostgreSQLサーバーに接続しようとすると、次のエラーメッセージが表示されます。 サーバーはリッスンしません サーバーは接続を受け入れません:接続ライブラリは報告します サーバーに接続できませんでした:接続が拒否されましたサーバーはホスト "10.0.1.7"で実行されており、ポート5432でTCP / IP接続を受け入れていますか? postgresユーザー名として使用し、パスワードは使用しませんでした。しかしpostgres、パスワードとしても試しました。ローカルサーバーでは、次を使用してログインできます。 sudo -u postgres psql postgres pgAdmin3を使用して、リモートマシンからUbuntuで実行されているPostgreSQLデータベースに接続するにはどうすればよいですか?

2
日付を永続的に「MDY」として表示するようにPostgresqlデータベースを設定する方法
実行せずに「日付」を「MDY」として表示するようにデータベースを設定するにはどうすればよいですか: SET datestyle = "ISO, MDY"; 私がそれにアクセスしようとするたびに?Postgresqlバージョン9.1、Ubuntu 12.04を使用しています。データベースのインストール時のシステムロケールはに設定されていましたがen_CA.utf8、最近それをに変更しましたen_US.utf8。 show lc_CTYPE 戻り値:-> "en_CA.UTF-8" しかし show LC_CoLLATE 戻り値:-> "en_CA.UTF-8"

3
LIKEはどのように実装されますか?
LIKE演算子が現在のデータベースシステム(MySQLやPostgresなど)にどのように実装されているかを説明できますか?またはそれを説明するいくつかの参照を教えてください? 素朴なアプローチは、各レコードを検査し、対象フィールドで正規表現または部分的な文字列の一致を実行することですが、これらのシステムがよりスマートに動作することを感じています。

1
postgresテーブルの各レコードに対してトリガーを実行する良い方法はありますか?
いくつかのテーブルのデザインを制御できないシステムがあり(Slony-Iを介して複製されます)、「シャドウテーブル」と呼ばれる一連のシステムがあり、複製されたテーブルから情報を抽出します。 、必要な処理済みフォームに保存し、無視したいレコードを削除します。 現在、新しいレプリカを設定した後、更新を実行し、値をそれ自体に設定して(たとえば、UPDATE tablename SET field=field)トリガーを強制的に実行しますが、一部のテーブルは数百万のレコードであり、成長し、30分かかることがあります。(そして、真空もあります)。 それをトリガーするより良い方法、または渡された入力またはNEW呼び出しコンテキストに依存する入力で機能するような関数を書く方法はありますか?1つが更新され、もう1つが更新されないことを何度も見てきたため、2つの異なる機能を保持することに消極的です。

3
国際データベースの照合を選択する方法は?
さまざまな言語(UTF-8を使用)でデータを格納するデータベースを設計しているので、クエリの結果を表示する最良の方法は、クエリ自体の実行中にユーザーの言語に従って並べることです(複数あるためそれを行う正しい方法)、次のように: SELECT a < b COLLATE "de_DE" FROM test1; これが国際データを処理する正しい方法であると仮定すると、データベース自体にとって最適な照合はどれですか?PostgreSQLのドキュメントによると: C照合とPOSIX照合はどちらも「従来のC」動作を指定します。この動作では、ASCII文字「A」から「Z」のみが文字として扱われ、ソートは文字コードバイト値によって厳密に行われます。 この場合、これが最良の選択だと思いますか、それとも間違っていますか? (ボーナス質問:クエリ自体で照合順序を選択するには遅すぎますか?)。

1
アクティブな接続と残りの接続の数
一定期間の接続のピーク数に関する統計を取得したいと思います。 私はpg_stat_activityビューなどを知っていますが、select count(*) from pg_stat_activityこの方法はあまり賢くないと思います。 必要な情報を提供できる他のビューまたはテーブルはありますか?

3
ホットスタンバイサーバーでpg_dumpを実行していますか?
免責事項:私は確かにこれをまだ試していませんが、それが正しく動作していなかったかどうかわからないので、尋ねたいと思いました。 pg_dumpallプライマリに負荷をかけないように、ストリーミングレプリケーションを実行しているホットスタンバイサーバーから(経由で)夜間バックアップジョブを実行したいと思います。ここやここなどで人々が遭遇したいくつかの落とし穴について言及しているだけですが、ガイダンスはほとんどありません。バックアップが一貫している限り(それがあるはずです)、バックアップがプライマリよりわずかに遅れていても問題ありません。 私の質問は: 本当にこれを実行したいのですか、またはプライマリサーバーでバックアップを実行する必要がありますか?どうして? スタンバイでダンプを行うとき、どの設定が必要ですか、それを正しく行うために手順を使用する必要がありますか?たとえば、バックアップ中はレプリケーションを停止する必要がありますか?

2
別のSELECTのWHERE句でSELECTを使用する
私はのためのlibpqの上にドラフトリモートアプリケーション作ったPostrgreSQLを。うまく動作しますが、アプリケーションの一般的な機能をプロファイルしました。私が作成する最終的なビジネス結果ごとに、40のselect句(tcpip経由)などを呼び出すことがあります。 リモートアプリケーションとデータベースの間のやり取りの数を最小限に抑えることを思い出させるSQL-Serverの思い出があります。選択を分析した結果、SELECT結合を使用してこの数を3つの節に減らすことができると思います。しかしSELECT、別のの結果を使用するための構文を覚えていませんSELECT。 例えば: SELECT * FROM individual INNER JOIN publisher ON individual.individual_id = publisher.individual_id WHERE individual.individual_id = 'here I would like to use the results of a another select' これSELECTは単純に他の種類です: SELECT identifier FROM another_table WHERE something='something' 以下は、さまざまなitem_typesに対して何度も拒否された単純化されたテーブルレイアウトです...(3つのまったく異なるタイプ、したがって最適化された場合は3つのSQLクエリ)。 table passage id_passage PK business_field_passage bytea table item id_item PK id_passage FK business_field_item …

1
NULLを含むセットでNOT INが常にFALSE / NULLを返すのはなぜですか?
NOT IN場合によってはNULL値を返すサブクエリを含む句を含むクエリ(PostgresおよびInformix)があり、その句(およびクエリ全体)が何も返さないことがありました。 これを理解する最良の方法は何ですか?私NULLは値のないものと考えていたため、クエリが失敗することを期待していませんでしたが、明らかにそれは正しい考え方ではありませんNULL。

2
同じコミットされていないトランザクションに挿入されたデータを選択できますか?
たぶんこれは愚かな初心者の質問ですが、どこにも答えが見つかりません。どこでもTransaction Isolation、同時トランザクション内のデータの可視性を解決する方法について読んでいます。私の懸念は、単一のトランザクション内の動作です。 トランザクションを開始し、いくつかのデータを挿入した場合、すぐにそれらを選択できますか?まだ同じ、まだコミットされていないトランザクション内ですか?はいの場合、この動作は、並行トランザクションの場合の前述のトランザクション分離と同様の方法で変更できますか? 具体的には、PostgreSQL 9.4をターゲットにしています。

3
PostgreSQLには、タイプセーフなfirst()集約関数がありますか?
完全な質問の書き直し First()集計関数を探しています。 ここで、ほとんど機能するものを見つけました。 CREATE OR REPLACE FUNCTION public.first_agg ( anyelement, anyelement ) RETURNS anyelement LANGUAGE sql IMMUTABLE STRICT AS $$ SELECT $1; $$; -- And then wrap an aggregate around it CREATE AGGREGATE public.first ( sfunc = public.first_agg, basetype = anyelement, stype = anyelement ); 問題は、varchar(n)列がfirst()関数を通過するときに、単純なvarchar(サイズなし)に変換されることです。関数でクエリをRETURNS SETOF anyelementとして返そうとすると、次のエラーが表示されます。 エラー:クエリの構造がSQL:42804関数結果の型と一致しません。 )RETURN …

1
ディスクスペースをオペレーティングシステムに戻すVACUUM
VACUUM通常、特別な場合を除いて、オペレーティングシステムにディスク領域を返しません。 ドキュメントから: 標準形式でVACUUMは、テーブルとインデックス内の無効な行バージョンを削除し、将来の再利用に使用可能なスペースをマークします。ただし、テーブルの最後の1つ以上のページが完全に空になり、排他的なテーブルロックを簡単に取得できる特別な場合を除いて、オペレーティングシステムに領域を返しません。対照的に、VACUUM FULLデッドスペースのない完全に新しいバージョンのテーブルファイルを書き込むことにより、アクティブにテーブルを圧縮します。これにより、テーブルのサイズが最小になりますが、時間がかかる場合があります。また、操作が完了するまで、テーブルの新しいコピー用に追加のディスク領域が必要です。 問題は、このデータベースの状態をどのone or more pages at the end of a table become entirely freeように達成できるかということです。これはを介して行うことができますがVACUUM FULL、実装するのに十分なスペースがありません。他の可能性はありますか?

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