5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

PostgreSQL Part.7

1 :NAME IS NULL:2009/10/23(金) 21:23:38 ID:???
PostgreSQL (ぽすとぐれすきゅーえる, ぽすとぐれす) について語るスレです。

●関連サイト
PostgreSQL 本家
http://www.postgresql.org/
日本PostgreSQLユーザ会
http://www.postgresql.jp/
ドキュメント
http://www.postgresql.jp/document/current/html/
ダウンロード
http://www.postgresql.jp/PostgreSQL
Let's Postgres (ポータルサイト)
http://lets.postgresql.jp/
pgFoundry
http://pgfoundry.org/

●前スレ
PostgreSQL Part.6
http://pc11.2ch.net/test/read.cgi/db/1224318817/

2 :NAME IS NULL:2009/10/23(金) 21:25:44 ID:???
●過去スレ
PostgreSQL 2テーブル目 (WebProgから派生)
http://pc8.2ch.net/test/read.cgi/db/1056944337/
PostgreSQL & pgsql-jp ML 3テーブル目
http://pc11.2ch.net/test/read.cgi/db/1079771059/
【Windows】 PostgreSQL8 Part.1 【対応】 (実質part4)
http://pc11.2ch.net/test/read.cgi/db/1102247223/
PostgreSQL Part.5
http://pc11.2ch.net/test/read.cgi/db/1196512717/
PostgreSQL Part.6
http://pc11.2ch.net/test/read.cgi/db/1224318817/

●関連過去スレ
■   PostgreSQLのことならここで聞け   ■ (初心者part1)
http://pc8.2ch.net/test/read.cgi/db/1056960249/
■   PostgreSQLのことならここで聞け   ■ (初心者part2)
http://pc8.2ch.net/test/read.cgi/db/1091523132/
PostgresSQLについて語ろう (雑談part1)
http://pc8.2ch.net/test/read.cgi/db/1056992724/
PostgreSQLについて語ろう where OID=2::oid (雑談part2)
http://pc8.2ch.net/test/read.cgi/db/1136805513/

●関連スレ
2ch検索
http://find.2ch.net/index.php?STR=PostgreSQL
WebProg/PostgreSQL 2テーブル目
http://pc11.2ch.net/test/read.cgi/php/1047317680/

3 :NAME IS NULL:2009/10/24(土) 16:51:35 ID:???
>>1
着実にVerUpしているけど、なんかこう今すぐUpしたいって思うような目新しいものがイマイチ無い。
ぼちぼちレプリケーション導入を考えているのだけど、本家(本体)に取り込まないのかな?
バックアップとかその復旧まわりがどの程度充実しているのか、最近ろくすっぽ追っかけていないので、
ようワカランのだが。

4 :NAME IS NULL:2009/10/24(土) 16:58:23 ID:???
>>3
レプリケーションは次のバージョン 8.5 で取り込まれる予定。乞うご期待。

バックアップやリカバリは、本体には最低限必要な機能は備わっているので、
後はサードバーティ製ツールの対応次第だね。こっちも本体に取り込まれると嬉しいんだけど。

5 :NAME IS NULL:2009/10/24(土) 17:25:18 ID:???
Win版使用だけど、
Slony-I の使い方がよくわからないので、
簡単なレプリケーションが組み込まれるといいな。

バックアップは、
バックアップファイルに対するパスワード化は標準である?
まぁ、ツールがあるし、別にいいけど、
バックアップ中は、CPU負荷が高くなるから、マルチCPUはいるね。

6 :3:2009/10/24(土) 18:10:39 ID:???
>>4
それは期待して待っていよう。
といっても、それまで放置しておくのもなんなので、pgpoolでお試ししてみるかな。
本体に取り込まれるのは、オリジナル? それとも既存の何かを利用するのかな。

バックアップも、cronによる定期実行程度しかしてない。> 俺
PITRとかちゃんとやんなきゃと思いつつ...。

7 :NAME IS NULL:2009/10/24(土) 18:54:13 ID:???
PITR(ポイントインタイムリカバリ)って、
最初の、pg_start_backup でとったバックアップファイルと、
pg_xlog配下のファイルをミラーリングとかで別にバックアップしておけば、
最新の状態に近い、ホットスタンバイ的な復旧が可能ってこと?

下記を参考にして見た。
http://www.postgresql.jp/document/pg800doc/html/backup-online.html
http://d.hatena.ne.jp/higepon/20090414/1239695524

8 :NAME IS NULL:2009/10/24(土) 19:11:27 ID:???
>>7
ログは「archive_command で取っておいたアーカイブログ」が要る。
pg_xlogはアーカイブされていない最新のファイルだけあれば可。
WALが残っている限り故障直前まで復旧できるし、
操作ミスを取り消したいのならば任意の時点で止めることもできる。

9 :NAME IS NULL:2009/10/24(土) 19:26:44 ID:???
>>8
ありがとう。

アーカイブログが必要なんですね。
だから、pg_xlog配下のファイルはファイルサイズが一定で小さいままなのか。

ファイル容量の余裕と、PITRのリカバリ復旧の時間が早ければ、使ってみようかな。

10 :NAME IS NULL:2009/10/24(土) 20:13:58 ID:???
PITR(ポイントインタイムリカバリ)だけど、

SELECT pg_start_backup('dbdata.init.bak');
SELECT pg_stop_backup();

を実行した後、'dbdata.init.bak'が見つからないけど、どこにあるんだろ。出来ているのかなぁ。

11 :NAME IS NULL:2009/10/24(土) 20:25:52 ID:???
それは単にメモだから。backup_label という名前の
テキストファイルの中に、文字として書いてあるはず。
ちなみに、start 〜 stop の間に自分でファイルコピーしないどダメだぞ?

12 :NAME IS NULL:2009/10/24(土) 23:49:35 ID:???
前スレ950だけどCEの8のSilver受けてきた
ギリギリ受かった

13 :NAME IS NULL:2009/10/24(土) 23:58:56 ID:???
>>12
お〜おめでとう
難しかった?

14 :NAME IS NULL:2009/10/25(日) 00:30:10 ID:???
>>11
ありがとうございます。

pg_xlog配下にファイルが作成されていくようにはなりましたが、

recovery.conf によるリカバリーをいろいろ試しましたがうまくいきませんでした。
私の設定が悪いんでしょうね。(^^:
しかし、pg_xlog配下のファイルが意外に大きいので、ファイル容量的にちょっと断念かな。
蓄積していったら、とんでもない容量になりそうだから、試すのもあきらめます。(^^;

リアルタイムのレプリケーションの方がいいかな。
8.5で簡単にできることを期待して、それまで待とうっと。

15 :NAME IS NULL:2009/10/25(日) 00:32:18 ID:???
>>13
普段開発やってる人ならそうでもないと思う
普段はpgAdminとか使ってるから管理ツールのコマンド絡みの問題が厳しかったわ

16 :NAME IS NULL:2009/10/25(日) 07:02:30 ID:???
CEって、対象バージョンが「PostgreSQL 8」になっているけど、
これって 8.0 なの? それとも 8.0〜8.4 全対応って意味なの?
8.x の同士の差って、8.4→8.0 の差と比べても同じくらいはあると思うんだけど。

17 :NAME IS NULL:2009/10/26(月) 03:52:18 ID:???
silverは8.0、と明記されてるね。
http://www.sraoss.co.jp/postgresql-ce/courses/silver8-details.html

goldは明記されてないけど、
バージョン間で動作が違うものについては、問題ごとに
「これは8.0で動かすものとする」と注意書きがあった覚えがある。

18 :NAME IS NULL:2009/10/26(月) 09:56:00 ID:???
データの保管場所についての質問なのですが、
場違いでしたらスルーしてください。

Windows XP に PostgresSQL ver 8.4 をインストールしたのですが、
インストール時のウィザードで「C:\Program Files\PostgreSQL\8.4\data」
にデータを保存するように設定しました。

このデータ保管場所をデータベースごとに変更したいのですが、
その方法がわかりません。

参考したサイト
http://www.postgresql.jp/document/pg810doc/html/runtime-config-file-locations.html
http://lets.postgresql.jp/documents/tutorial/windows

一つ目のURLを参考にdata_directoryを変更しても反映されませんでした。
(他にも設定が必要?)

もしよろしければ教えていただけないでしょうか。

19 :NAME IS NULL:2009/10/26(月) 13:52:06 ID:???
-Dでディレクトリ指定して起動してるんじゃね?
サービスから起動してるなら起動時のオプション確認してみ

20 :NAME IS NULL:2009/10/26(月) 18:19:14 ID:???
>>19
確かにサービスの起動オプションに-Dが設定されていて、
それはインストール時のウィザードで設定した
「C:\Program Files\PostgreSQL\8.4\data」でした。
が、結局このオプションをどこで指定しているかがわからないのです。

21 :NAME IS NULL:2009/10/26(月) 18:36:33 ID:???
何とも申し上げにくいが、
サービスの起動オプションで設定されているんだと思うよ

22 :NAME IS NULL:2009/10/26(月) 19:38:42 ID:???
確かに、dbごとのディレクトリ設定、どうするんだろうね。
dbは、CREATE DATABASE で作成するから、その時のオプションか、それを管理しているファイルなのかな?

23 :NAME IS NULL:2009/10/26(月) 19:59:28 ID:???
えーと…

24 :NAME IS NULL:2009/10/26(月) 20:05:56 ID:???
基本的に分けることはできなかったとおもうので、ポート別にして二個起動すればいいんじゃない?

25 :NAME IS NULL:2009/10/26(月) 20:17:05 ID:???
○Windowsの-Dオプション指定場所
スタート→マイコンピュータを右クリック→
管理を選択→サービスを展開→
PostgreSQLっぽいサービスを右クリック→プロパティを選択

○PGDATAを複数持たせたい
ポートを変更する

26 :NAME IS NULL:2009/10/26(月) 20:32:20 ID:???
同じバージョンをインストールしたことないけど、
同じバージョンをポート別にして、インストールできるってこと?
別のバージョンのインストールは、ポート別にしてるけど。
(別にしないとインストールできなかったかな)

27 :NAME IS NULL:2009/10/26(月) 20:40:21 ID:???
多重起動すればいいんじゃないかと

28 :NAME IS NULL:2009/10/26(月) 20:51:29 ID:???
サービスは、
C:/Program Files/PostgreSQL/8.4/bin/pg_ctl.exe runservice -N "postgresql-8.4" -D "C:/Program Files/PostgreSQL/8.4/data" -w

になっているいるから、-D の引数で変えて、postgresql.confなどのconfigファイルなども変えて、
多重起動できるのかもね。

29 :NAME IS NULL:2009/10/26(月) 21:27:04 ID:???
ってか普通に出来る

30 :NAME IS NULL:2009/10/26(月) 21:36:39 ID:???
>>26
インストールは1回でいいよ。pg_ctl start -D <場所> を2回たたくだけ。
サービスで起動するなら、<場所> を変えたサービスを2回登録するだけ。

31 :NAME IS NULL:2009/10/26(月) 22:23:04 ID:???
>>25
サービスのプロパティ画面からオプションを「指定」できますか?

32 :NAME IS NULL:2009/10/26(月) 22:31:44 ID:???
>>31
パラメータの変更はできなかった気がする。
pg_ctl unregister & register で再登録すべし。

33 :NAME IS NULL:2009/10/27(火) 15:31:31 ID:???
plpgsqlで質問します。
split_codes という returns text[] な関数があるのですが、
別のplpgsql関数内で codes text[] という変数に対し
codes := split_codes($1) としても codes[0] が NULL のままなのです。
split_codes の返り値は期待通りなので、配列への配列の代入がうまくいっていないと
思われます。
currentのドキュメントを読んだのですがどこにも書いてないように見えます。
ご存知の方おられましたらお知らせください。


34 :NAME IS NULL:2009/10/27(火) 20:28:52 ID:???
>>33
配列の添字は 1 始まりっていうオチではなくて?

35 :33:2009/10/28(水) 11:39:30 ID:???
ご指摘を受けて確認してみたところ、1起算で配列が作られていました。
インデックスで0が指定できるから0起算とばかり・・・


36 :NAME IS NULL:2009/11/01(日) 10:27:41 ID:dRyHVXSa
pgAdminでテーブルを作成しデータの追加も行ったのですが、プログラムでテーブルを
SELECT使用とすると「リレーション: 未定義テーブル」といったエラーが帰ってきます。
原因と対処方法を教えてください。

37 :NAME IS NULL:2009/11/01(日) 14:54:36 ID:???
別のデータベース見てるとか。

38 :36:2009/11/02(月) 14:56:41 ID:KTnBgk4O
下記の用にテーブル名の前にスキーマをつけるとSQLを正常に実行できました。
スキーマを省略する方法を教えていただけませんでしょうか。

NG : SELECT * FROM public."STUDENT_NAME";
OK : SELECT * FROM "STUDENT_NAME";

39 :NAME IS NULL:2009/11/02(月) 15:57:23 ID:???
set search_path to スキーマ名
のことかな?
でもpublicはデフォルトのような・・

40 :36:2009/11/02(月) 18:27:18 ID:KTnBgk4O
>>39
その方法で解決しました。ありがとうございます。

41 :NAME IS NULL:2009/11/06(金) 23:31:50 ID:???
XPHomeEditionでPostgreSQLって使えないんですか?
インストールはできたけどStartServerとか管理ツールとかでサービス開始って押しても
起動されないんですけど

42 :NAME IS NULL:2009/11/07(土) 00:01:44 ID:???
2000以降ならエディション関係なく使えるはずだが

43 :NAME IS NULL:2009/11/07(土) 00:05:54 ID:???
サービスとしてバックエンドで動作しているのに気づいていないだけでは?

44 :NAME IS NULL:2009/11/07(土) 01:44:58 ID:???
管理ツールでサービス開始と書いてるからそれはないんじゃないの?
ログでも見てみたらどうかと思うんだけど。イベントログ吐かないのかな

45 :NAME IS NULL:2009/11/07(土) 03:42:22 ID:???
もう起動してるから二度目の起動に失敗してるだけじゃね?
タスクマネージャでpostmaster.exeとpostgres.exeあるかどうか確認しろ

46 :NAME IS NULL:2009/11/07(土) 03:55:10 ID:???
postmaster起動したらサービスは終了するパターンなの?

47 :NAME IS NULL:2009/11/07(土) 04:15:06 ID:???
お前はDBいじる前にWindowsServiceについて勉強してこい

48 :NAME IS NULL:2009/11/07(土) 07:33:59 ID:???
エラーメッセージも書いてないから、答えようが無いんだよ。
何を持って「起動されない」と判断したんだ?

49 :41:2009/11/07(土) 08:45:09 ID:???
起動してないと思ったのは
管理ツール>サービス>postgresql-8.4
のサービスの状態が停止になっていたからです
postmaster.exeとpostgres.exeはタスクマネージャにありませんでした

StartServer実行すると↓になります
----------------------------------------------------------
postgresql-8.4 サービスを開始します........................
....
postgresql-8.4 サービスを開始できませんでした。

サービスはエラーを報告しませんでした。

NET HELPMSG 3534 と入力すると、より詳しい説明が得られます。

The start command returned an error (2)
----------------------------------------------------------

インストールはpostgresql-8.4.1-1-windows.exeっていうインストーラ版使いました
設定は
[Password] Password : postgres
[Password] Retype password : postgres
[Advanced Options] Locale : C
これ以外はデフォルトです

起動するユーザがだめかと思って
StartServerを右クリック>別のユーザで実行 : インストールのとき勝手に作られたpostgres
で実行したら↓になりました
----------------------------------------------------------
システム エラー 5 が発生しました。

アクセスが拒否されました。

The start command returned an error (2)
----------------------------------------------------------


50 :NAME IS NULL:2009/11/07(土) 09:02:24 ID:???
DBの初期化 or サービスの登録あたりで失敗しているように見える。
インストーラは Windows の管理者ユーザで実行した?

あと、コマンドラインから
"C:\Program Files\PostgreSQL\8.4\bin\pg_ctl" start -D "C:\Program Files\PostgreSQL\8.4\data"
とかすると、もう少しまともなエラーメッセージが得られるかもしれない。

51 :41:2009/11/07(土) 20:52:55 ID:???
>>50
インストーラを実行したのはAdministratorsグループの個人名ユーザです
StartServerを実行したのもこのユーザです


HomeEditionなんで表示されてないですけど
スーパーユーザ(Administratorアカウント)じゃないとだめなんでしょうか

言われたとおり実行したら↓になりました

--------------------------------------------------------------------------
C:\Documents and Settings\ユーザ>"C:\Program Files\PostgreSQL\8.4\bin\pg_ctl"
start -D "C:\Program Files\PostgreSQL\8.4\data"
サーバは起動中です。

C:\Documents and Settings\ユーザ>2009-11-07 20:48:19 JSTLOG: could not liste
n on IPv4 socket: No error
2009-11-07 20:48:19 JSTWARNING: could not create listen socket for "*"
2009-11-07 20:48:19 JSTFATAL: could not create any TCP/IP sockets
--------------------------------------------------------------------------


52 :NAME IS NULL:2009/11/07(土) 22:43:01 ID:???
タスクマネージャにいない件だけど、すべてのユーザのプロセスを表示してる?

53 :NAME IS NULL:2009/11/09(月) 09:52:07 ID:???
could not create listen socket だから、ファイアウォールが邪魔をしているのでは?
postgres.exe 5432 ポートを許可してみてはいかがか。

54 :NAME IS NULL:2009/11/09(月) 21:41:25 ID:???
余計なアプリを終了や削除して再インストールで試すとか、
ログインパスワードも省略しないとか。

55 :NAME IS NULL:2009/11/09(月) 22:27:48 ID:???
削除するときはOSのpostgresも削除しろよ
再インストール時にインストーラがパスワード解らなくて失敗するぞ

56 :NAME IS NULL:2009/11/10(火) 03:36:23 ID:???
NICがないとかじゃ

57 :NAME IS NULL:2009/11/10(火) 03:39:22 ID:???
NICはなくてもインストールできるだろ

58 :NAME IS NULL:2009/11/10(火) 09:49:20 ID:ap2nF2fA
データベース作成に関する質問です。

pgAdminで新しいデータベースを作成する場合、SJISまたSHIFT_JIS_2004を
指定できません。
「ERROR: SJISは有効な符号化方式名ではありません」

SJISをDBに取り込んでSJISで出力するシステムなんですが、どうすればいい
のでしょうか。

59 :NAME IS NULL:2009/11/10(火) 10:08:53 ID:???
無理じゃないかな。
サーバはUTF8やEUC_JPで作っておいてclient_encodingをShift_JISにしては

60 :NAME IS NULL:2009/11/10(火) 10:09:19 ID:???
Sjift_JISに対応してないからEUCかUTF-8で出し入れしろ
ODBCとかJDCBならドライバが勝手にやってくれるだろ

61 :NAME IS NULL:2009/11/10(火) 10:13:42 ID:???
一応ここみて。
ttp://www.postgresql.jp/document/pg841doc/html/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED

クライアントのエンコーディングをSJISにしておけばSJISでやりとりできる
DB作成時、エンコーディングの指定はしても--no-localeを忘れずに入れよう。

62 :NAME IS NULL:2009/11/10(火) 10:30:37 ID:???
8.4 では、
SJIS と SHIFT_JIS_2004 は、サーバーでサポートされてないようですね。
http://www.postgresql.jp/document/pg841doc/html/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED

検索すると、すぐみつかったので、まずは自分で検索するよう心がけましょう。


63 :NAME IS NULL:2009/11/10(火) 10:40:57 ID:???
8.4ではってかPostgre95まで遡ってもサポートされてたこと一度も無いだろ

64 :NAME IS NULL:2009/11/10(火) 12:43:08 ID:???
>>57
NICついてなくてもループバックのソケットは作れるんだっけ?

65 :NAME IS NULL:2009/11/10(火) 12:44:50 ID:???
サーバは起動中です。
ってスタートアップメッセージでいいんだっけ?
5432ポートを他が使ってる可能性は?

66 :58:2009/11/10(火) 21:57:56 ID:???
>>59->62
すいません。有難う御座いました。

67 :NAME IS NULL:2009/11/11(水) 10:13:07 ID:???
サービスで自動起動してるのにさらにコマンドで起動しようとした?

68 :NAME IS NULL:2009/11/11(水) 21:44:59 ID:???
CSV形式でテーブルのデータをインポート、エクスポートするため
下記のようなパスを取得したいのですが、方法はありませんでしょうか。
D:\Program Files\PostgreSQL\8.4\data

69 :41:2009/11/11(水) 23:29:41 ID:???
>>53さんの言うとおり、セキュリティソフトでブロックされてたようでした
postgres.exeの許可と5432 ポートの開放をすると起動できました
長々とすみません、本当に助かりました

あと関係ないかもしれませんが
以前インストールしていたSQLServerのExpressが同じタイミングで
イベントログ吐いてたのでアンインストールしました

70 :NAME IS NULL:2009/11/12(木) 10:25:16 ID:???
>>68
意味がわからない。
パスがわかってるならそれを使えばいいだけでは

71 :NAME IS NULL:2009/11/12(木) 11:56:14 ID:???
>>68
まさかファイルを直接触ろうとしてる?
そんなことはないか・・・

72 :NAME IS NULL:2009/11/12(木) 22:41:41 ID:FED0V3qb
>>70
基本的にはそうなんですけど、パスを取得できるのならそうしたいだけです。
>>71
現状ではcopyコマンドでcsvファイルをインポートするため、サーバの\dataに
クライアントのcsvファイルを一旦コピーしています。

73 :NAME IS NULL:2009/11/12(木) 23:03:03 ID:???
postmaster.optsの中身の-Dオプションに書いてある
まぁpostmaster.optsがある場所がそこだけど
というかそのパスって自動的に取得するものじゃなくて
起動時に明示的に付与してあげるものなんだけど

74 :72:2009/11/13(金) 08:51:03 ID:YspQ0Qr8
>>73
わかりました。
有難う御座います。

75 :NAME IS NULL:2009/11/13(金) 16:09:38 ID:???
>>74
ちなみに何をしようとしてるの?
そのパスを知ってやることってバックアップしか思いつかない


76 :NAME IS NULL:2009/11/14(土) 23:20:58 ID:???
特殊パスの取得は、それぞれの言語、
Windowsプログラミング言語のところで、調べた方がいいでしょう。

VBなど。
http://dobon.net/vb/dotnet/file/getfolderpath.html


77 :NAME IS NULL:2009/11/17(火) 07:13:29 ID:???
>>75

>>72に書いてあんじゃね?

78 :NAME IS NULL:2009/11/17(火) 10:09:04 ID:???
サーバの\dataにファイルコピーできたら逆にまずいんじゃね
わざわざpostgresユーザ以外はアクセスできないようにしてるんだから
tmpフォルダとかにあげておくべきだろ

79 :NAME IS NULL:2009/11/17(火) 12:08:42 ID:???
クライアントからでもcopy使えるしなあ。
サーバの作業場所はそれ用に別に作った方がいい

80 :NAME IS NULL:2009/11/17(火) 13:04:26 ID:???
間違ってpostgres.confとか同じ名前のファイル上げちゃったらサーバ止まるよ

81 :NAME IS NULL:2009/11/20(金) 22:20:10 ID:sztJs2Te
a

82 :NAME IS NULL:2009/11/21(土) 23:48:58 ID:???
PostgreSQL Conference 2009 Japan お疲れさま。
素晴らしいカンファレンスでした。

83 :NAME IS NULL:2009/11/23(月) 20:30:57 ID:MqVij48w
bank から 8.4対応の本出たね。
一応買ってみたけど、まだ読んでない

84 :NAME IS NULL:2009/11/23(月) 22:01:41 ID:???
いちおー尼でカートには入れた

85 :NAME IS NULL:2009/11/28(土) 11:10:26 ID:2D7DiwpM
PostgreSQLってOracleとかSQLServerと比べて劣ってるところある?
インストールしてみたけどGUIもついてるし結構いいね。


86 :NAME IS NULL:2009/11/28(土) 11:22:06 ID:???
PostgreSQL いいよ。
劣っているのはアピール力や宣伝力だと思う。


87 :NAME IS NULL:2009/11/28(土) 12:01:09 ID:lolg3VYv
うーん システム一式で考えた時、色々たんない気がする
SQL周りはwithとかWindows関数も使えるようになってきたのは嬉しい
#用途は限られるけど
[プロとしてのOracle運用管理入門]レベルの本が出るといいなぁ・・

88 :NAME IS NULL:2009/11/28(土) 13:56:54 ID:???
データベースのコアは問題ないんだ。コアは。
不満はサードパーティのツールや資格のオフィシャルっぽさが足りないこと。
個人の責任で導入できるなら良いのだけど、客へ提案するときには障害になる。

89 :NAME IS NULL:2009/11/28(土) 14:36:52 ID:???
現状 SRA 頑張れ、ということになるのか。
ほかの SIer も乗り出せばいいのに。

90 :NAME IS NULL:2009/11/28(土) 16:04:46 ID:???
データとかもPostgreSQLベースのパッケージとかやってるだろ確か

91 :NAME IS NULL:2009/11/28(土) 16:38:25 ID:???
Powergresとかね。

Oracleが最も恐れてるのかPostgresだろうね。
対決もする気ないようだし。

92 :NAME IS NULL:2009/11/28(土) 17:00:09 ID:???
オープンソースなんだから
会社じゃなく、ユーザがツールや
『プロとしてのOracle運用管理入門』レベルの
Wikiを用意する、という選択肢もあるのだけどね。

93 :NAME IS NULL:2009/11/28(土) 19:03:53 ID:???
Powergresは他のSIerの他じゃない方の会社なのでは

94 :NAME IS NULL:2009/11/29(日) 10:38:46 ID:???
とにかく足りないのはレプリケーション

95 :NAME IS NULL:2009/11/29(日) 10:45:37 ID:???
Slonyかpgpoolがあるが

96 :NAME IS NULL:2009/11/29(日) 11:44:33 ID:???
どっちも使ってみたうえで言ってる?

97 :NAME IS NULL:2009/11/29(日) 11:50:02 ID:???
HadoopDB には少し期待している

98 :NAME IS NULL:2009/11/29(日) 12:44:58 ID:???
>>96
使ってるけど普通に
最初はpgpoolだけだったが同時書き込みで引っ張られるからSlonyで非同期にした

99 :NAME IS NULL:2009/11/30(月) 17:12:18 ID:???
PostgreSQLの課題と言われ続けていたvacuumがだいぶ改善し、
オンラインバックアップもバックアップソフトのサポートがないとはいえ
機能としてはPITRがある今、残る問題はMySQLがやっているような
大規模なクラスタリングかな。

レプリケーションとクラスタを兼ねたpgpoolだのSlonyだのいろいろあることは
あるけど、MySQLがやっているぐらいの大きな規模となると辛い。

100 :NAME IS NULL:2009/11/30(月) 18:03:55 ID:???
>>98
私もpgpoolは引っ張られるし非同期だと負荷分散できないべ

101 :NAME IS NULL:2009/11/30(月) 18:55:45 ID:???
MySQL Clusterも同期にした場合と非同期にした場合の特徴同じだろうに
ディスク共有の場合くらいだよ両立できるの
それと>>98が言ってるのはどっちか一つじゃなくてpgpool+Slonyでしょ

102 :NAME IS NULL:2009/11/30(月) 22:45:00 ID:???
MySQLでクラスタの話になると、ただのレプリケーションをイメージする人と
MySQL Cluster の人が混ざって困る。

103 :NAME IS NULL:2009/12/01(火) 00:20:15 ID:???
どっちにしろPostgreSQLでクラスタやるときと変わらんよ。

104 :NAME IS NULL:2009/12/01(火) 04:52:16 ID:???
pgpoolはどうしてもシリアルがずれる可能性が排除できない気がする
俺がロックをちゃんと理解していないからだろうけど

105 :NAME IS NULL:2009/12/01(火) 07:01:57 ID:???
>>104 シリアルやタイムスタンプはアプリで埋め込むしかないと思う。
でもこれって MySQL でも基本的には一緒だよね?

106 :NAME IS NULL:2009/12/01(火) 15:03:33 ID:???
同時書き込みやるタイプの奴は商用製品でも同じだよ
そもそも書き込むまで値が解らないデータなんて使わないのが普通でしょ
フレームワークだと自動採番はフレームワークで吸収したりするし

107 :NAME IS NULL:2009/12/02(水) 00:47:55 ID:l7Mt4Pbd
日本のIT企業なんて、ろくにデータベースなんて作れないんだから
PostgreSQLメインにしたらいいんだよ。

108 :NAME IS NULL:2009/12/02(水) 02:45:27 ID:???
>>104
MySQLはいくつかのデータをバイナリログで特別扱いしてるのでずれない
ちなみに乱数つかってもシードごと送るのでずれない
ユーザ定義関数はずれる

109 :NAME IS NULL:2009/12/02(水) 06:42:31 ID:???
> ユーザ定義関数はずれる
PostgreSQL は、開発者がやけにストイックなので、
こういう割り切りは嫌われるからなぁ。

110 :NAME IS NULL:2009/12/03(木) 00:15:13 ID:???
SRA以外にも、一応NTTデータと富士通が、ポストグレスベースのパッケージ用意
してんじゃなかったっけ?

ttp://japan.internet.com/webtech/20091030/4.html
ttp://japan.internet.com/linuxtoday/20070914/5.html

111 :NAME IS NULL:2009/12/03(木) 00:25:21 ID:???
そういうのはPostgresじゃなくてPostgresコンパチの独自製品と思ったほうが良い。

112 :NAME IS NULL:2009/12/03(木) 01:17:11 ID:???
コンパチ?
PostgreSQLのカスタマイズ製品だろ?

113 :NAME IS NULL:2009/12/03(木) 01:24:49 ID:RG7qM8LP
日本のIT企業はいつもメーカー独自機能とかいって中途半端なものしか提供しないよな。
そんなんはいらんのよ

114 :NAME IS NULL:2009/12/03(木) 01:47:21 ID:???
>>110
富士通は自分とこで作ってるんでなくて、海外企業のEnterpriseDBの製品を取り扱ってるだけ。
資本出資はあるけどね。

115 :NAME IS NULL:2009/12/03(木) 09:32:05 ID:???
>>113はとりあえず的外れすぎると思う

116 :NAME IS NULL:2009/12/04(金) 00:49:29 ID:???
windows server 2008にダンプを取るバッチを作成し
pgpass.confをCドライブのuser\AppData\postgresqlに配置したんですが
実行してもパスワード入力を要求されます。

どなたかserver 2008もしくはvistaでpgpass.confを使っていらっしゃる方いますか?

117 :NAME IS NULL:2009/12/05(土) 02:23:53 ID:???
Win postgresqlでlog_statement=modでsqlログを取ってるんだが
pgAdminで編集した内容はログが取れるのにJakarta Torque経由だとログが取れん・・・
何でだ・・・

118 :NAME IS NULL:2009/12/05(土) 06:33:03 ID:???
>>116
user\App〜って事はWindowsのユーザがuserっていうやつだろうけど、
PostgreSQLのOSユーザは本当にuserなの?
あとAppDataは%AppData%だよね?

119 :NAME IS NULL:2009/12/06(日) 12:19:14 ID:???
echo %APPDATA%
かエクスプローラで%APPDATA%直接入れて場所確認したほうがいいかも

120 :NAME IS NULL:2009/12/08(火) 02:13:46 ID:Nbo4F8Sg
ログ出力のやり方が判らなくて難儀してるのですが良い解説ページ等は無いでしょうか。
バージョンは8.3.8です。

やりたいこと:
 成功するつもりの挿入文で失敗(?)しているので、
 実行時のパラメータ(生SQL文)と、エラーならエラー情報を取得したい
(現状、「成功していない」ということしか判らない
 コンソールからログインして想定されるSQL文を直接流し込むと成功する)

 できれば既存のログ(syslog等)ではなくオリジナルなログに出したいが
 その手順が面倒なら出力先は任意でOK


121 :NAME IS NULL:2009/12/08(火) 02:39:29 ID:???
成功するつもりの挿入文ってのが意味解らん

122 :NAME IS NULL:2009/12/08(火) 04:52:07 ID:???
pgpool-IIは着実にバージョンアップしているね
今回のバージョンからtimestampとかがずれなくなったらしいね

123 :NAME IS NULL:2009/12/08(火) 06:08:04 ID:???
pgpool相当機能をlibpq上に実装してもらうと、
単一障害点が無くなって嬉しい気がするのだが。

124 :NAME IS NULL:2009/12/08(火) 11:07:06 ID:???
>>120
8.3.7までしかマニュアルがなかったけど
http://www.postgresql.jp/document/pg837doc/html/runtime-config-logging.html
とか。

125 :120:2009/12/08(火) 13:37:32 ID:???
>>121
例えば"insert into hoge(int a, int b) values (1 , 2)"というクエリを実行したつもりで、
しかし結果としてa=1,b=2のレコードが挿入されていない、ということ。
その際、ロジックがおかしくてSQLにパラメータが正しく渡っていないのか、
ロジック(≒SQL文そのもの)は正しいけれど、設定周り(例えば権限)が原因で失敗しているのか切り分けがつかない、ということ。

>>124
ありがとうございます、役には立ちそうです。

「○○を指定したときはこのオプション〜」式の細かい指定が多いのが見ていて辛いんですが、
これはみんなちゃんと理解して設定しているもんなんでしょうかね……。

126 :NAME IS NULL:2009/12/08(火) 13:51:20 ID:???
>>125
とりあえずログを見たいだけなら、必要なパラメータなんて数個でしょ。
syslog で良ければ
log_destination = 'syslog'
だけでとりあえず出るでしょ。facility はデフォルトで LOCAL0 だっけかな。

127 :NAME IS NULL:2009/12/08(火) 16:55:16 ID:???
postgresql.confをじっくり見れば解決

128 :NAME IS NULL:2009/12/08(火) 17:46:35 ID:???
>>126
なんか違わないか
聞いてるのはlog_statementだと思うぞ

129 :NAME IS NULL:2009/12/08(火) 21:12:55 ID:???
>>125

>例えば"insert into hoge(int a, int b) values (1 , 2)"というクエリを実行したつもりで、
>しかし結果としてa=1,b=2のレコードが挿入されていない、ということ。

単にコミットされてない、ってのはないよね?念のため。


130 :NAME IS NULL:2009/12/09(水) 00:07:41 ID:???
普通に接続した場合はautocommitだろ
サーバ側でいじってなければ

131 :NAME IS NULL:2009/12/09(水) 00:12:35 ID:Ao+i+k7i
良くわからないんだけど、PostgreSQLもユーザ数が増えて商用のデータベースの脅威となった場合は、
MySQLみたいに買われて、飼い殺しになっちゃうものなの?
そういうラインセンス!?

132 :NAME IS NULL:2009/12/09(水) 00:25:19 ID:???
>>131
MySQLの場合だと、買収後に飼い殺しにされた後でforkするにはGPL版を
元にしなければならないので商用に使う際に面倒なハメに陥るけど、
PostgreSQLならBSDL系ライセンスのままでいけるので、自由度は高い罠。

133 :NAME IS NULL:2009/12/09(水) 00:36:02 ID:Ao+i+k7i
純粋にオープンソースで継続的にバージョンアップができている分野って、
どういう条件要素なのかとおもったりする。

それを支えている人材の生活があるから、その十分条件として何があるのかと。

まぁ少なくとも日本ではそういう分野で生活できてる人材は皆無に等しいのは
やっぱ日本て目先しか見てないからソフトウエアには向いていない人種だなと思う。

ソフトウエアってマイナースポーツに似てるよなw

134 :NAME IS NULL:2009/12/09(水) 00:45:40 ID:???
そもそも飼い殺しって何を心配しているのやら。

135 :NAME IS NULL:2009/12/09(水) 01:24:02 ID:???
そもそも売らないと買えないんだけどな
MySQLは会社だったけどPostgreSQLは違うし

136 :NAME IS NULL:2009/12/09(水) 01:31:16 ID:???
日本でもソース公開している人はいるだろ
ただそれだけで団体として発展してない。

日本のオープンソースで一番発達してるのはサクラエディタくらいじゃないか?

137 :NAME IS NULL:2009/12/09(水) 01:48:47 ID:???
え?何をトンチンカンなことを言ってるんだ?

138 :NAME IS NULL:2009/12/09(水) 01:54:10 ID:???
Sylpheed、EC-CUBE、Seasar2Framework、Ruby、Zebra、Hinemos、
OpenSOAP、fml、LHA、namazu、GRUB、delegate、mew、w3m

いくらでもあるわな

139 :NAME IS NULL:2009/12/09(水) 02:00:58 ID:???
すくなくともS2やRubyは組織化してるな
あとテキストエディタならxyzzyやMeadowも日本のオープンソースでは

140 :NAME IS NULL:2009/12/09(水) 03:25:26 ID:???
GRUBって日本なの?

サクラエディタは本家が更新捨てて、派生ががんばってるんだよね。
けど、win7 x64版がなくて友人が嘆いてたな

141 :NAME IS NULL:2009/12/09(水) 04:05:21 ID:???
日本発のオープンソースソフトって全体的にこう支援的な
物が多い気がするね。
縁の下の力持ち的な。

142 :NAME IS NULL:2009/12/09(水) 04:11:33 ID:???
そう考えるとRubyは例外中の例外の存在なのか。

143 :NAME IS NULL:2009/12/09(水) 05:19:31 ID:???
>>140
GRUB書いてる人の公演
http://video.google.com/videoplay?docid=-5355630265244364468

144 :NAME IS NULL:2009/12/09(水) 10:37:20 ID:???
>>140
2010で自分でビルドすればいいよ
変更箇所はちょっとだけだし、コンパイルしながらなおしてきゃいい

145 :NAME IS NULL:2009/12/09(水) 12:19:56 ID:???
それをコミットしてバイナリ配布することが活性化につながるんじゃないのか

146 :NAME IS NULL:2009/12/09(水) 13:45:04 ID:???
2008とかならいいけど、2010じゃまだまずいでしょ、まだベータだし。

147 :NAME IS NULL:2009/12/09(水) 13:46:50 ID:???
webDB作成してほしいんだけど誰か請け負ってくれない?
webから追加・削除・更新できる程度て良いのでおねがいします。
簡単に言うと住所録みたいなかんじです。

おねがいします

148 :NAME IS NULL:2009/12/09(水) 14:51:00 ID:???
>>147
いいよ
ここに連絡先は掲載しないほうがいいね
どこか、書き込み、削除ができる掲示板とかに連絡先とか?

149 :NAME IS NULL:2009/12/09(水) 14:52:41 ID:???
>>119
そういう方法があったんだね。
勉強になった。

150 :120:2009/12/10(木) 23:59:37 ID:???
報告が遅くなりましたが >>126 の"syslog"指定で
(期待したものとちょっと違いましたが ←生クエリじゃなくてプリペアドステートメントが出た)
エラーメッセージは確認できて問題も解決しました。
ありがとうございました。

余談ですが原因はvarchar(64)のカラムに入れようとしていた文字列が長すぎてエラー、でした。


151 :名無しさん@お腹いっぱい。:2009/12/11(金) 00:10:40 ID:???
pgAdmin でSQL文を実行すれば、大半のエラーは、
文法エラーや単純ミスなので、ログ出力しないでも解決できるはず。

152 :NAME IS NULL:2009/12/11(金) 00:19:07 ID:???
>>150
いやだからその次くらいのレスのlog_statementをだな

153 :NAME IS NULL:2009/12/11(金) 02:11:00 ID:???
>>151
実行するために、実際に発行しているクエリを取得したいという話ではないのか。
まぁ、>>152だけど。

154 :NAME IS NULL:2009/12/11(金) 06:34:42 ID:???
今回はエラーだったから、クエリもいっしょに取れたんでしょ。
解決したのだから良いじゃない?
正常終了のパターンだと log_statement が要るけど。

ただ、普通はクライアントにもエラーメッセージが返されるはずなんだよね。
アプリでまともにエラーチェックしていないんじゃ?

155 :NAME IS NULL:2009/12/11(金) 07:25:43 ID:???
log_statementだとprepared statementに突っ込んだ値も出るけど
エラーなら出ないでしょ

156 :NAME IS NULL:2009/12/12(土) 09:09:21 ID:???
http://postgres.sios.com/modules/install/index.php?content_id=3
の手順を参考にwarm standbyを構築しようとしています。
この手順について、以下の認識で正しいでしょうか?

この手順はPPAS(Postgres Plus Advanced Server)を使用しているが、
ソースからインストールした通常のPostgreSQLでも同様に行なえる。

手順4以降、稼動系サーバは通常通り運用していてかまわない。
読み出し、更新ともに可能。

手順5〜7の間に稼動系サーバに実施された更新内容は、
稼動系サーバのarchive_commandで指定したrsyncコマンドにより待機系サーバに送られ
待機系サーバのrestore_commandで指定したpg_standbyコマンドにより待機系サーバに反映される。
手順6で待機系サーバに更新内容が不完全にコピーされるが、
上記のpg_standbyによる反映があるので気にしなくていい。

手順6ではpostmaster.pidのみコピー対象から除外しているが、
pg_xlog/以下も除外して問題ない。
(その場合、反映が多少遅れる?)

157 :NAME IS NULL:2009/12/12(土) 09:44:03 ID:???
>>156
最後以外は正しい認識だと思う。なかなかにまとまりの良いガイドだね。

> pg_xlog/以下も除外して問題ない。
> (その場合、反映が多少遅れる?)
除外して問題ない(というか除外すべき)だが、待機側に pg_xlog 以下を再現した
空のディレクトリ・ツリーを作成しておくべし。これにより反映が遅れることはないが、
そもそもウォームスタンバイは非同期WAL転送なので更新結果の転送には必ず遅れがある。

もし、フェイルオーバー時に直近の更新は失われるのが嫌なら、さらに追加で
DRBD とかが必要になる。archive_timeout もゼロにはできないので。

158 :NAME IS NULL:2009/12/13(日) 18:26:42 ID:???
なるほど、こりゃいいわ。
とりあえずこれで凌ごう。

159 :156:2009/12/13(日) 22:40:31 ID:???
ローカルに2つプロセスを立てる例はけっこうあるんですが
2台でrsyncまで書いてあるのってなかなかないですよね。
なぜかarchive_modeについて記述がないのですが、
稼動系はon、待機系はoffで動きました。

>>157
ありがとうございます。
同期の遅れやデータの欠けについては了解しています。
元でガンガン書き込んでるのに丸ごとコピーしてちゃんと動くってのは
けっこう不思議ですね。

> 除外して問題ない(というか除外すべき)だが、
pg_xlog/以下のファイルはコピーしても結局使われないから、ということでしょうか。

160 :NAME IS NULL:2009/12/13(日) 23:00:23 ID:???
1台で2つ立ち上げるのも2台でわけてsyncするのも同じ事だろ
syncの方法が解らないというのなら、syncの方法を調べればいいだけ

161 :NAME IS NULL:2009/12/13(日) 23:14:19 ID:???
> pg_xlog/以下のファイルはコピーしても結局使われないから、ということでしょうか。
そう、使われない。確かコピーしても特に害は無いはずだけど。

162 :NAME IS NULL:2009/12/21(月) 00:37:24 ID:???
PostgresForestってWindows上でも使えますか?

PostgresForest
http://www.nttdata.co.jp/services/postgresforest/

163 :NAME IS NULL:2009/12/21(月) 01:05:26 ID:???
データに聞けよ

164 :NAME IS NULL:2009/12/21(月) 11:20:41 ID:???
Win鯖上で無料でレプリケーションできるようなツールってないですか?
Linuxなら色々あるようなんですが。。。


165 :NAME IS NULL:2009/12/21(月) 12:42:28 ID:???
検索しなくてもSlony for Windowsとかあんだろ

166 :NAME IS NULL:2009/12/21(月) 12:47:30 ID:???
てかSlonyはついてないか?

167 :NAME IS NULL:2009/12/21(月) 12:51:31 ID:???
PGCluster 
pgpool 
PostgresForest
Slony-l

しかピックアップしていなかったので見落としていたようです。
ありがとうございます。




168 :NAME IS NULL:2009/12/21(月) 13:38:45 ID:???
Slonyピックアップしてたなら見落とすなよ

169 :NAME IS NULL:2009/12/22(火) 22:53:42 ID:???
>>162
Linuxクラスタ対応のようだから、Winは非対応でしょう。

170 :NAME IS NULL:2010/01/16(土) 01:38:20 ID:???
DBをまたいだ操作はcontribのdblink使えばできる

171 :NAME IS NULL:2010/01/22(金) 21:06:41 ID:???
質問させてください。

shared_buffersの値指定は、
8.1まではバッファの数、8.2からメモリサイズを直接指定
になっていると思うのですが、8.4のマニュアルを見ると

共有ディスクバッファ=(block_size + 208) * shared_buffers

と書かれています。
これだと8.1までの計算式と変わらないのではないでしょうか。
block_sizeをかける必要はないと思うのですが?

172 :NAME IS NULL:2010/01/22(金) 21:27:07 ID:???
>>171
すみません自己レスです。

8.4でもバッファ数での指定はできるので、
計算式ではバッファ数を指定した場合の計算方法を表している
ということで良いのですよね?

173 :NAME IS NULL:2010/01/22(金) 22:27:42 ID:eauqLL+S


174 :NAME IS NULL:2010/01/24(日) 04:06:07 ID:pg++ufzR
サブクエリを外部結合するとnestedloop joinになってしまうのですが
hash joinになるようにする方法ってありますか?

175 :NAME IS NULL:2010/01/25(月) 10:44:36 ID:foNl4qQb
一時的に
SET enable_nestloop = OFF;
実行してみれば?


176 :NAME IS NULL:2010/01/25(月) 21:34:47 ID:???
でも、なんでプランナが選択した nested loop join じゃなくて
hash join にしたいんだ?

177 :NAME IS NULL:2010/01/25(月) 21:45:08 ID:pui9fXUg
単純に遅いからじゃねーの

178 :NAME IS NULL:2010/01/25(月) 23:52:38 ID:???
SQLチューニングでいきなりプランナいじる奴がいたらアホだ。

179 :NAME IS NULL:2010/01/26(火) 20:30:37 ID:???
質問があります
PostgreSQL(本体または関連アプリ)にhttpでいうところの
「リバースプロキシ」のような機能を持つものはありませんか?

具体的には、サーバAへの接続を、接続先dbがdb-bだったらサーバBに中継し、
接続先dbがdb-cだったらサーバCに中継する、という機能です。

やりたい事は、バージョンアップのためのデータ移動を複数回に
分けたいのですが、アプリケーションからは透過的にしたいのです。

予めdb毎にIPアドレスを割り振っておけば済む話ですが、先々を考えると
ローカルIPとはいえアドレス消費しすぎかなと。


180 :NAME IS NULL:2010/01/26(火) 21:31:18 ID:???
?????

> 予めdb毎にIPアドレスを割り振っておけば済む話ですが、先々を考えると
> ローカルIPとはいえアドレス消費しすぎかなと。

サーバA,B,Cと3台あるなら既にIPアドレスは3つある訳で、プロキシ使ったところでアドレスが減るわけじゃない。
素直にサーバBのアドレスでサーバBのdb-bにつなげばよいし、サーバCのアドレスでサーバCのdb-cにつなげばよいのでは?
意図がよく分らない。


181 :NAME IS NULL:2010/01/26(火) 21:44:47 ID:???
アプリケーション側の設定を触りたくないのかな。
pgpoolでどうだろ?

182 :NAME IS NULL:2010/01/26(火) 22:03:57 ID:???
pgpoolってプロキシにも使えるんだ....知らなかった

183 :NAME IS NULL:2010/01/26(火) 23:30:19 ID:???
今までバージョン8.5としてたものはバージョン9.0として出すらしいという噂を聞いた。


184 :NAME IS NULL:2010/01/26(火) 23:32:44 ID:C/MTbqDV
postgresqlは、是非ともOracleを駆除していただきたい。

185 :NAME IS NULL:2010/01/27(水) 01:58:25 ID:???
>>184
禿しく尿意
エンタープライズ分野ではムリだろうけどな〜
まぁ俺達エンタープライズ!って人たちにはぜひとも過去の遺物に
しがみついてもらおう。
最近の技術の流れは明らかに10年前などとは違ってきてる


186 :NAME IS NULL:2010/01/27(水) 02:45:14 ID:???
駆除とか言ってる奴は本当に頭が悪いなと思う
選択肢って言葉を知らないんじゃないか

187 :NAME IS NULL:2010/01/27(水) 02:53:16 ID:???
でもボラクルはJavaもろとも死んでくれると実に嬉しい

188 :NAME IS NULL:2010/01/27(水) 10:55:03 ID:???
>>180
すみません、説明のために簡略化しすぎましたか。

サーバBからサーバAにデータを移したいのですが、中身はdb-Aから
db-zまで52個のdbがあって、そのそれぞれにIPを振って52個を恒久的に
消費するのはアドレスの喰いすぎだと思うのです。
データ移行が終われば1台構成に戻るわけですし。
(実際には52個もありませんが、今後増え続ける予定はあります)

>>181
pgpoolはdb別の処理をできましたでしょうか?
(調べたけどよくわからない)


189 :NAME IS NULL:2010/01/27(水) 14:00:09 ID:???
>>188
サーバBの52個あるDBをサーバAに移したい(コピーしたい)と言う話で、なぜ各コピー先DBにアドレスを割り振る必要があるのかが分りません。
サーバBのDBと同じ数だけサーバA上でcreate database を発行するか createdbコマンドを叩けばよいのではと思いますが。
作った各DBへはサーバAのアドレスで接続しに行けますよ。


まぁ、プロキシがんばって探してください。

#なんかインスタンスの話とデータベースの話を混同している様な気がしなくもありません。
#実はサーバBにインスタンスが52個あります、と言う話だったりして


190 :NAME IS NULL:2010/01/27(水) 18:46:34 ID:???
>>189
えっと、
・サーバB上のPostgreSQL8.0上に(例えば)52個のdbが動いている
・別サーバのDBクライアントからはIPアドレス指定で参照されている
・これらdbを8.4にアップグレードしたい
・ベタに全部データ移行すると、データ量の関係で(例えば)30時間かかる
・だがサービスを止められる時間は限られている(夜中のN時間)
・幸いにしてdbが細切れなので1個2個ならば時間内に収まる
さてどうするか?

> なぜ各コピー先DBにアドレスを割り振る必要があるのか
db-Aに10.1.1.1、db-Bに10.1.1.2… と割り振っておくと、
データ移行が完了したdbのIPアドレスをサーバBからサーバAに
付け替えるだけでアプリケーションを変更せずに済むのです。
(「必要がある」のではなく「そういう方法もあるが選びたくない」という事)
# 複数インスタンスで同一「IPアドレス・TCPポートの組」を共有できれば
# 苦労はありませんよ。


191 :NAME IS NULL:2010/01/27(水) 19:19:01 ID:???
サーバAに52個のIPを割り当て、アプリからDBへの接続はそれぞれ異なるIPでってことか?
現状は、同一IP、インスタンス1、ポートも1、dbnameのみ違うの?

今からIPを割り当てるなら、移行が終わってから戻しても良いと思うけど。

192 :NAME IS NULL:2010/01/28(木) 01:44:09 ID:???
>>190
Slony-Iを使えばその条件でサーバAにデータ移動できます。
IPアドレスはサーバBとサーバAの2個で充分です。

●手順
1 DBクライアントはずっと同じIPアドレス(4までサーバB)にアクセス
2 サーバBをSlony-Iのマスターにする
3 サーバAをSlony-Iのスレーブにする
4 レプリケーション対象DBを少しずつ増やす
5 全DBが複製されたらサーバBのIPアドレスをサーバAに割り当てる

PostgreSQL 8.5 の新機能
http://lets.postgresql.jp/documents/technical/8.5/1
>データの一部だけの複製ができるのは Slony-I の利点です。
>また、SQLベースの複製を行うため、メジャーアップグレードの際に
>pg_dump の代わりに使えるのは Slony-I だけです。

コアメンバが開発したレプリケーション・ソフトSlony-I
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20041027/151827/
>今回紹介するSlony-I(http://slony.info) は,
>「非同期・シングルマスタ」方式のレプリケーションに分類される。
>また,データの更新をスレーブに対して行うことはできない。

193 :NAME IS NULL:2010/01/28(木) 05:06:35 ID:???
したくないとか勝手な条件つけんなよ

194 :NAME IS NULL:2010/01/28(木) 06:50:45 ID:???
なんか、>>190がいうのはdb複製が出来ればいいだけじゃなくて、
 * 全部複製できるまでは複製済みのdbも含めてサーバBのアドレスでアクセスさせたい
 * で、なんでかしらないんだけどdb一つにつきIPアドレスを1個割り振りたい
なんだって。情報小出しにしてるからこれからも条件がどんどん出てくると思う。


絶対止めちゃダメで、最大52個のデータベースが入ってて、1〜2個を停止時間中にコピー、
ってことだから、Slony-Iを使うなら

dbコピーして、Slony-Iにレプリの指定して

を最大で52日間(営業日ベースだと2.5ヶ月くらい)やり続けることになるんでしょうね。



195 :NAME IS NULL:2010/01/28(木) 09:41:15 ID:???
クラッシュしたら、終わりだね。
というか、クラッシュしたほうが、すっきりするかもよ。

196 :192:2010/01/28(木) 10:25:06 ID:???
>>194
>>179 >>188 >>190は一貫してこう言ってると思います。
「PostgreSQLに振り分けを行う関連アプリがなくても
IPをdbの数だけ用意すればIPルーティングでdbの振り分けを実現できる。
しかしそういう強引な手段はできるだけ避けたい。」

情報の小出しについてはその通りですね。
>>190の前半のような事情は最初から書いて欲しかったです。

197 :NAME IS NULL:2010/01/28(木) 21:39:25 ID:???
移行してる最中のだけpgpool通して後は直結とかでいいんじゃね?

198 :NAME IS NULL:2010/01/29(金) 02:15:11 ID:???
>予めdb毎にIPアドレスを割り振っておけば済む話ですが
てことなので、現状、サーバAのIPアドレスは一個なんじゃね?
現状1個だが、DB毎に別IPを振れば移行完了したところから順にIPアドレスを付け替えていけばなんとかなるけど、
これはやりたくないと。(この方法を書いた事が混乱を招いているように見える)

> # 複数インスタンスで同一「IPアドレス・TCPポートの組」を共有できれば
> # 苦労はありませんよ。
# コメント扱いにすれば何書いてもいいのか?うぜぇ。

IPアドレスが既に複数であったとしても、単にレプリケーションを仕掛けておいて、レプリケーションが完了したら
サーバBを残せばよいように思うが。

199 :NAME IS NULL:2010/01/29(金) 04:04:10 ID:???
恐らく何処かで何か少しの勘違いが錯綜してイングランド
そうすれ違い!

200 :NAME IS NULL:2010/01/29(金) 06:39:11 ID:???
52個じゃないにしても、コピー先に複数のアドレスがあるんでしょう。>>179にはこう書いてあります。

> 具体的には、サーバAへの接続を、接続先dbがdb-bだったらサーバBに中継し、
> 接続先dbがdb-cだったらサーバCに中継する、という機能です。

この時点でコピー元はわかりませんがコピー先のアドレスは二つある様に見えます。
>>190でいうところのサーバA相当が2台あるのか、サーバAに2個のアドレス割り当ててるのかは分らないですけど。

現状の構成も不明瞭、移行中の予定構成も不明瞭、判っているのは移行後には(おそらく)サーバAだけになる、と言う事。

まだ聞く気があるなら、改めて小出しにせずきちんと書いてみたら?>>179

201 :NAME IS NULL:2010/01/30(土) 13:20:04 ID:???
ホスティングしてるサーバなのかね

202 :NAME IS NULL:2010/02/03(水) 03:31:35 ID:???
そー言えば、MLのアーカイブが復活したね
JPUGの人>> 乙

http://ml.postgresql.jp/pipermail/pgsql-jp/

203 :NAME IS NULL:2010/02/18(木) 01:25:45 ID:h6krnEyT
pg_dump で 日本語が文字化けする場合と しない場合ってなんでしょう?
文字コードは、UTF8です。

pg_dump データベース名 > aaa.sql

204 :NAME IS NULL:2010/02/18(木) 02:15:20 ID:???
なにこれトンチ?

205 :NAME IS NULL:2010/02/18(木) 02:30:40 ID:???
釣りだろ

206 :NAME IS NULL:2010/02/18(木) 10:41:04 ID:???
pg_dumpでもエンコーディングの指定できるだろう

207 :NAME IS NULL:2010/02/19(金) 10:31:47 ID:jf2XucmD
indexがちゃんと構築されてるかクライアントから確認する手段ってないですか?
どうもデータロードしただけで再構築やってない雰囲気なのですが。

phppgadmin とかpsqlで接続はできますが、DBサーバのアカはないので
ログとかは直接みられない状態です。

208 :NAME IS NULL:2010/02/19(金) 10:34:15 ID:???
権限ないのに見られたらセキュリティホールでは

209 :NAME IS NULL:2010/02/19(金) 14:20:26 ID:sbocO3zV
>>207
explain では?

210 :NAME IS NULL:2010/02/19(金) 16:54:07 ID:???
それじゃ作成されてるけど単に使われてないだけなら解らないぞ

211 :NAME IS NULL:2010/02/19(金) 18:34:20 ID:???
インデックスは作られてると思うけどなぁ。
パフォーマンスが悪いから、インデックスが作成されていないのでは?とおもったのなら、reindexdbやってみたらどうでしょ

212 :NAME IS NULL:2010/02/19(金) 18:55:31 ID:???
自分で管理してない鯖なら管理者に問い合わせるべきなのでは
もしくは管理者権限よこせか

213 :NAME IS NULL:2010/02/19(金) 20:47:18 ID:???
インデックスがあるかどうかが気になるのなら、
psql -c '\di'

214 :NAME IS NULL:2010/02/19(金) 22:46:40 ID:???
インデックスの有無は普通にpg_indexesとかで解るけど
そういう事じゃないんだろ

215 :NAME IS NULL:2010/02/20(土) 05:30:18 ID:???
いい質問だと思うけどなぁ。

216 :NAME IS NULL:2010/02/20(土) 09:09:46 ID:???
再構築やってないか? が質問なんだよね。REINDEX が要るか否かってことなら、
pg_relation_size() でインデックスの物理サイズをチェックしたり、
pgstattuple() でデータと空き領域の比率を調べるのは参考になるかな?
ただ、どちらにせよ、「もし断片化してなければ、こうなるはず」っていう机上計算ができる程度の知識は要るかも。

217 :NAME IS NULL:2010/02/20(土) 13:25:23 ID:???
なんでpsql使えるのにphpPgAdminなんか使ってpgAdmin使わないのか理解に苦しむ

218 :NAME IS NULL:2010/02/20(土) 21:50:55 ID:???
>>217
psqlとphppgadminは使えるが、pgadminが使えない状況ってよくあるよね

219 :NAME IS NULL:2010/02/21(日) 02:33:16 ID:???
>>218
なんじゃその状況はw

220 :NAME IS NULL:2010/02/21(日) 02:37:22 ID:???
レンタルサーバーなどの場合、制限で、pgAdmin 使えない場合あるんじゃないの。

221 :NAME IS NULL:2010/02/21(日) 02:41:36 ID:???
そもそもインデックスが云々みたいな使い方してるのに鯖のアカウントないからログ見られないとか話にならないと思うんだが

222 :NAME IS NULL:2010/02/21(日) 15:05:13 ID:???
とりあえず VACUUM ANALYZEしてみたら

223 :NAME IS NULL:2010/02/23(火) 17:10:34 ID:???
>>219
psqlとphpPgAdminはlocalhost接続で、pgAdminはリモートしか使えないけど、リモートからの
接続は制限されてるという場合。

224 :NAME IS NULL:2010/02/23(火) 18:20:09 ID:???
よくは無いなあ。
たまにはあるかもしれんが

225 :NAME IS NULL:2010/02/23(火) 19:06:17 ID:???
納めちゃったシステムはいつもsshでログインしてpsqlで管理してた。。

226 :NAME IS NULL:2010/02/23(火) 23:02:58 ID:???
ssh開いてるならpgAdminIII使えるだろ

227 :NAME IS NULL:2010/02/24(水) 00:28:22 ID:???
>>225
sshが開いているのにポートフォワーディングが制限されているのか?

228 :NAME IS NULL:2010/02/24(水) 01:28:46 ID:???
>>227
コンソールで慣れていたのでついうっかり。
トンネルに慣れるようにがんばるよ!

229 :NAME IS NULL:2010/02/24(水) 01:37:40 ID:???
そして使い慣れずに右クリック一発で全データ消去するのであった

230 :NAME IS NULL:2010/03/01(月) 11:56:35 ID:NrCpd4mv
postgresqlをインストールして、postgresユーザで初期データをINSERTしたのですが、
他のユーザからPerlのDBI経由で使えません。ユーザ名とパスワードは、postgres/passwordに
ちゃんとしているのですが、何か追加で設定が必要でしょうか?


231 :NAME IS NULL:2010/03/01(月) 12:00:28 ID:???
使えないというのはどういう操作をしてどうなるの?
Perlのプログラムが動いてるのはDBと同じサーバ?

できればユーザーは先に作ろうぜ

232 :NAME IS NULL:2010/03/01(月) 12:07:38 ID:NrCpd4mv
ありがとうございます。
全部同じサーバ上です。
hogeというユーザからPostgresqlにアクセスするにはhogeをcreateuserするのが
一番いいんでしょうか?

233 :NAME IS NULL:2010/03/01(月) 12:15:31 ID:NrCpd4mv
Createuserやりました。そしたら動いたよ。
ありがとうございました。


234 :NAME IS NULL:2010/03/03(水) 06:17:43 ID:???
特定のデータベースにある全テーブルを、リードオンリー(selectのみ許可)で
アクセスできるユーザを作成したいです。

将来そのデータベースに追加されるテーブルもリードオンリーにしたい
のですが、どんなユーザ(ロール)権限にしたらよいのでしょうか?


235 :NAME IS NULL:2010/03/03(水) 21:59:22 ID:???
COPY TO を利用してテーブルの内容をファイルに出力する際、
出力内容をsortすることはできないのでしょうか?

236 :NAME IS NULL:2010/03/03(水) 23:03:35 ID:???
>>235
COPY (SELECT * FROM test ORDER BY id) TO STDOUT;
でいけた。

237 :NAME IS NULL:2010/03/04(木) 00:51:52 ID:???
>>236
なるほど、ありがとうございます。

238 :NAME IS NULL:2010/03/04(木) 08:04:53 ID:gtvQ8+8N
>>234
9.0 待ち。ALTER DEFAULT PRIVILEGES。
8.4 以前だと無理。テーブルを作るたびに GRANT & REVOKE してやらないとダメ。

239 :NAME IS NULL:2010/03/06(土) 14:15:24 ID:MQ3U7j/O
ストアドプロシージャ内でビューを生成したいのですが、ビューの選択条件に関数の引数を使用すると、
実行時に there is no parameter $1 というエラーが出てしまいます。
解決方法をご教授ください。

create function f( code text ) returns integer as $$
begin
create view my_view as select * from user_table whrer user_code = code;
end;
$$ language lppgsql;

select func( 'A102' );

ERROR: there is no parameter $1

240 :NAME IS NULL:2010/03/06(土) 14:31:06 ID:???
whrer

241 :NAME IS NULL:2010/03/06(土) 14:35:56 ID:???
失礼。タイポです whrerー>where.
直しても実行時にエラーになります.

242 :NAME IS NULL:2010/03/06(土) 17:45:03 ID:???
lppgsql?

243 :NAME IS NULL:2010/03/06(土) 17:57:04 ID:???
タイポいじりもほどほどにな。

244 :NAME IS NULL:2010/03/06(土) 21:59:34 ID:???
ビューの定義にまでは引数を引き継げない。

やりたいことが良く分からないが、もし「ビューを作る関数」を作りたいのならば、
動的SQLを使って EXECUTE 'CREATE VIEW ... WHERE user_code = ' || code; ならできる。
ただ、これだと関数を呼ぶ度に新しいビューが作られるので、ビューの名前も被らないようにすべき。

もしテーブル関数を作りたいならば、返値を SETOF user_table、LANGUAGE を sql にする。
これだと SELECT * FROM f('...') みたいな使い方になる。

245 :NAME IS NULL:2010/03/07(日) 08:59:58 ID:???
PostgreSQL 8.x for Windows で、DBアクセスのスピード改善に取り組んでいます。

Q1.DB全体のパフォーマンスアップをしたいです。
 shared_buffers, temp_buffers, work_mem の値を変更しても速度の改善が
 みられません。
 このパラメータのほかにパフォーマンスに影響する設定はあるのでしょうか?
 またPostgreSQLのパフォーマンスを計測する標準的な方法はありますか?
 (ツールとか、システムカタログ値とか・・・)

Q2.特定のSQL文のパフォーマンス改善をしたいです。
 SQL文のパフォーマンス改善の方法として標準的な手順やツールがあったら
 教えてください。

よろしくお願いします。

246 :NAME IS NULL:2010/03/07(日) 09:05:03 ID:???
パソコン、サーバー、ハード、ソフトの環境、
遅いと思われる、SQL文の例を提示したほうが、
アドバイスを受けやすいと思うよ。

247 :NAME IS NULL:2010/03/07(日) 10:12:35 ID:???
PostgreSQL 9 になるんだって?

ストリムレプリケションってな〜に?

248 :NAME IS NULL:2010/03/07(日) 10:30:40 ID:???
まず 8.x っていう言い方は止めましょう。x の違いが大きいんだから。
Q2 特定のSQLまで分かっているんだったら、それの EXPLAIN を見ながら
クエリの変形やインデックスの追加を考えることになると思う。
Q1 は Q2 が終わってから。ただ、I/O と CPU のどちらがネックかは見ておくべき。
チューニングすべき箇所が全く変わってくる。

249 :NAME IS NULL:2010/03/07(日) 14:03:19 ID:???
本一冊買って読めとしか言えない

250 :NAME IS NULL:2010/03/07(日) 14:11:54 ID:bYRg7fas
すみません、質問させてください。

補助漢字(JIS X 0213)が文字化けして困っております。
下記に環境を記載致しますので解決方法を教えて下さい。
宜しく御願いします。

【サーバーOS】CentOS 5.4(32bit)
【DBの文字コード】UTF-8
【クライアントOS】Windows XP
【DB】PostgreSQL 8.4.2
【ODBC】8.4.1(UNICODE)
【開発言語】C#



251 :245:2010/03/07(日) 17:19:21 ID:???
>>248
親切なご返答ありがとうございました。

EXPLAINですね。まず見方から勉強したいと思います。

I/O と CPU のどちらがネックかを見るには、パフォーマスモニター
でしょうか。貧弱なツールだと思えるのですが、これしかないのかな・・・
I/O と CPU のどちらがネックかを見るのに良いツールがあったら
ご教示お願いします。

252 :NAME IS NULL:2010/03/07(日) 17:34:26 ID:???
だからさ、本気でアドバイス欲しいなら、正確なバージョンとメモリ量、ディスクなどのハード構成、
データ件数とSQLの種類、現状の秒数くらい書きなよ。

253 :NAME IS NULL:2010/03/08(月) 09:33:11 ID:???
一般的なセオリーを聞きたいのでは?



254 :NAME IS NULL:2010/03/08(月) 09:41:38 ID:???
駄目な教えてクンっぽいので、何か教えてもそこから自分で努力しようとせずに逐一聞いてきそう。
っていうか、もうそうなってるけど。

255 :NAME IS NULL:2010/03/08(月) 10:11:22 ID:???
つまりこのスレは、
・一般的な質問はお断り
・個別のトラブルなら相談に乗るぜ
ってかんじ

このスレと言うか技術系はどこでもそんな感じか

256 :NAME IS NULL:2010/03/08(月) 11:22:08 ID:???
広すぎる話は答えにくいからねぇ。

257 :NAME IS NULL:2010/03/08(月) 11:48:29 ID:???
一般的な質問でもいいけど、ネット上で次から次へと質問を繰り返す類の人はちょっと困る。
本読むかどっかの教室で学ぶかしたら?って思う。
リアルで面倒みてるなら的確な質問を返してくる生徒は大歓迎なんだけどね。

258 :NAME IS NULL:2010/03/08(月) 15:19:21 ID:???
>> 245
http://www.sraoss.co.jp/prod_serv/consulting/pgsql-consul.php

ここがお勧め。

259 :NAME IS NULL:2010/03/08(月) 15:25:25 ID:???
>>255
っつーか、聞いたことに答えずに、自分が勝手に納得して新たな質問をするから
駄目なんだよ。

なぜ >>246 の PC 環境や SQL 文を書かないのか。一切無視なのか。
>>248 の 8.x は何かを改めて答えないのか。
その上、I/O や CPU がどうとか言われても、てめーに判断出来るのか?って話。

260 :NAME IS NULL:2010/03/08(月) 16:35:20 ID:???
ひとまず>>249

261 :NAME IS NULL:2010/03/08(月) 21:36:34 ID:???
>>250 文字化け
その構成ならずっとUTF8で通るから、エンコードの変換自体が起こらなそうだけど?
アプリかドライバでSJISになっているのかも。
 \encoding UTF8
 SELECT '文字化けする文字';
って書いたSQLファイル (UTF8N) を「psql -f ファイル.sql > 出力.txt」しても化ける?


262 :NAME IS NULL:2010/03/08(月) 22:31:52 ID:???
>>259
そう思う

263 :NAME IS NULL:2010/03/09(火) 01:23:10 ID:???
>>251
とりあえずマニュアル読め。
http://www.postgresql.jp/document/8.4/html/

今回特に読むべきはこの辺だろう。

14.1. EXPLAINの利用
http://www.postgresql.jp/document/8.4/html/using-explain.html
これを読めば、EXPLAINの出力の読み方はだいたいわかる。

26.2. 統計情報コレクタ
http://www.postgresql.jp/document/8.4/html/monitoring-stats.html
ここに載っているビューを見れば、I/Oの回数やバイト数、インデックスが効いているかどうか、などがわかる。

264 :NAME IS NULL:2010/03/09(火) 16:43:39 ID:???
>>261
確認できました。
PostgreSQL ODBCドライバー V8.4.1をインストールする時に、
ANSIとUnicodeの文字コード二種類インストールされますが、
C#の設定ミスでANSIの方を使用していました。
設定を変更したところ補助漢字が表示・修正できました。
お騒がせ致しました。

265 :NAME IS NULL:2010/03/10(水) 03:52:15 ID:???
ttp://www.postgresql.org/docs/8.4/static/arrays.html#ARRAYS-SEARCHING
ttp://www.postgresql.jp/document/8.4/html/arrays.html#ARRAYS-SEARCHING
>Tip:  Arrays are not sets; searching for specific array elements can be a sign of database misdesign.
>Consider using a separate table with a row for each item that would be an array element.
>This will be easier to search, and is likely to scale better for a large number of elements.
>ティップ: 配列は集合ではありません。特定の配列要素に検索をかけることはデータベース設計が誤っている可能性があります。
>配列の要素とみなされるそれぞれの項目を行に持つ別のテーブルを使うことを検討してください。
>この方が検索がより簡単になり要素数が大きくなっても規模的拡張性があります。

ここの説明の、配列は集合ではないと書いておいて、
それに続けて特定の配列要素に〜と続けているのがよく分からない。

特定の配列要素うんぬんというのは「WHERE pay_by_quarter[1] = 10000」ということだよね?

「WHERE 10000 = ANY (pay_by_quarter)」「WHERE 10000 = ALL (pay_by_quarter)」は許容可能だが、
「WHERE pay_by_quarter[1] = 10000」は変だと言っている?

>配列は集合ではありません。
ただ事実を書いただけなのか、含みがあるのか・・・

266 :NAME IS NULL:2010/03/10(水) 04:03:28 ID:???
searching for specific array elements
配列のなかから特定の要素を検索すること

「WHERE 10000 = ANY (pay_by_quarter)」
のことだと思う

267 :NAME IS NULL:2010/03/10(水) 14:57:45 ID:???
>>245
8.4以降ならこのやり方がお勧めです。

スロークエリの分析
http://lets.postgresql.jp/documents/technical/query_analysis/
方式2: サーバログへスロークエリを出力する

1. 指定した時間以上かかったクエリを(必要なら実行計画もあわせて)自動的にログに出力できます。
まずは、とてつもなく遅い単独のクエリがあるかどうかをこれで調べます。

2. そのようなクエリが無いにもかかわらず、全体としてパフォーマンスが悪い場合は、次は
プログラムコードを疑います。クライアントのループ内で激烈なクエリ発行をしてるなんて
ざらです。効率の悪いSQLを書いているかもしれません。
そのようなコードがあるなら修正します。

3. そのようなクエリがあった場合は、実行計画を見て、インデックスが使われているかどうか
調べます。あわせて、シーケンシャルスキャンになっているところが回避できるようなインデックスを
設定できるかどうか検討します。

4. そうでない場合は、やっとパラメータチューニングの出番です。
まずはスタックビルダでインストールできるEnterpriseDB Tuning Wizardで、適切だと
思われるpostgresql.iniを作り、それを使ってまた1からやり直します。

5. それでも解決できない場合は、専門家に相談しましょう。

268 :NAME IS NULL:2010/03/10(水) 15:09:37 ID:seV06sgY
失礼します。
plpgsqlの中で、変数の内容にしたがってレコード型の内容を取得したいのですが、
いい手段はありませんでしょうか。
name という変数の中に レコード型のカラム名を入れて、そのカラムのデータを取得したいのです。
nameの中身を「伝票番号」とか「商品」とかにして、そのレコードの伝票番号やら商品やらを
取得したいのですがなかなか迂回手段も思いつかず、詰まってしまいました。

269 :NAME IS NULL:2010/03/10(水) 16:07:48 ID:???
>>268
38.5.4. 動的コマンドの実行
http://www.postgresql.jp/document/8.4/html/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

270 :NAME IS NULL:2010/03/10(水) 16:33:48 ID:???
申し訳ありません。
動的SQL文だと、変数の展開までは出来るのですが、
展開された変数にセットされている値をレコード名として
レコード型の変数からデータを引っ張ってくるというのが出来ません。

271 :NAME IS NULL:2010/03/10(水) 16:58:27 ID:???
無理

272 :NAME IS NULL:2010/03/10(水) 17:10:19 ID:???
ですよねー
クライアント側に頑張ってもらうことにします。

273 :245:2010/03/10(水) 19:39:19 ID:???
>>267
返答ありがとうございました。
大変、勉強になります。
チューニングの手順が理解できました。
スタックビルダ、スロークエリなど、チューニングに使えるんですね。
知りませんでした。

>>263
はい。再度マニュアルを読み込みます。
ある程度動かして一通り浅く理解してしまうと、なおざりになってしまいます。
反省しなきゃ・・・

274 :NAME IS NULL:2010/03/10(水) 22:15:37 ID:???
>>266
ああああ、言われると確かに。
配列は集合じゃないという部分も合点。

275 :NAME IS NULL:2010/03/13(土) 21:37:58 ID:???
PostgreSQL 9 の正式版の公開予定はいつごろ?

276 :NAME IS NULL:2010/03/14(日) 03:58:15 ID:???
ロードマップ見て来いよ

277 :NAME IS NULL:2010/03/14(日) 15:18:42 ID:???
>>276
http://www.postgresql.org/によればVer9.0リリースは
2010年第2から第3Q との事ですが、日本語対応は通常どの程度
遅れるのでしょうか?


278 :NAME IS NULL:2010/03/14(日) 15:22:45 ID:???
何を言ってるんだこいつ?

279 :NAME IS NULL:2010/03/14(日) 15:40:17 ID:???
日本語対応ってマニュアルの話?

280 :NAME IS NULL:2010/03/14(日) 15:49:25 ID:???
>>277のPostgreSQL対応はあと3年くらい必要だな

281 :NAME IS NULL:2010/03/14(日) 20:50:57 ID:???
マニュアルって機械翻訳なの?
誤訳やら原文忠実性を遥かに超えた直訳やらで面白いよね

282 :NAME IS NULL:2010/03/15(月) 01:00:21 ID:???
どこが?

283 :NAME IS NULL:2010/03/15(月) 08:08:13 ID:???
>>281
直してくれ

284 :NAME IS NULL:2010/03/15(月) 08:20:26 ID:???
じゃあ俺が(ry って思えないのが>>281の限界

285 :NAME IS NULL:2010/03/15(月) 10:55:40 ID:???
>>282
どこが面白いかって意味なら意外性だな
頭をひねって理解するとそこにアハ体験的なものがある

技術文書だから読みやすさより忠実性をとるのは正しいけどさ
AYB感とともにチャイナガジェットの取説的な面白さが香ってるのは
間違いねえこった

どこが機械翻訳的かっていうと、いわゆる誤訳って原文と異なった
意味の文章を構成してしまうことだと思うんだが、日本語としても壊れてるところかな

適当に開いたページから例をとると、

> オプションのRECURSIVE修飾子は、WITHを単なる構文的便利さから、
> さもなくば有効な標準SQLではなくなるものを仕上げる構成に変更します。

とある。一読して意味が取れなくてもお前らの頭が(^q^)なわけじゃない
むしろ誤訳なのにサクサク読めてると思ってたらやばい
しかし次の一文まで読むと訳者の意図がピンと来る

> RECURSIVEを使用することで、WITH問い合わせが自己の出力を参照できるようにします。

とりあえずexcite翻訳に原文つっこんだら普通に正しい訳出てきたから
マシーンじゃないっぽい^^

286 :NAME IS NULL:2010/03/15(月) 11:21:13 ID:???
有志がそれぞれ翻訳してんだから、おかしいと思ったら参加してやればいいだろう

287 :NAME IS NULL:2010/03/15(月) 11:35:54 ID:???
>>285
下衆の長文うざい

288 :NAME IS NULL:2010/03/15(月) 17:41:59 ID:???
フリーライダーが何を偉そうにいってるんだ

289 :NAME IS NULL:2010/03/15(月) 18:22:18 ID:???
あの程度の英文が読めないところ
英語教育のダメさ加減を表してるな

馬鹿な授業やめればいいのにね

290 :NAME IS NULL:2010/03/15(月) 21:46:29 ID:???
英文が読める読めないって話じゃなくて翻訳がおかしいって話じゃないのか

291 :NAME IS NULL:2010/03/16(火) 02:41:36 ID:???
とても場違いな話題で申し訳ないけど、6年間英語教えても成果ないわけじゃん
けどあれって英語だけじゃなく他の科目もそうだとしたら…だめだ恐ろしすぎてとても最後まで書けない

292 :NAME IS NULL:2010/03/16(火) 04:11:45 ID:???
何を言ってるんだ

293 :NAME IS NULL:2010/03/16(火) 08:30:01 ID:???
とても場違いな話題だね。

294 :NAME IS NULL:2010/03/16(火) 11:17:20 ID:???
日本はほぼ内需だから外国語できなくても成功できるからな

295 :NAME IS NULL:2010/03/16(火) 11:29:24 ID:???
まだ引っ張るかね?
つーかITエンジニアやってれば英語のドキュメントを見る機会なんて幾らでもある。
もし問題があるとすれば、英語力よりも国語力の方だろ。
業務系の仕様書見れば、日本語がおかしいのなんて幾らでもあるw
あと昔ACOS扱ったことあるけど、マニュアルが日本語的に悲惨でえらく苦労したぞw

296 :NAME IS NULL:2010/03/16(火) 12:05:45 ID:???
で?

297 :NAME IS NULL:2010/03/16(火) 12:09:22 ID:???
>>296
で?

298 :NAME IS NULL:2010/03/16(火) 12:13:48 ID:???
296は国語力に問題があるな

299 :NAME IS NULL:2010/03/16(火) 12:40:00 ID:???
でっていう

300 :NAME IS NULL:2010/03/16(火) 14:07:32 ID:Cy/WXQsW
ttp://www.postgresql.org/ftp/odbc/versions/msi/
ここからODBCドライバをDLしてインストールしようと思うのですが、
サーバのPostgreSQLは8.1.6です。
この場合、ODBCドライバはpsqlodbc-08_01_0200.zipがいいのでしょうか?
それとも単純に最新のpsqlodbc_08_04_0200.zipのほうがいいですか?


301 :NAME IS NULL:2010/03/16(火) 14:12:35 ID:???
>>300
最新で問題ないはず。

302 :NAME IS NULL:2010/03/16(火) 15:48:19 ID:???
>>281
なんで日本語訳のマニュアルなんか読んでるの?

303 :NAME IS NULL:2010/03/17(水) 06:50:36 ID:???
>>302
日本語訳の素晴らしいマニュアルがあるのに、君はわざわざ英語の
マニュアルを読んでるのかい???

304 :NAME IS NULL:2010/03/17(水) 11:30:48 ID:???
>>302

俺の話じゃなくて>>281の話なんだけど?

305 :NAME IS NULL:2010/03/17(水) 11:31:51 ID:???
s/>>302/>>303/

306 :NAME IS NULL:2010/03/17(水) 13:33:46 ID:???
gdgdですなw

307 :NAME IS NULL:2010/03/17(水) 13:44:06 ID:???
粘着してる>>304-305は頭冷やした方がいい

308 :NAME IS NULL:2010/03/17(水) 16:31:11 ID:???
ん?日本語訳に文句付けるなら、自分で直すか英語マニュアル読めって話でしょ。
>>303の勘違い。

309 :NAME IS NULL:2010/03/17(水) 16:57:59 ID:???
文句言いながら読むのも人の勝手だから粘着するなってことか

310 :NAME IS NULL:2010/03/17(水) 17:14:03 ID:???
いつまでやってんの。

311 :NAME IS NULL:2010/03/17(水) 17:29:57 ID:???
>>285
a feature that accomplishes things not otherwise possible in standard SQL
の日本語訳教えてちょ

312 :NAME IS NULL:2010/03/20(土) 10:20:59 ID:???
日本語ODBCは、使う環境や使い方によって、エラーが出ることもあるから、
エラーが出ないのなら、最新が安心かもね。
自分の環境は最新ODBCはエラーになる場合がある。

313 :NAME IS NULL:2010/03/20(土) 10:42:57 ID:???
>>312
いのっちの父の部屋で報告したらいいのでは?

314 :NAME IS NULL:2010/03/22(月) 20:06:50 ID:???
PostgreSQLしかDBを知らないのだが、Oracleなどは何が凄いんだ?
世の中の99.9%はPostgreSQLで十分な気がするのだが。

315 :NAME IS NULL:2010/03/22(月) 20:11:40 ID:???
Pgとオラクルなんて似たようなものだ

316 :NAME IS NULL:2010/03/22(月) 20:47:00 ID:???
普通の人がOracleしか知らないだけです。
pgsqlで十分ならそれで何の問題もないかと。

Oracleは色々と問題あるのよねぇ。
マテビュとかデビリンクとか...
サポートに連絡しても何の役にも立たないし。

317 :NAME IS NULL:2010/03/22(月) 20:54:04 ID:???
問題が起こったときに
PostgreSQLだと自分で責任をとらないといけないが
Oracleならサポートのせいにできるだろ

318 :NAME IS NULL:2010/03/22(月) 21:26:33 ID:???
そういやMySQLはオラクルの傘下に入ったんだっけ?

319 :NAME IS NULL:2010/03/22(月) 21:31:13 ID:???
相当大規模だと違いあるけど
1台だけとか現用待機程度の規模でやるなら変わらんな

320 :NAME IS NULL:2010/03/23(火) 06:53:23 ID:???
>Oracleならサポートのせいにできるだろ

サポートのせいにしたところで、実際には何も解決はしないけどね。
DBの不具合で被った損害をオラクルが補償してくれるわけでも
ないし。


321 :NAME IS NULL:2010/03/23(火) 07:08:25 ID:???
それでも、腐った設計のデータベースの尻拭いに関しては、まだOracleが勝ってる。
責任を取りたくない開発者向きの機能は、まだまだ見習うところは多いと思うよ。

322 :NAME IS NULL:2010/03/23(火) 12:16:54 ID:???
つまり、Oracleを使う現場では設計を腐らせないと有利に働く部分がなくなってしまうんだな

323 :NAME IS NULL:2010/03/23(火) 16:28:41 ID:???
何言ってるの?

324 :NAME IS NULL:2010/03/23(火) 22:15:36 ID:???
そうだな。

325 :NAME IS NULL:2010/03/24(水) 00:01:13 ID:???
障害対応がOracleはすぐれてる。
PostgreSQLは、まぁましになってはきたけど。

326 :NAME IS NULL:2010/03/24(水) 04:53:28 ID:???
先日、とあるSEさんにOracleのサーバは絶対に再起動してはダメだ、と言われた...。
理由を聞くと、ほぼ確実にデータが壊れて復旧できないから、なんだと。
そういうもん?

327 :NAME IS NULL:2010/03/24(水) 05:52:05 ID:???
>>326
んなこたーない。そこはどんだけボロいハード使ってんだよ。

328 :NAME IS NULL:2010/03/24(水) 07:48:19 ID:???
ひとつのPgSQL接続だけを強制的に切断する方法はありますか?

ひとつのPgSQL接続だけがものすごい時間のかかる処理をしている場合、
システムへの負荷が相当かかり、他の利用者のDB処理が遅くなってしま
います。
PgSQLの再起動は、運用上できないです。


329 :NAME IS NULL:2010/03/24(水) 07:55:46 ID:???
Oracleは動いてるときにぶった切ってもデータ壊れんし壊れても復旧できるけど
逆にPostgreSQLはinsertとかやってる途中だとgdgdになったりする
そういう所だな0円と500万円の違いは

330 :NAME IS NULL:2010/03/24(水) 08:45:20 ID:???
>>328 ひとつのPgSQL接続だけを強制的に切断
pg_terminate_backend in 8.4.

>>329 PostgreSQLはinsertとかやってる途中だとgdgd
は? 普通にクラッシュリカバリできるが、何を勘違いしているの? FUD?


331 :NAME IS NULL:2010/03/24(水) 08:49:00 ID:???
>>328
KILLしたらいいんじゃないの。
Winならタスクマネージャーで。

332 :NAME IS NULL:2010/03/24(水) 08:56:44 ID:???
>>328
http://trasis.jp/blog/lab/2009/04/postgresql%E3%81%A7%E7%8F%BE%E5%9C%A8%E5%AE%9F%E8%A1%8C%E4%B8%AD.html
http://trasis.jp/blog/lab/2009/04/postgresqlで現在実行中.html

333 :NAME IS NULL:2010/03/24(水) 09:41:52 ID:???
>>330
実際やりゃ解る
こっちは何度も苦労してんだよ
アーカイブログあるからとかそういう問題じゃない

334 :NAME IS NULL:2010/03/24(水) 09:44:43 ID:???
プロセスkillしたらそれこそgdgdになる
pg_cancel_backendだっけ?で止めないと

335 :NAME IS NULL:2010/03/24(水) 10:20:31 ID:???
pg_cancel_backend もひとつのプロセスだから、同じじゃないの。

336 :NAME IS NULL:2010/03/24(水) 10:26:50 ID:???
え?processが死んだくらいでgdgdになるの?

337 :NAME IS NULL:2010/03/24(水) 10:40:16 ID:???
今まで、サーバークラッシュ、再起動しても、グダグダになったことはないな。
pg_cancel_backend で止めたほうが安心だろうけど。

338 :NAME IS NULL:2010/03/24(水) 11:02:54 ID:???
>>326
一回リカバリーしたなら、それマージさせないと毎回起動時にリカバリーするはめになるよ

339 :NAME IS NULL:2010/03/24(水) 12:44:40 ID:???
クラスタリングとか同期処理とかやってるとおかしくなるな。
あと、すげー昔だけどupdate止めてロックおかしくなって再起動したことはある。

340 :NAME IS NULL:2010/03/24(水) 20:03:32 ID:???
おかしくなったって言っている人が実際適切に運用していたかはわからないから、
結局何が悪かったのかまで突き詰められない。単なる苦労話にしかならないから、全く価値が無い。

馬鹿でも簡単お手軽にリカバリできる方法が用意されていないって言う話ならば、
確かにそれはポスグレが悪いんだけど。

341 :NAME IS NULL:2010/03/25(木) 00:19:21 ID:???
> 馬鹿でも簡単お手軽にリカバリできる方法が用意されていないって言う話ならば、
> 確かにそれはポスグレが悪いんだけど。

そんなものはオラクルにもないわけで。

342 :NAME IS NULL:2010/03/25(木) 00:24:17 ID:???
んで適切な環境って何?
不慮の事故に対応するのがリカバリでしょ
RAIDでUPSでジャーナリングでってのは
リカバリができるか云々とは別のベクトルだし

343 :NAME IS NULL:2010/03/25(木) 00:54:40 ID:???
適切な環境じゃなくて、不慮の事故時に適切な運用を行ったかどうかでしょ
初心者が扱うとまともにパフォーマンスが出ないオラクルは良いのか悪いのか、という話は今俺が作った別のベクトル

344 :NAME IS NULL:2010/03/25(木) 01:18:36 ID:???
gdgdの具体例まだー?

345 :NAME IS NULL:2010/03/25(木) 02:10:22 ID:???
oracleにコンプレックスでもあんのか?
PostgreSQLにも欠点はあるんだから
それを隠して絶賛してたら何も進歩せんぞ
ウリナラマンセーで反日やるようなもんだ

346 :NAME IS NULL:2010/03/25(木) 02:28:03 ID:???
Oracleに匹敵するようなものを限りなく安く使えるのがPostgreSQLなわけで、
もしOracleを凌駕するようなものならOracleなんてとっくに無くなってるよw

オープンソースの魅力は好きなように改造できることで、(制限付きではあるが)タダで使えることじゃないよな。



ああ、なんか書き足らないことだらけだ...orz

347 :NAME IS NULL:2010/03/25(木) 07:30:31 ID:???
>>345
マンセーというより、>>329がFUDっぽいから突っ込まれてるだけでしょ

348 :NAME IS NULL:2010/03/25(木) 10:34:17 ID:???
×突っ込み
○やっかみ

349 :NAME IS NULL:2010/03/25(木) 14:02:55 ID:???
IDEやSATAでドライブの
書き込みキャッシュOnにしてたらありえる
書いてfsync()したはずのデータを
失う可能性があるから。

そういう用途には
バッテリ保護付きのアレイコントローラや
外部ストレージが必要




350 :NAME IS NULL:2010/03/25(木) 16:28:10 ID:???
いやだからそういう問題じゃなくて
純粋に素のミドルウエアとしてのリカバリ性能の話をしてるんでしょ
ハードやファイルが壊れない前提なら大抵のDBMSは問題ないわけで

351 :NAME IS NULL:2010/03/25(木) 16:53:19 ID:???
Relese note見てないんだろうか、この人。

352 :NAME IS NULL:2010/03/25(木) 18:30:01 ID:???
リリースノート関係ないでしょ
ライトキャッシュによる遅延書き込みの失敗なんて
テキストファイル保存したってバカ高いバックアップツール使って保存したって起こることで
pgとoracleの性能差とは別次元の設定ミス

353 :NAME IS NULL:2010/03/25(木) 23:40:19 ID:???
>>345
「欠点はある」んだったら、ちゃんと具体例を報告して、
直すなり、直してもらうなりすれば良いのでは?
>>350
まだ「リカバリ性能の話」までたどり着いていない。
ある人が、何か操作をしたら、リカバリできなかったという書き込みがあっただけ。

354 :NAME IS NULL:2010/03/26(金) 00:18:10 ID:???
自分の信じる物に欠点がないと信じたい気持ちはわかるが
産業製品にとってそれは何のプラスにもならない感情だぞ
宗教じゃないんだからさ

355 :NAME IS NULL:2010/03/26(金) 01:04:25 ID:???
だから、あるなら具体的に。

356 :NAME IS NULL:2010/03/26(金) 01:06:06 ID:???
誰もそんなこと信じてないけど

357 :NAME IS NULL:2010/03/26(金) 01:28:52 ID:???
けんか腰の奴にいちいち説明する義理もなんじゃないのか

358 :NAME IS NULL:2010/03/26(金) 01:38:36 ID:???
信じてないから欠点がないとも信じていないんだが
欠点を見つけたら報告するでしょ普通
windows、redhatのバグ見つけたら報告するよな?それと一緒。

359 :NAME IS NULL:2010/03/26(金) 01:39:52 ID:???
って欠点=バグと思い込むのは悪い癖でした。
要望は上げたことないや

360 :NAME IS NULL:2010/03/26(金) 01:44:17 ID:???
そもそも欠点があったからバグフィックスがでてバージョンが上がって行ってるんじゃないのか
過去にはVACUUMしたら壊れるなんてのもあったくらいだし

361 :NAME IS NULL:2010/03/26(金) 02:08:03 ID:xwgsQGRx
そんなソフトウェア一般の話をここでされてもな

362 :NAME IS NULL:2010/03/26(金) 02:14:16 ID:???
vacuumってソフトウエア一般か?

363 :NAME IS NULL:2010/03/26(金) 02:21:01 ID:???
一回ダンプしないとバージョンアップできないバグフィックスたまにあるけど、
あれすげー痛いな。

364 :NAME IS NULL:2010/03/26(金) 02:31:09 ID:xwgsQGRx
うん? >>361>>360の主題の方に対して言ってるんだよ

365 :NAME IS NULL:2010/03/26(金) 07:27:49 ID:???
>>363
メジャーバージョンアップはダンプがいるけど、バグフィクスで必要なったことは
ほとんど無いぞ? 「具体的に」何を指している? 確かに REINDEX してくれってのはあったが。

366 :NAME IS NULL:2010/03/26(金) 08:31:04 ID:???
殆ど無いじゃなくて普通にあった
8,2の時にも
得意なリリースノートでも見てみればいい

367 :NAME IS NULL:2010/03/26(金) 08:37:42 ID:???
>>366
そういうのって例えばOracleであればありえないの? 保証されているの?

サポートに聞いたら、とりあえずこのパッチ当ててみ、ってのも嫌だな。
というか完璧は無くて、有償だと責任を転嫁出来るって感じ。


368 :NAME IS NULL:2010/03/26(金) 08:44:17 ID:???
完璧があって、それがPostgqeSQLだとか言わんよな。

369 :NAME IS NULL:2010/03/26(金) 12:49:37 ID:???
コンパイルオプションの違いでおきることはあるけど
それとバグ以外じゃないよ、なっか勘違いしてるだろう

370 :NAME IS NULL:2010/03/26(金) 13:30:31 ID:???
>>352
で、リリースノートは読んでないんでしょ?
だから、
> 大抵のDBMSは問題ないわけで
こんなこと言うんだよ。

371 :NAME IS NULL:2010/03/26(金) 13:33:33 ID:???
例えば8.4.1のリリースノートのE.3.2. Changesの先頭三つはこんなかんじ。

Fix WAL page header initialization at the end of archive recovery (Heikki)
This could lead to failure to process the WAL in a subsequent archive recovery.

Fix "cannot make new WAL entries during recovery" error (Tom)

Fix problem that could make expired rows visible after a crash (Tom)
This bug involved a page status bit potentially not being set correctly after a server crash.

372 :NAME IS NULL:2010/03/26(金) 14:57:31 ID:???
PostgreSQLって、一貫性のあるウォームバックアップって取れる?
あと、増分バックアップってできるのかしら。WALを取っとくとかいうのじゃなく。

373 :NAME IS NULL:2010/03/26(金) 14:58:31 ID:???
なんか日本語の理解力が著しく低くないか
しかも敵が一人と決めつけて、色んな人の自分に都合がいい意見だけ繋いで反論してるし

374 :NAME IS NULL:2010/03/26(金) 14:59:07 ID:???
取れない

375 :NAME IS NULL:2010/03/26(金) 15:02:29 ID:???
Oracleだって、自動リカバリ不能になることもあるのに、PostgreSQLでそうなったと言ったらFUDだと騒ぐ。

376 :NAME IS NULL:2010/03/26(金) 15:04:34 ID:???
FUDと言いたいだけ

377 :NAME IS NULL:2010/03/27(土) 00:57:38 ID:???
DBなんて稼働し始めたら稼働四波なhしてアップグレードなんてしないもんじゃね?
ハードごと入替でエクスポート、インポートってのはあるけど。

378 :本田:2010/03/27(土) 00:58:15 ID:qqcAE8kL
zfsは任意の時間のファイルシステム自身のスナップショットを取れるようになっている。
バックアップ機能の貧弱なDBMSはそれ自身のバックアップ機能に頼らす、
新しいファイルシステムのバックアップ機能を使ったほうがベターかもしれない。



379 :377:2010/03/27(土) 02:35:16 ID:???
今更の訂正ですまぬ。
× DBなんて稼働し始めたら稼働四波なhして
○ DBなんて稼働し始めたら稼働しっぱなしで

>>378
StorageTek とかのディスクアレイならUFSとかでもスナップショットとれるよね。

380 :NAME IS NULL:2010/03/27(土) 05:22:56 ID:???
>>378
それ一貫性のあるウォームバックアップの代わりになんの?

381 :NAME IS NULL:2010/03/27(土) 09:26:51 ID:???
pg_start_backupと組み合わせればいけるはず
pg_start_backupなしはダメ

382 :NAME IS NULL:2010/03/27(土) 13:36:12 ID:???
>>372
○ 一貫性のあるウォームバックアップ
ほぼ× 増分バックアップ
最終変更時刻に変更の無いファイルを除外すれば、
一応増分バックアップっぽくはなるけど、ファイル単位なので粒度は荒い。

383 :NAME IS NULL:2010/03/27(土) 13:40:31 ID:???
>>371
「バージョンアップはダンプがいる」から繋がっている会話なのに、
リカバリができないバグを挙げているのは、おかしくないか?

.0 はさすがにバグが残っているから、本格的に使うのは .1 以降にするって話なら同意だが。

384 :NAME IS NULL:2010/03/27(土) 13:51:01 ID:???
ダンプが必要なバージョンアップがあった時は痛かったって話であって
バージョンアップにダンプが必要とは誰も言ってない気がするが

385 :NAME IS NULL:2010/03/27(土) 13:55:53 ID:???
2 つの話がごっちゃになってるだけだろ。
どっちもリリースノートって言うから混ざってる。

386 :NAME IS NULL:2010/03/27(土) 14:07:59 ID:???
そして>>373に戻る

387 :NAME IS NULL:2010/03/27(土) 14:15:51 ID:???
>>350に対しての>>351なわけで、だってほら最近のリリースノートにだってbugfix満載ですよってこと。

388 :NAME IS NULL:2010/03/27(土) 14:23:01 ID:???
日本語が読めないというより、都合の悪いことは読みたくない奴が一人いるみたいね。

389 :NAME IS NULL:2010/03/29(月) 01:17:45 ID:5tk5Z2gY
例えば、一定の売上高以上の伝票を検索しようとすると、シーケンシャルスキャンになると思うんだが、
売上高の様な整数(や浮動小数)のフィールドにインデックスを設定することに意味はあるでしょうか?


390 :NAME IS NULL:2010/03/29(月) 01:22:45 ID:???
>>389
一般的には、売上金額など値データの列にはインデックスは張らないでしょうし、
意味もないと思います。

391 :NAME IS NULL:2010/03/29(月) 01:58:27 ID:???
金額でソートする場合は貼るだろ

392 :377:2010/03/29(月) 02:10:57 ID:???
>>380
トランザクションのコミット前なら大丈夫(だったよ、実際に)。
いきなりプロセスが死んだ(kill -killとかコンセント引っこ抜いた感じ)
状態になるけど、とりあえずリカバーできたよ。
というか、常時稼働の場合はDBによる「一貫性のあるバックアップ」と
一応「ある時点でのストレージのバックアップ」の両方をテストしたときに
以外に何とかなったんで、


ええっと、俺じゃなくて>>378へのレスだったことに今気がついた・・・
読み飛ばしてくれ・・・

>>389
もしその数値フィールドがアプリというかシステムの重要なパフォーマンスに効いてくるなら、
例えば、log10をとったり10*nで割った値とかを整数化した値のコラムを作ってインデックス貼ると
速くなるよ。検索入力の値のlog10とか10*nで割った値(インデックス張った値)を検索条件に
いれる。DWH(読み取り優先)みたいなのではよくやる。
ヒストグラム(でいいのかな?)が均等になるようなインデックス値をひねり出すのがミソ。

参考までに。

393 :NAME IS NULL:2010/03/29(月) 02:38:37 ID:???
>>392
[金額/10*n] = 入力/10*n and 金額 = 入力
のような検索条件にするの?

394 :377:2010/03/29(月) 03:06:14 ID:???
まったくその通り。

たとえば、kinngaku_idx = 2 and kingaku = 235 みたいに。
この場合、
  log10(235) = 2.371... -> 2
と、
  235 / 100 = 2.35 → 2
の二つの考え方ができるけど、都合のいい方でとらえてほしい。

SybaseのIQとかは内部的にこんなようなことをを自動でやってくれたりするけど、
コラムの値のバリエーションが分かってるなら「出来合いのロジック」よりも
賢いことができる。



・・・といいな。

395 :377:2010/03/29(月) 03:11:56 ID:???
ごめん。
>の二つの考え方ができるけど・・・
じゃなくて
 「とか、いくらでも考えられるけど」
の方が適当だね。

396 :NAME IS NULL:2010/03/29(月) 03:24:02 ID:???
へぇぇ。これは頭の片隅に入れておくよー

397 :NAME IS NULL:2010/03/29(月) 11:33:12 ID:???
>>392
> ええっと、俺じゃなくて>>378へのレスだったことに今気がついた・・・
> 読み飛ばしてくれ・・・

いやいや、お前が文章削れよ。

398 :NAME IS NULL:2010/03/29(月) 23:47:39 ID:m9bmz7wY
mac osx でPostgreSQL 8.3 -> 8.4 にアップデートしたんだけど、HDDが20GB位消えてしまった。
pg_dumpall でデータを入れ直しました。

Caches にもなし。アップデートで多量の一時ファイルを消費して、消さないということはあるのでしょうか。

399 :377:2010/03/30(火) 02:39:17 ID:???
>>397
いやぁ、なんかせっかく書いたのが惜しくなっちゃったもんで・・・

>>398
>HDDが20GB位消えてしまった

ここがよくわからん。アップデート前より、
ディスク容量が減ったのか、
DBが使っていた領域が減ったのか、
どっち?

400 :NAME IS NULL:2010/03/30(火) 08:52:54 ID:???
空き容量が減ったってこと?
VACUUM FULLすればいいんじゃないの

401 :NAME IS NULL:2010/03/31(水) 00:49:47 ID:???
そもそもアップグレードのときにDBクラスタには互換性は無いはずだけど、
Mac OS X だと何か特殊なアップグレード処理があるの? pg_migrator とか?
もしそのままDBファイルが使えるなら、内部的には dump & restore しているはずなんだけど?

402 :NAME IS NULL:2010/03/31(水) 15:16:36 ID:???
売上金額にインデックス張ったほうがいいかどうかは、
環境によって違うだろうし、
どれくらいパフォーマンスがあがるか比較すればよいだけのこと。

403 :NAME IS NULL:2010/04/01(木) 01:57:51 ID:???
先日postgreSQLを始めたばかりです。
初心者用サイトを見ながら、アカウントpostgresを作ったけれど見えなくなってしまいました。
コマンドプロンプトからパスワードは設定したのですが、これは別に気にしなくていいのでしょうか。
PCはwindows7です。また、最新版はpostgresql-8.2.1-1-jaなのでしょうか。

404 :NAME IS NULL:2010/04/01(木) 04:58:55 ID:???
Windows7対応、動作確認済みなのかは、知らないけど、
最新版は、8.4.3 で、postgresql-8.4.3-1-windows.exe のようだよ。
日本語版jaじゃなくても、OKなはず。

405 :403:2010/04/01(木) 23:22:21 ID:???
>>404
postgresql-8.4.3-1-windows.exe を無事に見つけてインストールもできました。
ありがとうございました。

406 :NAME IS NULL:2010/04/02(金) 00:17:14 ID:e9uXcqr4
VACUUM FULL がかれこれ48時間くらい終わらない。
VERBOSEオプションで出力されるメッセージも新しいものは、24時間以上でていない。
速くする為に設定するconfのオプションがあったら教えて下さい。
ver 8.4です。

407 :NAME IS NULL:2010/04/02(金) 02:09:06 ID:???
8.2以前ならともかぅ8.4でそんなことあんのか

408 :NAME IS NULL:2010/04/02(金) 08:23:17 ID:???
VACUUM FULLならありえる。
ダンプとリストアを使ったら?

409 :NAME IS NULL:2010/04/09(金) 04:40:35 ID:???
>>311
更新されてるね
> オプションのRECURSIVE修飾子は、WITHを、単に構文上の利便性の高めるだけでなく標準的なSQLでは不可能な機能を実現させます
http://www.postgresql.jp/document/8.4/html/queries-with.html

補完すると、not otherwiseは標準的なSQL「においてこれ以外の方法」では不可能な、って意味
recursiveが規格外の機能という意味じゃないよ

410 :NAME IS NULL:2010/04/11(日) 00:10:05 ID:PA0WZF+k
テーブルトリガをCで書いてます。
「PostgreSQL 8.4.3文書 35.4. 完全な例」はその通り出来ました。

Cコード中でイベント発生行自身にアクセスするにはどうしたら良いですか?
SPI_Execに SELECT hoge from tbl_hoge where id_hoge=xxx とかしたく、
そのxxxが取れればいいな、と思っているんですが。


411 :NAME IS NULL:2010/04/12(月) 15:21:30 ID:???
OSX10.6.3 iMac21.5インチ Intel Mac mini(1.83GHz) / Mac OS X 10.5.6で
PostgreSQL 8.3.6 をインストールし、libpqを使用した
アプリをUniversal Binaryで作成しようとすると、
ppcのコンパイルでlibpqへのリンクエラーが出てしまいます。
どうやらPostgreSQLのコンパイルを行う必要があるみたいなのですが
詳しい方よろしくお願いします。

412 :NAME IS NULL:2010/04/12(月) 16:23:06 ID:???
make

413 :NAME IS NULL:2010/04/12(月) 21:51:23 ID:???
PostgreSQL 8.3.6をどうやってインストールしたんだそもそも

414 :NAME IS NULL:2010/04/13(火) 12:33:52 ID:???
よく見りゃ地球は不思議の塊

415 :NAME IS NULL:2010/04/13(火) 17:02:00 ID:???
まあ ./configure --help で

416 :NAME IS NULL:2010/04/17(土) 08:40:15 ID:???
PostgreSQL 9.0 早く出ないかな・・・
すげー期待してます。


417 :NAME IS NULL:2010/04/17(土) 13:14:57 ID:???
何が乗るかも解らないのに期待してどうすんの?

418 :NAME IS NULL:2010/04/17(土) 15:42:01 ID:???
いや何が乗るかはわかってるでしょ

PostgreSQL 9.0 の新機能 ― Let's Postgres
http://lets.postgresql.jp/documents/technical/9.0/1/

PostgreSQL 9.0 のその他の新機能 ― Let's Postgres
http://lets.postgresql.jp/documents/technical/9.0/2/


419 :NAME IS NULL:2010/04/19(月) 13:28:36 ID:Jr6VAcFd
PostgreSQLと半導体ストレージの検証データ公開してるけど、
個人情報登録はちょっと勘弁してほしいね。

http://www.cmsinc.co.jp/seminar/20100415.html

420 :NAME IS NULL:2010/04/21(水) 00:25:30 ID:???
なんで?

421 :NAME IS NULL:2010/04/21(水) 04:49:32 ID:???
他の会社が金掛けて研究した情報をタダで手に入れようとか浅ましすぎる

422 :NAME IS NULL:2010/04/21(水) 21:41:00 ID:???
はぁ?なんで?

423 :NAME IS NULL:2010/04/21(水) 21:43:20 ID:???
>>422は一度死んだほうがいい

424 :NAME IS NULL:2010/04/22(木) 13:53:18 ID:???
なんでェ?

425 :NAME IS NULL:2010/04/22(木) 16:42:37 ID:???
>>423
Gmailとかtwitterで個人情報登録必須だったらファビョるくせに

426 :NAME IS NULL:2010/04/22(木) 17:02:14 ID:???
自分からはなにも貢献しないでもらうだけなのに
文句言ってんじゃねーよ。
嫌なら利用しなきゃいいだけだ

427 :NAME IS NULL:2010/04/22(木) 20:33:55 ID:???
>>425
住所氏名とクレジットカード番号取るサイトもあるが

428 :NAME IS NULL:2010/04/22(木) 20:38:57 ID:???
>>427
Gmailとtwitterのアカウント取る代行サービスでもあんの?

429 :NAME IS NULL:2010/04/22(木) 20:48:44 ID:???
嫌なら登録しないだけでファビョらない

430 :NAME IS NULL:2010/04/22(木) 21:44:58 ID:???
PostgreSQLと関係ない話はやめてくれないかな。

431 :NAME IS NULL:2010/04/22(木) 21:50:21 ID:???
419がそもそも悪いけど、釣られた人たちも同罪

432 :NAME IS NULL:2010/04/23(金) 18:31:34 ID:???
phpPgAdmin で、phpMyAdmin みたいに、カラムの追加とかしたときに
ALTER の SQL 文が見られるような機能ってありませんか?

433 :NAME IS NULL:2010/04/25(日) 05:00:10 ID:???
phpPgAdminは知らん。
PgAdminIIIならALTER のSQL文を見れる。

答えになってないね。すまん。参考まで。

434 :NAME IS NULL:2010/04/28(水) 06:54:55 ID:???
SET log_statement = ddl しておけばサーバログには
SQLが出力されると思うが、代わりにならないかな?

435 :NAME IS NULL:2010/04/30(金) 02:59:33 ID:tPUwSxgQ
VACUUM FULL をした結果、次のようになりました。

INFO: free space map contains 65082 pages in 155 relations
DETAIL: A total of 67264 page slots are in use (including overhead).
67264 page slots are required to track all free space.
Current limits are: 80000 page slots, 1000 relations, using 534 KB.

ここで INFO で言われてることが気になるのですが、VACUUM FULL をした場合って削除済み領域を全て解放して
free space map が 0 になるということではないのですか?


436 :NAME IS NULL:2010/04/30(金) 06:43:22 ID:???
VACUUM FULLするとテーブルはぴっちり切り詰められるけど、インデックスはむしろゴミが
増えるし、空きがあってもそのまま。インデックスに必要なぶんが報告されているのでは。
完全に 0 にしたいのならば、VACUUM FULLにつづけてREINDEXもしてみては?

437 :NAME IS NULL:2010/04/30(金) 19:09:03 ID:???
質問です。
【サーバーOS】WinXP SP3
【DBの文字コード】UTF-8
【DB】PostgreSQL 8.4.3.1
【開発言語】PHP

HTMLファイル,PHPファイル,ブラウザより送られる値すべてUTF-8ですが、
この状態でデータベースにINSERTを行うと
「Character not in repertoire: 7 ERROR: invalid byte sequence for encoding "UTF8":〜」
とエラーが出ます。
さらに送られた値をアプリ側でUTF-8に変換してINSERTを行うと正常にINSERTできますが、
pgAdminVで値を見ると文字化けしているのですが。
これはどういった状況なんでしょうか?解決方法がありましたら
教えていただけないでしょうか?
または、参考になるHPがありましたら教えてください。

438 :NAME IS NULL:2010/04/30(金) 20:26:27 ID:???
本当にサーバのエンコーディングはUTF8なの? psql -l してみて。
あと、サーバの設定でデフォルトのclient_encodingは何になっている?

439 :NAME IS NULL:2010/04/30(金) 20:58:33 ID:sn9MUW5D
>>437
$conn=pg_connect(...);
pg_set_client_encoding($conn, 'utf-8');
してみたらどう?

440 :NAME IS NULL:2010/04/30(金) 20:59:12 ID:???
set namesしたら動くとか言うオチなしな

441 :NAME IS NULL:2010/04/30(金) 21:56:26 ID:???
>>437
UTF8をさらに、UTF8で変換するということをやっているということは、
何かおかしいので、どこか確認箇所の見落としがあるかもね。

PHPソースの変換サンプルを提示してみたら。

442 :NAME IS NULL:2010/04/30(金) 23:37:04 ID:???
スタックビルダで認証proxy場合ってどういう指定するの?
ユーザー名とパスワードの指定でできる?

443 :437:2010/05/02(日) 12:52:56 ID:???
>>438
client_encodingはUTF8になっています。
>>439 >>440
PDOを使って接続していますので、
set client_encoding to 'UTF8'クエリを実行しています。
>>441
mb_detect_encoding()で文字コードを確認して
mb_convert_encoding()で変換していますが、
うまくいってないですね

色々試した結果、正常に動かないので
インストールから設定しなおしてみます。
ありがとうございました。

444 :anonymous:2010/05/03(月) 00:31:54 ID:???
>>437
>>443

Pgのバージョンは違うけど、自分は以下のようにサンプル作成したなぁ。

■SQL問い合わせ時

$str_sql = "select syohinmei from syohin_table WHERE syohincode = 123";
$str_sql = mb_convert_encoding($str_sql, "UTF-8", "SJIS");

if (!($rs = pg_query ($dbconn, $str_sql))) {
die;
} else {
}


■結果取得時
if ($row = pg_fetch_assoc($rs)){
$syohinmei = mb_convert_encoding($row['syohinmei'], "SJIS", "UTF-8");
} else {
}



445 :NAME IS NULL:2010/05/03(月) 12:00:14 ID:Pnvwac5C
9.0 beta 1 が出たっぽい。
ttp://www.postgresql.org/ftp/source/v9.0beta1/

446 :435:2010/05/05(水) 00:55:52 ID:???
>>436
REINDEX しても 0 とは程遠い値になります。
まあ、具体的に困ったことが起きてるわけではないので、ほっときます。
どうもありがとうございました。


447 :NAME IS NULL:2010/05/05(水) 01:44:57 ID:???
>>435
そこで言われているのって、free space mapを
VACUUMでどれだけ解放しましたよ〜って事じゃないのかね

448 :NAME IS NULL:2010/05/05(水) 01:59:37 ID:???
>>446
VACUUM FULL+REINDEXなら確実に 0 になるので、もし 0 にならないと
感じているのであれば、447 の言うように、単なるメッセージの読み間違いと思われる。

449 :NAME IS NULL:2010/05/05(水) 05:06:59 ID:???
テキスト形式でダンプしてDBごとドロップして再インポートしないとそこは0にはならんぞ
FATやNTFSでデフラグしても頭から順番に並んで詰まる訳じゃないのと同じように

450 :432:2010/05/06(木) 12:41:58 ID:???
> 434
開発者にphpPgAdminで直してもらい、差分をsvnにコミットしてもらおうと思ってたの
ですが、全員にサーバのシェルを渡すわけにいかないので…

ttp://sourceforge.net/tracker/index.php?func=detail&aid=1026954&group_id=37132&atid=418983
ttp://sourceforge.net/tracker/index.php?func=detail&aid=1283164&group_id=37132&atid=418983
「管理ツールであってSQLジェネレータじゃない」という見解が示されたり、
5年以上前から既出なのにいまだ対応されずと、消極的なようですね。

451 :NAME IS NULL:2010/05/06(木) 21:05:23 ID:???
えっ

452 :410:2010/05/07(金) 01:14:30 ID:???
SPI_getvalue()で、なんか出来たっぽいです。

453 :NAME IS NULL:2010/05/07(金) 07:50:02 ID:???
>>452
「Cコード中でイベント発生行自身にアクセスする」って話なら、
TriggerData 構造体の tg_trigtuple と tg_newtuple とは違うの? ...と思ったが、
これらの行の特定のフィールドにアクセスしたかったのかな? なら、SPI_getvalue or SPI_getbinval で正解。

454 :NAME IS NULL:2010/05/08(土) 17:32:57 ID:???
>>450
差分管理するならCREATE文をコミットするのがいいと思うけど。
ALTERだったら大変じゃない?

455 :432:2010/05/09(日) 20:08:51 ID:???
>>454
データが入ってて運用中のテーブルの変更なので、DROP/CREATEできないんです。
開発機のphpPgAdminを開発者にいじらせて、リリースの手順が svn merge→
mergeに関連するDB変更のSQLを流す→ソースのアップロード
なので、1発で全体を再現する完全なCREATE文は管理していません。

456 :NAME IS NULL:2010/05/09(日) 20:42:57 ID:???
svnで管理しているddlを記述したファイルがある訳だよね?
変更の度に末尾にalter文を追加していくってこと?
だったら、変更後にテーブル定義をSQLでエクスポートしたものを
バージョン管理すればいいじゃん。特に、alterを手で書けないような
開発者にメンテさせるんなら、これ一本でddlに触らせない方がいい。

457 :NAME IS NULL:2010/05/10(月) 11:27:31 ID:???
お前いっぺん『データベースリファクタリング』読めよ

458 :432:2010/05/10(月) 12:59:52 ID:???
>>456
ひとつのリリースが終わったらファイルを変えて変更を累積しはじめ、
次のリリースのときにDB変更をまとめて本番機へ反映するために利用します。
できるにこしたことはありませんが、各DBのSQL方言を手で書けなくても
まともな設計をできる人はいると思います。

459 :NAME IS NULL:2010/05/10(月) 14:53:30 ID:???
>>456
いつでもdrop database, create databaseで済む奴は楽だよね。
で、それで済まない環境を理解できないと。

460 :NAME IS NULL:2010/05/10(月) 19:31:43 ID:???
>>455

運用中のテーブルに対して頻繁にALTER TABLEを実施するような状況ってこと?
運用開始からどのくらいたってるのかにも拠るとは思いますが、それ自体問題な気がしなくもなく。

# それとも普通の事で私がずれてるだけなのかな。



461 :NAME IS NULL:2010/05/10(月) 22:13:11 ID:???
ALTER TABLE文を管理するこの方法はかなり異端視されているが、
Railsのmigrationみたいなものと思えば、そんなに変じゃないと思うが?
あっちは、元に戻す手順とセットだけど。

そうは言っても、ALTER文くらい手書きしたってバチはあたらんよなぁ。
まともな設計できる人なら、SQL方言くらい覚えるだろ。

ところで、ツールを変える、って選択肢は無いのかね。
pgAdmin IIIなら、GUIでALTER TABLEできて、SQLも自動生成してくれるけど。
見えすぎるのが困るのなら、上手いこと権限設定すれば何とかならないか?

>>460
頻繁って、勝手に頻度上げるなよ。1度でも起き得るなら考慮すべきだろ。

462 :NAME IS NULL:2010/05/11(火) 07:55:06 ID:hNJe4LWT
>>461

ツールを変える選択肢、とかいうならもったいぶらずにお勧めのものを教えてあげればよいのに。


463 :NAME IS NULL:2010/05/11(火) 12:36:28 ID:???
>>462
pgAdmin って書いてあるだろ。

使い古されて言いたかないが、「半年ROMってろ」を地で行ってるな、アンタ。

464 :NAME IS NULL:2010/05/11(火) 12:58:06 ID:???
>>460
仕様変更などでカラムを追加する場合はどうやってんの?

465 :NAME IS NULL:2010/05/11(火) 14:32:22 ID:???
そんなにしょっちゅうカラムが増えるなら設計がおかしい

466 :460:2010/05/11(火) 20:48:39 ID:???
>>464

別に ALTER TABLE 使うなとか、CREATE TABLE を常にやれ、とかそういう話じゃないですよ。

リリースして最初の1〜2ヶ月とかなら運用中のテーブルに直接変更かけるのはわからなくもないけど、
基本的に設計ができているなら変更が発生するなんてほとんどないと思うんです。
※単体アプリ専用テーブルは除く

でも今はそういうことを気にせず変更を随時するもんだ、って言うような事になってるなら
私は古いんでしょうね。


ちなみに私が経験してきた範囲では、運用が始まってからそういったテーブル仕様変更をする際は
週末の運用後にフルバックアップとってアプリの持つ更新ログ回収してガッツリ確認までやる大掛かり
な入れ替え作業になります。
外部キーやトリガーやビューといった要因で問題がでたら目も当てられません.......


467 :NAME IS NULL:2010/05/12(水) 12:49:11 ID:???
>>465
なんで頻繁に発生することが前提なんだ?
まぁそれはともかく、お前のところでは、過去も未来も仕様変更によるカラムの追加は
一切無いということだな?

468 :NAME IS NULL:2010/05/12(水) 13:42:18 ID:???
>>467
しょっちゅう増えるならおかしいって書いてるじゃん。

でもまぁ、仕様変更の内容に応じて増えるのはいたって普通のことだと思うな。
項目増えてもスキーマ変更が起こりにくいように柔軟な設計をしました!っていうのは
逆にいやなにおいがするかもだ。

469 :NAME IS NULL:2010/05/12(水) 15:38:58 ID:???
カラム増やすくらいならテーブル追加しろよ
既存のプログラムに影響与えるような殖やし方すんなよ

470 :NAME IS NULL:2010/05/12(水) 15:58:59 ID:???
2カラムだけのテーブルが量産されるのもいやな話だな

471 :NAME IS NULL:2010/05/12(水) 20:59:34 ID:???
カラム増やすなといったら、話がすすまないだろ。


472 :NAME IS NULL:2010/05/12(水) 21:04:37 ID:???
みんな自由にデータの項目増やしたいから非RDBMSが流行ってるんだろ

473 :NAME IS NULL:2010/05/12(水) 22:58:20 ID:???
ちょっとスレ違いかも知れませんが、識者の方おられましたら助言をお願いします。
OS:RedHat ES 5.3
postgresql-8.4.3
unixODBC-2.2.11-7.1
poco-1.3.6p2-all
の環境で、Poco::ODBC経由でTIMESTAMP型の
データをselectしようとすると、DataExceptionが発生します。
isql/psqlを使用した場合は問題なく表示されています。
testsuite(testrunner PostgreSQL)を実行すると、
[PostgreSQL SQL Executor] Warning: no SQL_TYPE_TIMESTAMP data type info returned by driver.
[PostgreSQL SQL Executor] Warning: could not get SQL_TYPE_TIMESTAMP parameter description.
の様に警告メッセージが表示されます。
もしかして、Poco::ODBCと、unixODBCは混ぜるな危険なのでしょうか?
Poco::ODBC::Utility::dataSources にもバグがあって散々悩まされましたし、、、


474 :NAME IS NULL:2010/05/13(木) 23:53:45 ID:???
Cでユーザ定義関数を作ろうとしているのですが、
postegresqlの配列型(固定長integer[]とか)の受け取り方がよくわかりませぬ。。
どうやって受け取ればよいのでしょう?

475 :NAME IS NULL:2010/05/14(金) 00:32:06 ID:???
deconstruct_array

476 :NAME IS NULL:2010/05/14(金) 00:39:09 ID:???
>>472
一応 PostgreSQL でも、既存の行の初期値がNULLで良いなら気軽に ADD COLUMN できるし、
配列, hstore, xml なんかの構造化されていないデータを格納する方法はあるわけで、
「データの項目増やしたいから」ってのは一番の理由では無いのでは。

477 :NAME IS NULL:2010/05/14(金) 00:47:19 ID:???
スミマセン。ソース見てたらなんとなくわかりました。

478 :NAME IS NULL:2010/05/17(月) 23:24:27 ID:???
>>475
有難うございました。無事動きました。

479 :NAME IS NULL:2010/05/20(木) 23:43:15 ID:Y24F0uiZ
8.4.4, 8.3.11, 8.2.17, 8.1.21, 8.0.25, 7.4.29 リリース。

480 :NAME IS NULL:2010/05/21(金) 18:24:56 ID:???
RHEL ES 4
PostgreSQL8.2.5
slony-i 1.2.12

上記環境で、Slonyのテーブル:sl_log_2のサイズが9GBを超えてしまいました
このsl_log_2のサイズを小さくしたいのですが、どうすればいいでしょうか?

あとslony-iの動作確認用のコマンドとか無いでしょうか?
(MySQLでいうところの、show master|slave statusとか)

481 :NAME IS NULL:2010/05/23(日) 05:49:24 ID:E/lX6C9v
今回の更新の
?Fix possible crash if a cache reset message is received during rebuild of a relcache entry

って、どの程度の頻度なんでしょう? 急いでバージョンアップすべき?


482 :NAME IS NULL:2010/05/23(日) 17:41:38 ID:???
>>481
たぶん、踏む可能性はとても低い。CLOBBER_CACHE_ALWAYS 付きでビルドした
負荷試験でしか確認されていなかったような気がする。
最悪、クラッシュして自動リカバリが走るだけだから、データ損失はないだろうし。

483 :NAME IS NULL:2010/05/23(日) 21:07:44 ID:E/lX6C9v
>>482

ありがとうございます。文章読むと不安になりまして、かといって
リリースされたばかりで適用するのも怖いもので、、、。
数日様子を見て、1台ずつ適用してみます。


484 :お願いします。:2010/05/25(火) 15:11:58 ID:???
postgreSQLにaccessでリンクテーブルを設定しています。
そこでODBC接続に詳しい方にお尋ねしたい事があります。
リンク先を変更する際にリンクテーブルマネージャを使用すると
大変時間がかかるので、管理ツールのODBCデータソースアドミニストレータより
アクセスでリンク設定しているDNSの名前の構成のサーバー名を変更する形でやろうとしました。

できません。随時リンクの更新をしなければならないのでしょうか?

例えばテスト環境と本番環境それぞれにpostgreSQLが動作しているサーバーがあり、
テスト環境でリンクを作成したMDBファイルを本番環境で実行する場合も
ODBCドライバ等の設定が同一であっても、その都度更新をしなくてはいけないのでしょうか?
アクセスでリンクテーブルマネージャの画面を見ると

  ○地球マーク public_テーブル名 (DNS=ドライバで設定した名前;DATABASE=DB名;)

となってますが、ドライバで設定した名前以外に何か持っているのでしょうかね?

初めてなのでさっぱりわかりません><


485 :NAME IS NULL:2010/05/25(火) 16:44:56 ID:???
Accessスレで聞いた方がいいと思うけど。

俺の疑問。何で本番用DBにリンク貼ったMDBとテスト用DBにリンク貼ったMDBの二つ
用意しないんだろう?俺がAccessのド素人故に抱く疑問なんだろうか。

それともう一つの疑問。何でAccess経由でODBCを使ってるんだろう?
直接使えばいいんじゃ。

486 :NAME IS NULL:2010/05/25(火) 17:27:21 ID:???
>>485
レスありがとうございます。
Access経由といいますか、Accessでレポート出力しています。
既存のシステムがpostgresqlでそこにアクセスしています。

487 :NAME IS NULL:2010/05/25(火) 20:16:10 ID:???
Accessのバージョンによるだろうから、Accessの使い方については、
Accessのスレや検索するといいでしょう。

488 :NAME IS NULL:2010/05/26(水) 00:12:40 ID:???
ODBCを使う目的でAccess使ってるんじゃなくてODBC経由でAccess使ってるんだろ

489 :NAME IS NULL:2010/05/26(水) 01:40:15 ID:???
あずにゃんぺろぺろすぐる

490 :NAME IS NULL:2010/05/29(土) 15:34:55 ID:???
>>489
どうすんだよ・・・スレ止まっちゃったじゃねぇか

491 :NAME IS NULL:2010/05/30(日) 12:35:32 ID:???
ワロタ

492 :NAME IS NULL:2010/06/03(木) 00:03:08 ID:ZpHh5vtT
保守

493 :NAME IS NULL:2010/06/03(木) 01:50:54 ID:???
じゃ、質問。

createdb された db1 と db2 があったとして、
ユーザ human は db1 だけ見られて、db2 は見られない、ってできませんか?

pg_hba.conf で指定できるけど、
createdb とかする度にその定義を書いて再起動するのはイマイチで。

494 :NAME IS NULL:2010/06/03(木) 02:07:27 ID:???
ユーザ human からは db2 の存在そのものを隠したい、ってこと?
もしそうなら俺も知りたい

495 :494:2010/06/03(木) 02:18:53 ID:???
連投ごめん。とりあえず
REVOKE CONNECT ON DATABASE db2 FROM public;
とかやってみたら、オーナー以外接続できないようにできた。
# 依然 \l には出てくるけど。

496 :NAME IS NULL:2010/06/03(木) 03:23:36 ID:???
そらそうだ
存在すら隠したいならインスタンス2つ立ち上げて接続分けるしかない

497 :NAME IS NULL:2010/06/05(土) 13:29:34 ID:???
これ参考になりそう

Shared Database Hosting
ttp://wiki.postgresql.org/wiki/Shared_Database_Hosting

498 :NAME IS NULL:2010/06/12(土) 17:56:01 ID:wRV5qdR+
postgresについてつまずいているので、どなたか助言お願いできませんでしょうか?

以前までcreatedb 'データベース名'でデータベースの作成は出来ていたのですが
今日、ふと新しいデータベースの作成を試みたところ

createdb: could not connect to database postgres: FATAL: database "postgres" does not exist
と表示され前に進めません。
postgresが起動していないのかと思い、既存のデータベースに接続を試みたところ
データベースにアクセスし、データの参照は可能でした。
しかし、psql -l のコマンドは通りませんでした。

以前サーバのIPアドレスの変更したのでそれが原因かな?とおもっているのですが
関係ありますでしょうか?
以下の環境でPostgreSQLを動かしております

■OS:FreeBSD 8.0
■PostgreSQL 8.4.0




499 :NAME IS NULL:2010/06/12(土) 19:23:01 ID:???
>>498
postgres データベースをDROPしちゃったのでは?
createdb postgres で作り直すか、-d <既にあるDB> で接続するDBを明示すればOKと思われる。
ただ、いろんなコマンドで -d 指定するのも面倒だから、postgres を作り直したほうが良いかもね。

500 :NAME IS NULL:2010/06/12(土) 19:39:08 ID:???
>>499
見事そのとおりでした。
postgresのDBは必須だったのですね。
質問内容に対する見事なエスパーありがとうございました。

501 :NAME IS NULL:2010/06/13(日) 06:39:39 ID:???
ユーザー名"postgres"でつかってるとみた

502 :NAME IS NULL:2010/06/13(日) 07:48:43 ID:???
ざんねん。createdbは常にpostgresデータベースに繋ぎに行くのです。
(postgresデータベースを作るときを除く。)
psqlとかはユーザ名と同じDBになるけど。

503 :NAME IS NULL:2010/06/14(月) 16:29:13 ID:???
あれ?
template1って何だったっけか?

504 :NAME IS NULL:2010/06/14(月) 16:30:19 ID:???
ぐぐったらわかった。
知りたい奴はぐぐれ。

505 :NAME IS NULL:2010/06/15(火) 07:35:06 ID:???
ググるレベルじゃなくみんな知ってるだろ普通

506 :NAME IS NULL:2010/06/15(火) 13:53:22 ID:NHxMlo8d
>484
コードでリンクは切替えられると思ったが
#昔やったきがするけど、コードは今手元に無いw

507 :NAME IS NULL:2010/06/18(金) 18:45:26 ID:???
これ見てよ↓
http://livedoor.blogimg.jp/tekepo/imgs/3/4/3414dfca.jpg
ばらまこうぜ!


508 :NAME IS NULL:2010/06/24(木) 17:12:55 ID:???
レコード数が900程度のテーブルを、全レコード毎秒UPDATEしているのですが、
突然UPDATEに要する時間が20倍になってしまいました。(900レコードを1レコードずつ更新するのに1秒以下で

509 :NAME IS NULL:2010/06/24(木) 17:14:58 ID:???
vacuumしてないとか

510 :NAME IS NULL:2010/06/24(木) 17:18:54 ID:???
レコード数が900程度のテーブルを、全レコード毎秒UPDATEしているのですが、
突然UPDATEに要する時間が20倍になってしまいました。
(900レコードを1レコードずつ更新するのに1秒以下で済んでいた)
REINDEXすると一時的に改善するんですが、数分経つとまた20秒くらいかかってしまいます。

まったく解決策が見出せないのです・・・どのあたりについて調べればいいかでもいいのでアドバイスお願いします

RHEL5 POstgreSQL8.3.1 slony-i1.2

511 :NAME IS NULL:2010/06/24(木) 17:23:18 ID:???
>>509
ありがとうございます。
autovacuumを設定しています。(ログ出力はしていませんが・・・)

postgres.confのAUTOVACUUM PARAMETERSで設定しているのは以下の3つです
autovacuum = on
log_autovacuum_min_duration = 2
autovacuum_naptime = 3min

512 :NAME IS NULL:2010/06/24(木) 17:42:56 ID:???
REINDEXで改善?
んーーーー
とりあえず切り分けしたいので、コマンドでVACUUM ANALYZEして直後に時間測ってみて

513 :NAME IS NULL:2010/06/24(木) 17:47:22 ID:???
あとconfの値は全部デフォルト?
Free Space Map関連を増やしてみるとか

514 :NAME IS NULL:2010/06/24(木) 18:36:10 ID:???
VACUUM FULL、VACUUM ANALYZE、ANALYZE、REINDEXをすでに何度か試した後でした・・・
それ以外のことは何もしていません。とりあえず今は1秒くらいで処理が終わっています。

confは下記以外デフォルトです

max_connections = 100
shared_buffers = 32MB
AUTOVACUUM関連

関係あるか分かりませんが、topコマンドでメモリ使用量を確認したところ
遅い時はusedが物理メモリ8G中7.9GBくらいで、通常は、8G中7GBくらいでした。
FSMが小さいと、データベースクラスタの容量がどんどん膨れ上がると書いている人が居たので
関係ありそうです。FSM周りについて少し勉強してみます。

515 :NAME IS NULL:2010/06/24(木) 20:48:28 ID:???
updateの検索条件がPKじゃないみたいなオチなしね

516 :NAME IS NULL:2010/06/25(金) 09:31:50 ID:???
一つの列をPKにして、whereの条件はPK一つだけにしています・・・

517 :NAME IS NULL:2010/06/25(金) 15:17:21 ID:???
ちゃんとHOT効かせてたら大丈夫なだけど、まさかそのPKは更新してないよね?

他のトランザクションと重なってたりするとHOT効かないことあるんで、
排他ロックかけるってのもありかも?

あとはFILLFACTOR調整したり・・・

518 :NAME IS NULL:2010/06/25(金) 15:57:23 ID:???
なんで測定しないの?
いろんな測定。OSのI/Oとかも含めて。

519 :NAME IS NULL:2010/06/25(金) 18:09:29 ID:???
そんな抽象的なアドバイスはしてないのと同じ

520 :NAME IS NULL:2010/06/26(土) 00:46:09 ID:cCUVcESF
http://lets.postgresql.jp/map/tuning

lets postgres 見てチューニングするといいよ

521 :NAME IS NULL:2010/06/27(日) 16:04:21 ID:???
>>510
まず、実行計画を速い時と遅い時で見ること。
ソートがオンメモリとディスク上になってたりしないか?
OSが何なのかわからないけど、vmstat的なもので、速い時と遅い時になにか
違いがあるのか調べたら?

522 :NAME IS NULL:2010/06/27(日) 16:57:32 ID:???
でもREINDEXでなおるんだったら、やり方全体を見直した方がいいかもね
定期的にREINDEXする、でもいいけど

523 :NAME IS NULL:2010/06/27(日) 17:14:24 ID:???
updateが独立してるなら、10個のコネクションで90個ずつupdateするとか

524 :NAME IS NULL:2010/06/27(日) 22:51:05 ID:???
全レコードUPDATEはきついな。設計ミスと言わざるを得ない。

インデックスを張ったカラムを更新しているのでなければ、
そのテーブルの fillfactor を 50% 未満にすると改善されるのでは。

525 :NAME IS NULL:2010/06/28(月) 03:03:26 ID:???
DELETEしてINSERTしろ

526 :NAME IS NULL:2010/06/28(月) 11:48:20 ID:???
こういう興味ある事例に限って、解決しても報告がないんだよね。

527 :510:2010/06/28(月) 18:09:19 ID:???
すみません遅くなりました。仕事で週末潰れてました
現在は、処理が正常に動いている(1秒間に900レコードupdate出来てる)ので
再発した時のために教わったことを整理して備えてる状態です。

お陰様でやれる事が見えてきました。
topコマンド画面をただ眺めてる時間が短くなりそうです(汗
しかしすでに稼動中且つ正常に動作している中で色々試すのは怖いものがありますね・・・


>>517
PKのカラムは更新していません。

>>518
SQLの実行時間を測って満足してました。
HDDへの書込み速度を比べてみます

>>517,520,524
HOT、FILLFACTORについて勉強してみます

>>521
なるほど・・・勉強になります
インデックスが使われることは確認したのですが
そういう事も分かるんですね

>>522-524
原因が隠蔽されてしまう可能性がありますが・・・検討してみます。

>>525
追記型DBなので効果が無いと思うんですがどうなんでしょうか

>>526
何か分かったら絶対書き込むようにします
レス消費して恐縮ですが・・・

528 :NAME IS NULL:2010/06/28(月) 18:18:57 ID:???
レスお疲れ。
なんかわかって気が向いたらまた書き込みヨロ。

529 :NAME IS NULL:2010/06/29(火) 22:38:45 ID:???
検証用のテストマシンがあればいいな
レスはどんどん消費してほしい

530 :NAME IS NULL:2010/07/08(木) 16:17:31 ID:089bL9oR
教えてください
現在、postgresqlをつかったpush型webアプリケーションを調査中です
tomcat+apache+phpで設計しようと思うのだけれども
できればwebサーバー側のスクリプトは統一したいのです
そこでphpをやめてjavaに統一しようと思ったのですが、notify/listenをトリガーに設定しようとすると
java/jdbcではポーリングをするはめになるようです(非同期がつかえない)
だからと言ってjavaをやめるとcometがどうもよくないのです

そこで質問です
java/phpのブリッジにはsapiか、jniのどちらを採用する方が一般的でしょうか?
また、その際の注意点、留意点があったら教えてください
あと調査の結果でないと思うのだけれども、jdbcでnotify/listenでポーリングせず
スマートに非同期できる方法があるのでしたら教えてください

よろしくお願いします

531 :NAME IS NULL:2010/07/08(木) 20:35:09 ID:???
統一しなきゃいいんじゃない? …ってのはナシ?w

532 :NAME IS NULL:2010/07/19(月) 11:51:06 ID:???
そういや9.0、ベータ3になってるね

533 :NAME IS NULL:2010/07/31(土) 12:07:33 ID:6Gfxgj+P
order by random()が便利すぎる

534 :NAME IS NULL:2010/08/02(月) 22:49:28 ID:???
何に使うの?

535 :NAME IS NULL:2010/08/06(金) 10:14:15 ID:???
view に対してインデックスを張ることは可能でしょうか?
8.3です。

536 :NAME IS NULL:2010/08/06(金) 11:28:44 ID:???
>>535
ビューは仮想的なテーブルであって、ビュー自体にデータを保存する場所機能がない為、
インデックスを張る事はできません。
テーブルに適切なインデックスを設定して下さい。
テーブルに張ったインデックスは、ビューを使った時に有効活用されます。

537 :NAME IS NULL:2010/08/07(土) 09:20:28 ID:???
ユーザを作らないで運用する事って可能なのでしょうか?
rootでは動かせない?

538 :NAME IS NULL:2010/08/08(日) 11:34:03 ID:???
rootで動かしたくないからいろいろやってんでしょう。
目的がはっきりしてるならできないこともないけど、
ユーザーの作り方がわからない、とかならやめといたふが・・・

539 :NAME IS NULL:2010/08/08(日) 13:55:33 ID:???
rootになれるなら説明書通りインストロールするだけだろ
rootになれないので一般ユーザのままインストールできますかって質問なら成立するけど

540 :NAME IS NULL:2010/08/08(日) 23:03:28 ID:???
いや、新規ユーザを増やしたく無いという客がいた場合
対応できるのかなと思って。

541 :NAME IS NULL:2010/08/09(月) 01:00:24 ID:???
なんで増やしたくないんだ
そんな奴いるのか?

542 :NAME IS NULL:2010/08/09(月) 18:09:35 ID:???
ストアド書いてそこから外部プログラム実行するようにしたら
DB使えるなら誰でもrootで実行できちゃうよね

543 :NAME IS NULL:2010/08/09(月) 18:12:12 ID:???
あ、rootで動かした場合の話ですよ。
ポート1024以下で動かしたい場合でもリダイレクトでやるべきだろうし。

544 :NAME IS NULL:2010/08/11(水) 16:50:59 ID:???
rootでインストーラ動かす話とアプリのインスタンスを
rootで動かすってのがごっちゃになってない?

545 :NAME IS NULL:2010/08/22(日) 20:28:16 ID:???
質問です。小さなテーブルに対するUPDATEが返ってこなくて固まってしまうのですが、
別セッションでトランザクションがかかりっぱなしになっている以外に
原因て考えられるでしょうか。

OS: CentOS5.2
ver: postgres8.1.11

Webシステム全体が止まってしまうのですがCPU使用率も高くないし、トランザクションかけてるところは
全部チェックしたのですがあやしいところがないし、pg_logにも何も出ないしで
困っています

546 :NAME IS NULL:2010/08/22(日) 20:54:20 ID:???
>>545
トリガーでなんかやってるとか?

547 :545:2010/08/22(日) 21:09:38 ID:TfBU30EW
トリガ・ストアド・ビューはなんもないです。
気になるのは止まったときにpg_activityをみると20個くらいはAのテーブルのUPDATE文なのですが、
2,3個BのテーブルのUPDATE文が混じってることです。トランザクションが問題なら
別のテーブルに影響でないですよね?Bが20個くらいでAが2,3個の時もあります。
トランザクション中に違う順番でロックかけてデッドロックも疑ったのですが、
プログラムを見てもこれと行ってあやしいところがありません。むーーーん、、、

548 :NAME IS NULL:2010/08/24(火) 09:12:27 ID:???
オートコミットになってなくてコネクションが残ってるとか

549 :NAME IS NULL:2010/08/24(火) 10:00:21 ID:???
つい最近、図書館の騒ぎにあったな、コネクション残りw

550 :NAME IS NULL:2010/08/24(火) 13:08:14 ID:4eZnnJ7w
>>545
その機能は、もともと稼働していたのか?
新規なのか?
新規なら機能バグでしょ?
プーリングしてる?
時間のかかるSQL文をチェックする変数あったよね?

551 :NAME IS NULL:2010/08/24(火) 20:47:03 ID:???
pg_logにも何も出ないじゃなくてなにも出ないように設定してるだけじゃないのか

552 :NAME IS NULL:2010/08/24(火) 23:41:46 ID:???
みなさまレスありがとうございます。 >>551ログの設定はデフォルトです。
このシステムは3年ほど稼働していて新機能が随時追加されていて、
去年辺りからあまりレベルの高くないPGがまじっていて何度か致命的なフリーズをおこし
(ユーザーの1クリックで500MBのテーブルを条件無しで全部メモりに読み込んだりとか、
登録する度に過去データをコピーするので倍々にレコードが増えていったりとかw)、
その度に私が対処してきたのですが、今回ばかりは原因を見つけられずにここに
相談してみた次第です。同じモジュールが他にも10サイトほどで稼働しているのですが、
現状ここでしか起きていません。ただ、ここでしか使ってない機能もあるしこのサイトが
一番負荷が大きいので、プログラムの問題なのかOS/DBの設定の問題なのか
ハードウェアの問題なのかの切り分けも微妙という状態です。
一応Webサーバーの方にはトランザクションかかりっぱなしならコミットするという
ロジックを入れて二日ほど落ちていません。が、もともと週末に1,2回落ちるだけなのでまだなんとも。

>>550
フリーズ中にpg_activityみてもPrimaryKEY指定のUPDATE文が残っているだけですし、
ミドルウェアの機能で全SQLの実行時間を集計していて特にあやしいSQL文はありません。
というか毎晩vacuumしたり過去データ削除で時間はかかってますがフリーズのタイミングと
相関がありません。

553 :NAME IS NULL:2010/08/25(水) 07:41:55 ID:???
現象と状況からするとただのプログラム作り込みバグにみえるけどねぇ。
トランザクションと全く関係ないような画面のSELECT分にfor updateが付いてるとかのイージーエラーじゃね。

554 :NAME IS NULL:2010/08/25(水) 22:00:20 ID:???
全SQL調査したけどselect for updateはありませんでした。このシステムでは全部後勝ち更新で
使ってないしそのPGはselect for updateの存在すら知らないと思います。

やっぱりロック絡みですよね。今度起きたらpg_lockみてみます。
select * from pg_locks l left outer join pg_class c on l.relation = c.relfilenode
こんな感じでロックかかってるテーブル特定できますよね。

555 :NAME IS NULL:2010/08/25(水) 22:20:10 ID:???
今まで見てなかったのかよ!

556 :NAME IS NULL:2010/08/25(水) 22:35:25 ID:???
我慢してたけど、君の書き方から察するに
決め付けや思い込みでバグが見つけれて無いだけな気がする

出てません、してません、ありません

では見つかるバグも見つからないと思う。

557 :NAME IS NULL:2010/08/25(水) 22:41:51 ID:???
>>556
結構同感。

> みなさまレスありがとうございます。 >>551ログの設定はデフォルトです。
で、結局ログ出てるの出てないの?
回答者にデフォルトがどうだったとか、いちいち調べさせたいわけ?

> 全部チェックしたのですがあやしいところがないし、pg_logにも何も出ないしで
何も出ないとは? UPDATE 以外のも何も出てないの?
本当に微塵も何も出てないなら、>>551 となって話はループするんだが。

558 :NAME IS NULL:2010/08/25(水) 22:45:59 ID:???
業務上のトラブルなのに
MLじゃなくてこっちで質問する判断力がまずどうかと思う
名前だして質問したくないレベルってことか?

559 :NAME IS NULL:2010/08/25(水) 22:55:28 ID:???
業務上のトラブルはMLじゃないとだめなの?

560 :NAME IS NULL:2010/08/25(水) 23:03:38 ID:???
早期解決が目的じゃなくて雑談交えたいならこっちでいいんじゃね

561 :NAME IS NULL:2010/08/25(水) 23:46:52 ID:???
フリーズとかいいつつpg_locks見てなかったって・・・
このレベルの人だとデッドロックは見つけられないだろうな〜
とは思った(笑)


562 :NAME IS NULL:2010/08/31(火) 01:13:31 ID:???
>>557
すいません、書き方が悪かったですね。フリーズに関連するログは出てないだけで、
それ以外の時には「LOG: クライアント接続に想定外のEOFがありました」等はでています。
(posgresql-8.4にupgradeしたのでログが日本語になりました)
>>558
MLは昔はいくつも入ってたのですがチェックするだけで時間喰うしつい答えたくなったりするので
最近は使っていませんでした。質問ある時だけ入るのも悪い気がするし
>>561
すいません、今までは自分が全体を見てるプロジェクトではデッドロックなんて起こしたこと無かったので
PostgreSQLのpg_locksは今回のことで知ったばかりで、無知でお恥ずかしい限りです。
いちPGの時は関わったプロジェクトでデッドロックが起きた事もありますが、OracleでDBAもいたし
自分のところじゃなかったので首突っ込んでなかったんですよね

563 :NAME IS NULL:2010/08/31(火) 04:08:26 ID:???
posgresql-8.4にupgradeしたので
posgresql-8.4にupgradeしたので
posgresql-8.4にupgradeしたので

564 :NAME IS NULL:2010/08/31(火) 08:36:31 ID:???
>>562
MLに聞かない理由は分かった。
で、ここなら質問ある時だけくるのもおkなのね

565 :NAME IS NULL:2010/08/31(火) 08:46:34 ID:???
>>564
ダメな理由があるか?

566 :NAME IS NULL:2010/08/31(火) 08:55:34 ID:???
>>565
べつに
こっちの人には悪いと思わないのかなと思ってね

俺はMLでも2chでも、一見さんでも構わないと思うけど、
どうやって聞いたらアドバイスが貰いやすいとか、
考えて質問しろよと思う

567 :NAME IS NULL:2010/08/31(火) 12:04:21 ID:???
今回ML等に質問に行かない理由はプログラムの問題であって
postgresの問題じゃないだろう、というのもあります。こっちの方が
気軽に聞けるし、ここはちょくちょく来てますし。質問は
>別セッションでトランザクションがかかりっぱなしになっている以外に
>原因て考えられるでしょうか。
に集約されるのですがわかりにくかったでしょうか。
他に考えられないのであれば自分のバグの探し方が足りないだけでしょうし、
他の原因もあるのであれば見当違いの調査をしてる可能性もあるので、
なんかヒントでもないかなあ、と思って質問した次第です。
まあでも雰囲気悪くしちゃったみたいなんでおとなしくプログラムのバグ
探し続けます。

568 :NAME IS NULL:2010/08/31(火) 12:15:14 ID:???
>>567
あるよ。
ハードウェアのトラブル。

569 :NAME IS NULL:2010/08/31(火) 20:07:41 ID:???
エスパー募集中

570 :NAME IS NULL:2010/08/31(火) 21:01:07 ID:???
最近は念力デバッグというらしい

571 :NAME IS NULL:2010/09/01(水) 00:04:11 ID:???
んで8.1から8.4にワープした言い訳を

572 :NAME IS NULL:2010/09/04(土) 02:19:05 ID:???
>>567
postgresの問題じゃないとするのならスレ違いじゃね?

それはそれとして、稼働中のシステムのものについてそんな簡単に
アップグレードしちゃっていいの?
ちゃんと検討してるのか怪しいように思える。

んで、本題だけど、今まで発生しなかったけれど、プログラムの修正によって
発生するようになったのなら差分を追いかければ済む話。
そこで作りこんでいなければ、「あまりレベルの高くないPG」以外が作った
潜在バグが表面化しただけ。

573 :NAME IS NULL:2010/09/04(土) 17:23:36 ID:???
あまりレベルの高くないPL
の間違いのような気がする

574 :NAME IS NULL:2010/09/06(月) 13:46:02 ID:???
原因見つけました。結局その駄目PGのコードで、
成功したらコミット、SQL例外が出たときのみロールバックする、というコードがあり
SQL例外以外の例外の時にトランザクションがかかりっぱなしでした。
そのPGが参考にしたと思われるコードではSQL例外以外のものは出る余地がなかったのですが
問題の箇所では異常データが送られてくることを想定してないといけなかったという感じです。
トランザクションかけるときは全ての例外キャッチでロールバックするというのを徹底したいと思います。
ありがとうございました。

バージョンアップについては、前述の通りASPで同じシステムが10サイト以上入っており、
新サイト追加の時にテストして8.4を導入済みで実績があった(暗黙の型変換絡みで一カ所だけ修正が必要でした)
のと、検索速度増加を期待してあげました。というかいちいちここで背景まで説明するのは
うざいだけだと思うんだけどそんなに聞きたいの?単に「どうせロクに検査してねえんだろ」という
事を確認して他人をバカにしたいだけだからスルーするのが大人ってものなんだろうか

575 :NAME IS NULL:2010/09/06(月) 13:57:19 ID:???
結局ログをちゃんと見てなかった or 出てなかった、ってことでしょ

576 :NAME IS NULL:2010/09/06(月) 14:31:44 ID:???
そこまでできてないなら、原因聞くより調べ方効いた方がよかったね

577 :NAME IS NULL:2010/09/06(月) 14:39:16 ID:???
>別セッションでトランザクションがかかりっぱなしになっている以外に
>原因て考えられるでしょうか。

578 :NAME IS NULL:2010/09/06(月) 16:14:24 ID:???
あーなるほど確かに>調べ方聞いた方が

ちなみにまとめておくと、pg_stats_activityのquery_startで古い物ばっかり
注目してたのですが、8.4に変えたところxact_startというのが追加され(8.3かららしい)
この時間がフリーズの数十分前になってる「<IDLE> in transaction」があり、
トランザクション開始時近辺のログを調べることで原因を特定できました。
8.1のままだとxact_startが無いのでまだ気付かなかったと思います。
http://lets.postgresql.jp/documents/technical/statistics/2
「<IDLE> in transaction」はpg_stats_activityを見てると時々出るので
あまり気にしてなかったんですが、始めからこれに注目すべきでした。

みなさんの口ぶりからするとdbaでもないのにこんなの見たら一発でわからないと
駄目なんですかね。頑張って精進します。


579 :NAME IS NULL:2010/09/06(月) 16:30:33 ID:???
つーかcommitやrollback関係なくconnection閉じてないだけだろ単に
良く分かってないのはお前だろ

580 :NAME IS NULL:2010/09/06(月) 16:31:45 ID:???
>>573
結局正解はお前だけだったな

581 :NAME IS NULL:2010/09/06(月) 16:40:29 ID:???
知らない分からないを問題としてるんじゃないのに・・・

まあ知ったこっちゃないか

582 :NAME IS NULL:2010/09/06(月) 16:42:55 ID:???
いやconnection.close()は各SQL呼び出し箇所のtry-finallyできちんと呼ばれてるけど。
どうしたらこんな素っ頓狂な発想がでてくるのかね>>579

583 :NAME IS NULL:2010/09/06(月) 16:47:10 ID:???
トランザクション中にコネクション切れたらアボートされないか?

584 :NAME IS NULL:2010/09/06(月) 16:52:16 ID:???
コネクションプールのミドルウェアが保存しとくので本当にclose()されるわけじゃないよ
って言ってもphpとかのスクリプト言語しかやった事無い人には想像できないよね


585 :NAME IS NULL:2010/09/06(月) 16:53:39 ID:???
コネクションプールのミドルウェアはトランザクションも保持するのかよw

586 :NAME IS NULL:2010/09/06(月) 16:55:56 ID:???
なんで突然ミドルウェア?

587 :NAME IS NULL:2010/09/06(月) 17:06:18 ID:???
例外発生で、SQL例外のみキャッチしロールバック。
その他の例外は何もしないでfinallyでclose?

588 :NAME IS NULL:2010/09/06(月) 17:18:38 ID:???
トランザクションかけっぱなしのままコネクションプールに返却したら保持されるよ。
いちいちコネクションを持ちまわらなくてもいいようにスレッドローカルに紐づけて
任意の場所でconnection.close()が呼べるようになってるから
だから>>587みたいなtry-catch-finallyじゃなくて、トランザクションをかけるところでは
try-catchでrollback、SQL実行は別のDaoクラスのメソッドでtry-finallyでクローズ。
Daoの方はトランザクションがかかってるかどうかは気にしない

589 :NAME IS NULL:2010/09/06(月) 17:22:34 ID:???
あまり流れを追ってないだけど
質問者って開発言語すら書いてないよね。

最初はDB知らないだけかと思ってたけど、
SEとしての資質が欠如しているような


590 :NAME IS NULL:2010/09/06(月) 17:34:17 ID:???
>>574
お前が馬鹿なのと品性下劣なのと自分の醜悪な部分を人に見せびらかすという
性癖を持っている変態なのは理解してあげたから、もう二度と湧いて出てくるな。

591 :NAME IS NULL:2010/09/06(月) 17:52:58 ID:???
皮肉を言わなきゃ気がすまない奴はこういうところは馴染めないね

592 :NAME IS NULL:2010/09/06(月) 18:10:18 ID:???
自分は悪くないし、できると思ってるんだろう
よちよち歩きのクセにみえだけは貼りたがる

593 :NAME IS NULL:2010/09/06(月) 18:13:18 ID:???
プーリングするやつがトランザクションも監視して切断と
同じ状況に戻すだろう、どんなミドルなんちゃらを使ってんだ?

594 :NAME IS NULL:2010/09/06(月) 18:35:44 ID:???
つーかpoolしてたってコネクションcloseすればトランザクション切れるだろ普通
TomcatとJavaでやってるけどclose漏れ以外でそんなんなったことないぞ

595 :NAME IS NULL:2010/09/06(月) 18:47:47 ID:???
とりあえずPHPバカにすれば玄人っぽいと思ってる奴が恥ずかしすぎる

596 :NAME IS NULL:2010/09/06(月) 18:49:55 ID:???
トランザクションが保持されるって環境に当たったことがないなぁ
確かにプーリングした場合に、使うミドルウエアによってはあり得るんだろうけど
それにしたって、普通にプーリングしてもトランザクションなんて維持されないし、
かなり特殊なパターンじゃね?

597 :NAME IS NULL:2010/09/06(月) 18:50:17 ID:???
プライドだけは高いんだな

598 :NAME IS NULL:2010/09/06(月) 20:08:50 ID:???
phpでもpconnect使えばコネクション保持できるし、トランザクション途中でほったらかせるけどな
もちろん"するべからず"だけどね(笑)

599 :NAME IS NULL:2010/09/06(月) 20:47:30 ID:???
JDBCの場合だいたいどのDBでもcloseすると勝手にcommitされる

600 :NAME IS NULL:2010/09/06(月) 22:16:25 ID:???
JTAみたいにトランザクション開始したら同一スレッド内では何度getConnection()/close()
してもコミットされないというのが最近の主流だと思ってたんだが、うちは少数派だったんだな。
というかスレタイとずれまくり

601 :NAME IS NULL:2010/09/06(月) 22:31:42 ID:???
JTAの場合はDBのコネクション取得するしないじゃなくてUserTransaction単位だから
また概念が違うしな

602 :NAME IS NULL:2010/09/06(月) 22:58:46 ID:???
>>600
JTAは分散トランザクション ttp://ja.wikipedia.org/wiki/%E5%88%86%E6%95%A3%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
のAPIだもの。

603 :NAME IS NULL:2010/09/06(月) 23:58:01 ID:???
で?
分散トランザクション使ってるかもしれないだろ
そんな予測もできない奴はPHPでも使ってろよ

604 :NAME IS NULL:2010/09/06(月) 23:58:52 ID:???
>>601-602
こいつらが一番解ってない

605 :NAME IS NULL:2010/09/07(火) 03:54:51 ID:???
> 単に「どうせロクに検査してねえんだろ」という
> 事を確認して他人をバカにしたいだけ
君は本当にバカだなぁ。
そりゃあ検査してないなら、自分が見てるプロジェクトではこんなことなかった!とかいう傲慢なPLをバカにするけれどね。
そうでなくともトラブル発生中に他の変更要素を加えるなんてバカだなぁとしか思えないのに。


606 :NAME IS NULL:2010/09/07(火) 09:10:20 ID:???
質問の仕方がちょっとアレってだけのヤツをネチネチといつまでも・・・
いい加減にスルーしろよ

607 :NAME IS NULL:2010/09/07(火) 09:41:23 ID:???
>>604

608 :NAME IS NULL:2010/09/07(火) 17:07:31 ID:???
oracleのデータベースリンクに相当する機能ってありますか?

609 :NAME IS NULL:2010/09/07(火) 17:29:05 ID:???
>>608
dblinkは調べた?

610 :NAME IS NULL:2010/09/07(火) 18:00:07 ID:???
>>609
これって違うマシンのPostgreSQLサーバにも接続できるんでしたっけ?

611 :NAME IS NULL:2010/09/07(火) 18:14:23 ID:???
>>610
hostやportを指定するから出来るんじゃね?


612 :NAME IS NULL:2010/09/07(火) 18:25:25 ID:???
>>611
これって、dblink用にモジュール追加するんでしたっけ?
ってことは、インフラチームにお伺いを立てることに…

613 :NAME IS NULL:2010/09/07(火) 19:31:57 ID:???
パッケージで入れてるならcontrib突っ込むだけ
ソースからやってるなら頑張ってとしか言えない

614 :NAME IS NULL:2010/09/08(水) 03:10:54 ID:???
でしたっけ
がんばって思い出しなよ

615 :k:2010/09/08(水) 18:08:59 ID:c+IijDxV
http://to.ly/6K38

616 :NAME IS NULL:2010/09/21(火) 12:09:28 ID:Fbol+TGj
PostgreSQL 9.0 now available!
http://www.postgresql.org/

617 :NAME IS NULL:2010/09/21(火) 12:47:09 ID:???
っげ、やっと昨日rcを試すために入れたのにwww

618 :NAME IS NULL:2010/09/22(水) 22:54:22 ID:3dsl4h+O
Postgresqlは、
BEGIN;
SELECT Fields FROM Table;
COMMIT;
と書かなくても
SELECT Fields FROM Table;
と書けば
トランザクションが働きますか?

619 :NAME IS NULL:2010/09/22(水) 22:56:52 ID:3dsl4h+O
すいません。SELECTじゃ意味ないですね
Postgresqlは、
BEGIN;
UPDATE Table SET Fields = 1 ;
COMMIT;
と書かなくても
UPDATE Table SET Fields = 1 ;
と書けば
トランザクションが働きますか?

620 :NAME IS NULL:2010/09/22(水) 23:42:01 ID:???
>>619
psqlから入力すれば、自動コミットされる。


621 :NAME IS NULL:2010/09/22(水) 23:55:56 ID:???
わかりますた。

622 :NAME IS NULL:2010/09/26(日) 14:11:40 ID:???
9.0のレプリケーションがうまくいかないなぁ。

SELECT pg_start_backup 後の
マスター側からスレーブ側へのデータコピーが、よくないのかな。
スレーブ側が立ち上がらない。

623 :NAME IS NULL:2010/09/26(日) 14:41:15 ID:???
そのへんの定番のやり方ってどっかに書いてないのかなぁ。

624 :NAME IS NULL:2010/09/26(日) 15:43:18 ID:???
ログ嫁 >>622
いくつか紹介されてる。ぐぐれ >>623


625 :NAME IS NULL:2010/09/26(日) 15:54:27 ID:???
>> 622

どんなエラーメッセージが出てる?

626 :622:2010/09/26(日) 16:23:24 ID:???
>>622 です。

Linux版ではなく、Win版です。
検索して他のLinuxの例を参考にしましたが、
うまくいっておりません。

.confファイル設定のみでは、
普通のスタンドアロンとしてスレーブ側も立ち上がりますが、
SELECT pg_start_backup 後の
マスター側からスレーブ側へのデータコピーをした後、
うまく立ち上がらないです。

■イベントビューア

GMT FATAL: bNt@C"postmaster.pid"????: Permission denied
サーバの起動待機がタイムアウトしました

■pg_log(一部文字化けしています)

LOG: 統計情報コレクタのソケットに接続できませんでした: Invalid argument
LOG: 作業用ソケットの欠落のため統計情報コレクタを無効にしています
WARNING: 誤設定のためautovacuumを起動できません
ヒント: "track_counts"オプションを有効にします。
LOG: データベースシステムは xxxxx にシャットダウンしました
FATAL: データベースシステムは起動しています
LOG: データベースシステムの接続受付準備が整いました。
FATAL: データベースシステムは起動しています
ERROR: "pg_start_backup"また?Eそ?E近辺で構文エラー(?E??位置 1) スチE?EトメンチE
pg_start_backup('SR SNAPSHOT')

627 :626:2010/09/26(日) 16:46:12 ID:???
>>626 訂正。

■pg_log(一部文字化けしています) は、スレーブ側のログではなく、
コピーした後のログ、すなわち、マスタ側のログでしたので、関係ありません。
イベントビューアのエラーログしか情報はわかりません。

コピー後は、postmaster.pid は、削除してスレーブ起動していますが、
イベントビューアの下記エラー

GMT FATAL: bNt@C"postmaster.pid"????: Permission denied

が問題なのかな。

628 :NAME IS NULL:2010/09/26(日) 17:54:42 ID:???
9.0だとインストール時に作成するpostgresユーザが隠しユーザになったん?

629 :NAME IS NULL:2010/09/26(日) 18:03:07 ID:???
>>627
きちんと設定しろ。全然できてないじゃないか。
Unix版の設定をよく読んで理解したうえでやってくれ。
スレーブ側のログも読めないんじゃどうしようもない。


630 :NAME IS NULL:2010/09/26(日) 21:20:50 ID:???
きちんとやれとか何のアドバイスにもなってないぞw

631 :NAME IS NULL:2010/09/26(日) 22:42:45 ID:???
ログくらい出せっての。
ログないんだからアドバイスしようがないだろ >>630



632 :NAME IS NULL:2010/09/26(日) 22:51:41 ID:???
最初からログ出せってアドバイスしろよ
なんの実もない煽りだけやんなら目障りだから書き込むな

633 :NAME IS NULL:2010/09/26(日) 23:17:27 ID:???
質問者本人?

634 :NAME IS NULL:2010/09/26(日) 23:47:09 ID:???
>>632
逆切れしてる・・・ゆとりか。

635 :NAME IS NULL:2010/09/27(月) 00:09:50 ID:???
質問者以下の回答者

636 :NAME IS NULL:2010/09/27(月) 00:22:50 ID:???
>>635
だれが回答者?

637 :NAME IS NULL:2010/09/27(月) 00:32:54 ID:???
回答者などいない
いるのは質問者と外野のみ

638 :622,626:2010/09/27(月) 03:03:27 ID:???
>>622 >>626 の質問者本人ですが、

pg_log配下のログは生成されていないようなので、
それ以前の問題ということだと思います。

イベントビューアログのエラー、

GMT FATAL: bNt@C"postmaster.pid"????: Permission denied

しか手がかりはありません。
Win版で動作確認された方いるのでしたら、その設定例があれば、幸いです。

中国人か台湾人のWin版の成功例があるみたいだから、参考にしてみます。
*.confの設定はわかるけど、中国語の解読が問題だな。(^^;

639 :622,626:2010/09/27(月) 03:19:16 ID:???
中国人か台湾人のサイトの例は、参考にできなかった。

640 :NAME IS NULL:2010/09/27(月) 03:35:19 ID:???
>>638
だ   か    ら
スレーブ側のpostgresql.confにログを出させる設定しないとログがでないんだよ。
もしもマスタのpostgresql.confをそのまま使っていて、ディレクトリまわりを特に変わった設定してないなら、
絶対にログがでるはず。それでログがでないのなら、スレーブが立ち上がっていない可能性がある。

だが、スレーブは立ち上がってpsqlで接続できんだろ?つうことはログがでないのはおかしいのだ。
ログを出すように努力しろとしか言えない。

postgresql.confの設定値のうちディレクトリのどこかの設定がおかしくてマスタとスレーブがごっちゃになってるとかじゃないのか?
もちろんスレーブは起動してないなんてオチ。


641 :NAME IS NULL:2010/09/27(月) 03:39:17 ID:???
>>640
いい加減にしろよお前

642 :622,626:2010/09/27(月) 10:00:36 ID:???
質問者本人です。

>>640
スレーブが立ち上がらない、その原因がわからないってことですが。

Program Files\PostgreSQL\9.0\data 配下をマスターからコピーすると、
立ち上がらないということです。
もちろん、*.conf 設定はしています。
コピーしないで、同じ、*.conf 設定だとスレーブは立ち上がります。


643 :NAME IS NULL:2010/09/27(月) 10:42:47 ID:???
>>640
ワロスペシャル
>>622
> スレーブ側が立ち上がらない。


644 :NAME IS NULL:2010/09/27(月) 10:46:43 ID:???
>>638
WinOSは何?
postmaster.pidが作れないってことかな?
面倒だからフォルダ全部everyone フルコントロールにして試したらどう?

645 :NAME IS NULL:2010/09/27(月) 10:54:25 ID:???
やっぱ質問の意味なんて全然理解せずに煽ってるだけの奴だったな

646 :NAME IS NULL:2010/09/27(月) 11:44:03 ID:???
PCは別でやってんのかな?
pg_start_backupとか無しで単にコピーしただけのやつは起動できるの?

647 :622,626:2010/09/27(月) 17:34:02 ID:???
質問者本人です。

>>644
postmaster.pid は作られていませんね。

マスター側:Win2000
スレーブ側:WinXP

>>646
>pg_start_backupとか無しで単にコピーしただけのやつは起動できるの?

pg_start_backup を実行せず、data配下をコピーしてもダメですね。


648 :NAME IS NULL:2010/09/27(月) 17:41:52 ID:???
ファイヤーウォール

649 :NAME IS NULL:2010/09/27(月) 18:11:45 ID:???
じゃあコピーじゃなくてinitdbしたやつは動くのかな?

650 :622,626:2010/09/27(月) 22:12:03 ID:???
>じゃあコピーじゃなくてinitdbしたやつは動くのかな?

動きます。

Posgreのデータ、ディレクトリ構造はよく知りませんが、
data配下をコピーして、動作するものなのですかね?

手詰まりなので、
もう一度、最初から試そうと思っています。

651 :NAME IS NULL:2010/09/27(月) 23:25:32 ID:???
Oracleの開発からPostgreに移行して
「ポスグレ癖あって使いにくい 糞だ糞だ」
と日々つぶやいていたが、案件がSqliteになって
「ポスグレのが良いよ〜 Sqlite糞すぎだよ〜」
と日々つぶやくようになった俺が通りすぎますよ

652 :NAME IS NULL:2010/09/27(月) 23:45:23 ID:???
なんでdata配下をコピーして動くと思ったんだ
MyISAMじゃねえんだから

653 :NAME IS NULL:2010/09/28(火) 00:01:33 ID:???
1. SELECT pg_start_backup('hoge');
2. マスタの$PGDATAをスタンバイにコピー
3. SELECT pg_stop_backup()

という手順を踏まないとスタンバイ動かないよ。

654 :622,626:2010/09/28(火) 09:16:25 ID:???
やはり、うまくいかないですね。
しばらく断念です。

655 :NAME IS NULL:2010/09/28(火) 10:23:45 ID:???
8.0からは「data配下をコピー」で動くようになったじゃないか

656 :NAME IS NULL:2010/09/29(水) 03:08:12 ID:???
>>647
PostgreSQL停止時のdataをスレーブに持っていって動かないんだとしたら、
プライマリとスレーブのアーキテクチャが違うのでは、一方が32bitでもう一方が64bitとか


657 :NAME IS NULL:2010/09/29(水) 03:09:46 ID:???
64bitのXPってレアだなw

658 :NAME IS NULL:2010/09/29(水) 11:43:18 ID:???
スレ違いかもしれないんですが、どうにも行き詰まったので質問させてください。
こういう場合のBitmap Heap ScanやNested Loopは、
これ以上早くなりませんでしょうか。

TableA (約213683000行)
Id
Bid
WhereValue
Value

TableB(約9530700行)
Id
Cid

Explain Analyze Select TableB.Cid, TableA.Value
From TableA join TableB
on TableA.Bid=TableB.Id
Where ( TableA.WhereValue = 310 )
and TableB.Id > 0
order by TableA.Value desc limit 1000;

"Limit (cost=106779.51..106782.01 rows=1000 width=12) (actual time=10810.625..10810.719 rows=1000 loops=1)"
" -> Sort (cost=106779.51..106962.79 rows=73311 width=12) (actual time=10810.624..10810.668 rows=1000 loops=1)"
" Sort Key: TableA.Vindex"
" Sort Method: top-N heapsort Memory: 72kB"
" -> Nested Loop (cost=178.31..102759.95 rows=73311 width=12) (actual time=26.717..10695.292 rows=136489 loops=1)"
" -> Bitmap Heap Scan on TableA (cost=178.31..30899.92 rows=8080 width=12) (actual time=26.694..7875.418 rows=34025 loops=1)"
" Recheck Cond: (WhereValue = 310)"
" -> Bitmap Index Scan on bindex (cost=0.00..176.29 rows=8080 width=0) (actual time=21.003..21.003 rows=34025 loops=1)"
" Index Cond: (WhereValue = 310)"
" -> Index Scan using dIndex on TableB (cost=0.00..8.78 rows=9 width=16) (actual time=0.074..0.078 rows=4 loops=34025)"
" Index Cond: ((TableB.Id > 0) AND (TableB.Id = TableA.Bid))"
"Total runtime: 10810.943 ms"

PostgreSQL v8.4.4

659 :NAME IS NULL:2010/09/29(水) 17:59:20 ID:???
set enable_bitmapscan=off;
を実行したあとだと、どうなる?



660 :NAME IS NULL:2010/09/30(木) 02:22:34 ID:???
TableA.WhereValue = 310に該当する行について、ソートのためにValueを調べるのに主な時間がかかっているように見えるので、
可能であれば、TableA(WhereValue,Value)に複合インデックスを作成すれば、大きく改善できるかもしれない。

661 :658:2010/09/30(木) 11:55:10 ID:???
>659 660 ありがとうございます。
660さんのインデックス(index660)を作成し、
vacuum analyze した後、SQLを実行してみました
この際、各SQLは再起動直後に実行しています。
あまり芳しくない結果ですが、何かヒントになりますでしょうか。
よろしくお願いします。

Explain Analyze Select TableB.Cid, TableA.Value
From TableA join TableB
on TableA.Bid=TableB.Id
Where ( TableA.WhereValue = 310 )
order by TableA.Value desc limit 1000;

"Limit (cost=104496.85..104499.35 rows=1000 width=12) (actual time=16703.301..16703.399 rows=1000 loops=1)"
" -> Sort (cost=104496.85..104677.04 rows=72073 width=12) (actual time=16703.299..16703.345 rows=1000 loops=1)"
" Sort Key: TableA.Value"
" Sort Method: top-N heapsort Memory: 72kB"
" -> Nested Loop (cost=218.57..100545.17 rows=72073 width=12) (actual time=39.108..16576.433 rows=136489 loops=1)"
" -> Bitmap Heap Scan on TableA (cost=218.57..30364.94 rows=7924 width=12) (actual time=20.582..10170.489 rows=34025 loops=1)"
" Recheck Cond: (WhereValue = 310)"
" -> Bitmap Index Scan on index660 (cost=0.00..216.59 rows=7924 width=0) (actual time=13.409..13.409 rows=34025 loops=1)"
" Index Cond: (WhereValue = 310)"
" -> Index Scan using dIndex on TableB (cost=0.00..8.74 rows=9 width=16) (actual time=0.176..0.182 rows=4 loops=34025)"
" Index Cond: (TableB.ID = TableA.Bid)"
"Total runtime: 16703.647 ms"

-- set enable_bitmapscan=off; 実行後
"Limit (cost=106055.45..106057.95 rows=1000 width=12) (actual time=106629.504..106629.604 rows=1000 loops=1)"
" -> Sort (cost=106055.45..106235.63 rows=72073 width=12) (actual time=106629.503..106629.552 rows=1000 loops=1)"
" Sort Key: TableA.Value"
" Sort Method: top-N heapsort Memory: 72kB"
" -> Nested Loop (cost=0.00..102103.77 rows=72073 width=12) (actual time=23.130..106491.917 rows=136489 loops=1)"
" -> Index Scan using index660 on TableA (cost=0.00..31923.54 rows=7924 width=12) (actual time=5.626..10702.449 rows=34025 loops=1)"
" Index Cond: (WhereValue = 310)"
" -> Index Scan using dIndex on TableB (cost=0.00..8.74 rows=9 width=16) (actual time=2.792..2.809 rows=4 loops=34025)"
" Index Cond: (TableB.Id = TableA.Bid)"
"Total runtime: 106629.682 ms"

前回より遅くなっているのは、
再起動直後に実行しなかったため、一部キャッシュが使われたからかと思います。

*(and TableB.Id > 0)については、analyzeするとインデックスが使われるようになったので
削除しました。

662 :NAME IS NULL:2010/09/30(木) 12:28:51 ID:???
index660を作成すれば、Sortじゃなくて、
Index Scan Backwardが使われると思ったんだけど、
そうなってないね。

drop index index660;
して、
create index index662 on TableA(WhereValue,Value) desc;
したらどうかな。


663 :NAME IS NULL:2010/09/30(木) 12:47:17 ID:???
もしくは、
create index index*** on TableA(WhereValue,Value,Bid);

create index index*** on TableA(WhereValue,Value,Bid) desc;
あたりで変わるかもしれない。


664 :658:2010/09/30(木) 15:22:15 ID:???
>662-663
ありがとうございます。

ともかくTableAのインデックスが肝のようですね、
いくつかパターンを試してみてまた報告させてもらいます。

665 :NAME IS NULL:2010/10/01(金) 00:15:37 ID:???
ガンガレ

666 :658:2010/10/01(金) 17:29:10 ID:???
>>659-665
ご意見ありがとうございました。
最終的には
create index indexname on TableA(WhereValue,Value,Bid);
このインデックスで平均Total runtimeが0.01s以下で収まるようになりました。

ただ、連続でかつ、説明不足で申し訳ないのですが、
本SQLのWhere句については、OR で複数の要素がつながる仕様でした。

例)Where (TableA.WhereValue = 310 or TableA.WhereValue = 9 or ...)

これについては、現在のところ速度改善が行われていませんので、
試行錯誤の上、また、結果を報告させていただきます。

以上、ありがとうございました。

667 :NAME IS NULL:2010/10/01(金) 20:32:48 ID:???
ORするくらいなら二つのSELECT文をJOINで繋いだ方が速い事が往々にしてあるでござる

668 :NAME IS NULL:2010/10/02(土) 05:09:19 ID:???
>>666

(Select TableB.Cid, TableA.Value
From TableA join TableB
on TableA.Bid=TableB.Id
Where ( TableA.WhereValue = 310 )
order by TableA.Value desc limit 1000)
union
(Select TableB.Cid, TableA.Value
From TableA join TableB
on TableA.Bid=TableB.Id
Where ( TableA.WhereValue = 9 )
order by TableA.Value desc limit 1000)
union
...
order by Value desc limit 1000

のようにすれば、いまのインデックスが活用されると思う。


669 :841:2010/10/02(土) 16:43:57 ID:???
うわJOINじゃなくてUNIONだったハズカシ

670 :NAME IS NULL:2010/10/04(月) 04:03:24 ID:???
Oracleに負けてる機能は?

671 :NAME IS NULL:2010/10/04(月) 08:03:42 ID:???
勝ち負けなんて意味無いだろ。

672 :NAME IS NULL:2010/10/04(月) 11:12:53 ID:???
生きる事とは闘う事だ

673 :NAME IS NULL:2010/10/04(月) 20:51:04 ID:???
シーケンスを作るファンクションを作ろうとしたのですがうまく動かず困っています。

CREATE FUNCTION TEST( SEQ_NAME CHAR(10) )
RETURN CHAR(2)
AS
'
BEGIN
  IF( シーケンスが存在しない ) THEN
    CREATE SEQUENCE SEQ_NAME START 1;
    RETURN ''OK'';
  ELSE
    RETURN ''NG'';
  END IF;
END;
'
LANGUAGE 'plpqsql';

PostgreSQL 9.0.0 今日インストールしたので恐らく最新Verだと思います。

引数で受け取ったシーケンス名で作りたいけど、変数名「SEQ_NAME」でシーケンスが作られてしまいます。
シーケンスの存在有無は調べてみて自分で何とかできそうなのですが、変数名の方はちょっと自分には荷が重いです。
Lvの低い質問かもしれませんがお分かりの方お手数ですが教えてください、お願いします。

674 :NAME IS NULL:2010/10/04(月) 21:25:48 ID:???
PL/pgSQLとか使ったことないけど、
EXECUTE ''CREATE SEQUENCE '' || quote_ident(SEQ_NAME) || '' START 1'';
のようにするのかな?
http://www.postgresql.jp/document/9.0/html/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN


675 :673:2010/10/04(月) 21:37:11 ID:???
>>674
動的SQLで書けばひょっとしたら出来るのかな
今環境ないので試せませんが、明日試して見ます。
ヒントありがとうございます。

・・・ちょっと考えれば分かりそうなことでしたね、考えてるときは動的SQLなんて頭の中から消えてましたorz

676 :658:2010/10/05(火) 09:20:28 ID:???
遅くなってすみません。
>668の方法ですごく高速になりました。

かかわってくださった皆さん本当にありがとうございました。

677 :NAME IS NULL:2010/10/05(火) 22:16:41 ID:BAZfEN9h
初心者です。

\pg_logにfunctionの途中経過の値を出力したいのですがどうすればいいでしょうか
例えば$1などのバインドする値など

678 :NAME IS NULL:2010/10/05(火) 23:57:52 ID:???
>>677
functionとか使ったことないけど、
http://www.postgresql.jp/document/9.0/html/plpgsql-errors-and-messages.html


679 :NAME IS NULL:2010/10/06(水) 01:21:47 ID:???
8.4だけど、9.0にしたらなんか良い事ある?

680 :NAME IS NULL:2010/10/06(水) 03:12:02 ID:???
>>679
つ ttp://lets.postgresql.jp/documents/technical/9.0/1

681 :NAME IS NULL:2010/10/06(水) 03:20:30 ID:???
PostgreSQL 9.0 の本っていつぐらいに出るんですかねぇ。
凄く分厚くなりそうw

682 :NAME IS NULL:2010/10/06(水) 04:54:12 ID:???
>>681
レプリケーション周りは、それだけで本1冊書けるからねい。
なんせ、>>680の日本PostgreSQLユーザ会のPostgreSQL 9.0の
新機能の説明ページですら、PostgreSQL 9.0本体標準機能で
抜けているところを説明し、それを補完するためにpgpoolだの
Slony-IだのPGClusterだのの説明をしているわけだし。

683 :NAME IS NULL:2010/10/06(水) 05:38:02 ID:???
>>680
把握した

684 :NAME IS NULL:2010/10/06(水) 08:28:04 ID:???
あれ、こっちかな

初歩的な質問で申し訳ないのですが・・・
pg_dump_allでバックアップしたデータのリストアって、何もせずただpsqlで普通にdumpデータ流しこむだけじゃだめなんですよね?
今あるデータベースの内容に関係なくリストアする(SQLを流し込む)ために、全(各?)データベースを一度削除したり、
キレイにリストアできるようにリストア前の準備をするのが普通(必須)なんでしょうか?

いろんな本やネットを見ても、「dumpしたものをpsqlなりで流し込む」くらいのこといか書いていないような気がして・・・
(実際ただ流しただけでは完全にリストアはされてませんでした。当たり前かもしれないけれど、データベースを全部削除してから流し込んだらうまくいきました)
とんでもない変なこと言ってたらすみません・・・

685 :NAME IS NULL:2010/10/06(水) 08:34:50 ID:???
>>684
pg_dumpall のオプションは何でやった?

686 :NAME IS NULL:2010/10/06(水) 10:22:32 ID:???
まあ普通はinitdb直後に流すだろ

687 :NAME IS NULL:2010/10/06(水) 10:53:13 ID:???
[id]と[text]を持ったテーブルで
textsearch_ja使って全文検索してるけど、
これってcount(id)って早くならないかな。

ginとB-treeの複合indexは作れないよね?

688 :NAME IS NULL:2010/10/06(水) 12:08:55 ID:???
>>687

http://wiki.postgresql.org/wiki/Slow_Counting/ja

カタログ情報でごまかすか、トリガを使って行数を別テーブルに保存する


689 :NAME IS NULL:2010/10/06(水) 17:01:50 ID:???
>688

説明足りなかったみたいですみません。
SELECT count(id) FROM T WHERE to_tsvector('japanese', text) @@ to_tsquery('japanese','検索語');
のcountが早くならないかなと

CREATE INDEX idx
ON T
(USING gin (to_tsvector('japanese'::regconfig, text)),
id);


こういうことができたらたぶん早くなりそうなのにと思うけど無理だし

690 :NAME IS NULL:2010/10/06(水) 19:18:29 ID:???
>>689
idがNULLでない行が、わずかしかない場合には、複合インデックスに意味があるが、
そうでない場合には、あまり意味がないと思う。

特に、idがNULLの場合がないとすれば、
SELECT count(*) FROM T WHERE to_tsvector('japanese', text) @@ to_tsquery('japanese','検索語');
と同じことで、複合インデックスはまったく意味が無いと思う。


691 :NAME IS NULL:2010/10/06(水) 21:12:15 ID:???


692 :NAME IS NULL:2010/10/07(木) 07:40:44 ID:???
>690

そうなんですか、200万行くらいのテーブルなんですが、
速くするのは無理そうな感じですかね
1万行ヒットする検索とか投げると1分くらい帰ってこないんですが、
企業とかだとこういうのどうやってるんだろうなぁ

693 :NAME IS NULL:2010/10/07(木) 09:22:03 ID:???
OFFSET LIMIT

694 :NAME IS NULL:2010/10/07(木) 10:18:10 ID:???
それは検索に時間がかかってるんじゃなくて、単に転送量が多いから
時間かかってるだけでは?
>>693のように絞ってみては

695 :NAME IS NULL:2010/10/07(木) 10:58:25 ID:???
>693,694
欲しいのはcount(id)なので、limitで絞っても意味ない感じです
explain analyze 見る限り、インデックスの段階で行数わかってるのに
それをそのまま出してくれないので歯がゆい感じです

SELECT count(id) FROM T WHERE to_tsvector('japanese', text) @@ to_tsquery('japanese','検索語');

Aggregate (cost=69934.46..69934.47 rows=1 width=8) (actual time=64261.363..64261.363 rows=1 loops=1)
  -> Bitmap Heap Scan on T (cost=11496.91..69892.53 rows=16770 width=8) (actual time=6524.880..63900.754 rows=1133683 loops=1)
    Recheck Cond: (to_tsvector('japanese'::regconfig, text) @@ '検索語'::tsquery)
    -> Bitmap Index Scan on idx (cost=0.00..11492.71 rows=16770 width=0) (actual time=6356.651..6356.651 rows=1133683 loops=1)
      Index Cond: (to_tsvector('japanese'::regconfig, text) @@ '検索語'::tsquery)
Total runtime: 64263.331 ms

696 :NAME IS NULL:2010/10/07(木) 12:37:33 ID:???
LIKE だと何秒?

697 :NAME IS NULL:2010/10/07(木) 13:14:17 ID:???
>696
Likeだと、どんな検索語投げても約50秒ですね。
textserch_jaのインデックス使うと、
該当レコードが少ない場合0.1秒未満で帰ってくるので
さすがにシーケンシャルだと辛い感じです。

698 :NAME IS NULL:2010/10/07(木) 14:52:34 ID:???
1分より50秒の方が速いけど、満足でないということ?

699 :NAME IS NULL:2010/10/07(木) 15:41:39 ID:???
力技だけど、
SSDで解決できそうな気がする

700 :NAME IS NULL:2010/10/07(木) 15:46:16 ID:???
>698
説明の仕方が悪くてすみません。

Like使って検索する場合「検索語A」も「検索語B」...「検索語Z」もすべて約50秒かかりました。
ts_vector使って検索する場合「検索語A」では0.1秒、「検索語B」では60秒かかります。

検索語は大量にあるので、
「検索語A」や「検索語B」のような極端なものばかりでもなく、
ほとんどの検索語は、ts_vectorで検索すると
だいたい10-20秒くらいで実行できます。

それが695のクエリなんですが、
この状態が限界速度なのか、
設定やクエリに工夫がないだけなのか。
そのあたりが知りたい感じです。

701 :NAME IS NULL:2010/10/07(木) 19:40:35 ID:???
詳しくないからわからないけど、ソフト的には限界なのかもね。
PostgreSQLフォーラムに聞いた方がいいかもね。

702 :NAME IS NULL:2010/10/07(木) 19:59:35 ID:???
http://www.postgresql.jp/document/9.0/html/textsearch-tables.html
にあるとおり、

ALTER TABLE T ADD COLUMN textsearchable_index_col tsvector;
UPDATE T SET textsearchable_index_col = to_tsvector('japanese', coalesce(text,''));
CREATE INDEX textsearch_idx ON T USING gin(textsearchable_index_col);
として、
SELECT count(id) FROM T WHERE textsearchable_index_col @@ to_tsquery('japanese','検索語');
としたらどうなる?
もし、idはNULLにならないのであれば、
SELECT count(*) FROM T WHERE textsearchable_index_col @@ to_tsquery('japanese','検索語');
とすると、またすこし違うかもしれない。


703 :NAME IS NULL:2010/10/07(木) 20:04:35 ID:???
>>692
よく分からんがl、8.4.5のChangesに
・Fix incorrect search logic for partial-match queries with GIN indexes (Tom Lane)
Cases involving AND/OR combination of several GIN index conditions didn't always give the right answer, and were sometimes much slower than necessary.
なんてのがある。8.4.5で試してみたら?

704 :NAME IS NULL:2010/10/07(木) 23:38:07 ID:???
数年前やったときは、Ludiaを使ったな

705 :NAME IS NULL:2010/10/08(金) 10:23:08 ID:???
ludiaで検索したら8.3以降は使えないみたいだけど、textsearch_sennaってのが組み込めるようだ


http://neta.ywcafe.net/000960.html
http://neta.ywcafe.net/001049.html

706 :NAME IS NULL:2010/10/08(金) 10:55:52 ID:???
いろいろありがとうございます
>699
力技ですが、確かに効果はありそうですね
ディスクとしての信頼性が少し怖いですが。
>702
情報ありがとうございます、
一度実践してみますが、少々時間がかかりそうです。
また、報告に参ります。
>703
ありがとうございます。
バグですか、でもまAndOrも使わないシンプルな状態ですので、
とりあえずは関係なさそうです
>704-705
Ludiaも選択肢だったんですが、出来上がるファイルサイズが馬鹿でかかったのと
昔Tritonn(Mysql+Senna)で同じようにスピードで悩んでたので、
今回はTextSearch_jaにしてみました。
スピードに関してはあまり変わりませんでしたけどw


707 :NAME IS NULL:2010/10/09(土) 00:19:49 ID:???
逐次検索したいのに、そこまで時間が掛かるようだったら、luceneやsphinxなどを使うしかないような。

708 :NAME IS NULL:2010/10/11(月) 11:05:07 ID:???
やっぱり8.4.5→9.0.1でも遅くなってしまうクエリがあるみたいだな

709 :NAME IS NULL:2010/10/14(木) 18:38:08 ID:???
大きなテーブルをSelectすると

ERROR: メモリ不足です
DETAIL: サイズ471989501の要求に失敗しました

っていうエラーが出るんだけど、
これって設定ファイルのどの項目いじれば限界容量上げれますか?

それとも小分けにするしか方法がない?

710 :NAME IS NULL:2010/10/14(木) 19:16:57 ID:???
すこしずつFETCHする以外にないんじゃないかな。


711 :NAME IS NULL:2010/10/14(木) 21:04:50 ID:???
set FETCH_COUNT
だっけ

712 :NAME IS NULL:2010/10/20(水) 21:30:17 ID:cd5KjE//
初心者です

CSEでpostgresqlに接続するとシステムテーブルが表示されユーザ定義テーブルにアクセスできません。
ユーザ名、パスワード、データベース名は間違いないと思います。
サーバ名をlocalhost
ポートを5432
としているのですが、どうすれば自分で定義したテーブルにアクセスすることができるでしょうか

713 :NAME IS NULL:2010/10/20(水) 22:26:53 ID:???
CSEて、Common SQL Enviroment?
昔はSQL崩しで多少お世話になってた気がするけど、また懐かしいなそれはw

714 :NAME IS NULL:2010/10/20(水) 22:31:33 ID:cd5KjE//
>>713
そうです

715 :NAME IS NULL:2010/10/21(木) 00:10:25 ID:???
そもそもなんでCSEなんて使うのか

716 :NAME IS NULL:2010/10/21(木) 11:47:17 ID:???
ODBCドライバどうしてる?
pgAdminIIIじゃいかんの?

717 :NAME IS NULL:2010/10/21(木) 12:35:11 ID:???
>>716
CSE知らないのに明後日なアドバイスするのってどうなの?

>>712
権限設定が不明なんでアドバイスしようがない

718 :NAME IS NULL:2010/10/21(木) 12:54:07 ID:???
>>717
CSE使ってたよ。ODBC接続もサポートしてるからどうしてるか聞いたんだよ

719 :NAME IS NULL:2010/10/21(木) 12:56:12 ID:???
つーか、昔はPostgres対応してなかったし
バージョンの違いでうまくいかないようならODBCはさんで試してみるのも手だよ

720 :NAME IS NULL:2010/10/21(木) 21:47:40 ID:G5GCo38y
>>716
有難うございます

ODBCだと問題ないのですが、直接つなぐとシステムテーブルのみが表示されるのです
ODBCで済ませることもできるのですが、なぜ直接つなぐと自分が作ったテーブルに
アクセスできないのかと思いまして・・・

721 :NAME IS NULL:2010/10/21(木) 21:54:36 ID:???
cseからCREATE TABLEしたらODBCからは見えるの?

722 :NAME IS NULL:2010/10/21(木) 22:54:36 ID:G5GCo38y
>>721
見えます

723 :NAME IS NULL:2010/10/22(金) 00:39:19 ID:???
CSEでのログインロールにテーブル見る権限がないくらいしか
考えられないけど、ODBCの時と別のユーザーにしてないよね?

724 :NAME IS NULL:2010/10/22(金) 10:26:25 ID:???
CSEの未対応とかバグじゃないの。
1.59からぜんぜんバージョンアップしてないし。

自分は、CSE使えなかったから、pgAdminIII を使うようになった。
pgAdminIIIもバグあったり、使いづらい部分もあるけどね。

725 :NAME IS NULL:2010/10/22(金) 15:02:24 ID:???
つか、CSEでも問題なく使えてるけどな。
そして、一応最新版は1.60betaだ。
1.59に差し替えてみたけど、テーブルは見えたな。
各バージョンとか何も書いてないので回答はスルー。

726 :712:2010/10/22(金) 20:20:58 ID:9SqnX56B
皆さん有難うございます
CSEのバージョンは1.59です
CSEは昔から漠然と使っており、直接つなぐと自分で定義したテーブルを
見ることができないことに釈然としない思いでいました
pgAdminIIIをインストールしてみます

727 :706:2010/10/26(火) 13:32:24 ID:???
>702

遅くなってすみません。
先日、テーブル構築が終了しました。

結論から申し上げますと、
countに関する速度的な差は、やはり、全権読み込んでカウントしているらしく
あまり変わりませんでした。

ただ、検索そのものについては、速度が上がったと思います。
(行数など100万件ほど増えているので正確な結果はわかりませんが)

いろいろありがとうございました。


728 :NAME IS NULL:2010/10/29(金) 17:52:05 ID:NxxWaUov
FreeBSDで8.4を使っていますが、psqlとか使ったときのエラー出力とか
logへの出力が文字化けして読めません。
nkfでフィルタさせても化けたまま・・・

createdbするときのエンコードとかはUTF8で正しく設定されており、
クエリーそのもの内容は2バイト文字があっても正常に出てきます。
端末のlocale設定などをいろいろいじってみたんですが何をやっても
ダメで、ググった結果をいろいろ試しましたが何れも効果はなし。

同じような症状が出てる方います?

729 :NAME IS NULL:2010/10/29(金) 18:51:12 ID:???
とか
いろいろ

730 :NAME IS NULL:2010/10/30(土) 12:36:29 ID:???
>>728
FreeBSDのgettextとかlibiconvが正しく使えていないのかも。
FreeBSD+PG+日本語の組み合わせってちゃんと検証されていない気がする。

731 :NAME IS NULL:2010/10/30(土) 19:48:22 ID:???
portsから入れたら普通大丈夫だと思うがソースから独自に入れたのならガンバレとしか

732 :NAME IS NULL:2010/11/01(月) 13:48:19 ID:5GELdooG
PG8.4の内部って日本語ローカライズされてたっけ?
ubuntu 10.04で使ってるけど、エラーメッセージとかは英文でしか出なかったような

733 :NAME IS NULL:2010/11/01(月) 16:26:19 ID:???
えっ

734 :NAME IS NULL:2010/11/02(火) 18:32:50 ID:???
270 名前:名無しさん@お腹いっぱい。[] 投稿日:2010/10/04(月) 22:21:37
日テレ実況で醜態(ドラマQ10編)


62 名前:名無しさんにズームイン![] 投稿日:2010/10/04(月) 22:12:05.58 ID:upo9Qhxc
前田は絶対可愛くない

69 名前:名無しさんにズームイン![sage] 投稿日:2010/10/04(月) 22:12:09.92 ID:cvvsZm0r
ぶせぇええええええええええええええええええ

70 名前:名無しさんにズームイン![sage] 投稿日:2010/10/04(月) 22:12:10.05 ID:BL/CmGso
目が寄ってませんか?

72 名前:名無しさんにズームイン![] 投稿日:2010/10/04(月) 22:12:10.23 ID:a4h8fkP5
佐藤健のがかわいいとか

80 名前:名無しさんにズームイン![] 投稿日:2010/10/04(月) 22:12:18.74 ID:EViLFotq
パーツ中心顔きたあああああああああああああああ

82 名前:名無しさんにズームイン![sage] 投稿日:2010/10/04(月) 22:12:20.02 ID:IxfDeVPe
近くで見るとブス

83 名前:名無しさんにズームイン![sage] 投稿日:2010/10/04(月) 22:12:20.13 ID:fjGOXJJN
前田って受け口じゃね?

86 名前:名無しさんにズームイン![] 投稿日:2010/10/04(月) 22:12:21.85 ID:dpxDw34Y
顔のパーツが真ん中に寄ってる

95 名前:名無しさんにズームイン![] 投稿日:2010/10/04(月) 22:12:31.98 ID:Y93mNJzt
前田ぶっさいくだなwwwwww

108 名前:名無しさんにズームイン![sage] 投稿日:2010/10/04(月) 22:12:43.51 ID:98l15f6U
不細工やなー

111 名前:名無しさんにズームイン![sage] 投稿日:2010/10/04(月) 22:12:46.46 ID:RRu3ReRp
顔中心によりすぎ

113 名前:名無しさんにズームイン![] 投稿日:2010/10/04(月) 22:12:46.42 ID:/GNRG4ie
女の子のほうがかわいくない

114 名前:名無しさんにズームイン![] 投稿日:2010/10/04(月) 22:12:48.21 ID:Z0SW1Lom
前田淳子より佐藤健の方がかわいいw

116 名前:名無しさんにズームイン![] 投稿日:2010/10/04(月) 22:12:49.15 ID:u+TWJZmG
この前田って娘はどこが可愛いのですか?

120 名前:名無しさんにズームイン![sage] 投稿日:2010/10/04(月) 22:12:51.51 ID:OLrv4ZqS
こいつAKBなのかwwwwwww

121 名前:名無しさんにズームイン![sage] 投稿日:2010/10/04(月) 22:12:51.56 ID:+11HV6fR
パーツ寄り子

735 :NAME IS NULL:2010/11/03(水) 14:28:32 ID:???
>>728
ダンプをリストアしたときに表示される内容が化ける問題と同じような気がする。
表示上は化けててもDBの中身には問題ないけど。

736 :NAME IS NULL:2010/11/05(金) 10:07:28 ID:???
jdbcドライバを見てて思ったのですが、
postgresql-8.3-603.jdbc3.jarのように、完全にDBのバージョンにドライバのバージョンも合わせないと動かないものなのでしょうか?
実際これでPostgreSQL8.4と問題なく通信しています。

737 :NAME IS NULL:2010/11/08(月) 08:36:46 ID:???
>>736
基本的に新しいJDBCなら古いサーバに繋がる。
むしろサーバのバージョンに関係なく新しいJDBCを使うのが良いと聞いたことがある。
ただ、JDBCのバージョン間の挙動に互換性が無い場合があるので、
メンテナンスならドライバのメジャーバージョンは上げないほうが良いかもしれないが。

738 :NAME IS NULL:2010/11/13(土) 06:48:21 ID:???
8.4から9に移行しようかと思うけど
データはそのまま使えないの?

739 :NAME IS NULL:2010/11/13(土) 09:34:15 ID:???
>>738
ttp://www.postgresql.org/docs/9.0/static/release-9-0.html
A dump/restore using pg_dump, or use of pg_upgrade, is required for those wishing to migrate data from any previous release.

740 :NAME IS NULL:2010/11/13(土) 11:30:31 ID:???
>>739
I got it.

741 :NAME IS NULL:2010/11/19(金) 00:41:54 ID:???
XenのゲストOS(CentOS5.5)上にpostgre7.4.30を入れてみた。
postgreSQL7.4.30をtcp/ipを使用して接続しようとしてみるけど、ポートが開放されてないといわれる。
ポート番号を5433に変更して起動したら、netstat -lでは開放されているように見える。
でも、外からは接続できない。
ポート番号を5432に戻して起動したら、やっぱりnetstat -lでは開放されているように見える。
でも、外からは接続できない。
ファイアーウォールは無効状態だし、postgresql.confもpg_hba.confも何度も見直した。
外から繋ぐ時も、ポート指定している。
何か設定が間違っていないか、アドバイス頂きたい。

742 :NAME IS NULL:2010/11/19(金) 02:21:55 ID:???
>>741
素人的な書き方ですまないけれど、

クライアントホストからネットワーク的に到達できているか確認する(pingとか?)
listenしているnicに到達しているかをみてみる(0.0.0.0でlistenしているなら関係なし)
SELinux、ipchainを改めて確認する

あたりを、やってたとしても、改めてやってみてはどうでしょうか。
あと、ゲスト上でpsql -p 5432で繋がるか確認してみるとか。

743 :NAME IS NULL:2010/11/19(金) 02:49:18 ID:???
postgresql.confのlisten_addresses = '*'じゃないの?

744 :NAME IS NULL:2010/11/19(金) 02:59:40 ID:???
ちゃんと *:5432 で listen してるか確認して、
telnet localhost 5432 が繋がるか確認して、
telnet (自分のIP) 5432 が繋がるか確認して、
最後に外部から telnet (ターゲットのIP) 5432 が繋がるか確認すれば、
大雑把に切り分けられるんじゃないだろうか。

745 :NAME IS NULL:2010/11/19(金) 05:09:06 ID:???
SELinuxに一票

746 :NAME IS NULL:2010/11/19(金) 21:49:47 ID:???
ネットワークまわりだと、知っているのは、iptables --list の確認や
route みたりifconfigでGATEWAYが設定されているか
ping , tracepathの疎通や
ssh やhttpサーバ動かして繋がるか
ぐらい
selinuxは、1番影響がないのはpermissiveかな



747 :NAME IS NULL:2010/11/19(金) 21:52:44 ID:???
自身から、psqlで127.0.0.1やethのIPアドレスで繋がるの?

748 :741:2010/11/19(金) 23:10:33 ID:???
皆のおかげで、原因がみつかった。
postgreSQLの起動オプションに「-h 127.0.0.1」なんて爆弾を仕込んでやがった
Pacemakerで起動してたから、起動オプションまで頭が回らなかったよ。
みんなありがとう。

749 :NAME IS NULL:2010/11/19(金) 23:28:22 ID:???
爆…弾…?まるでその設定が悪であるかのような。。。恐ろしいことをいうね。

750 :NAME IS NULL:2010/11/19(金) 23:46:36 ID:???
むしろ741が爆弾。

751 :NAME IS NULL:2010/11/20(土) 00:55:30 ID:???
そんなの netstat の出力見たら一発じゃねーか。やっぱり 741 が爆弾か。

752 :NAME IS NULL:2010/11/21(日) 16:43:01 ID:???
http://logo.coresv.net/

753 :NAME IS NULL:2010/11/21(日) 19:02:23 ID:???
それほど741を責めることもないと思うけどな。
勝手に設定を上書きする Pacemaker の文化?作法?は、
あんまり褒められたものではない気がするぞ。

754 :NAME IS NULL:2010/11/22(月) 11:08:08 ID:???
ごめん意味がわからないんだが、外のマシンからpsql -h <server>とやるのに
強制的に「-h 127.0.0.1」となるような設定がされているの?

755 :NAME IS NULL:2010/11/22(月) 11:21:26 ID:???
http://hg.clusterlabs.org/pacemaker/stable-1.0/file/e5c2b1d937ac/resources/OCF/pgsql
これのことなのか?

756 :NAME IS NULL:2010/11/23(火) 04:14:45 ID:???
「これらの列の要素は重複を許さない」
って制約はどう設定するのですか?

757 :NAME IS NULL:2010/11/23(火) 04:23:30 ID:???
列1 <> 列2

758 :756:2010/11/23(火) 04:23:32 ID:???
行単位でです

o1 o2 o3
--------
2  2 9

入力時点で、ダメ!みたいな



759 :NAME IS NULL:2010/11/23(火) 04:30:29 ID:???
>>757
列が2個の場合それでいけますね

n個の場合どう対応すれば良いのでしょうか?

760 :NAME IS NULL:2010/11/23(火) 05:44:19 ID:???

列1 <> 列2 and 列2 <> 列3

761 :NAME IS NULL:2010/11/23(火) 05:53:22 ID:???
>>760
列1 <> 列2 and 列1 <> 列3 and 列2 <> 列3
が正しいと思います

列が少なければ根性で入力可能です
しかしもっと増えるとリーグ戦の表の半分の入力回数になります
これはO(n^2)だと思うのでちょっと現実的とは言えません

762 :NAME IS NULL:2010/11/23(火) 07:25:19 ID:???
設計がゴミ

763 :NAME IS NULL:2010/11/23(火) 07:35:57 ID:???
その列に何が入ってんの?ってか、途中から名前なくなってるけど質問者でいいのかな

764 :756:2010/11/23(火) 08:05:45 ID:???
>>763
はい。
LOTO6の出玉の記録を(順番付きで)とってます
同じ回で同じ番号は出現し得ませんよね
少なくともダブった入力ミスを省きたくて
まあボーナス番号含めて7つですから
根性で実装できちゃったんですけどね

スマートにやりたいなと

765 :NAME IS NULL:2010/11/23(火) 08:39:36 ID:???
抽選通番、出た順の連番、出た数字
pkey(抽選通番、出た順の連番)
unique(抽選通番、出た数字)

766 :756:2010/11/23(火) 09:01:09 ID:???
>>765

inning o1 o2 o3 o4 o5 o6 bonus
  506 27 39 21 11 5 37 26

みたいなテーブルなんですが
出た順の連番フィールドと出た数字フィールドの違いが判りません><

767 :NAME IS NULL:2010/11/23(火) 09:03:27 ID:???
506 1 27
506 2 39
506 3 21
506 4 11
506 5 5
506 6 37
506 7 26

768 :NAME IS NULL:2010/11/23(火) 09:04:54 ID:???
意図があって非正規化してるならそれでもいいけど、そうじゃないならとりあえず正規化してみたらどう、という意見でした。

769 :756:2010/11/23(火) 09:21:23 ID:???
アナル!そこまで冗長に作るんですか!?
inning out result
  506  1 27
  506  2 39
  506  3 21
  506  4 11
  506  5 05
  506  6 37
  506  7 26


inning × out をプライマリキーにすると
inning × result をユニーク制約にすると

あ、データベース触るの初めてです^^

770 :769:2010/11/23(火) 09:26:02 ID:???
おkコツが分かったお〜〜(^ω^)サンクスコ

771 :NAME IS NULL:2010/11/23(火) 09:28:10 ID:???
アナル?

772 :756:2010/11/23(火) 09:31:37 ID:???
524行も打ち込んだのにこれを
正規化するのかぉ(´;ω;)

うまく楽する方法ありますか?

773 :756:2010/11/23(火) 17:29:15 ID:???
ふひぃ〜〜(^ω^;)
やっと正規化できた
VIEWとやらを作ってからINSERTで流し込んだ

英語マニュアルと悪戦苦闘して
pg_enumとかも迷い込んで
大冒険だった

取り敢えず助かりました
あり^^

774 :NAME IS NULL:2010/11/23(火) 19:37:21 ID:???
初心者にありがちなExcel感覚でテーブルを直接エンティティに対応付けただけのDB設計。
さてどうなることやらと眺めていたけど、正規化の指摘で素直に理解できてるじゃん。
珍しく好感の持てるヤシだった。DBは初めてかもしれんが素人じゃないね。(チラシ裏柿

775 :NAME IS NULL:2010/11/24(水) 05:49:29 ID:???
select insertですんだんじゃないか?というのはさておき、おつかれさん。

776 :NAME IS NULL:2010/11/24(水) 07:52:17 ID:???
せっかくPostgreSQLなら配列という手もあった気もする。

777 :NAME IS NULL:2010/11/24(水) 11:12:45 ID:???
配列っていつも使おうとしてやめるんだけど、みんな使ってるのかな。
今回のみたいなユニーク制約もつけられるのかな。

778 :NAME IS NULL:2010/11/24(水) 22:12:40 ID:???
素人ならなおさら配列なんて使うべきじゃないな。

779 :NAME IS NULL:2010/11/25(木) 12:56:51 ID:???
配列ってCOBOLのOCCURRENCESみたいで嫌w

780 :NAME IS NULL:2010/11/27(土) 06:55:12 ID:???
縦横の表が頭にイメージされちゃってて、
配列っていうイメージがすぐに沸かない。
よって、使った事ないな。

(PHPで配列型をハンドリングできるのかな・・・)

781 :NAME IS NULL:2010/11/27(土) 13:44:24 ID:???
配列使い始めたら、ERがテーブル内に出来上がって、それなら
ORDB•XMLDB•ドキュメント指向KVS(MongoDBやBigTable?)とか使った方がいいんじゃね?ってなりそうだな。

でもEnumとかは、使いたい気がする。

782 :NAME IS NULL:2010/11/27(土) 14:14:03 ID:???
配列速いという話も見かけたので、局所的に注意深く使う程度がいいのかなー

783 :NAME IS NULL:2010/11/29(月) 11:04:41 ID:???
>>728
亀レスだけど、エラー出力メッセージを日本語にする必要がなければ
postgresql.confの「LC_MESSAGES」を'ja_JP.UTF-8'じゃなくて'C'にすると
幸せになれるかもしれない。
http://www.postgresql.jp/document/8.4/html/locale.html

784 :NAME IS NULL:2010/11/30(火) 08:13:04 ID:???
すみません教えてください。

date型式のデータを取得すると YYYY-MM-DD とハイフンでつながれますが、
これをデフォルトで YYYY/MM/DD とスラッシュで区切りたいのですが、
どのように設定したらよいのでしょうか?

785 :NAME IS NULL:2010/11/30(火) 10:09:31 ID:???
>>784
SET datestyle TO SQL,YMD;
で、いけるかと思ったが、手元のバージョンじゃ11/30/2010のMDYで表示されたわ。
postgresql.confを書き換えたらYMDで表示されるのかな?
datestyleでググって、あとは試してみて。

786 :NAME IS NULL:2010/11/30(火) 18:47:38 ID:???
>>785
ありがとうございます。調べてみます。

787 :NAME IS NULL:2010/11/30(火) 22:35:41 ID:???
PostgreSQL 8.4を使っています。
一台のサーバで何人かで各自好きに独自にDBを作っています。
psql -lすると、全員のが見えてしまいますが、
自分が作ったDBだけ見えるようにするにはどうしたらいいでしょうか。


788 :NAME IS NULL:2010/11/30(火) 23:45:55 ID:???
>>787
DBのインスタンスを分けないと無理。
ログインはできないはずだから、DB名が見えるのは気にしないのが吉。

789 :NAME IS NULL:2010/12/01(水) 22:21:15 ID:???
フリーのDBで一番マニアックな要求に堪えるのはPostgreSQLで良いんですよね?

790 :NAME IS NULL:2010/12/01(水) 22:37:50 ID:???
あなたがそう思うならそれでいいんじゃないすかね。

791 :NAME IS NULL:2010/12/02(木) 00:04:16 ID:???
マニアックな要求が何かよく分からないからなんともいえないというのが正解では?

792 :NAME IS NULL:2010/12/02(木) 06:18:27 ID:???
PostgreSQL 9.0.1のインストールの途中で止まってしまいます。
インストールの最後の
 「クラスタの初期化中...数分お待ちください」
の箇所です。

Ver 8.4.5のインストールは問題なくできます。
解決方法が分かる方いましたら教えてください。

なお、Cドライブのスキャンディスクは行いました。

793 :NAME IS NULL:2010/12/02(木) 06:20:38 ID:???
そうですか
それは大変ですね

794 :792:2010/12/02(木) 06:42:26 ID:???
792ですが、

>Ver 8.4.5のインストールは問題なくできます。

今、再度やったらインストールできなくなっていました。
以前は出来ており、アンインストールしてからインストールしたら
できなくなってしまったようです。

申し訳有りませんが、792の質問は撤回し、

 PostgreSQLをアンインストールして再度インストールすると、
 インストールの最後で止まってしまう。

この解決方法が分かる方いましたら教えてください。

795 :NAME IS NULL:2010/12/02(木) 09:15:13 ID:???
chkdsk /Fは?

796 :NAME IS NULL:2010/12/02(木) 12:04:18 ID:???
エスパーだけどOSのポスグレのアカウント削除しろ

797 :NAME IS NULL:2010/12/02(木) 14:52:40 ID:???
ああなんか見覚えあるなその事象

798 :NAME IS NULL:2010/12/02(木) 16:58:16 ID:TJNe4aq7
WindowsのPostgreSQLにあるデータをLinuxのPostgreSQLに移したいのですが、どうすればよいでしょうか?
データベースのサイズは100GBほどです。


799 :NAME IS NULL:2010/12/02(木) 17:40:47 ID:???
dump restoreじゃだめかな。

800 :NAME IS NULL:2010/12/02(木) 17:43:53 ID:TJNe4aq7
それでやります。
PgAdminIIIからダンプ開始しました。ありがとうございました。


801 :NAME IS NULL:2010/12/02(木) 18:02:59 ID:???
なんとなく気持ち的にはlinux側からネットワーク越しにwindowsのをdumpしたいかなぁ。
てか、100GBっておおきいね。ラージオブジェクトとか使ってるのかな。

802 :NAME IS NULL:2010/12/02(木) 22:58:39 ID:???
>>788
ありがとうございます

803 :794:2010/12/04(土) 13:03:16 ID:???
何度もすみません。

PostgreSQL 8 をアンインストールして再度インストールすると、
インストールの最後「クラスタの初期化中。。。」で止まってしまいます。
(Windows版です)

上(795, 796)で教えていただいた、スキャンディスク・デフラグ・Postgresアカウントの削除
をやってみましたがダメでした。

何か解決方法をご存知の方いましたらご教授お願いいたします。
試す価値のありそうなアドバイスなどでも結構です。

よろしくお願いします。

804 :NAME IS NULL:2010/12/04(土) 17:20:22 ID:???
>>803
よくある事象なら煽りでもヒントくらいのレスはある。
それが無いなら余程レアケースなんだろ。

レアケースの場合は詳細な環境を書いてもレスは付かない事あるんだから、
そんな質問の仕方でレスが付くと思わないほうがいい。

805 :NAME IS NULL:2010/12/04(土) 18:04:52 ID:???
>>803
DOS窓から直接initdbしたら何かエラーメッセージが出てくれるんじゃないかな?
Windows(の何?) で動かすときのアカウントに注意な。

806 :NAME IS NULL:2010/12/04(土) 18:09:21 ID:???
インストールディレクトリにゴミが残ってて再構築に失敗するんじゃないの?
別ディレクトリにするか、削除してしまうとか。
あとはPostgresのバージョンを落としてみるとか、いっそ7を試しにいれてみるとか。

807 :NAME IS NULL:2010/12/04(土) 18:30:29 ID:???
>>803
PostgreSQL 8.4.5アンインストール後にPostgreSQLフォルダを削除せずに
PostgreSQL 9.0.1をインストールしようとしたと見ました。
今のPostgreSQLフォルダは8.4.5から見ても9.0.1から見てもおかしな状態なのでしょう。
アンインストール後にPostgreSQLフォルダを削除してから再インストールしてください。

http://www.yaskey.cside.tv/mapserver/pgis/pgsql_other.html
>このページで解説している環境
> * WindowsXP SP2
> * PostgreSQL 8.0.2 / PostGIS 0.9
>■ PostgreSQLのアンインストール
>  PostgreSQLフォルダは削除されませんので、手動で削除する必要があります。

http://www.postgresql.jp/PostgreSQL/9_0/9_0_1
>バージョン9.0.xより前のリリースからデータの移行を行うためには、
>pg_dumpを使用したダンプ、リストアが必要です。
>バージョン9.0.0で作成したデータベースクラスタはそのまま利用が可能です。

808 :NAME IS NULL:2010/12/05(日) 19:49:31 ID:???
>>803
よくあるのは「管理者として実行」してないことかな。
古いインストーラだと自動昇格してくれなかった気がする。
あとは postgres ユーザのパスワード違いとか。

「クラスタの初期化中」ってことは、バイナリはインストールされている
はずだから、>>805 のとおり手作業のinitdbでチェックすると良さげ。

809 :NAME IS NULL:2010/12/05(日) 21:40:53 ID:???
Windowsで7入れるとかネタだろ

810 :NAME IS NULL:2010/12/06(月) 01:23:22 ID:???
初心者におすすめの書籍おせーて


811 :803:2010/12/10(金) 05:06:38 ID:???
>>805, 806, 807, 808
レスありがとうございました。
教えていただいた事を参考にさせていただき、次の事をやってみました。

・HDのチェックディスク、最適化。
・postgresユーザの削除。
・PostgreSQLディレクトリの削除
・PostgreSQLレジストリの削除(2箇所)
・PostgreSQLデータディレクトリを別の場所を指定
・AVG Freeというアンチウイルスソフトをアンインストール

これらをやって再度インストールしてもダメでした。
インストールで止まっている最中initdbしてみると、
次のエラーメッセージを表示します。

  データベースシステム内のファイルの所有者は"Owner"ユーザでした。
  このユーザがサーバプロセスを所有しなければなりません。
  データベースクラスタはロケールJapanese_Japan.932で初期化されます。

(WindowsにはOwnerユーザでログインしています)
解決方法お分かりの方、いらっしゃいますか?
WindowsXP、ファイルシステムはNTFS、スタンドアロンです。
よろしくお願いします。

(何度もすみません)


812 :NAME IS NULL:2010/12/10(金) 06:00:39 ID:???
サービスが残ってたりしない?
ファイル名を指定して実行で「services.msc」と入力して、サービス一覧を確認してみて。

813 :NAME IS NULL:2010/12/10(金) 06:30:54 ID:???
>>811
本当にPostgreSQL関連のユーザが残っていないか、
コマンドプロンプトでnet usersして確認してみ

814 :NAME IS NULL:2010/12/10(金) 06:38:28 ID:???
レスありがとうございます。

>>812
サービスは残っていません。

>>813
net users でpostgresは存在しません。
(インストールエラーの度にnet user postgres /delete で消しています)

手詰まりで困っています・・・


815 :NAME IS NULL:2010/12/10(金) 07:28:18 ID:???
仮想マシンいれてLinuxにPostgresいれれw
どうせWindow版なんてまともに動くとは誰も期待してないんだから
インストール出来ないのも親切設計くらいに思ったほうがいい。

816 :NAME IS NULL:2010/12/10(金) 07:50:35 ID:???
エラーメッセージをそのまま解釈すると、
PostgreSQLデータディレクトリのファイルの所有者はOwnerだけど、
postgreSQLのサーバ自体はそれ以外のユーザ(administratorなど)で起動しているんじゃないの?


817 :NAME IS NULL:2010/12/10(金) 10:44:49 ID:???
さてオチは何だろうね。
同じやり方で別のPCにはインストル出来るのかな。

818 :NAME IS NULL:2010/12/10(金) 11:03:36 ID:???
もうVMware入れてLinux入れてその中に入れれば?

819 :NAME IS NULL:2010/12/10(金) 18:49:45 ID:v6WE8fXX
集約関数結果の変遷のクエリはどうすれば良いですか?

id毎にそれまでの平均を出させたい等

id point
1 5
2 10
3 7
4 6

id avg
1 5
2 7.5
3 7.3
4 7

820 :NAME IS NULL:2010/12/11(土) 10:37:03 ID:???
postgres をインスコして初めてのテーブル定義で pgAdminIII が、
"作成先のスキーマが選択されていません"
と言います。publicスキーマは削除して別個に作成してます。
どうすればよいのでしょうか?

821 :NAME IS NULL:2010/12/11(土) 16:15:09 ID:???
>>819
http://www.geocities.jp/oraclesqlpuzzle/pgcon2009-olap.html


822 :819:2010/12/13(月) 07:45:37 ID:???
>>821
ありがとうございました^^

SELECT id, avg(point) OVER ( ORDER BY id )
  FROM the_table;

何でWindow functionって云うんですか?

823 :NAME IS NULL:2010/12/14(火) 12:53:38 ID:???
pgAdminって管理者権限で使うのですか?
データベースのユーザとしてOSにログインしてる時
サーバのリストが出てこないんですが

管理者権限でログインしてる時はサーバ表示問題無いんです

Windows2000 SP4です

824 :NAME IS NULL:2010/12/14(火) 13:25:45 ID:???
Windows版を使ってみたけど、、、エラーメッセージとか酷すぎ。
Linux版は知らんけど、これではとても「商用に」なんて言えたものではない。

825 :NAME IS NULL:2010/12/14(火) 14:23:07 ID:???
んでお前はなんか貢献してんの?

826 :NAME IS NULL:2010/12/14(火) 14:50:19 ID:???
せめてそのひどいと思ったエラーメッセージを教えてあげてくれ。

827 :NAME IS NULL:2010/12/14(火) 16:35:48 ID:???
メッセージが「読めない」人なんだろ.

828 :NAME IS NULL:2010/12/14(火) 18:07:31 ID:???
エラーメッセージがどうひどかったんだろ。
なぜ商用になんて言えないんだろ。

829 :NAME IS NULL:2010/12/14(火) 22:25:50 ID:???
メッセージが英語だったとか文字化けしてたとか言うオチなしな

830 :NAME IS NULL:2010/12/15(水) 00:47:01 ID:???
文字化けします
pgAdminのSQLのエラー時レスポンスとか
ステータスバーのコメントは正しく表示されますのでまあやれてますが

831 :NAME IS NULL:2010/12/15(水) 03:13:48 ID:???
テスト環境でWindows版使ってるが文字化けなんかしたことねえな
と言うか文字化なんて7.xの頃にSoralisでしか経験したことねぇ

832 :NAME IS NULL:2010/12/15(水) 16:34:53 ID:???
pgAdminIII でテーブル作ると、
「クエリーは、350 ミリ秒で結果なしでうまく帰りました。」
とか表示されるのは単語文節訳を組み合わせてるからか?

833 :NAME IS NULL:2010/12/15(水) 18:56:56 ID:???
日本人は見た目や形で判断し易いから、いくら中身が良くてもメッセージやヘルプが貧弱だとそれだけで”選考外”。

834 :NAME IS NULL:2010/12/15(水) 19:32:22 ID:???
メッセージとか、英語のまま使えよw

835 :NAME IS NULL:2010/12/15(水) 20:07:47 ID:???
見た目で選ぶならゾウさん一択でしょ。mysqlがキリンさんを採用したらあぶないけど

836 :NAME IS NULL:2010/12/17(金) 01:38:03 ID:???
9.0 Win版のレプリケーションの設定方法を紹介しているサイトがありますかね?

837 :NAME IS NULL:2010/12/17(金) 06:12:14 ID:???
ひょっとしてenumと
独自にIDと名前で管理する事って同じ?

838 :NAME IS NULL:2010/12/18(土) 01:50:34 ID:???
>>837
効率的には同じ。管理テーブルとJOINしなくても、
名前を自動的にIDに変換してくれることが利点だと思う。

839 :NAME IS NULL:2010/12/18(土) 07:11:52 ID:???
あり^^

840 :811:2010/12/18(土) 13:21:01 ID:???
以前、PostgreSQLをインストールできず質問した者です。
解決しましたので報告します。

【症状】
PostgreSQLのインストールの最後に、「クラスタを初期化中・・・」と
表示したまま停止してしまう。

【原因】
.BAT の拡張子の関連付けに不具合があったためです。
通常、.BATを実行(エクスプローラから.BATをダブルクリック)すると通常DOS窓を開いて
バッチファイルを起動しますが、何もせずに終了してしまう、という状態にWindowsレジストリが
設定されていました。

【対策】
Windowsレジストリを編集し、正常にバッチファイルが起動するようにしました。

【補足】
.BATを実行するとエディタが起動するなどになっていれば直ぐに原因は判ったのですが、何も
せずに終了してしまっていたので、不具合の特定が遅れてしまいました。

お騒がせしてすみませんでした。
この苦労がPostgreSQLの普及や皆さんのお役に立てればうれしいデス。

841 :NAME IS NULL:2010/12/18(土) 13:34:12 ID:???
>>840
詳細報告乙&おめでとう!

842 :NAME IS NULL:2010/12/19(日) 10:54:19 ID:???
解決おめでとう。
それはさすがにエスパーできんかったw

843 :NAME IS NULL:2010/12/19(日) 11:25:13 ID:???
なんでそんなことが起きてんだ。
クラックされてないか?

844 :NAME IS NULL:2010/12/19(日) 14:10:51 ID:???
凄い設定だな

845 :NAME IS NULL:2010/12/19(日) 15:28:33 ID:???
「assoc .bat」でググると、(PostgreSQLと無関係に) そういうことがあるようだ
ちなみに、正常な場合はこうなる:
C:> assoc .bat
.bat=batfile
C:> ftype batfile
batfile="%1" %*


846 :NAME IS NULL:2010/12/19(日) 18:56:01 ID:???
pgAdmin3 で以下のようにテーブルの列にコメントをつけようとすると、

ALTER TABLE tbl_A
ALTER COLUMN "列名1" SET STORAGE ;
COMMENT ON COLUMN tbl_A."列名1" IS 'コメント列名1';

Line2: ALTER COLUMN "列名1" SET STORAGE ;
                      ^

などとエラーになりますが、なぜでしょうか?SQL文を書き込むのではなく、
列のプロパティ・ペインに書き込んでの変更です。

847 :NAME IS NULL:2010/12/19(日) 19:14:16 ID:???
pgAdmin使ってる人はじめて見た。

848 :NAME IS NULL:2010/12/19(日) 22:44:04 ID:???
そんなにpgAdminIIIダメか?

849 :NAME IS NULL:2010/12/20(月) 03:16:25 ID:???
>>847
じゃあ何使えば良いんだよ!?

850 :NAME IS NULL:2010/12/20(月) 14:42:54 ID:???
TeraTerm

851 :NAME IS NULL:2010/12/20(月) 16:02:48 ID:???
俺もpgAdminIII使うよ。
>>847は揚げ足取りかも。

でも、コメントつけるときにそのようなエラーに遭遇したことはないかなー

852 :NAME IS NULL:2010/12/20(月) 20:27:30 ID:???
pgAdminIII最強だろ。

>>847
おまい何つかってんだよw
晒してみろカス
psqlとか言うなよハゲ
phpPgAdminとか言うなよ低脳

853 :NAME IS NULL:2010/12/20(月) 20:48:45 ID:???
CSEとか黒猫とかいうんじゃないの。
もしかしたらアクセス。

854 :NAME IS NULL:2010/12/20(月) 21:44:34 ID:???
俺EclipseのDBViewerかCSE使ってる。さすがにCSEはそろそろなーと思うんだけど
DBViewerはシリアルとか見れないからなあ。
pgAdminはバックアップなんかも簡単にできて機能は最強だと思うけど、
複数DBに繋いだときにSDIだとどのウィンドウのがどのDBのかわかりにくくて
いまいち馴染めないなあ。

855 :NAME IS NULL:2010/12/20(月) 22:22:41 ID:???
>>854
どのDBに接続してるか出てると思うけれど、見てる画面が違うかもしれないのでなんとも。

856 :NAME IS NULL:2010/12/21(火) 00:18:17 ID:???
CSEはPostgreSQLじゃまともに動かんぞ

857 :NAME IS NULL:2010/12/21(火) 00:30:40 ID:???
そう?1.60ベータちゃんと動いてるけど
Oracle使ってもMySQL使っても同じインターフェースってのがいいんだがなあ
SI Object Browserがもうちょっとやる気出してくれたら

858 :NAME IS NULL:2010/12/21(火) 03:39:06 ID:???
ODBCじゃなくてか?

859 :NAME IS NULL:2010/12/21(火) 03:47:43 ID:???
>>858
CSEの話?
857とは別人だけど、1.60beta+libpq.dllで問題なくDBMS:PostgreSQLにて
8.4.6や9.0.2相手に使えてますよ。

860 :NAME IS NULL:2010/12/21(火) 04:44:45 ID:???
SELECTやINSERT流すだけなら使えるよCSEでも
それ以上の事できないけど

861 :NAME IS NULL:2010/12/21(火) 05:05:20 ID:???
>>860
それ以上ってなんだ?

862 :846:2010/12/21(火) 09:07:31 ID:???
>>846 ですが、以下のようなエラーが表示されます。

   ERROR: ";"またはその近辺で構文エラー
   LINE 2: ALTER COLUMN "全地公団コード" SET STORAGE;
^

   ********** エラー **********

   ERROR: ";"またはその近辺で構文エラー
   SQLステート:42601

ちなみに、pgAdminIIIで列にコメントを加えようとしたときの
列プロパティ変更ウィンドウ[SQL]タブには、以下のSQLが表示されてます。

   ALTER TABLE scm_zip.tbl_import
    ALTER COLUMN "全地公団コード" SET STORAGE;
   COMMENT ON COLUMN scm_zip.tbl_import."全地公団コード" IS '全国地方公共団体コード';



863 :846:2010/12/21(火) 09:14:18 ID:???
P.S.
エラー3行目の”^”は”コード”の”コ”の下に表示されてます。
データベースは
エンコーディング:utf8
コーレーション:Jpanese, Japan
文字型:Jpanese, Japan
です。

864 :NAME IS NULL:2010/12/21(火) 14:47:55 ID:???
>>862
サーバ(PostgreSQL)のバージョンは?
少なくとも7系列だったら、そのSQL文は通らないと思うから
対応バージョンがあってないんだと思う。

865 :846:2010/12/21(火) 15:13:26 ID:???
ありがとうございます。バージョンは、
PostgreSQL:9.0
pgAdminIII:1.12.1
です。

866 :NAME IS NULL:2010/12/21(火) 17:00:09 ID:???
以前からとある理由でINDEXの再作成(DROP>CREATE)を定期的に行っていたのだけど、
pgpoolによるレプリケーション+負荷分散の環境にしてから、
DROP INDEXがwaitingで止まったまま動かなくなるようになった。(´・ω・`)

解決方法知ってる方居ましたらよろしくお願いします。

867 :866:2010/12/21(火) 17:01:12 ID:???
postgresのバージョンは8.2です。

868 :NAME IS NULL:2010/12/21(火) 20:15:00 ID:???
REINDEXにしてみるとか。

869 :846:2010/12/21(火) 23:13:35 ID:???
以下の1行 SQL 直打ちで、すんなり列コメントを追加できましたが、不可解。

COMMENT ON COLUMN scm_zip.tbl_import."全地公団コード" IS '全国地方公共団体コード';

870 :NAME IS NULL:2010/12/21(火) 23:40:38 ID:???
>>869
PgAdminの日本語処理(Shift_JIS)に何らかの不具合があるのかな。
サーバ側で全部ログに吐かして、どのようなSQLが発行されていたか
確認したらわかったかも。

871 :NAME IS NULL:2010/12/21(火) 23:41:54 ID:???
pgAdmin使ってる人はじめて見た。

872 :NAME IS NULL:2010/12/21(火) 23:44:07 ID:???
おれは2回目。

873 :NAME IS NULL:2010/12/21(火) 23:54:57 ID:???
テーブルの定義などは便利だと思うけどな > PgAdminV
定義や修正のSQLなんかも見れるから、テスト環境で確認したら
そのSQLを本番サーバのpsqlへ流し込み。
おかげで、ALTER文なんて全然覚えていないや。
クエリーツールがpsql見たいにTabキーで補完してくれると楽なんだけど。

874 :NAME IS NULL:2010/12/22(水) 00:04:12 ID:???
精一杯好意的に受け取って、補完できるけど動きがイマイチよくないよねということだろうか。

875 :NAME IS NULL:2010/12/22(水) 00:47:15 ID:???
>>873 pgAdmin も Ctrl+スペース で補完してくれる。
個人的にはpsqlのほうが好きだけど。

876 :NAME IS NULL:2010/12/22(水) 01:17:27 ID:???
>>875
おっ、出来た。サンクスです。VS等のエディタと同じなのになぜ気づかなかったのだろうw
でも、テーブル名やカラム名は一覧が表示されるが、マウスでクリックしないと選択出来ないのね。
選択肢がひとつしかないところまで打つと残りは補完してくれるのだけれど。あぁ、psqlと同じなのか。

877 :NAME IS NULL:2010/12/22(水) 01:25:58 ID:???
>>876 一覧が表示された後、スペースで選べなかった?
自分もよくEnter押して、失敗するけど。

878 :NAME IS NULL:2010/12/22(水) 01:38:01 ID:???
>>877
何度もスマソ。選べました。
手慣れている分だけpsqlの方が小気味よく使えそうだが、
補完してくれるのならPgAdminVにどっぷり浸かってもいいな。

879 :NAME IS NULL:2010/12/22(水) 01:54:25 ID:???
いや、Tabで補完できるでしょ

880 :NAME IS NULL:2010/12/22(水) 05:25:22 ID:???
>>879
psqlがTabで補完出来るように、PgAdminVのクエリーツールでもできたらいーな。
って話しです。(>>873からの流れで)

881 :NAME IS NULL:2010/12/22(水) 13:23:35 ID:???
PgAdminIIIのクエリツールでTab補完できるけど特殊なんだろうか。

882 :NAME IS NULL:2010/12/22(水) 20:05:49 ID:???
俺のは、psqlもPgAdminIIIもTAB補完なんてしてくれないぞ!?
設定とかあるの?


883 :NAME IS NULL:2010/12/22(水) 20:50:04 ID:???
Postgresql8.4なんですが
shared_buffersに1GB以上指定すると
起動しなくなります。

参考サイト見たら3GBとか設定されてるのをみるので
1GB以上も可能なんですよね?

884 :NAME IS NULL:2010/12/22(水) 21:30:01 ID:???
>883
shmmaxじゃね?

885 :NAME IS NULL:2010/12/22(水) 21:37:06 ID:???
>>883
俺のもそうだよ。
物理メモリのサイズじゃないの?

886 :NAME IS NULL:2010/12/22(水) 21:45:55 ID:???
32bitならそんなもんじゃない?

887 :NAME IS NULL:2010/12/22(水) 22:42:17 ID:???
>>882
テーブル名とか、where句のカラム名とかでできると思うよ

888 :883:2010/12/23(木) 00:25:38 ID:???
>884
>885

説明足りませんでした。すみません
Windows 2008 server R2 64bit
搭載メモリ16GB

タスクマネジャーで通常時の消費メモリ2G弱なので
足りないってことはないと思います。

889 :NAME IS NULL:2010/12/23(木) 00:32:10 ID:???
>>888
>>884もいってるけど、shmmaxじゃないの?

890 :NAME IS NULL:2010/12/23(木) 00:33:26 ID:???
ってWindowsか。ごめん。

891 :NAME IS NULL:2010/12/23(木) 00:35:32 ID:???
http://archives.postgresql.org/pgsql-general/2007-10/msg01115.php
こういうお話があるので、32MBにしたらどうでしょうか。

892 :NAME IS NULL:2010/12/23(木) 00:51:29 ID:???
Windows32ビット版はメモリアクセスが遅いの?

893 :NAME IS NULL:2010/12/23(木) 00:56:50 ID:???
なにと比べてだろう。

894 :NAME IS NULL:2010/12/23(木) 01:08:36 ID:???
Linux32ビット版と比べて

895 :NAME IS NULL:2010/12/23(木) 01:19:01 ID:???
どっからの情報ですか

896 :NAME IS NULL:2010/12/23(木) 04:19:00 ID:???
>>888 OSは64bitでも、PGは32bitなんじゃ?
それだと1-2GBで上限にひっかかるのも無理も無い。
9.0から64bit版があるから、乗り換えてみたら?

897 :NAME IS NULL:2010/12/23(木) 04:48:52 ID:c+uJyMV9
>>895
All evidence I've seen points to that
you should have shared_buffers
as *small* as possible on win32,
because memory access there is slow.

898 :NAME IS NULL:2010/12/23(木) 09:44:30 ID:???
http://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-SHARED-BUFFERS
パフォーマンスを上げたいのではなく、とにかくshared_buffersを大きくしたいだけだったらごめんね。

899 :NAME IS NULL:2010/12/23(木) 12:51:24 ID:???
>>897
Who does write this ?

900 :NAME IS NULL:2010/12/23(木) 17:09:37 ID:AsyKUZ+j
テーブルに格納されているデータがいつ頃INSERTされたか知ることはできますか?
2ヶ月ほど前にINSERTされた可能性が高いのですが、ログはもう流れてしまっており、
なんとか確認できないか手段を探しています。どうかよろしくお願いします。


901 :NAME IS NULL:2010/12/23(木) 17:18:01 ID:???
そんなこともあろうかとタイムスタンプを付けておいたから大丈夫

902 :NAME IS NULL:2010/12/23(木) 17:25:11 ID:AsyKUZ+j
タイムスタンプ?
そんなのが全てのテーブルの各カラムについてるんですか?


903 :NAME IS NULL:2010/12/23(木) 17:27:36 ID:???
ほら、そのレコードの最後のカラムに「最終更新日」があるだろ?

904 :NAME IS NULL:2010/12/23(木) 17:32:56 ID:AsyKUZ+j
ええっ、英語の名前を教えてください。
検索しているのですが、分かりません。

905 :NAME IS NULL:2010/12/23(木) 18:12:23 ID:???
デフォルトでは「最終更新日」列なんて無いよ。
そういう目的のために DEFAULT CURRENT_TIMESTAMP な列を余分に
持っておく設計もあるとは思うけど。何も準備していなかったなら、
残る手段はテーブルのファイルの最終更新時刻を見るか、
xmin を見てトランザクションIDから判断するくらいだろうか。

906 :NAME IS NULL:2010/12/24(金) 03:51:04 ID:???
>>899
Rainer Bauer did write.

907 :NAME IS NULL:2010/12/24(金) 10:41:25 ID:???
>>905
それ、最終更新日に使えるの?
それともnull不可、default指定した列をnullでupdateするとdefault入るのかな。

908 :NAME IS NULL:2010/12/24(金) 11:24:53 ID:???
nullでupdateしたらnull
最終更新日カラムをテーブルの最後にもつのが普通だと思ってたけど、
web屋から入ってきた人にはそうでもないんだろうなあ

909 :NAME IS NULL:2010/12/24(金) 11:48:11 ID:???
普通は「登録日」と「更新日」を確保するんじゃないか?

910 :NAME IS NULL:2010/12/24(金) 12:47:10 ID:???
>>908
not null制約つけてるからnullにはならないと思うんだけど。普通にエラーかね。
登録日ならdefaultで指定してもいいかもしれないけど、>>909のように登録日と更新日を
保持するなら両方ともロジックから設定したほうが分かりやすくていいかな。
web屋だけど。

911 :NAME IS NULL:2010/12/24(金) 13:06:19 ID:???
Webシステムでも最終更新日は普通持つ
Webフレームワークでもデフォでそういう機能あるのが殆ど
RailsとかCakePHPとか

912 :888:2010/12/24(金) 13:25:06 ID:???
なるほど、Postgresqlが32bitだからですか
textsearch_ja使いたいって理由で8.4使っていますので、
解決は無理そうですね。

ありがとうございました。

913 :NAME IS NULL:2010/12/24(金) 13:40:13 ID:???
>>912
違うよ。
読んでないのかな。

914 :888:2010/12/24(金) 17:16:21 ID:???
すみません、URLの先読めてませんでした。
小さいほうが有効なんですね。

ありがとうございました。

915 :NAME IS NULL:2010/12/24(金) 18:44:17 ID:???
小さい方が有効なのとそもそも設定ができないのとでは
意味合いが違うからPostgresが32bitだからでいいんじゃないの?


916 :初心者:2010/12/27(月) 08:19:08 ID:IG6MxVWP
一度決めた列挙型名を変更するクエリを教えて下さい

917 :初心者:2010/12/27(月) 08:24:06 ID:???
自己解決しました

ALTER TYPE name RENAME TO new_name;

918 :NAME IS NULL:2010/12/30(木) 20:23:23 ID:NdZiDxrg
複数のPCから頻繁にアクセスがあるDBで、印刷や閲覧のみの用途に一時テーブル作ってるが変かな?

919 :NAME IS NULL:2010/12/30(木) 20:36:56 ID:???
一度テーブル作ったらしばらく使いまわしてよくて、かつリクエストが結構頻繁にあるならいいんじゃない?
閲覧のリクエストの度に一時テーブル作る外注ならクビにするけど

920 :NAME IS NULL:2010/12/30(木) 20:53:47 ID:NdZiDxrg
じゃ俺クビだわ。

で、どうするの?
CREATE VIEWとか?

921 :NAME IS NULL:2010/12/30(木) 21:01:11 ID:???
リクエストの度にCREATE VIEWもクビだろw

922 :NAME IS NULL:2010/12/30(木) 21:16:43 ID:NdZiDxrg
じゃ、どうすん?

923 :NAME IS NULL:2010/12/30(木) 21:25:45 ID:???
何十年前の人について仕事覚えたんだ
アプリ側のメモり内ですきなようにしろ
そんな事でいちいちDBサーバーのI/O負荷あげんな

DBサーバーはスケールアウトが難しくてスケールアップに
なりがちだからコストが高くなる。DBにはなるべく本業以外させない

924 :NAME IS NULL:2010/12/30(木) 22:12:41 ID:NdZiDxrg
自分の考えで
仕事じゃないんです
ただ、普通はどうしてるのかなと思いまして

925 :NAME IS NULL:2010/12/31(金) 00:01:47 ID:???
CREATE TEMPORARY TABLEでいいんじゃないの


926 :NAME IS NULL:2010/12/31(金) 04:36:18 ID:???
わっふるわっふる

927 :NAME IS NULL:2010/12/31(金) 08:21:41 ID:???
>閲覧のリクエストの度に一時テーブル作る外注ならクビにするけど

俺もこれやってます。
あらかじめビュー作っておく方法もあるけど、DBへの負荷としては一緒だと思う。

928 :NAME IS NULL:2010/12/31(金) 08:51:05 ID:Ws6muYWR
複数のセッションから同時で作成されるんでなければ
TRUNCATEすればいいんでないのかい

同時に作成されるんならしょうがないのかな、
参照用のテーブル先につくっとけないのかね?

929 :NAME IS NULL:2010/12/31(金) 09:25:06 ID:???
大差ない

930 :NAME IS NULL:2010/12/31(金) 09:37:03 ID:Ws6muYWR
>>929
ディスクIO的には大差ないのはわかる
テーブルの生成を常に行わないって意味で書いたんだけど

結局こんなこと考えるのは設計が悪いだけだと思う

931 :NAME IS NULL:2010/12/31(金) 13:36:20 ID:???
>結局こんなこと考えるのは設計が悪いだけ

いろいろなシステムを手がけると、いろんな問題が出る。
設計が悪いだけだと断じる貴方は、よほど実務経験が乏しいようだ。

932 :NAME IS NULL:2010/12/31(金) 15:17:44 ID:Ws6muYWR
>>931
つぎはぎだらけでそうなるなら致し方ない面もあると思うけど

結果としては設計が悪いに帰着すると思うが
いかがか?

933 :NAME IS NULL:2010/12/31(金) 15:25:47 ID:???
なんで設計の悪さを認めようとしないのか不思議だなw

934 :NAME IS NULL:2010/12/31(金) 19:21:18 ID:zJ6oCjND
そんな設計の良いのなど見たこと無いが

935 :NAME IS NULL:2010/12/31(金) 19:29:00 ID:Ws6muYWR
いや、あの
設計が悪いから、直せる部分ごっそり直せるんだったら直す
それができないなら次善の策を考える

それだけだと思うけど

936 :NAME IS NULL:2010/12/31(金) 19:59:11 ID:???
SERIAL型をもつテーブルにレコードを挿入したとき、
挿入時に自動付番されたSERIAL型の値を得るにはどうしたらいいの?

エロい人教えてください!

937 :NAME IS NULL:2010/12/31(金) 22:26:24 ID:zJ6oCjND
シーケンス使うとか?

938 :NAME IS NULL:2010/12/31(金) 23:04:02 ID:???
SERIAL型で default を指定した場合、裏で nextval() が自動的に呼ばれるけど
普通のシーケンスと同じように currval() で取得できるよ。
もしくは、INSERT 〜 RETURNING を使えるなら、1回で済む。

939 :936:2011/01/02(日) 06:41:32 ID:???
>>938
INSERT 〜 RETURNING という方法があるんですね。
素晴しい!!!
さっそくマニュアルで調べました。

エロい人ありがとう!!!

940 :NAME IS NULL:2011/01/02(日) 18:35:00 ID:???
.NETのTableAdapterでPostgreSQLに接続したいんですが、
良い方法を知っている方いますか?

要件は

・Win7 64bit
・.NET 2.0
・DataGridViewや各種コントロールにPostgreSQLのデータ(複数テーブル)を以下のように簡単にバインドしたい
 (1)Visual Studioのデータソース構築ウィザードでDataSetを自動生成できる。
 (2)その時、テーブル間の参照制約に従って、DataSet内にリレーションが自動生成される。
 (3)自動生成されたDataSetを、データソース構築ウィザードで編集できる。

というものです。
SQLServer2005 Express(SqlClient)やmdb(OleDb)ではできています。

Npgsqlでは、ウィザードのデータソースの選択肢の中に出てこないため、(1)の時点で挫折しました。
NpgsqlはTableAdapterに対応していない、といった記述も見かけました。

pgODBC経由では、(1)はうまくいったのですが、
(2)リレーションが生成されず、
(3)データソース構築ウィザードで再編集しようとすると、
「データセットの要素[テーブル名]は、データベースにない列を参照しています。」と出て、うまくいきません。
pgODBCに限らず、ODBC経由だとmdbなどでもそうなってしまうようです。

941 :NAME IS NULL:2011/01/02(日) 22:46:38 ID:pX9o7PmA
>>940
初めてC#で開発しましたが
期待を裏切らず、ほぼウィザードは使用できません
・Win7 32bit
・.NET 2.0
・DataGridViewや各種コントロールにPostgreSQLのデータ(複数テーブル)を以下のように簡単にバインドしたい
 (1)ウィザードなんて使えないでしょう
private NpgsqlDataAdapter da = new NpgsqlDataAdapter();
private DataSet ds = new DataSet();
private void FormNumbers_Load(object sender, EventArgs e)
{
da.SelectCommand = new NpgsqlCommand
{
da.SelectCommand = new NpgsqlCommand
(
"select"
+ " id"
+ ", name"
+ " from"
+ " users",
m_conn
);
da.Fill(ds, "users");
手書きでどうぞ。
 (2)自動生成されません。
データセット.Relations.Add
(
new DataRelation
(
"リレーション名","データセット.キーカラム名","データセット.キーカラム名"
)
);
 (3)自動生成されたDataSetを、データソース構築ウィザードで編集できる。
上記のとおりで×

942 :NAME IS NULL:2011/01/03(月) 16:48:17 ID:???
あるレコードが存在するときは、そのレコードをUPDATE
レコードが存在しないときはINSERT
をしたいです。

SELECTして、結果セットがあればUPDATE、なければINSERT
をすればよいのですが、もっとスマートに行う方法は
ありますでしょうか?

1つのSQLでこれが実現できれば、TRANSACTIONでロックする必要が
なくなるため、アプリのコードが単純化され非常にありがたいのですが・・・

よろしくお願いします。

943 :NAME IS NULL:2011/01/03(月) 18:17:15 ID:???
SELECT で特定できるなら、いきなり UPDATE に WHERE つけて実行すればいいんじゃない?
それで存在しない場合は単に UPDATE 0 ってなるだけだから、それを検出して INSERT。
これを 1回で実行できる手順があるなら、俺も知りたいw

944 :NAME IS NULL:2011/01/03(月) 18:37:56 ID:???
>>942-943
ちょっと前に同じような話題がMLに出て、そこの解が書かれてたよ

945 :NAME IS NULL:2011/01/03(月) 19:11:27 ID:???
いい加減 MERGE INTO を正式SQLに採用して欲しいもんだ

946 :NAME IS NULL:2011/01/03(月) 19:20:27 ID:???
最近の規格(SQL:2003?)で採用されてるよ。3大商用DBMSは対応済み。

947 :NAME IS NULL:2011/01/03(月) 20:38:39 ID:???
insert update postgresql で検索するとストアドプロシージャがでてくるな


948 :NAME IS NULL:2011/01/04(火) 02:12:30 ID:???
>>945-946
PostgreSQL 9.0.1文書
http://www.postgresql.jp/document/9.0/html/unsupported-features-sql-standard.html
>D.2. サポートされていない機能
>以下のSQL:2008で定義されている機能は本リリースのPostgreSQLでは実装されていません。
>  MERGE文

PostgreSQLのこれまで、9.0、そしてこれから (25ページ目)
http://www.slideshare.net/ItagakiTakahiro/postgresql90
>PostgreSQL 9.1での計画
>  MERGE:行が存在すればUPDATE、無ければINSERT

949 :NAME IS NULL:2011/01/04(火) 05:05:28 ID:???
こういうプレゼンに書かれるってことは経験的に実装は早くて5年ごってとこだなw

950 :NAME IS NULL:2011/01/04(火) 08:43:24 ID:???
MERGEコマンドは不具合修正中です。
2011/01/15のcommit fest 4に間に合えば
2011/02/20のPostgreSQL 9.1α4に入ります。

http://wiki.postgresql.org/wiki/PostgreSQL_9.1_Development_Plan
>PostgreSQL 9.1 Development Plan
>  January 15, 2011 - February 15, 2011: commit fest 4
>  around February 20, 2011: 9.1alpha4 release
https://commitfest.postgresql.org/action/commitfest_view?id=9
>CommitFest 2011-01 (Open)
>  MERGE command

951 :942:2011/01/04(火) 18:17:02 ID:???
>>943-950
レスありがとうございました。

SQL規格にMERGEコマンドというのがあるんですね!

PostgreSQL 9.1α4に実装されるとのことですが、PostgreSQL 9.1正式版までは
本番には使いたくないので、ストアドで実装することにします。

皆様ありがとうございました。

952 :NAME IS NULL:2011/01/04(火) 22:13:52 ID:???
>>940-941
Npgsqlって、DbAdapter.Update()のとき
.NET側でDateTime型(PostgreSQL側ではdateやtimestamp型)
の列があって、かつ、値が入っているときは
InvalidCastExceptionで実行エラーになるね。
それだけでもうNpgsqlは使えないという結論になりました。


953 :NAME IS NULL:2011/01/05(水) 14:32:40 ID:???
>>952
あほかと

954 :NAME IS NULL:2011/01/05(水) 14:50:32 ID:???
>>952
da.UpdateCommand = new NpgsqlCommand
(
"update table set"
+ " id=:id"
+ ", time_stamp=current_timestamp"
+ " where"
+ " id=:id",
m_conn
);
da.UpdateCommand.Parameters.Add(new NpgsqlParameter(
"id", NpgsqlTypes.NpgsqlDbType.Integer, 0,
"id", ParameterDirection.Input, false, 0, 0,
DataRowVersion.Current, DBNull.Value));
da.UpdateCommand.Parameters.Add(new NpgsqlParameter(
"time_stamp", NpgsqlTypes.NpgsqlDbType.Timestamp, 0,
"current_timestamp", ParameterDirection.Input, false, 0, 0,
DataRowVersion.Original, DBNull.Value));


955 :952:2011/01/05(水) 17:20:05 ID:???
あ、いい忘れたけど、DataSetを使ってDbAdapter.Update(dt)って
した時の話ね。つまりDbCommandBuilderに更新系のコマンドを
自動作成させた場合のNpgsqlのバグの話です。

956 :NAME IS NULL:2011/01/05(水) 18:45:25 ID:???
>>955
もしかしてNpgsqlのせいではないのではないだろうか?

957 :952:2011/01/05(水) 23:23:39 ID:???
>>956
データプロバイダを Npgsql から dotConnect にかえたら
エラーは出なくなりました。
他のDBとプロバイダの組み合わせでも
例えば、
 OracleClient と Oracle
 SqlClient と SQL Server
とかでも出ないですね。



958 :NAME IS NULL:2011/01/05(水) 23:31:42 ID:???
次スレよろ

959 :NAME IS NULL:2011/01/06(木) 19:20:58 ID:???
Slony-I 2.0.6 ってPostgreSQL9.xで使えるよね?
スタックビルダでインストールできないけど@Windows

960 :NAME IS NULL:2011/01/10(月) 15:42:08 ID:???
建てたぉ
PostgreSQL Part.8
http://hibari.2ch.net/test/read.cgi/db/1294641578/

961 :NAME IS NULL:2011/01/12(水) 22:15:00 ID:???
ほす

962 :NAME IS NULL:2011/01/13(木) 00:01:06 ID:???
埋めずに保守なのか

963 :NAME IS NULL:2011/01/13(木) 02:53:07 ID:???
うめしゅ

964 :NAME IS NULL:2011/01/13(木) 10:10:57 ID:???
梅酒

965 :NAME IS NULL:2011/01/13(木) 19:49:40 ID:???
でわ、わたしが!

966 :NAME IS NULL:2011/01/14(金) 23:08:15 ID:???
いやいや、おれが!

967 :NAME IS NULL:2011/01/14(金) 23:44:45 ID:???
いや わたしが

968 :NAME IS NULL:2011/01/15(土) 00:20:31 ID:???
ここは、おいどんが

969 :NAME IS NULL:2011/01/15(土) 13:19:30 ID:???
どうぞ!どうぞ!どうぞ!

970 :NAME IS NULL:2011/01/15(土) 14:49:09 ID:???
ええっ〜!

971 :NAME IS NULL:2011/01/19(水) 20:33:42 ID:Axy8UdDb
なんでこんなに

972 :NAME IS NULL:2011/01/27(木) 00:17:05 ID:???
加曾利杉

973 :NAME IS NULL:2011/01/27(木) 02:29:25 ID:???
そんなに安定してるのか。
MySQLも同じくらいに過疎ってるの?

974 :NAME IS NULL:2011/01/27(木) 11:07:19 ID:OcfKbA07
安定してるよ。ほかのはしらんが。

975 :NAME IS NULL:2011/01/27(木) 12:09:31 ID:???
そろそろゼンリンうざいぞ。
何でもかんでも聞かずに、自分で調べろや。

976 :NAME IS NULL:2011/01/29(土) 11:53:58 ID:???
まぁ、そう言うなって・・・

977 :NAME IS NULL:2011/02/05(土) 04:45:39 ID:WW9mb35q
ビューってデータの実体を持たないって言うけど
その仮想表の記憶領域を結局要するから実体持つじゃん
ペテンだ

それとも閲覧しようとする度に元になったSQL発行して必要な部分だけ見せてるの?違うでしょ
しっかりシステムに記録してるじゃん

要は他のテーブルに依存するテーブルの事じゃん

978 :NAME IS NULL:2011/02/05(土) 05:40:52 ID:wBvA7A3P
>>977
実装のしかたはRDBMSによってどうなるかは異なると思うけど
実体は

>それとも閲覧しようとする度に元になったSQL発行して必要な部分だけ見せてるの?

だよ

979 :NAME IS NULL:2011/02/05(土) 06:24:42 ID:WW9mb35q
>>978
マジで?
じゃあビューって一般にテーブルより重いのね

980 :NAME IS NULL:2011/02/05(土) 06:45:50 ID:???
そうだよ。
だからマテリアライズドビューとかが生まれたわけで。

981 :NAME IS NULL:2011/02/05(土) 10:09:20 ID:???
>>980
あり^^

982 :NAME IS NULL:2011/02/06(日) 10:08:19 ID:eJZDeFPi
Windows版をインストールすると作成されるpostgresアカウントって
何に使うの?

サービス開始と停止はAdministratorアカウントじゃないとどうせ駄目だし
開発者アカウントでもデータベースの閲覧は可能にするし

983 :NAME IS NULL:2011/02/06(日) 10:15:11 ID:???
よくしらんけど、サービスを postgres アカウントで動かしてるんじゃね。
必要なければ root や Administrator では動作させないと言うのは今時普通だと思うが。

984 :NAME IS NULL:2011/02/06(日) 15:58:27 ID:u/f+f7bh
>>982
多分ここらへんの拡張
http://www.postgresql.jp/document/pg902doc/html/extend.html
インストール時に全部または一部自動的にインストールするために
アカウントを作るようにしたものだと思う

9.0のベータ版でははいんなかったけど
リリースしてからはアカウントが自動的に作られるようになってた

985 :NAME IS NULL:2011/02/06(日) 16:27:23 ID:???
>>982
Windowsネィティブ環境でのPostgreSQLのインストールと実行についてのよくある質問とその回答
http://www.postgresql.jp/wg/jpugdoc/faq_windows-ja.html#2.3
> 2.3) なぜPostgreSQLを実行するために管理者以外のアカウントが必要なのですか?
> ハッカーがパッケージ内のソフトウェアの不具合を使用してコンピュータへの取っ掛かりを持った場合、
> ハッカーはそのサービスを稼動しているユーザアカウントの権限を持つことになります。
> PostgreSQLではこうした不具合はまだありませんが、
> ハッカーがPostgreSQLの不具合を見つけ、 それを悪用してシステムをハックしたとしても、
> 損害が最小となるように管理者以外のサービスアカウントの使用を強制しています。

986 :NAME IS NULL:2011/02/06(日) 20:46:09 ID:eJZDeFPi
>>983-985
あ!なんだ管理者権限でログインして
変な小細工せずに普通にサービス開始すれば
勝手にpostgresアカウントで実行されるんですね
今解りました
プロパティのタブをいじくり回せば良かったんだ
パフォーマンスでプロセスを監視に入れてインスタンスの欄に
ちゃんとpostgresって表示されてました

あり^^

じゃあpostgresアカウントってログインするような物じゃないんですね
このアカウントとデータベースの接続パスワードが同じって
良くない事ですか?

987 :NAME IS NULL:2011/02/06(日) 21:47:05 ID:???
>>986
> じゃあpostgresアカウントってログインするような物じゃないんですね

基本的にはそう言うこと。

> このアカウントとデータベースの接続パスワードが同じって良くない事ですか?

セキュリティ的には別にする方が望ましい。
一緒だと、接続パスワード知っててそのサーバーにアクセスできる人はそのアカウントで
ログインできてしまうことになるから。
ただ、そのリスクがどれぐらいあるかはケースバイケースだから一概に駄目とは言い切れ
ない。

もしリスクが高いなら、パスワードは言うに及ばす postgres アカウントの名前を含め
Administrator, Guest 等の既知の名前も類推されにくい名称に変更すべき。

988 :NAME IS NULL:2011/02/06(日) 22:27:04 ID:???
>>987
あり^^

989 :NAME IS NULL:2011/02/06(日) 23:22:22 ID:???
>>987
Very good answer!!

241 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)