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

2
インデックスが存在しない場合は作成します
インデックスが存在しない場合にインデックスを追加できる機能に取り組んでいます。比較するインデックスのリストを取得できないという問題に直面しています。何かご意見は? これは、次のコードで解決される列作成の問題と同様の問題です:https : //stackoverflow.com/a/12603892/368511

3
PostgreSQL 8.4にpgcryptoをインストールするにはどうすればよいですか?
Ubuntu Server 10.10を使用しています。PostgreSQL8.4をインストールしましたapt-get install postgresql。組み込みsha1()関数を使用したいのですが、pgcrypto最初にインストールする必要があるようです。しかし、私はそれをインストールする方法を知りません。 何もありませんpgcrypto、私は使用してそれをインストールしようとした場合apt-get install pgcrypto、私はで始まるすべてのファイルを見つけることができませんpgcrypto(私が試した私のシステムではfind / -name "pgcrypto*")。 digest('word-to-hash','sha1')データベースクエリで関数を使用できるようにpgcryptoをインストールするにはどうすればよいですか? 更新: pgcryptoを別のUbuntuマシンにインストールするのに苦労しています。使用してパッケージをインストールした後sudo apt-get install postgresql-contrib-8.4、私は私の現在のPostgreSQLデータベースにそれをインストールするにはどうすればよいの?

2
式の集約LIKEクエリを高速化するためにインデックスを作成する方法は?
タイトルに間違った質問をしている可能性があります。事実は次のとおりです。 カスタマーサービスの担当者は、Djangoベースのサイトの管理インターフェイスでカスタマールックアップを実行すると、応答時間が遅いことに不満を抱いていました。 Postgres 8.4.6を使用しています。遅いクエリのログを記録し始め、この犯人を発見しました: SELECT COUNT(*) FROM "auth_user" WHERE UPPER("auth_user"."email"::text) LIKE UPPER(E'%deyk%') このクエリは、実行に32秒以上かかります。EXPLAINが提供するクエリプランは次のとおりです。 QUERY PLAN Aggregate (cost=205171.71..205171.72 rows=1 width=0) -> Seq Scan on auth_user (cost=0.00..205166.46 rows=2096 width=0) Filter: (upper((email)::text) ~~ '%DEYK%'::text) これは、Django Adminアプリケーションによって生成されたDjango QuerySetからDjango ORMによって生成されたクエリなので、クエリ自体を制御することはできません。インデックスは論理的なソリューションのようです。これを高速化するためにインデックスを作成しようとしましたが、違いはありません。 CREATE INDEX auth_user_email_upper ON auth_user USING btree (upper(email::text)) 何が間違っていますか?このクエリを高速化するにはどうすればよいですか?

2
1つの列に特定の値がある場合にのみ適用されるカスタムの一意の列制約
次のようにカスタムの一意の列制約を持つことは可能ですか?2つのcol subsetとtype、両方の文字列があると仮定します(データ型はおそらく重要ではありませんが)。 Ifはtype「真」である、私はの組み合わせをしたいtypeとsubset一意です。それ以外の場合、制約はありません。DebianでPostgreSQL 8.4を使用しています。

3
PostgreSQLをバージョン8.4から9.4にアップグレードする方法は?
PostgreSQLをバージョン8.4から9.4にアップグレードします。 ドキュメントは、私にとって非常に明確ではありません。 アップグレードすると古いデータベースは失われますか? アップグレード後に古いデータベースを紛失した場合、どうすれば古いデータベースをバックアップできますか? psqlをアップグレードするにはどうすればよいですか? PostgreSQLはCentOS 6.6サーバーで実行されています。

3
PostgreSQL 8.4を使用して、postgresでbyteaをテキスト値に変換する方法は?
私のアプリケーションでは、Cコードを使用してデータベースにデータを挿入します。信頼できないソースから受け取った文字列PQescapeByteaConnはlibpqライブラリを使用してエスケープしているためです。これは完全に正常に機能しています。つまり、Octet形式の文字列になります。以下の例を参照してください、 入力文字列: \n\t\f\b\p\k\j\l\mestPrepared 出力文字列: \\012\\011\\014\\010pkjlmestPrepared 出力文字列がデータベースに挿入されます。次に、JDBCを使用してJavaコードでデータベースからそのデータを取得します。文字列を元の値に戻すにはどうすればよいですか? 私は2つの可能なアプローチを考えました、 データベース検索クエリを変更し、このフィールドをpostgresの文字列操作関数、つまりbyteaをテキストに変換できる関数に渡します。 Javaコードでデコードを行います。 アプローチ1の方が効率的であることを理解できます。ここにリストされているほとんどすべての機能を試しましたが、何も機能していません。助けてください!! Linuxマシンでpostgresのバージョン8.4を使用しています。

7
グループ化またはウィンドウ
ウィンドウ関数を使用して解決できると思う状況がありますが、よくわかりません。 次の表を想像してください CREATE TABLE tmp ( date timestamp, id_type integer ) ; INSERT INTO tmp ( date, id_type ) VALUES ( '2017-01-10 07:19:21.0', 3 ), ( '2017-01-10 07:19:22.0', 3 ), ( '2017-01-10 07:19:23.1', 3 ), ( '2017-01-10 07:19:24.1', 3 ), ( '2017-01-10 07:19:25.0', 3 ), ( '2017-01-10 07:19:26.0', 5 ), …

1
数時間のPostgreSQLトランザクションコミット
ユーザーからPostgreSQLサーバーへの2つの接続があり、約4時間実行され、かなりの時間(少なくとも1時間はそれを監視していた)コミット状態になっているという問題が発生しています。 。これらの接続は他のクエリの実行をブロックしていますが、それ自体はブロックされていません。 問題の2つの関係を次に示します。 postgres=# select * from pg_stat_activity where usename = 'xxxxx'; datid | datname | procpid | usesysid | usename | current_query | waiting | xact_start | query_start | backend_start | client_addr | client_port -------+---------+---------+----------+---------+---------------+---------+-------------------------------+-------------------------------+-------------------------------+---------------+------------- 20394 | xxxxxx | 17509 | 94858 | xxxxx | COMMIT | f | …

1
PostgreSQL 8.4でトリガー関数を実行するために必要な権限は何ですか?
PostgreSQL 8.4でトリガー関数を実行するために必要な権限は何ですか? ロールに設定された権限は、トリガー機能を実行する上で重要ではないようです。トリガー関数を実行するために必要な特権はEXECUTE特権であるが、トリガー関数を呼び出すトリガーを起動するアクションを実行する実際のロールではなく、テーブルの所有者にとってある日を見たことがあります。 その点を説明するドキュメント部分が見つかりません、何か助けはありますか?

2
TOASTテーブルの成長が制御不能-FULLVACは何もしません
最近、自動バキューム機能を利用して他の30個のPGSQLサーバーと連携するために、PostgreSQL 8.2.11サーバーを8.4にアップグレードしました。これは、ハードウェアを管理する別のITグループによって行われたため、他のアップグレードを選択する余地はほとんどありません(しばらくの間、9以上は表示されません)。サーバーは非常に閉じた環境(孤立したネットワーク、限られたroot権限)に存在し、RHEL5.5(i686)で実行されます。アップグレード後、データベースは常に1日あたり5〜6 GBに成長しています。通常、データベース全体では、約20GBです。現在、それは〜89GBです。同等のデータベースを実行し、実際にサードパーティのアプリケーションを介してレコードを相互に同期するサーバーがいくつかあります(1つは内部の仕組みにアクセスできません)。他のデータベースは、本来あるべきように〜20GBです。 次のSQLを実行すると、特定のテーブル、具体的にはそのTOASTテーブルに問題があることはかなり明白です。 SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_relation_size(C.oid)) AS "size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN ('pg_catalog', 'information_schema') ORDER BY pg_relation_size(C.oid) DESC LIMIT 20; 生成されるもの: 関係| サイズ ------------------------------------ + --------- pg_toast.pg_toast_16874 | 89 GB 数00.warmstates | …

2
PostgreSQL 8.4でインデックスを再作成する前に、常にVACUUM ANALYZEを行う必要がありますか?
毎日早朝にpgAgentジョブがPostgreSQL 8.4データベースのテーブルBからテーブルAの内容を更新します。テーブルAには、91列にまたがる約140kのレコードが含まれ、2つのインデックスがあります。1つはPRIMARY KEYの一部として、もう1つはPOINT PostGISジオメトリ列のGISTインデックスです。 プロセスを少し速くするために、ジョブはテーブルAのレコードを削除してテーブルBからレコードを挿入する前に、ジオメトリ列のインデックスを削除し、その後インデックスを再作成します。これがすべて完了すると、autovacuumデーモンは、希望どおりに動作するようになります(ジョブの統計情報とテーブルの統計情報をジョブの完了時間とautovacuumの実行時間と比較して10分ほど後)。 これがすべて起こった後の今朝のテーブルのチェック時に、テーブルの統計から、テーブルサイズは272MB、TOASTテーブルサイズは8192バイト、インデックスサイズは23MBであることがわかりました。これはかなり大きいように見えたので、テーブルにREINDEXコマンドを発行し、インデックスサイズは9832kBになりました。 私の質問はこれです: インデックス(または少なくともジオメトリ列インデックス)を最初から作成したときに、REINDEXがインデックスのサイズを大幅に削減するのはなぜですか?インデックスが作成される前に、テーブルがバキューム/分析されていることを確認する必要がありますか?主キーのインデックスを削除することがこれの要因ではありませんか?何が欠けていますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.