PostgreSQL Part.7
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001NAME IS NULL
2009/10/23(金) 21:23:38ID:???●関連サイト
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/
0002NAME IS NULL
2009/10/23(金) 21:25:44ID:???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/
0003NAME IS NULL
2009/10/24(土) 16:51:35ID:???着実にVerUpしているけど、なんかこう今すぐUpしたいって思うような目新しいものがイマイチ無い。
ぼちぼちレプリケーション導入を考えているのだけど、本家(本体)に取り込まないのかな?
バックアップとかその復旧まわりがどの程度充実しているのか、最近ろくすっぽ追っかけていないので、
ようワカランのだが。
0004NAME IS NULL
2009/10/24(土) 16:58:23ID:???レプリケーションは次のバージョン 8.5 で取り込まれる予定。乞うご期待。
バックアップやリカバリは、本体には最低限必要な機能は備わっているので、
後はサードバーティ製ツールの対応次第だね。こっちも本体に取り込まれると嬉しいんだけど。
0005NAME IS NULL
2009/10/24(土) 17:25:18ID:???Slony-I の使い方がよくわからないので、
簡単なレプリケーションが組み込まれるといいな。
バックアップは、
バックアップファイルに対するパスワード化は標準である?
まぁ、ツールがあるし、別にいいけど、
バックアップ中は、CPU負荷が高くなるから、マルチCPUはいるね。
00063
2009/10/24(土) 18:10:39ID:???それは期待して待っていよう。
といっても、それまで放置しておくのもなんなので、pgpoolでお試ししてみるかな。
本体に取り込まれるのは、オリジナル? それとも既存の何かを利用するのかな。
バックアップも、cronによる定期実行程度しかしてない。> 俺
PITRとかちゃんとやんなきゃと思いつつ...。
0007NAME IS NULL
2009/10/24(土) 18:54:13ID:???最初の、pg_start_backup でとったバックアップファイルと、
pg_xlog配下のファイルをミラーリングとかで別にバックアップしておけば、
最新の状態に近い、ホットスタンバイ的な復旧が可能ってこと?
下記を参考にして見た。
http://www.postgresql.jp/document/pg800doc/html/backup-online.html
http://d.hatena.ne.jp/higepon/20090414/1239695524
0008NAME IS NULL
2009/10/24(土) 19:11:27ID:???ログは「archive_command で取っておいたアーカイブログ」が要る。
pg_xlogはアーカイブされていない最新のファイルだけあれば可。
WALが残っている限り故障直前まで復旧できるし、
操作ミスを取り消したいのならば任意の時点で止めることもできる。
0009NAME IS NULL
2009/10/24(土) 19:26:44ID:???ありがとう。
アーカイブログが必要なんですね。
だから、pg_xlog配下のファイルはファイルサイズが一定で小さいままなのか。
ファイル容量の余裕と、PITRのリカバリ復旧の時間が早ければ、使ってみようかな。
0010NAME IS NULL
2009/10/24(土) 20:13:58ID:???SELECT pg_start_backup('dbdata.init.bak');
SELECT pg_stop_backup();
を実行した後、'dbdata.init.bak'が見つからないけど、どこにあるんだろ。出来ているのかなぁ。
0011NAME IS NULL
2009/10/24(土) 20:25:52ID:???テキストファイルの中に、文字として書いてあるはず。
ちなみに、start 〜 stop の間に自分でファイルコピーしないどダメだぞ?
0012NAME IS NULL
2009/10/24(土) 23:49:35ID:???ギリギリ受かった
0013NAME IS NULL
2009/10/24(土) 23:58:56ID:???お〜おめでとう
難しかった?
0014NAME IS NULL
2009/10/25(日) 00:30:10ID:???ありがとうございます。
pg_xlog配下にファイルが作成されていくようにはなりましたが、
recovery.conf によるリカバリーをいろいろ試しましたがうまくいきませんでした。
私の設定が悪いんでしょうね。(^^:
しかし、pg_xlog配下のファイルが意外に大きいので、ファイル容量的にちょっと断念かな。
蓄積していったら、とんでもない容量になりそうだから、試すのもあきらめます。(^^;
リアルタイムのレプリケーションの方がいいかな。
8.5で簡単にできることを期待して、それまで待とうっと。
0015NAME IS NULL
2009/10/25(日) 00:32:18ID:???普段開発やってる人ならそうでもないと思う
普段はpgAdminとか使ってるから管理ツールのコマンド絡みの問題が厳しかったわ
0016NAME IS NULL
2009/10/25(日) 07:02:30ID:???これって 8.0 なの? それとも 8.0〜8.4 全対応って意味なの?
8.x の同士の差って、8.4→8.0 の差と比べても同じくらいはあると思うんだけど。
0017NAME IS NULL
2009/10/26(月) 03:52:18ID:???http://www.sraoss.co.jp/postgresql-ce/courses/silver8-details.html
goldは明記されてないけど、
バージョン間で動作が違うものについては、問題ごとに
「これは8.0で動かすものとする」と注意書きがあった覚えがある。
0018NAME IS NULL
2009/10/26(月) 09:56:00ID:???場違いでしたらスルーしてください。
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を変更しても反映されませんでした。
(他にも設定が必要?)
もしよろしければ教えていただけないでしょうか。
0019NAME IS NULL
2009/10/26(月) 13:52:06ID:???サービスから起動してるなら起動時のオプション確認してみ
0020NAME IS NULL
2009/10/26(月) 18:19:14ID:???確かにサービスの起動オプションに-Dが設定されていて、
それはインストール時のウィザードで設定した
「C:\Program Files\PostgreSQL\8.4\data」でした。
が、結局このオプションをどこで指定しているかがわからないのです。
0021NAME IS NULL
2009/10/26(月) 18:36:33ID:???サービスの起動オプションで設定されているんだと思うよ
0022NAME IS NULL
2009/10/26(月) 19:38:42ID:???dbは、CREATE DATABASE で作成するから、その時のオプションか、それを管理しているファイルなのかな?
0023NAME IS NULL
2009/10/26(月) 19:59:28ID:???0024NAME IS NULL
2009/10/26(月) 20:05:56ID:???0025NAME IS NULL
2009/10/26(月) 20:17:05ID:???スタート→マイコンピュータを右クリック→
管理を選択→サービスを展開→
PostgreSQLっぽいサービスを右クリック→プロパティを選択
○PGDATAを複数持たせたい
ポートを変更する
0026NAME IS NULL
2009/10/26(月) 20:32:20ID:???同じバージョンをポート別にして、インストールできるってこと?
別のバージョンのインストールは、ポート別にしてるけど。
(別にしないとインストールできなかったかな)
0027NAME IS NULL
2009/10/26(月) 20:40:21ID:???0028NAME IS NULL
2009/10/26(月) 20:51:29ID:???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ファイルなども変えて、
多重起動できるのかもね。
0029NAME IS NULL
2009/10/26(月) 21:27:04ID:???0030NAME IS NULL
2009/10/26(月) 21:36:39ID:???インストールは1回でいいよ。pg_ctl start -D <場所> を2回たたくだけ。
サービスで起動するなら、<場所> を変えたサービスを2回登録するだけ。
0031NAME IS NULL
2009/10/26(月) 22:23:04ID:???サービスのプロパティ画面からオプションを「指定」できますか?
0032NAME IS NULL
2009/10/26(月) 22:31:44ID:???パラメータの変更はできなかった気がする。
pg_ctl unregister & register で再登録すべし。
0033NAME IS NULL
2009/10/27(火) 15:31:31ID:???split_codes という returns text[] な関数があるのですが、
別のplpgsql関数内で codes text[] という変数に対し
codes := split_codes($1) としても codes[0] が NULL のままなのです。
split_codes の返り値は期待通りなので、配列への配列の代入がうまくいっていないと
思われます。
currentのドキュメントを読んだのですがどこにも書いてないように見えます。
ご存知の方おられましたらお知らせください。
0034NAME IS NULL
2009/10/27(火) 20:28:52ID:???配列の添字は 1 始まりっていうオチではなくて?
003533
2009/10/28(水) 11:39:30ID:???インデックスで0が指定できるから0起算とばかり・・・
0036NAME IS NULL
2009/11/01(日) 10:27:41ID:dRyHVXSaSELECT使用とすると「リレーション: 未定義テーブル」といったエラーが帰ってきます。
原因と対処方法を教えてください。
0037NAME IS NULL
2009/11/01(日) 14:54:36ID:???003836
2009/11/02(月) 14:56:41ID:KTnBgk4Oスキーマを省略する方法を教えていただけませんでしょうか。
NG : SELECT * FROM public."STUDENT_NAME";
OK : SELECT * FROM "STUDENT_NAME";
0039NAME IS NULL
2009/11/02(月) 15:57:23ID:???のことかな?
でもpublicはデフォルトのような・・
004036
2009/11/02(月) 18:27:18ID:KTnBgk4Oその方法で解決しました。ありがとうございます。
0041NAME IS NULL
2009/11/06(金) 23:31:50ID:???インストールはできたけどStartServerとか管理ツールとかでサービス開始って押しても
起動されないんですけど
0042NAME IS NULL
2009/11/07(土) 00:01:44ID:???0043NAME IS NULL
2009/11/07(土) 00:05:54ID:???0044NAME IS NULL
2009/11/07(土) 01:44:58ID:???ログでも見てみたらどうかと思うんだけど。イベントログ吐かないのかな
0045NAME IS NULL
2009/11/07(土) 03:42:22ID:???タスクマネージャでpostmaster.exeとpostgres.exeあるかどうか確認しろ
0046NAME IS NULL
2009/11/07(土) 03:55:10ID:???0047NAME IS NULL
2009/11/07(土) 04:15:06ID:???0048NAME IS NULL
2009/11/07(土) 07:33:59ID:???何を持って「起動されない」と判断したんだ?
004941
2009/11/07(土) 08:45:09ID:???管理ツール>サービス>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)
----------------------------------------------------------
0050NAME IS NULL
2009/11/07(土) 09:02:24ID:???インストーラは Windows の管理者ユーザで実行した?
あと、コマンドラインから
"C:\Program Files\PostgreSQL\8.4\bin\pg_ctl" start -D "C:\Program Files\PostgreSQL\8.4\data"
とかすると、もう少しまともなエラーメッセージが得られるかもしれない。
005141
2009/11/07(土) 20:52:55ID:???インストーラを実行したのは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
--------------------------------------------------------------------------
0052NAME IS NULL
2009/11/07(土) 22:43:01ID:???0053NAME IS NULL
2009/11/09(月) 09:52:07ID:???postgres.exe 5432 ポートを許可してみてはいかがか。
0054NAME IS NULL
2009/11/09(月) 21:41:25ID:???ログインパスワードも省略しないとか。
0055NAME IS NULL
2009/11/09(月) 22:27:48ID:???再インストール時にインストーラがパスワード解らなくて失敗するぞ
0056NAME IS NULL
2009/11/10(火) 03:36:23ID:???0057NAME IS NULL
2009/11/10(火) 03:39:22ID:???0058NAME IS NULL
2009/11/10(火) 09:49:20ID:ap2nF2fApgAdminで新しいデータベースを作成する場合、SJISまたSHIFT_JIS_2004を
指定できません。
「ERROR: SJISは有効な符号化方式名ではありません」
SJISをDBに取り込んでSJISで出力するシステムなんですが、どうすればいい
のでしょうか。
0059NAME IS NULL
2009/11/10(火) 10:08:53ID:???サーバはUTF8やEUC_JPで作っておいてclient_encodingをShift_JISにしては
0060NAME IS NULL
2009/11/10(火) 10:09:19ID:???ODBCとかJDCBならドライバが勝手にやってくれるだろ
0061NAME IS NULL
2009/11/10(火) 10:13:42ID:???ttp://www.postgresql.jp/document/pg841doc/html/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED
クライアントのエンコーディングをSJISにしておけばSJISでやりとりできる
DB作成時、エンコーディングの指定はしても--no-localeを忘れずに入れよう。
0062NAME IS NULL
2009/11/10(火) 10:30:37ID:???SJIS と SHIFT_JIS_2004 は、サーバーでサポートされてないようですね。
http://www.postgresql.jp/document/pg841doc/html/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED
検索すると、すぐみつかったので、まずは自分で検索するよう心がけましょう。
0063NAME IS NULL
2009/11/10(火) 10:40:57ID:???0064NAME IS NULL
2009/11/10(火) 12:43:08ID:???NICついてなくてもループバックのソケットは作れるんだっけ?
0065NAME IS NULL
2009/11/10(火) 12:44:50ID:???ってスタートアップメッセージでいいんだっけ?
5432ポートを他が使ってる可能性は?
006658
2009/11/10(火) 21:57:56ID:???すいません。有難う御座いました。
0067NAME IS NULL
2009/11/11(水) 10:13:07ID:???0068NAME IS NULL
2009/11/11(水) 21:44:59ID:???下記のようなパスを取得したいのですが、方法はありませんでしょうか。
D:\Program Files\PostgreSQL\8.4\data
006941
2009/11/11(水) 23:29:41ID:???postgres.exeの許可と5432 ポートの開放をすると起動できました
長々とすみません、本当に助かりました
あと関係ないかもしれませんが
以前インストールしていたSQLServerのExpressが同じタイミングで
イベントログ吐いてたのでアンインストールしました
0070NAME IS NULL
2009/11/12(木) 10:25:16ID:???意味がわからない。
パスがわかってるならそれを使えばいいだけでは
0071NAME IS NULL
2009/11/12(木) 11:56:14ID:???まさかファイルを直接触ろうとしてる?
そんなことはないか・・・
0072NAME IS NULL
2009/11/12(木) 22:41:41ID:FED0V3qb基本的にはそうなんですけど、パスを取得できるのならそうしたいだけです。
>>71
現状ではcopyコマンドでcsvファイルをインポートするため、サーバの\dataに
クライアントのcsvファイルを一旦コピーしています。
0073NAME IS NULL
2009/11/12(木) 23:03:03ID:???まぁpostmaster.optsがある場所がそこだけど
というかそのパスって自動的に取得するものじゃなくて
起動時に明示的に付与してあげるものなんだけど
007472
2009/11/13(金) 08:51:03ID:YspQ0Qr8わかりました。
有難う御座います。
0075NAME IS NULL
2009/11/13(金) 16:09:38ID:???ちなみに何をしようとしてるの?
そのパスを知ってやることってバックアップしか思いつかない
0076NAME IS NULL
2009/11/14(土) 23:20:58ID:???Windowsプログラミング言語のところで、調べた方がいいでしょう。
VBなど。
http://dobon.net/vb/dotnet/file/getfolderpath.html
0077NAME IS NULL
2009/11/17(火) 07:13:29ID:???>>72に書いてあんじゃね?
0078NAME IS NULL
2009/11/17(火) 10:09:04ID:???わざわざpostgresユーザ以外はアクセスできないようにしてるんだから
tmpフォルダとかにあげておくべきだろ
0079NAME IS NULL
2009/11/17(火) 12:08:42ID:???サーバの作業場所はそれ用に別に作った方がいい
0080NAME IS NULL
2009/11/17(火) 13:04:26ID:???0081NAME IS NULL
2009/11/20(金) 22:20:10ID:sztJs2Te0082NAME IS NULL
2009/11/21(土) 23:48:58ID:???素晴らしいカンファレンスでした。
0083NAME IS NULL
2009/11/23(月) 20:30:57ID:MqVij48w一応買ってみたけど、まだ読んでない
0084NAME IS NULL
2009/11/23(月) 22:01:41ID:???0085NAME IS NULL
2009/11/28(土) 11:10:26ID:2D7DiwpMインストールしてみたけどGUIもついてるし結構いいね。
0086NAME IS NULL
2009/11/28(土) 11:22:06ID:???劣っているのはアピール力や宣伝力だと思う。
0087NAME IS NULL
2009/11/28(土) 12:01:09ID:lolg3VYvSQL周りはwithとかWindows関数も使えるようになってきたのは嬉しい
#用途は限られるけど
[プロとしてのOracle運用管理入門]レベルの本が出るといいなぁ・・
0088NAME IS NULL
2009/11/28(土) 13:56:54ID:???不満はサードパーティのツールや資格のオフィシャルっぽさが足りないこと。
個人の責任で導入できるなら良いのだけど、客へ提案するときには障害になる。
0089NAME IS NULL
2009/11/28(土) 14:36:52ID:???ほかの SIer も乗り出せばいいのに。
0090NAME IS NULL
2009/11/28(土) 16:04:46ID:???0091NAME IS NULL
2009/11/28(土) 16:38:25ID:???Oracleが最も恐れてるのかPostgresだろうね。
対決もする気ないようだし。
0092NAME IS NULL
2009/11/28(土) 17:00:09ID:???会社じゃなく、ユーザがツールや
『プロとしてのOracle運用管理入門』レベルの
Wikiを用意する、という選択肢もあるのだけどね。
0093NAME IS NULL
2009/11/28(土) 19:03:53ID:???0094NAME IS NULL
2009/11/29(日) 10:38:46ID:???0095NAME IS NULL
2009/11/29(日) 10:45:37ID:???0096NAME IS NULL
2009/11/29(日) 11:44:33ID:???0097NAME IS NULL
2009/11/29(日) 11:50:02ID:???0098NAME IS NULL
2009/11/29(日) 12:44:58ID:???使ってるけど普通に
最初はpgpoolだけだったが同時書き込みで引っ張られるからSlonyで非同期にした
0099NAME IS NULL
2009/11/30(月) 17:12:18ID:???オンラインバックアップもバックアップソフトのサポートがないとはいえ
機能としてはPITRがある今、残る問題はMySQLがやっているような
大規模なクラスタリングかな。
レプリケーションとクラスタを兼ねたpgpoolだのSlonyだのいろいろあることは
あるけど、MySQLがやっているぐらいの大きな規模となると辛い。
0100NAME IS NULL
2009/11/30(月) 18:03:55ID:???私もpgpoolは引っ張られるし非同期だと負荷分散できないべ
0101NAME IS NULL
2009/11/30(月) 18:55:45ID:???ディスク共有の場合くらいだよ両立できるの
それと>>98が言ってるのはどっちか一つじゃなくてpgpool+Slonyでしょ
0102NAME IS NULL
2009/11/30(月) 22:45:00ID:???MySQL Cluster の人が混ざって困る。
0103NAME IS NULL
2009/12/01(火) 00:20:15ID:???0104NAME IS NULL
2009/12/01(火) 04:52:16ID:???俺がロックをちゃんと理解していないからだろうけど
0105NAME IS NULL
2009/12/01(火) 07:01:57ID:???でもこれって MySQL でも基本的には一緒だよね?
0106NAME IS NULL
2009/12/01(火) 15:03:33ID:???そもそも書き込むまで値が解らないデータなんて使わないのが普通でしょ
フレームワークだと自動採番はフレームワークで吸収したりするし
0107NAME IS NULL
2009/12/02(水) 00:47:55ID:l7Mt4PbdPostgreSQLメインにしたらいいんだよ。
0108NAME IS NULL
2009/12/02(水) 02:45:27ID:???MySQLはいくつかのデータをバイナリログで特別扱いしてるのでずれない
ちなみに乱数つかってもシードごと送るのでずれない
ユーザ定義関数はずれる
0109NAME IS NULL
2009/12/02(水) 06:42:31ID:???PostgreSQL は、開発者がやけにストイックなので、
こういう割り切りは嫌われるからなぁ。
0110NAME IS NULL
2009/12/03(木) 00:15:13ID:???してんじゃなかったっけ?
ttp://japan.internet.com/webtech/20091030/4.html
ttp://japan.internet.com/linuxtoday/20070914/5.html
0111NAME IS NULL
2009/12/03(木) 00:25:21ID:???0112NAME IS NULL
2009/12/03(木) 01:17:11ID:???PostgreSQLのカスタマイズ製品だろ?
0113NAME IS NULL
2009/12/03(木) 01:24:49ID:RG7qM8LPそんなんはいらんのよ
0114NAME IS NULL
2009/12/03(木) 01:47:21ID:???富士通は自分とこで作ってるんでなくて、海外企業のEnterpriseDBの製品を取り扱ってるだけ。
資本出資はあるけどね。
0115NAME IS NULL
2009/12/03(木) 09:32:05ID:???0116NAME IS NULL
2009/12/04(金) 00:49:29ID:???pgpass.confをCドライブのuser\AppData\postgresqlに配置したんですが
実行してもパスワード入力を要求されます。
どなたかserver 2008もしくはvistaでpgpass.confを使っていらっしゃる方いますか?
0117NAME IS NULL
2009/12/05(土) 02:23:53ID:???pgAdminで編集した内容はログが取れるのにJakarta Torque経由だとログが取れん・・・
何でだ・・・
0118NAME IS NULL
2009/12/05(土) 06:33:03ID:???user\App〜って事はWindowsのユーザがuserっていうやつだろうけど、
PostgreSQLのOSユーザは本当にuserなの?
あとAppDataは%AppData%だよね?
0119NAME IS NULL
2009/12/06(日) 12:19:14ID:???かエクスプローラで%APPDATA%直接入れて場所確認したほうがいいかも
0120NAME IS NULL
2009/12/08(火) 02:13:46ID:Nbo4F8Sgバージョンは8.3.8です。
やりたいこと:
成功するつもりの挿入文で失敗(?)しているので、
実行時のパラメータ(生SQL文)と、エラーならエラー情報を取得したい
(現状、「成功していない」ということしか判らない
コンソールからログインして想定されるSQL文を直接流し込むと成功する)
できれば既存のログ(syslog等)ではなくオリジナルなログに出したいが
その手順が面倒なら出力先は任意でOK
0121NAME IS NULL
2009/12/08(火) 02:39:29ID:???0122NAME IS NULL
2009/12/08(火) 04:52:07ID:???今回のバージョンからtimestampとかがずれなくなったらしいね
0123NAME IS NULL
2009/12/08(火) 06:08:04ID:???単一障害点が無くなって嬉しい気がするのだが。
0124NAME IS NULL
2009/12/08(火) 11:07:06ID:???8.3.7までしかマニュアルがなかったけど
http://www.postgresql.jp/document/pg837doc/html/runtime-config-logging.html
とか。
0125120
2009/12/08(火) 13:37:32ID:???例えば"insert into hoge(int a, int b) values (1 , 2)"というクエリを実行したつもりで、
しかし結果としてa=1,b=2のレコードが挿入されていない、ということ。
その際、ロジックがおかしくてSQLにパラメータが正しく渡っていないのか、
ロジック(≒SQL文そのもの)は正しいけれど、設定周り(例えば権限)が原因で失敗しているのか切り分けがつかない、ということ。
>>124
ありがとうございます、役には立ちそうです。
「○○を指定したときはこのオプション〜」式の細かい指定が多いのが見ていて辛いんですが、
これはみんなちゃんと理解して設定しているもんなんでしょうかね……。
0126NAME IS NULL
2009/12/08(火) 13:51:20ID:???とりあえずログを見たいだけなら、必要なパラメータなんて数個でしょ。
syslog で良ければ
log_destination = 'syslog'
だけでとりあえず出るでしょ。facility はデフォルトで LOCAL0 だっけかな。
0127NAME IS NULL
2009/12/08(火) 16:55:16ID:???0128NAME IS NULL
2009/12/08(火) 17:46:35ID:???なんか違わないか
聞いてるのはlog_statementだと思うぞ
0129NAME IS NULL
2009/12/08(火) 21:12:55ID:???>例えば"insert into hoge(int a, int b) values (1 , 2)"というクエリを実行したつもりで、
>しかし結果としてa=1,b=2のレコードが挿入されていない、ということ。
単にコミットされてない、ってのはないよね?念のため。
0130NAME IS NULL
2009/12/09(水) 00:07:41ID:???サーバ側でいじってなければ
0131NAME IS NULL
2009/12/09(水) 00:12:35ID:Ao+i+k7iMySQLみたいに買われて、飼い殺しになっちゃうものなの?
そういうラインセンス!?
0132NAME IS NULL
2009/12/09(水) 00:25:19ID:???MySQLの場合だと、買収後に飼い殺しにされた後でforkするにはGPL版を
元にしなければならないので商用に使う際に面倒なハメに陥るけど、
PostgreSQLならBSDL系ライセンスのままでいけるので、自由度は高い罠。
0133NAME IS NULL
2009/12/09(水) 00:36:02ID:Ao+i+k7iどういう条件要素なのかとおもったりする。
それを支えている人材の生活があるから、その十分条件として何があるのかと。
まぁ少なくとも日本ではそういう分野で生活できてる人材は皆無に等しいのは
やっぱ日本て目先しか見てないからソフトウエアには向いていない人種だなと思う。
ソフトウエアってマイナースポーツに似てるよなw
0134NAME IS NULL
2009/12/09(水) 00:45:40ID:???0135NAME IS NULL
2009/12/09(水) 01:24:02ID:???MySQLは会社だったけどPostgreSQLは違うし
0136NAME IS NULL
2009/12/09(水) 01:31:16ID:???ただそれだけで団体として発展してない。
日本のオープンソースで一番発達してるのはサクラエディタくらいじゃないか?
0137NAME IS NULL
2009/12/09(水) 01:48:47ID:???0138NAME IS NULL
2009/12/09(水) 01:54:10ID:???OpenSOAP、fml、LHA、namazu、GRUB、delegate、mew、w3m
いくらでもあるわな
0139NAME IS NULL
2009/12/09(水) 02:00:58ID:???あとテキストエディタならxyzzyやMeadowも日本のオープンソースでは
0140NAME IS NULL
2009/12/09(水) 03:25:26ID:???サクラエディタは本家が更新捨てて、派生ががんばってるんだよね。
けど、win7 x64版がなくて友人が嘆いてたな
0141NAME IS NULL
2009/12/09(水) 04:05:21ID:???物が多い気がするね。
縁の下の力持ち的な。
0142NAME IS NULL
2009/12/09(水) 04:11:33ID:???0143NAME IS NULL
2009/12/09(水) 05:19:31ID:???GRUB書いてる人の公演
http://video.google.com/videoplay?docid=-5355630265244364468
0144NAME IS NULL
2009/12/09(水) 10:37:20ID:???2010で自分でビルドすればいいよ
変更箇所はちょっとだけだし、コンパイルしながらなおしてきゃいい
0145NAME IS NULL
2009/12/09(水) 12:19:56ID:???0146NAME IS NULL
2009/12/09(水) 13:45:04ID:???0147NAME IS NULL
2009/12/09(水) 13:46:50ID:???webから追加・削除・更新できる程度て良いのでおねがいします。
簡単に言うと住所録みたいなかんじです。
おねがいします
0148NAME IS NULL
2009/12/09(水) 14:51:00ID:???いいよ
ここに連絡先は掲載しないほうがいいね
どこか、書き込み、削除ができる掲示板とかに連絡先とか?
0149NAME IS NULL
2009/12/09(水) 14:52:41ID:???そういう方法があったんだね。
勉強になった。
0150120
2009/12/10(木) 23:59:37ID:???(期待したものとちょっと違いましたが ←生クエリじゃなくてプリペアドステートメントが出た)
エラーメッセージは確認できて問題も解決しました。
ありがとうございました。
余談ですが原因はvarchar(64)のカラムに入れようとしていた文字列が長すぎてエラー、でした。
0151名無しさん@お腹いっぱい。
2009/12/11(金) 00:10:40ID:???文法エラーや単純ミスなので、ログ出力しないでも解決できるはず。
0152NAME IS NULL
2009/12/11(金) 00:19:07ID:???いやだからその次くらいのレスのlog_statementをだな
0153NAME IS NULL
2009/12/11(金) 02:11:00ID:???実行するために、実際に発行しているクエリを取得したいという話ではないのか。
まぁ、>>152だけど。
0154NAME IS NULL
2009/12/11(金) 06:34:42ID:???解決したのだから良いじゃない?
正常終了のパターンだと log_statement が要るけど。
ただ、普通はクライアントにもエラーメッセージが返されるはずなんだよね。
アプリでまともにエラーチェックしていないんじゃ?
0155NAME IS NULL
2009/12/11(金) 07:25:43ID:???エラーなら出ないでしょ
0156NAME IS NULL
2009/12/12(土) 09:09:21ID:???の手順を参考に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/以下も除外して問題ない。
(その場合、反映が多少遅れる?)
0157NAME IS NULL
2009/12/12(土) 09:44:03ID:???最後以外は正しい認識だと思う。なかなかにまとまりの良いガイドだね。
> pg_xlog/以下も除外して問題ない。
> (その場合、反映が多少遅れる?)
除外して問題ない(というか除外すべき)だが、待機側に pg_xlog 以下を再現した
空のディレクトリ・ツリーを作成しておくべし。これにより反映が遅れることはないが、
そもそもウォームスタンバイは非同期WAL転送なので更新結果の転送には必ず遅れがある。
もし、フェイルオーバー時に直近の更新は失われるのが嫌なら、さらに追加で
DRBD とかが必要になる。archive_timeout もゼロにはできないので。
0158NAME IS NULL
2009/12/13(日) 18:26:42ID:???とりあえずこれで凌ごう。
0159156
2009/12/13(日) 22:40:31ID:???2台でrsyncまで書いてあるのってなかなかないですよね。
なぜかarchive_modeについて記述がないのですが、
稼動系はon、待機系はoffで動きました。
>>157
ありがとうございます。
同期の遅れやデータの欠けについては了解しています。
元でガンガン書き込んでるのに丸ごとコピーしてちゃんと動くってのは
けっこう不思議ですね。
> 除外して問題ない(というか除外すべき)だが、
pg_xlog/以下のファイルはコピーしても結局使われないから、ということでしょうか。
0160NAME IS NULL
2009/12/13(日) 23:00:23ID:???syncの方法が解らないというのなら、syncの方法を調べればいいだけ
0161NAME IS NULL
2009/12/13(日) 23:14:19ID:???そう、使われない。確かコピーしても特に害は無いはずだけど。
0162NAME IS NULL
2009/12/21(月) 00:37:24ID:???PostgresForest
http://www.nttdata.co.jp/services/postgresforest/
0163NAME IS NULL
2009/12/21(月) 01:05:26ID:???0164NAME IS NULL
2009/12/21(月) 11:20:41ID:???Linuxなら色々あるようなんですが。。。
0165NAME IS NULL
2009/12/21(月) 12:42:28ID:???0166NAME IS NULL
2009/12/21(月) 12:47:30ID:???0167NAME IS NULL
2009/12/21(月) 12:51:31ID:???pgpool
PostgresForest
Slony-l
しかピックアップしていなかったので見落としていたようです。
ありがとうございます。
0168NAME IS NULL
2009/12/21(月) 13:38:45ID:???0169NAME IS NULL
2009/12/22(火) 22:53:42ID:???Linuxクラスタ対応のようだから、Winは非対応でしょう。
0170NAME IS NULL
2010/01/16(土) 01:38:20ID:???0171NAME IS NULL
2010/01/22(金) 21:06:41ID:???shared_buffersの値指定は、
8.1まではバッファの数、8.2からメモリサイズを直接指定
になっていると思うのですが、8.4のマニュアルを見ると
共有ディスクバッファ=(block_size + 208) * shared_buffers
と書かれています。
これだと8.1までの計算式と変わらないのではないでしょうか。
block_sizeをかける必要はないと思うのですが?
0172NAME IS NULL
2010/01/22(金) 21:27:07ID:???すみません自己レスです。
8.4でもバッファ数での指定はできるので、
計算式ではバッファ数を指定した場合の計算方法を表している
ということで良いのですよね?
0173NAME IS NULL
2010/01/22(金) 22:27:42ID:eauqLL+S0174NAME IS NULL
2010/01/24(日) 04:06:07ID:pg++ufzRhash joinになるようにする方法ってありますか?
0175NAME IS NULL
2010/01/25(月) 10:44:36ID:foNl4qQbSET enable_nestloop = OFF;
実行してみれば?
0176NAME IS NULL
2010/01/25(月) 21:34:47ID:???hash join にしたいんだ?
0177NAME IS NULL
2010/01/25(月) 21:45:08ID:pui9fXUg0178NAME IS NULL
2010/01/25(月) 23:52:38ID:???0179NAME IS NULL
2010/01/26(火) 20:30:37ID:???PostgreSQL(本体または関連アプリ)にhttpでいうところの
「リバースプロキシ」のような機能を持つものはありませんか?
具体的には、サーバAへの接続を、接続先dbがdb-bだったらサーバBに中継し、
接続先dbがdb-cだったらサーバCに中継する、という機能です。
やりたい事は、バージョンアップのためのデータ移動を複数回に
分けたいのですが、アプリケーションからは透過的にしたいのです。
予めdb毎にIPアドレスを割り振っておけば済む話ですが、先々を考えると
ローカルIPとはいえアドレス消費しすぎかなと。
0180NAME IS NULL
2010/01/26(火) 21:31:18ID:???> 予めdb毎にIPアドレスを割り振っておけば済む話ですが、先々を考えると
> ローカルIPとはいえアドレス消費しすぎかなと。
サーバA,B,Cと3台あるなら既にIPアドレスは3つある訳で、プロキシ使ったところでアドレスが減るわけじゃない。
素直にサーバBのアドレスでサーバBのdb-bにつなげばよいし、サーバCのアドレスでサーバCのdb-cにつなげばよいのでは?
意図がよく分らない。
0181NAME IS NULL
2010/01/26(火) 21:44:47ID:???pgpoolでどうだろ?
0182NAME IS NULL
2010/01/26(火) 22:03:57ID:???0183NAME IS NULL
2010/01/26(火) 23:30:19ID:???0184NAME IS NULL
2010/01/26(火) 23:32:44ID:C/MTbqDV0185NAME IS NULL
2010/01/27(水) 01:58:25ID:???禿しく尿意
エンタープライズ分野ではムリだろうけどな〜
まぁ俺達エンタープライズ!って人たちにはぜひとも過去の遺物に
しがみついてもらおう。
最近の技術の流れは明らかに10年前などとは違ってきてる
0186NAME IS NULL
2010/01/27(水) 02:45:14ID:???選択肢って言葉を知らないんじゃないか
0187NAME IS NULL
2010/01/27(水) 02:53:16ID:???0188NAME IS NULL
2010/01/27(水) 10:55:03ID:???すみません、説明のために簡略化しすぎましたか。
サーバBからサーバAにデータを移したいのですが、中身はdb-Aから
db-zまで52個のdbがあって、そのそれぞれにIPを振って52個を恒久的に
消費するのはアドレスの喰いすぎだと思うのです。
データ移行が終われば1台構成に戻るわけですし。
(実際には52個もありませんが、今後増え続ける予定はあります)
>>181
pgpoolはdb別の処理をできましたでしょうか?
(調べたけどよくわからない)
0189NAME IS NULL
2010/01/27(水) 14:00:09ID:???サーバBの52個あるDBをサーバAに移したい(コピーしたい)と言う話で、なぜ各コピー先DBにアドレスを割り振る必要があるのかが分りません。
サーバBのDBと同じ数だけサーバA上でcreate database を発行するか createdbコマンドを叩けばよいのではと思いますが。
作った各DBへはサーバAのアドレスで接続しに行けますよ。
まぁ、プロキシがんばって探してください。
#なんかインスタンスの話とデータベースの話を混同している様な気がしなくもありません。
#実はサーバBにインスタンスが52個あります、と言う話だったりして
0190NAME IS NULL
2010/01/27(水) 18:46:34ID:???えっと、
・サーバ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ポートの組」を共有できれば
# 苦労はありませんよ。
0191NAME IS NULL
2010/01/27(水) 19:19:01ID:???現状は、同一IP、インスタンス1、ポートも1、dbnameのみ違うの?
今からIPを割り当てるなら、移行が終わってから戻しても良いと思うけど。
0192NAME IS NULL
2010/01/28(木) 01:44:09ID:???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) は,
>「非同期・シングルマスタ」方式のレプリケーションに分類される。
>また,データの更新をスレーブに対して行うことはできない。
0193NAME IS NULL
2010/01/28(木) 05:06:35ID:???0194NAME IS NULL
2010/01/28(木) 06:50:45ID:???* 全部複製できるまでは複製済みのdbも含めてサーバBのアドレスでアクセスさせたい
* で、なんでかしらないんだけどdb一つにつきIPアドレスを1個割り振りたい
なんだって。情報小出しにしてるからこれからも条件がどんどん出てくると思う。
絶対止めちゃダメで、最大52個のデータベースが入ってて、1〜2個を停止時間中にコピー、
ってことだから、Slony-Iを使うなら
dbコピーして、Slony-Iにレプリの指定して
を最大で52日間(営業日ベースだと2.5ヶ月くらい)やり続けることになるんでしょうね。
0195NAME IS NULL
2010/01/28(木) 09:41:15ID:???というか、クラッシュしたほうが、すっきりするかもよ。
0196192
2010/01/28(木) 10:25:06ID:???>>179 >>188 >>190は一貫してこう言ってると思います。
「PostgreSQLに振り分けを行う関連アプリがなくても
IPをdbの数だけ用意すればIPルーティングでdbの振り分けを実現できる。
しかしそういう強引な手段はできるだけ避けたい。」
情報の小出しについてはその通りですね。
>>190の前半のような事情は最初から書いて欲しかったです。
0197NAME IS NULL
2010/01/28(木) 21:39:25ID:???0198NAME IS NULL
2010/01/29(金) 02:15:11ID:???てことなので、現状、サーバAのIPアドレスは一個なんじゃね?
現状1個だが、DB毎に別IPを振れば移行完了したところから順にIPアドレスを付け替えていけばなんとかなるけど、
これはやりたくないと。(この方法を書いた事が混乱を招いているように見える)
> # 複数インスタンスで同一「IPアドレス・TCPポートの組」を共有できれば
> # 苦労はありませんよ。
# コメント扱いにすれば何書いてもいいのか?うぜぇ。
IPアドレスが既に複数であったとしても、単にレプリケーションを仕掛けておいて、レプリケーションが完了したら
サーバBを残せばよいように思うが。
0199NAME IS NULL
2010/01/29(金) 04:04:10ID:???そうすれ違い!
0200NAME IS NULL
2010/01/29(金) 06:39:11ID:???> 具体的には、サーバAへの接続を、接続先dbがdb-bだったらサーバBに中継し、
> 接続先dbがdb-cだったらサーバCに中継する、という機能です。
この時点でコピー元はわかりませんがコピー先のアドレスは二つある様に見えます。
>>190でいうところのサーバA相当が2台あるのか、サーバAに2個のアドレス割り当ててるのかは分らないですけど。
現状の構成も不明瞭、移行中の予定構成も不明瞭、判っているのは移行後には(おそらく)サーバAだけになる、と言う事。
まだ聞く気があるなら、改めて小出しにせずきちんと書いてみたら?>>179
0201NAME IS NULL
2010/01/30(土) 13:20:04ID:???0202NAME IS NULL
2010/02/03(水) 03:31:35ID:???JPUGの人>> 乙
http://ml.postgresql.jp/pipermail/pgsql-jp/
0203NAME IS NULL
2010/02/18(木) 01:25:45ID:h6krnEyT文字コードは、UTF8です。
pg_dump データベース名 > aaa.sql
0204NAME IS NULL
2010/02/18(木) 02:15:20ID:???0205NAME IS NULL
2010/02/18(木) 02:30:40ID:???0206NAME IS NULL
2010/02/18(木) 10:41:04ID:???0207NAME IS NULL
2010/02/19(金) 10:31:47ID:jf2XucmDどうもデータロードしただけで再構築やってない雰囲気なのですが。
phppgadmin とかpsqlで接続はできますが、DBサーバのアカはないので
ログとかは直接みられない状態です。
0208NAME IS NULL
2010/02/19(金) 10:34:15ID:???0209NAME IS NULL
2010/02/19(金) 14:20:26ID:sbocO3zVexplain では?
0210NAME IS NULL
2010/02/19(金) 16:54:07ID:???0211NAME IS NULL
2010/02/19(金) 18:34:20ID:???パフォーマンスが悪いから、インデックスが作成されていないのでは?とおもったのなら、reindexdbやってみたらどうでしょ
0212NAME IS NULL
2010/02/19(金) 18:55:31ID:???もしくは管理者権限よこせか
0213NAME IS NULL
2010/02/19(金) 20:47:18ID:???psql -c '\di'
0214NAME IS NULL
2010/02/19(金) 22:46:40ID:???そういう事じゃないんだろ
0215NAME IS NULL
2010/02/20(土) 05:30:18ID:???0216NAME IS NULL
2010/02/20(土) 09:09:46ID:???pg_relation_size() でインデックスの物理サイズをチェックしたり、
pgstattuple() でデータと空き領域の比率を調べるのは参考になるかな?
ただ、どちらにせよ、「もし断片化してなければ、こうなるはず」っていう机上計算ができる程度の知識は要るかも。
0217NAME IS NULL
2010/02/20(土) 13:25:23ID:???0218NAME IS NULL
2010/02/20(土) 21:50:55ID:???psqlとphppgadminは使えるが、pgadminが使えない状況ってよくあるよね
0219NAME IS NULL
2010/02/21(日) 02:33:16ID:???なんじゃその状況はw
0220NAME IS NULL
2010/02/21(日) 02:37:22ID:???0221NAME IS NULL
2010/02/21(日) 02:41:36ID:???0222NAME IS NULL
2010/02/21(日) 15:05:13ID:???0223NAME IS NULL
2010/02/23(火) 17:10:34ID:???psqlとphpPgAdminはlocalhost接続で、pgAdminはリモートしか使えないけど、リモートからの
接続は制限されてるという場合。
0224NAME IS NULL
2010/02/23(火) 18:20:09ID:???たまにはあるかもしれんが
0225NAME IS NULL
2010/02/23(火) 19:06:17ID:???0226NAME IS NULL
2010/02/23(火) 23:02:58ID:???0227NAME IS NULL
2010/02/24(水) 00:28:22ID:???sshが開いているのにポートフォワーディングが制限されているのか?
0228NAME IS NULL
2010/02/24(水) 01:28:46ID:???コンソールで慣れていたのでついうっかり。
トンネルに慣れるようにがんばるよ!
0229NAME IS NULL
2010/02/24(水) 01:37:40ID:???0230NAME IS NULL
2010/03/01(月) 11:56:35ID:NrCpd4mv他のユーザからPerlのDBI経由で使えません。ユーザ名とパスワードは、postgres/passwordに
ちゃんとしているのですが、何か追加で設定が必要でしょうか?
0231NAME IS NULL
2010/03/01(月) 12:00:28ID:???Perlのプログラムが動いてるのはDBと同じサーバ?
できればユーザーは先に作ろうぜ
0232NAME IS NULL
2010/03/01(月) 12:07:38ID:NrCpd4mv全部同じサーバ上です。
hogeというユーザからPostgresqlにアクセスするにはhogeをcreateuserするのが
一番いいんでしょうか?
0233NAME IS NULL
2010/03/01(月) 12:15:31ID:NrCpd4mvありがとうございました。
0234NAME IS NULL
2010/03/03(水) 06:17:43ID:???アクセスできるユーザを作成したいです。
将来そのデータベースに追加されるテーブルもリードオンリーにしたい
のですが、どんなユーザ(ロール)権限にしたらよいのでしょうか?
0235NAME IS NULL
2010/03/03(水) 21:59:22ID:???出力内容をsortすることはできないのでしょうか?
0236NAME IS NULL
2010/03/03(水) 23:03:35ID:???COPY (SELECT * FROM test ORDER BY id) TO STDOUT;
でいけた。
0237NAME IS NULL
2010/03/04(木) 00:51:52ID:???なるほど、ありがとうございます。
0238NAME IS NULL
2010/03/04(木) 08:04:53ID:gtvQ8+8N9.0 待ち。ALTER DEFAULT PRIVILEGES。
8.4 以前だと無理。テーブルを作るたびに GRANT & REVOKE してやらないとダメ。
0239NAME IS NULL
2010/03/06(土) 14:15:24ID: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
0240NAME IS NULL
2010/03/06(土) 14:31:06ID:???0241NAME IS NULL
2010/03/06(土) 14:35:56ID:???直しても実行時にエラーになります.
0242NAME IS NULL
2010/03/06(土) 17:45:03ID:???0243NAME IS NULL
2010/03/06(土) 17:57:04ID:???0244NAME IS NULL
2010/03/06(土) 21:59:34ID:???やりたいことが良く分からないが、もし「ビューを作る関数」を作りたいのならば、
動的SQLを使って EXECUTE 'CREATE VIEW ... WHERE user_code = ' || code; ならできる。
ただ、これだと関数を呼ぶ度に新しいビューが作られるので、ビューの名前も被らないようにすべき。
もしテーブル関数を作りたいならば、返値を SETOF user_table、LANGUAGE を sql にする。
これだと SELECT * FROM f('...') みたいな使い方になる。
0245NAME IS NULL
2010/03/07(日) 08:59:58ID:???Q1.DB全体のパフォーマンスアップをしたいです。
shared_buffers, temp_buffers, work_mem の値を変更しても速度の改善が
みられません。
このパラメータのほかにパフォーマンスに影響する設定はあるのでしょうか?
またPostgreSQLのパフォーマンスを計測する標準的な方法はありますか?
(ツールとか、システムカタログ値とか・・・)
Q2.特定のSQL文のパフォーマンス改善をしたいです。
SQL文のパフォーマンス改善の方法として標準的な手順やツールがあったら
教えてください。
よろしくお願いします。
0246NAME IS NULL
2010/03/07(日) 09:05:03ID:???遅いと思われる、SQL文の例を提示したほうが、
アドバイスを受けやすいと思うよ。
0247NAME IS NULL
2010/03/07(日) 10:12:35ID:???ストリムレプリケションってな〜に?
0248NAME IS NULL
2010/03/07(日) 10:30:40ID:???Q2 特定のSQLまで分かっているんだったら、それの EXPLAIN を見ながら
クエリの変形やインデックスの追加を考えることになると思う。
Q1 は Q2 が終わってから。ただ、I/O と CPU のどちらがネックかは見ておくべき。
チューニングすべき箇所が全く変わってくる。
0249NAME IS NULL
2010/03/07(日) 14:03:19ID:???0250NAME IS NULL
2010/03/07(日) 14:11:54ID: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#
0251245
2010/03/07(日) 17:19:21ID:???親切なご返答ありがとうございました。
EXPLAINですね。まず見方から勉強したいと思います。
I/O と CPU のどちらがネックかを見るには、パフォーマスモニター
でしょうか。貧弱なツールだと思えるのですが、これしかないのかな・・・
I/O と CPU のどちらがネックかを見るのに良いツールがあったら
ご教示お願いします。
0252NAME IS NULL
2010/03/07(日) 17:34:26ID:???データ件数とSQLの種類、現状の秒数くらい書きなよ。
0253NAME IS NULL
2010/03/08(月) 09:33:11ID:???0254NAME IS NULL
2010/03/08(月) 09:41:38ID:???っていうか、もうそうなってるけど。
0255NAME IS NULL
2010/03/08(月) 10:11:22ID:???・一般的な質問はお断り
・個別のトラブルなら相談に乗るぜ
ってかんじ
このスレと言うか技術系はどこでもそんな感じか
0256NAME IS NULL
2010/03/08(月) 11:22:08ID:???0257NAME IS NULL
2010/03/08(月) 11:48:29ID:???本読むかどっかの教室で学ぶかしたら?って思う。
リアルで面倒みてるなら的確な質問を返してくる生徒は大歓迎なんだけどね。
0258NAME IS NULL
2010/03/08(月) 15:19:21ID:???http://www.sraoss.co.jp/prod_serv/consulting/pgsql-consul.php
ここがお勧め。
0259NAME IS NULL
2010/03/08(月) 15:25:25ID:???っつーか、聞いたことに答えずに、自分が勝手に納得して新たな質問をするから
駄目なんだよ。
なぜ >>246 の PC 環境や SQL 文を書かないのか。一切無視なのか。
>>248 の 8.x は何かを改めて答えないのか。
その上、I/O や CPU がどうとか言われても、てめーに判断出来るのか?って話。
0260NAME IS NULL
2010/03/08(月) 16:35:20ID:???0261NAME IS NULL
2010/03/08(月) 21:36:34ID:???その構成ならずっとUTF8で通るから、エンコードの変換自体が起こらなそうだけど?
アプリかドライバでSJISになっているのかも。
\encoding UTF8
SELECT '文字化けする文字';
って書いたSQLファイル (UTF8N) を「psql -f ファイル.sql > 出力.txt」しても化ける?
0262NAME IS NULL
2010/03/08(月) 22:31:52ID:???そう思う
0263NAME IS NULL
2010/03/09(火) 01:23:10ID:???とりあえずマニュアル読め。
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の回数やバイト数、インデックスが効いているかどうか、などがわかる。
0264NAME IS NULL
2010/03/09(火) 16:43:39ID:???確認できました。
PostgreSQL ODBCドライバー V8.4.1をインストールする時に、
ANSIとUnicodeの文字コード二種類インストールされますが、
C#の設定ミスでANSIの方を使用していました。
設定を変更したところ補助漢字が表示・修正できました。
お騒がせ致しました。
0265NAME IS NULL
2010/03/10(水) 03:52:15ID:???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」は変だと言っている?
>配列は集合ではありません。
ただ事実を書いただけなのか、含みがあるのか・・・
0266NAME IS NULL
2010/03/10(水) 04:03:28ID:???配列のなかから特定の要素を検索すること
「WHERE 10000 = ANY (pay_by_quarter)」
のことだと思う
0267NAME IS NULL
2010/03/10(水) 14:57:45ID:???8.4以降ならこのやり方がお勧めです。
スロークエリの分析
http://lets.postgresql.jp/documents/technical/query_analysis/
方式2: サーバログへスロークエリを出力する
1. 指定した時間以上かかったクエリを(必要なら実行計画もあわせて)自動的にログに出力できます。
まずは、とてつもなく遅い単独のクエリがあるかどうかをこれで調べます。
2. そのようなクエリが無いにもかかわらず、全体としてパフォーマンスが悪い場合は、次は
プログラムコードを疑います。クライアントのループ内で激烈なクエリ発行をしてるなんて
ざらです。効率の悪いSQLを書いているかもしれません。
そのようなコードがあるなら修正します。
3. そのようなクエリがあった場合は、実行計画を見て、インデックスが使われているかどうか
調べます。あわせて、シーケンシャルスキャンになっているところが回避できるようなインデックスを
設定できるかどうか検討します。
4. そうでない場合は、やっとパラメータチューニングの出番です。
まずはスタックビルダでインストールできるEnterpriseDB Tuning Wizardで、適切だと
思われるpostgresql.iniを作り、それを使ってまた1からやり直します。
5. それでも解決できない場合は、専門家に相談しましょう。
0268NAME IS NULL
2010/03/10(水) 15:09:37ID:seV06sgYplpgsqlの中で、変数の内容にしたがってレコード型の内容を取得したいのですが、
いい手段はありませんでしょうか。
name という変数の中に レコード型のカラム名を入れて、そのカラムのデータを取得したいのです。
nameの中身を「伝票番号」とか「商品」とかにして、そのレコードの伝票番号やら商品やらを
取得したいのですがなかなか迂回手段も思いつかず、詰まってしまいました。
0269NAME IS NULL
2010/03/10(水) 16:07:48ID:???38.5.4. 動的コマンドの実行
http://www.postgresql.jp/document/8.4/html/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
0270NAME IS NULL
2010/03/10(水) 16:33:48ID:???動的SQL文だと、変数の展開までは出来るのですが、
展開された変数にセットされている値をレコード名として
レコード型の変数からデータを引っ張ってくるというのが出来ません。
0271NAME IS NULL
2010/03/10(水) 16:58:27ID:???0272NAME IS NULL
2010/03/10(水) 17:10:19ID:???クライアント側に頑張ってもらうことにします。
0273245
2010/03/10(水) 19:39:19ID:???返答ありがとうございました。
大変、勉強になります。
チューニングの手順が理解できました。
スタックビルダ、スロークエリなど、チューニングに使えるんですね。
知りませんでした。
>>263
はい。再度マニュアルを読み込みます。
ある程度動かして一通り浅く理解してしまうと、なおざりになってしまいます。
反省しなきゃ・・・
0274NAME IS NULL
2010/03/10(水) 22:15:37ID:???ああああ、言われると確かに。
配列は集合じゃないという部分も合点。
0275NAME IS NULL
2010/03/13(土) 21:37:58ID:???0276NAME IS NULL
2010/03/14(日) 03:58:15ID:???0277NAME IS NULL
2010/03/14(日) 15:18:42ID:???http://www.postgresql.org/によればVer9.0リリースは
2010年第2から第3Q との事ですが、日本語対応は通常どの程度
遅れるのでしょうか?
0278NAME IS NULL
2010/03/14(日) 15:22:45ID:???0279NAME IS NULL
2010/03/14(日) 15:40:17ID:???0280NAME IS NULL
2010/03/14(日) 15:49:25ID:???0281NAME IS NULL
2010/03/14(日) 20:50:57ID:???誤訳やら原文忠実性を遥かに超えた直訳やらで面白いよね
0282NAME IS NULL
2010/03/15(月) 01:00:21ID:???0283NAME IS NULL
2010/03/15(月) 08:08:13ID:???直してくれ
0284NAME IS NULL
2010/03/15(月) 08:20:26ID:???0285NAME IS NULL
2010/03/15(月) 10:55:40ID:???どこが面白いかって意味なら意外性だな
頭をひねって理解するとそこにアハ体験的なものがある
技術文書だから読みやすさより忠実性をとるのは正しいけどさ
AYB感とともにチャイナガジェットの取説的な面白さが香ってるのは
間違いねえこった
どこが機械翻訳的かっていうと、いわゆる誤訳って原文と異なった
意味の文章を構成してしまうことだと思うんだが、日本語としても壊れてるところかな
適当に開いたページから例をとると、
> オプションのRECURSIVE修飾子は、WITHを単なる構文的便利さから、
> さもなくば有効な標準SQLではなくなるものを仕上げる構成に変更します。
とある。一読して意味が取れなくてもお前らの頭が(^q^)なわけじゃない
むしろ誤訳なのにサクサク読めてると思ってたらやばい
しかし次の一文まで読むと訳者の意図がピンと来る
> RECURSIVEを使用することで、WITH問い合わせが自己の出力を参照できるようにします。
とりあえずexcite翻訳に原文つっこんだら普通に正しい訳出てきたから
マシーンじゃないっぽい^^
0286NAME IS NULL
2010/03/15(月) 11:21:13ID:???0287NAME IS NULL
2010/03/15(月) 11:35:54ID:???下衆の長文うざい
0288NAME IS NULL
2010/03/15(月) 17:41:59ID:???0289NAME IS NULL
2010/03/15(月) 18:22:18ID:???英語教育のダメさ加減を表してるな
馬鹿な授業やめればいいのにね
0290NAME IS NULL
2010/03/15(月) 21:46:29ID:???0291NAME IS NULL
2010/03/16(火) 02:41:36ID:???けどあれって英語だけじゃなく他の科目もそうだとしたら…だめだ恐ろしすぎてとても最後まで書けない
0292NAME IS NULL
2010/03/16(火) 04:11:45ID:???0293NAME IS NULL
2010/03/16(火) 08:30:01ID:???0294NAME IS NULL
2010/03/16(火) 11:17:20ID:???0295NAME IS NULL
2010/03/16(火) 11:29:24ID:???つーかITエンジニアやってれば英語のドキュメントを見る機会なんて幾らでもある。
もし問題があるとすれば、英語力よりも国語力の方だろ。
業務系の仕様書見れば、日本語がおかしいのなんて幾らでもあるw
あと昔ACOS扱ったことあるけど、マニュアルが日本語的に悲惨でえらく苦労したぞw
0296NAME IS NULL
2010/03/16(火) 12:05:45ID:???0297NAME IS NULL
2010/03/16(火) 12:09:22ID:???で?
0298NAME IS NULL
2010/03/16(火) 12:13:48ID:???0299NAME IS NULL
2010/03/16(火) 12:40:00ID:???0300NAME IS NULL
2010/03/16(火) 14:07:32ID:Cy/WXQsWここからODBCドライバをDLしてインストールしようと思うのですが、
サーバのPostgreSQLは8.1.6です。
この場合、ODBCドライバはpsqlodbc-08_01_0200.zipがいいのでしょうか?
それとも単純に最新のpsqlodbc_08_04_0200.zipのほうがいいですか?
0301NAME IS NULL
2010/03/16(火) 14:12:35ID:???最新で問題ないはず。
0302NAME IS NULL
2010/03/16(火) 15:48:19ID:???なんで日本語訳のマニュアルなんか読んでるの?
0303NAME IS NULL
2010/03/17(水) 06:50:36ID:???日本語訳の素晴らしいマニュアルがあるのに、君はわざわざ英語の
マニュアルを読んでるのかい???
0304NAME IS NULL
2010/03/17(水) 11:30:48ID:????
俺の話じゃなくて>>281の話なんだけど?
0305NAME IS NULL
2010/03/17(水) 11:31:51ID:???0306NAME IS NULL
2010/03/17(水) 13:33:46ID:???0307NAME IS NULL
2010/03/17(水) 13:44:06ID:???0308NAME IS NULL
2010/03/17(水) 16:31:11ID:???>>303の勘違い。
0309NAME IS NULL
2010/03/17(水) 16:57:59ID:???0310NAME IS NULL
2010/03/17(水) 17:14:03ID:???0311NAME IS NULL
2010/03/17(水) 17:29:57ID:???a feature that accomplishes things not otherwise possible in standard SQL
の日本語訳教えてちょ
0312NAME IS NULL
2010/03/20(土) 10:20:59ID:???エラーが出ないのなら、最新が安心かもね。
自分の環境は最新ODBCはエラーになる場合がある。
0313NAME IS NULL
2010/03/20(土) 10:42:57ID:???いのっちの父の部屋で報告したらいいのでは?
0314NAME IS NULL
2010/03/22(月) 20:06:50ID:???世の中の99.9%はPostgreSQLで十分な気がするのだが。
0315NAME IS NULL
2010/03/22(月) 20:11:40ID:???0316NAME IS NULL
2010/03/22(月) 20:47:00ID:???pgsqlで十分ならそれで何の問題もないかと。
Oracleは色々と問題あるのよねぇ。
マテビュとかデビリンクとか...
サポートに連絡しても何の役にも立たないし。
0317NAME IS NULL
2010/03/22(月) 20:54:04ID:???PostgreSQLだと自分で責任をとらないといけないが
Oracleならサポートのせいにできるだろ
0318NAME IS NULL
2010/03/22(月) 21:26:33ID:???0319NAME IS NULL
2010/03/22(月) 21:31:13ID:???1台だけとか現用待機程度の規模でやるなら変わらんな
0320NAME IS NULL
2010/03/23(火) 06:53:23ID:???サポートのせいにしたところで、実際には何も解決はしないけどね。
DBの不具合で被った損害をオラクルが補償してくれるわけでも
ないし。
0321NAME IS NULL
2010/03/23(火) 07:08:25ID:???責任を取りたくない開発者向きの機能は、まだまだ見習うところは多いと思うよ。
0322NAME IS NULL
2010/03/23(火) 12:16:54ID:???0323NAME IS NULL
2010/03/23(火) 16:28:41ID:???0324NAME IS NULL
2010/03/23(火) 22:15:36ID:???0325NAME IS NULL
2010/03/24(水) 00:01:13ID:???PostgreSQLは、まぁましになってはきたけど。
0326NAME IS NULL
2010/03/24(水) 04:53:28ID:???理由を聞くと、ほぼ確実にデータが壊れて復旧できないから、なんだと。
そういうもん?
0327NAME IS NULL
2010/03/24(水) 05:52:05ID:???んなこたーない。そこはどんだけボロいハード使ってんだよ。
0328NAME IS NULL
2010/03/24(水) 07:48:19ID:???ひとつのPgSQL接続だけがものすごい時間のかかる処理をしている場合、
システムへの負荷が相当かかり、他の利用者のDB処理が遅くなってしま
います。
PgSQLの再起動は、運用上できないです。
0329NAME IS NULL
2010/03/24(水) 07:55:46ID:???逆にPostgreSQLはinsertとかやってる途中だとgdgdになったりする
そういう所だな0円と500万円の違いは
0330NAME IS NULL
2010/03/24(水) 08:45:20ID:???pg_terminate_backend in 8.4.
>>329 PostgreSQLはinsertとかやってる途中だとgdgd
は? 普通にクラッシュリカバリできるが、何を勘違いしているの? FUD?
0331NAME IS NULL
2010/03/24(水) 08:49:00ID:???KILLしたらいいんじゃないの。
Winならタスクマネージャーで。
0332NAME IS NULL
2010/03/24(水) 08:56:44ID:???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
0333NAME IS NULL
2010/03/24(水) 09:41:52ID:???実際やりゃ解る
こっちは何度も苦労してんだよ
アーカイブログあるからとかそういう問題じゃない
0334NAME IS NULL
2010/03/24(水) 09:44:43ID:???pg_cancel_backendだっけ?で止めないと
0335NAME IS NULL
2010/03/24(水) 10:20:31ID:???0336NAME IS NULL
2010/03/24(水) 10:26:50ID:???0337NAME IS NULL
2010/03/24(水) 10:40:16ID:???pg_cancel_backend で止めたほうが安心だろうけど。
0338NAME IS NULL
2010/03/24(水) 11:02:54ID:???一回リカバリーしたなら、それマージさせないと毎回起動時にリカバリーするはめになるよ
0339NAME IS NULL
2010/03/24(水) 12:44:40ID:???あと、すげー昔だけどupdate止めてロックおかしくなって再起動したことはある。
0340NAME IS NULL
2010/03/24(水) 20:03:32ID:???結局何が悪かったのかまで突き詰められない。単なる苦労話にしかならないから、全く価値が無い。
馬鹿でも簡単お手軽にリカバリできる方法が用意されていないって言う話ならば、
確かにそれはポスグレが悪いんだけど。
0341NAME IS NULL
2010/03/25(木) 00:19:21ID:???> 確かにそれはポスグレが悪いんだけど。
そんなものはオラクルにもないわけで。
0342NAME IS NULL
2010/03/25(木) 00:24:17ID:???不慮の事故に対応するのがリカバリでしょ
RAIDでUPSでジャーナリングでってのは
リカバリができるか云々とは別のベクトルだし
0343NAME IS NULL
2010/03/25(木) 00:54:40ID:???初心者が扱うとまともにパフォーマンスが出ないオラクルは良いのか悪いのか、という話は今俺が作った別のベクトル
0344NAME IS NULL
2010/03/25(木) 01:18:36ID:???0345NAME IS NULL
2010/03/25(木) 02:10:22ID:???PostgreSQLにも欠点はあるんだから
それを隠して絶賛してたら何も進歩せんぞ
ウリナラマンセーで反日やるようなもんだ
0346NAME IS NULL
2010/03/25(木) 02:28:03ID:???もしOracleを凌駕するようなものならOracleなんてとっくに無くなってるよw
オープンソースの魅力は好きなように改造できることで、(制限付きではあるが)タダで使えることじゃないよな。
ああ、なんか書き足らないことだらけだ...orz
0347NAME IS NULL
2010/03/25(木) 07:30:31ID:???マンセーというより、>>329がFUDっぽいから突っ込まれてるだけでしょ
0348NAME IS NULL
2010/03/25(木) 10:34:17ID:???○やっかみ
0349NAME IS NULL
2010/03/25(木) 14:02:55ID:???書き込みキャッシュOnにしてたらありえる
書いてfsync()したはずのデータを
失う可能性があるから。
そういう用途には
バッテリ保護付きのアレイコントローラや
外部ストレージが必要
0350NAME IS NULL
2010/03/25(木) 16:28:10ID:???純粋に素のミドルウエアとしてのリカバリ性能の話をしてるんでしょ
ハードやファイルが壊れない前提なら大抵のDBMSは問題ないわけで
0351NAME IS NULL
2010/03/25(木) 16:53:19ID:???0352NAME IS NULL
2010/03/25(木) 18:30:01ID:???ライトキャッシュによる遅延書き込みの失敗なんて
テキストファイル保存したってバカ高いバックアップツール使って保存したって起こることで
pgとoracleの性能差とは別次元の設定ミス
0353NAME IS NULL
2010/03/25(木) 23:40:19ID:???「欠点はある」んだったら、ちゃんと具体例を報告して、
直すなり、直してもらうなりすれば良いのでは?
>>350
まだ「リカバリ性能の話」までたどり着いていない。
ある人が、何か操作をしたら、リカバリできなかったという書き込みがあっただけ。
0354NAME IS NULL
2010/03/26(金) 00:18:10ID:???産業製品にとってそれは何のプラスにもならない感情だぞ
宗教じゃないんだからさ
0355NAME IS NULL
2010/03/26(金) 01:04:25ID:???0356NAME IS NULL
2010/03/26(金) 01:06:06ID:???0357NAME IS NULL
2010/03/26(金) 01:28:52ID:???0358NAME IS NULL
2010/03/26(金) 01:38:36ID:???欠点を見つけたら報告するでしょ普通
windows、redhatのバグ見つけたら報告するよな?それと一緒。
0359NAME IS NULL
2010/03/26(金) 01:39:52ID:???要望は上げたことないや
0360NAME IS NULL
2010/03/26(金) 01:44:17ID:???過去にはVACUUMしたら壊れるなんてのもあったくらいだし
0361NAME IS NULL
2010/03/26(金) 02:08:03ID:xwgsQGRx0362NAME IS NULL
2010/03/26(金) 02:14:16ID:???0363NAME IS NULL
2010/03/26(金) 02:21:01ID:???あれすげー痛いな。
0365NAME IS NULL
2010/03/26(金) 07:27:49ID:???メジャーバージョンアップはダンプがいるけど、バグフィクスで必要なったことは
ほとんど無いぞ? 「具体的に」何を指している? 確かに REINDEX してくれってのはあったが。
0366NAME IS NULL
2010/03/26(金) 08:31:04ID:???8,2の時にも
得意なリリースノートでも見てみればいい
0367NAME IS NULL
2010/03/26(金) 08:37:42ID:???そういうのって例えばOracleであればありえないの? 保証されているの?
サポートに聞いたら、とりあえずこのパッチ当ててみ、ってのも嫌だな。
というか完璧は無くて、有償だと責任を転嫁出来るって感じ。
0368NAME IS NULL
2010/03/26(金) 08:44:17ID:???0369NAME IS NULL
2010/03/26(金) 12:49:37ID:???それとバグ以外じゃないよ、なっか勘違いしてるだろう
0370NAME IS NULL
2010/03/26(金) 13:30:31ID:???で、リリースノートは読んでないんでしょ?
だから、
> 大抵のDBMSは問題ないわけで
こんなこと言うんだよ。
0371NAME IS NULL
2010/03/26(金) 13:33:33ID:???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.
0372NAME IS NULL
2010/03/26(金) 14:57:31ID:???あと、増分バックアップってできるのかしら。WALを取っとくとかいうのじゃなく。
0373NAME IS NULL
2010/03/26(金) 14:58:31ID:???しかも敵が一人と決めつけて、色んな人の自分に都合がいい意見だけ繋いで反論してるし
0374NAME IS NULL
2010/03/26(金) 14:59:07ID:???0375NAME IS NULL
2010/03/26(金) 15:02:29ID:???0376NAME IS NULL
2010/03/26(金) 15:04:34ID:???0377NAME IS NULL
2010/03/27(土) 00:57:38ID:???ハードごと入替でエクスポート、インポートってのはあるけど。
0378本田
2010/03/27(土) 00:58:15ID:qqcAE8kLバックアップ機能の貧弱なDBMSはそれ自身のバックアップ機能に頼らす、
新しいファイルシステムのバックアップ機能を使ったほうがベターかもしれない。
0379377
2010/03/27(土) 02:35:16ID:???× DBなんて稼働し始めたら稼働四波なhして
○ DBなんて稼働し始めたら稼働しっぱなしで
>>378
StorageTek とかのディスクアレイならUFSとかでもスナップショットとれるよね。
0380NAME IS NULL
2010/03/27(土) 05:22:56ID:???それ一貫性のあるウォームバックアップの代わりになんの?
0381NAME IS NULL
2010/03/27(土) 09:26:51ID:???pg_start_backupなしはダメ
0382NAME IS NULL
2010/03/27(土) 13:36:12ID:???○ 一貫性のあるウォームバックアップ
ほぼ× 増分バックアップ
最終変更時刻に変更の無いファイルを除外すれば、
一応増分バックアップっぽくはなるけど、ファイル単位なので粒度は荒い。
0383NAME IS NULL
2010/03/27(土) 13:40:31ID:???「バージョンアップはダンプがいる」から繋がっている会話なのに、
リカバリができないバグを挙げているのは、おかしくないか?
.0 はさすがにバグが残っているから、本格的に使うのは .1 以降にするって話なら同意だが。
0384NAME IS NULL
2010/03/27(土) 13:51:01ID:???バージョンアップにダンプが必要とは誰も言ってない気がするが
0385NAME IS NULL
2010/03/27(土) 13:55:53ID:???どっちもリリースノートって言うから混ざってる。
0386NAME IS NULL
2010/03/27(土) 14:07:59ID:???0387NAME IS NULL
2010/03/27(土) 14:15:51ID:???0388NAME IS NULL
2010/03/27(土) 14:23:01ID:???0389NAME IS NULL
2010/03/29(月) 01:17:45ID:5tk5Z2gY売上高の様な整数(や浮動小数)のフィールドにインデックスを設定することに意味はあるでしょうか?
0390NAME IS NULL
2010/03/29(月) 01:22:45ID:???一般的には、売上金額など値データの列にはインデックスは張らないでしょうし、
意味もないと思います。
0391NAME IS NULL
2010/03/29(月) 01:58:27ID:???0392377
2010/03/29(月) 02:10:57ID:???トランザクションのコミット前なら大丈夫(だったよ、実際に)。
いきなりプロセスが死んだ(kill -killとかコンセント引っこ抜いた感じ)
状態になるけど、とりあえずリカバーできたよ。
というか、常時稼働の場合はDBによる「一貫性のあるバックアップ」と
一応「ある時点でのストレージのバックアップ」の両方をテストしたときに
以外に何とかなったんで、
ええっと、俺じゃなくて>>378へのレスだったことに今気がついた・・・
読み飛ばしてくれ・・・
>>389
もしその数値フィールドがアプリというかシステムの重要なパフォーマンスに効いてくるなら、
例えば、log10をとったり10*nで割った値とかを整数化した値のコラムを作ってインデックス貼ると
速くなるよ。検索入力の値のlog10とか10*nで割った値(インデックス張った値)を検索条件に
いれる。DWH(読み取り優先)みたいなのではよくやる。
ヒストグラム(でいいのかな?)が均等になるようなインデックス値をひねり出すのがミソ。
参考までに。
0393NAME IS NULL
2010/03/29(月) 02:38:37ID:???[金額/10*n] = 入力/10*n and 金額 = 入力
のような検索条件にするの?
0394377
2010/03/29(月) 03:06:14ID:???たとえば、kinngaku_idx = 2 and kingaku = 235 みたいに。
この場合、
log10(235) = 2.371... -> 2
と、
235 / 100 = 2.35 → 2
の二つの考え方ができるけど、都合のいい方でとらえてほしい。
SybaseのIQとかは内部的にこんなようなことをを自動でやってくれたりするけど、
コラムの値のバリエーションが分かってるなら「出来合いのロジック」よりも
賢いことができる。
・・・といいな。
0395377
2010/03/29(月) 03:11:56ID:???>の二つの考え方ができるけど・・・
じゃなくて
「とか、いくらでも考えられるけど」
の方が適当だね。
0396NAME IS NULL
2010/03/29(月) 03:24:02ID:???0397NAME IS NULL
2010/03/29(月) 11:33:12ID:???> ええっと、俺じゃなくて>>378へのレスだったことに今気がついた・・・
> 読み飛ばしてくれ・・・
いやいや、お前が文章削れよ。
0398NAME IS NULL
2010/03/29(月) 23:47:39ID:m9bmz7wYpg_dumpall でデータを入れ直しました。
Caches にもなし。アップデートで多量の一時ファイルを消費して、消さないということはあるのでしょうか。
0399377
2010/03/30(火) 02:39:17ID:???いやぁ、なんかせっかく書いたのが惜しくなっちゃったもんで・・・
>>398
>HDDが20GB位消えてしまった
ここがよくわからん。アップデート前より、
ディスク容量が減ったのか、
DBが使っていた領域が減ったのか、
どっち?
0400NAME IS NULL
2010/03/30(火) 08:52:54ID:???VACUUM FULLすればいいんじゃないの
0401NAME IS NULL
2010/03/31(水) 00:49:47ID:???Mac OS X だと何か特殊なアップグレード処理があるの? pg_migrator とか?
もしそのままDBファイルが使えるなら、内部的には dump & restore しているはずなんだけど?
0402NAME IS NULL
2010/03/31(水) 15:16:36ID:???環境によって違うだろうし、
どれくらいパフォーマンスがあがるか比較すればよいだけのこと。
0403NAME IS NULL
2010/04/01(木) 01:57:51ID:???初心者用サイトを見ながら、アカウントpostgresを作ったけれど見えなくなってしまいました。
コマンドプロンプトからパスワードは設定したのですが、これは別に気にしなくていいのでしょうか。
PCはwindows7です。また、最新版はpostgresql-8.2.1-1-jaなのでしょうか。
0404NAME IS NULL
2010/04/01(木) 04:58:55ID:???最新版は、8.4.3 で、postgresql-8.4.3-1-windows.exe のようだよ。
日本語版jaじゃなくても、OKなはず。
0405403
2010/04/01(木) 23:22:21ID:???postgresql-8.4.3-1-windows.exe を無事に見つけてインストールもできました。
ありがとうございました。
0406NAME IS NULL
2010/04/02(金) 00:17:14ID:e9uXcqr4VERBOSEオプションで出力されるメッセージも新しいものは、24時間以上でていない。
速くする為に設定するconfのオプションがあったら教えて下さい。
ver 8.4です。
0407NAME IS NULL
2010/04/02(金) 02:09:06ID:???0408NAME IS NULL
2010/04/02(金) 08:23:17ID:???ダンプとリストアを使ったら?
0409NAME IS NULL
2010/04/09(金) 04:40:35ID:???更新されてるね
> オプションのRECURSIVE修飾子は、WITHを、単に構文上の利便性の高めるだけでなく標準的なSQLでは不可能な機能を実現させます
http://www.postgresql.jp/document/8.4/html/queries-with.html
補完すると、not otherwiseは標準的なSQL「においてこれ以外の方法」では不可能な、って意味
recursiveが規格外の機能という意味じゃないよ
0410NAME IS NULL
2010/04/11(日) 00:10:05ID:PA0WZF+k「PostgreSQL 8.4.3文書 35.4. 完全な例」はその通り出来ました。
Cコード中でイベント発生行自身にアクセスするにはどうしたら良いですか?
SPI_Execに SELECT hoge from tbl_hoge where id_hoge=xxx とかしたく、
そのxxxが取れればいいな、と思っているんですが。
0411NAME IS NULL
2010/04/12(月) 15:21:30ID:???PostgreSQL 8.3.6 をインストールし、libpqを使用した
アプリをUniversal Binaryで作成しようとすると、
ppcのコンパイルでlibpqへのリンクエラーが出てしまいます。
どうやらPostgreSQLのコンパイルを行う必要があるみたいなのですが
詳しい方よろしくお願いします。
0412NAME IS NULL
2010/04/12(月) 16:23:06ID:???0413NAME IS NULL
2010/04/12(月) 21:51:23ID:???0414NAME IS NULL
2010/04/13(火) 12:33:52ID:???0415NAME IS NULL
2010/04/13(火) 17:02:00ID:???0416NAME IS NULL
2010/04/17(土) 08:40:15ID:???すげー期待してます。
0417NAME IS NULL
2010/04/17(土) 13:14:57ID:???0418NAME IS NULL
2010/04/17(土) 15:42:01ID:???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/
0419NAME IS NULL
2010/04/19(月) 13:28:36ID:Jr6VAcFd個人情報登録はちょっと勘弁してほしいね。
http://www.cmsinc.co.jp/seminar/20100415.html
0420NAME IS NULL
2010/04/21(水) 00:25:30ID:???0421NAME IS NULL
2010/04/21(水) 04:49:32ID:???0422NAME IS NULL
2010/04/21(水) 21:41:00ID:???0423NAME IS NULL
2010/04/21(水) 21:43:20ID:???0424NAME IS NULL
2010/04/22(木) 13:53:18ID:???0425NAME IS NULL
2010/04/22(木) 16:42:37ID:???Gmailとかtwitterで個人情報登録必須だったらファビョるくせに
0426NAME IS NULL
2010/04/22(木) 17:02:14ID:???文句言ってんじゃねーよ。
嫌なら利用しなきゃいいだけだ
0427NAME IS NULL
2010/04/22(木) 20:33:55ID:???住所氏名とクレジットカード番号取るサイトもあるが
0428NAME IS NULL
2010/04/22(木) 20:38:57ID:???Gmailとtwitterのアカウント取る代行サービスでもあんの?
0429NAME IS NULL
2010/04/22(木) 20:48:44ID:???0430NAME IS NULL
2010/04/22(木) 21:44:58ID:???0431NAME IS NULL
2010/04/22(木) 21:50:21ID:???0432NAME IS NULL
2010/04/23(金) 18:31:34ID:???ALTER の SQL 文が見られるような機能ってありませんか?
0433NAME IS NULL
2010/04/25(日) 05:00:10ID:???PgAdminIIIならALTER のSQL文を見れる。
答えになってないね。すまん。参考まで。
0434NAME IS NULL
2010/04/28(水) 06:54:55ID:???SQLが出力されると思うが、代わりにならないかな?
0435NAME IS NULL
2010/04/30(金) 02:59:33ID:tPUwSxgQINFO: 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 になるということではないのですか?
0436NAME IS NULL
2010/04/30(金) 06:43:22ID:???増えるし、空きがあってもそのまま。インデックスに必要なぶんが報告されているのでは。
完全に 0 にしたいのならば、VACUUM FULLにつづけてREINDEXもしてみては?
0437NAME IS NULL
2010/04/30(金) 19:09:03ID:???【サーバー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できますが、
pgAdmin�Vで値を見ると文字化けしているのですが。
これはどういった状況なんでしょうか?解決方法がありましたら
教えていただけないでしょうか?
または、参考になるHPがありましたら教えてください。
0438NAME IS NULL
2010/04/30(金) 20:26:27ID:???あと、サーバの設定でデフォルトのclient_encodingは何になっている?
0439NAME IS NULL
2010/04/30(金) 20:58:33ID:sn9MUW5D$conn=pg_connect(...);
pg_set_client_encoding($conn, 'utf-8');
してみたらどう?
0440NAME IS NULL
2010/04/30(金) 20:59:12ID:???0441NAME IS NULL
2010/04/30(金) 21:56:26ID:???UTF8をさらに、UTF8で変換するということをやっているということは、
何かおかしいので、どこか確認箇所の見落としがあるかもね。
PHPソースの変換サンプルを提示してみたら。
0442NAME IS NULL
2010/04/30(金) 23:37:04ID:???ユーザー名とパスワードの指定でできる?
0443437
2010/05/02(日) 12:52:56ID:???client_encodingはUTF8になっています。
>>439 >>440
PDOを使って接続していますので、
set client_encoding to 'UTF8'クエリを実行しています。
>>441
mb_detect_encoding()で文字コードを確認して
mb_convert_encoding()で変換していますが、
うまくいってないですね
色々試した結果、正常に動かないので
インストールから設定しなおしてみます。
ありがとうございました。
0444anonymous
2010/05/03(月) 00:31:54ID:???>>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 {
}
0445NAME IS NULL
2010/05/03(月) 12:00:14ID:Pnvwac5Cttp://www.postgresql.org/ftp/source/v9.0beta1/
0446435
2010/05/05(水) 00:55:52ID:???REINDEX しても 0 とは程遠い値になります。
まあ、具体的に困ったことが起きてるわけではないので、ほっときます。
どうもありがとうございました。
0447NAME IS NULL
2010/05/05(水) 01:44:57ID:???そこで言われているのって、free space mapを
VACUUMでどれだけ解放しましたよ〜って事じゃないのかね
0448NAME IS NULL
2010/05/05(水) 01:59:37ID:???VACUUM FULL+REINDEXなら確実に 0 になるので、もし 0 にならないと
感じているのであれば、447 の言うように、単なるメッセージの読み間違いと思われる。
0449NAME IS NULL
2010/05/05(水) 05:06:59ID:???FATやNTFSでデフラグしても頭から順番に並んで詰まる訳じゃないのと同じように
0450432
2010/05/06(木) 12:41:58ID:???開発者に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年以上前から既出なのにいまだ対応されずと、消極的なようですね。
0451NAME IS NULL
2010/05/06(木) 21:05:23ID:???0452410
2010/05/07(金) 01:14:30ID:???0453NAME IS NULL
2010/05/07(金) 07:50:02ID:???「Cコード中でイベント発生行自身にアクセスする」って話なら、
TriggerData 構造体の tg_trigtuple と tg_newtuple とは違うの? ...と思ったが、
これらの行の特定のフィールドにアクセスしたかったのかな? なら、SPI_getvalue or SPI_getbinval で正解。
0454NAME IS NULL
2010/05/08(土) 17:32:57ID:???差分管理するならCREATE文をコミットするのがいいと思うけど。
ALTERだったら大変じゃない?
0455432
2010/05/09(日) 20:08:51ID:???データが入ってて運用中のテーブルの変更なので、DROP/CREATEできないんです。
開発機のphpPgAdminを開発者にいじらせて、リリースの手順が svn merge→
mergeに関連するDB変更のSQLを流す→ソースのアップロード
なので、1発で全体を再現する完全なCREATE文は管理していません。
0456NAME IS NULL
2010/05/09(日) 20:42:57ID:???変更の度に末尾にalter文を追加していくってこと?
だったら、変更後にテーブル定義をSQLでエクスポートしたものを
バージョン管理すればいいじゃん。特に、alterを手で書けないような
開発者にメンテさせるんなら、これ一本でddlに触らせない方がいい。
0457NAME IS NULL
2010/05/10(月) 11:27:31ID:???0458432
2010/05/10(月) 12:59:52ID:???ひとつのリリースが終わったらファイルを変えて変更を累積しはじめ、
次のリリースのときにDB変更をまとめて本番機へ反映するために利用します。
できるにこしたことはありませんが、各DBのSQL方言を手で書けなくても
まともな設計をできる人はいると思います。
0459NAME IS NULL
2010/05/10(月) 14:53:30ID:???いつでもdrop database, create databaseで済む奴は楽だよね。
で、それで済まない環境を理解できないと。
0460NAME IS NULL
2010/05/10(月) 19:31:43ID:???運用中のテーブルに対して頻繁にALTER TABLEを実施するような状況ってこと?
運用開始からどのくらいたってるのかにも拠るとは思いますが、それ自体問題な気がしなくもなく。
# それとも普通の事で私がずれてるだけなのかな。
0461NAME IS NULL
2010/05/10(月) 22:13:11ID:???Railsのmigrationみたいなものと思えば、そんなに変じゃないと思うが?
あっちは、元に戻す手順とセットだけど。
そうは言っても、ALTER文くらい手書きしたってバチはあたらんよなぁ。
まともな設計できる人なら、SQL方言くらい覚えるだろ。
ところで、ツールを変える、って選択肢は無いのかね。
pgAdmin IIIなら、GUIでALTER TABLEできて、SQLも自動生成してくれるけど。
見えすぎるのが困るのなら、上手いこと権限設定すれば何とかならないか?
>>460
頻繁って、勝手に頻度上げるなよ。1度でも起き得るなら考慮すべきだろ。
0462NAME IS NULL
2010/05/11(火) 07:55:06ID:hNJe4LWTツールを変える選択肢、とかいうならもったいぶらずにお勧めのものを教えてあげればよいのに。
0463NAME IS NULL
2010/05/11(火) 12:36:28ID:???pgAdmin って書いてあるだろ。
使い古されて言いたかないが、「半年ROMってろ」を地で行ってるな、アンタ。
0464NAME IS NULL
2010/05/11(火) 12:58:06ID:???仕様変更などでカラムを追加する場合はどうやってんの?
0465NAME IS NULL
2010/05/11(火) 14:32:22ID:???0466460
2010/05/11(火) 20:48:39ID:???別に ALTER TABLE 使うなとか、CREATE TABLE を常にやれ、とかそういう話じゃないですよ。
リリースして最初の1〜2ヶ月とかなら運用中のテーブルに直接変更かけるのはわからなくもないけど、
基本的に設計ができているなら変更が発生するなんてほとんどないと思うんです。
※単体アプリ専用テーブルは除く
でも今はそういうことを気にせず変更を随時するもんだ、って言うような事になってるなら
私は古いんでしょうね。
ちなみに私が経験してきた範囲では、運用が始まってからそういったテーブル仕様変更をする際は
週末の運用後にフルバックアップとってアプリの持つ更新ログ回収してガッツリ確認までやる大掛かり
な入れ替え作業になります。
外部キーやトリガーやビューといった要因で問題がでたら目も当てられません.......
0467NAME IS NULL
2010/05/12(水) 12:49:11ID:???なんで頻繁に発生することが前提なんだ?
まぁそれはともかく、お前のところでは、過去も未来も仕様変更によるカラムの追加は
一切無いということだな?
0468NAME IS NULL
2010/05/12(水) 13:42:18ID:???しょっちゅう増えるならおかしいって書いてるじゃん。
でもまぁ、仕様変更の内容に応じて増えるのはいたって普通のことだと思うな。
項目増えてもスキーマ変更が起こりにくいように柔軟な設計をしました!っていうのは
逆にいやなにおいがするかもだ。
0469NAME IS NULL
2010/05/12(水) 15:38:58ID:???既存のプログラムに影響与えるような殖やし方すんなよ
0470NAME IS NULL
2010/05/12(水) 15:58:59ID:???0471NAME IS NULL
2010/05/12(水) 20:59:34ID:???0472NAME IS NULL
2010/05/12(水) 21:04:37ID:???0473NAME IS NULL
2010/05/12(水) 22:58:20ID:???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 にもバグがあって散々悩まされましたし、、、
0474NAME IS NULL
2010/05/13(木) 23:53:45ID:???postegresqlの配列型(固定長integer[]とか)の受け取り方がよくわかりませぬ。。
どうやって受け取ればよいのでしょう?
0475NAME IS NULL
2010/05/14(金) 00:32:06ID:???0476NAME IS NULL
2010/05/14(金) 00:39:09ID:???一応 PostgreSQL でも、既存の行の初期値がNULLで良いなら気軽に ADD COLUMN できるし、
配列, hstore, xml なんかの構造化されていないデータを格納する方法はあるわけで、
「データの項目増やしたいから」ってのは一番の理由では無いのでは。
0477NAME IS NULL
2010/05/14(金) 00:47:19ID:???0478NAME IS NULL
2010/05/17(月) 23:24:27ID:???有難うございました。無事動きました。
0479NAME IS NULL
2010/05/20(木) 23:43:15ID:Y24F0uiZ0480NAME IS NULL
2010/05/21(金) 18:24:56ID:???PostgreSQL8.2.5
slony-i 1.2.12
上記環境で、Slonyのテーブル:sl_log_2のサイズが9GBを超えてしまいました
このsl_log_2のサイズを小さくしたいのですが、どうすればいいでしょうか?
あとslony-iの動作確認用のコマンドとか無いでしょうか?
(MySQLでいうところの、show master|slave statusとか)
0481NAME IS NULL
2010/05/23(日) 05:49:24ID:E/lX6C9v?Fix possible crash if a cache reset message is received during rebuild of a relcache entry
って、どの程度の頻度なんでしょう? 急いでバージョンアップすべき?
0482NAME IS NULL
2010/05/23(日) 17:41:38ID:???たぶん、踏む可能性はとても低い。CLOBBER_CACHE_ALWAYS 付きでビルドした
負荷試験でしか確認されていなかったような気がする。
最悪、クラッシュして自動リカバリが走るだけだから、データ損失はないだろうし。
0483NAME IS NULL
2010/05/23(日) 21:07:44ID:E/lX6C9vありがとうございます。文章読むと不安になりまして、かといって
リリースされたばかりで適用するのも怖いもので、、、。
数日様子を見て、1台ずつ適用してみます。
0484お願いします。
2010/05/25(火) 15:11:58ID:???そこでODBC接続に詳しい方にお尋ねしたい事があります。
リンク先を変更する際にリンクテーブルマネージャを使用すると
大変時間がかかるので、管理ツールのODBCデータソースアドミニストレータより
アクセスでリンク設定しているDNSの名前の構成のサーバー名を変更する形でやろうとしました。
できません。随時リンクの更新をしなければならないのでしょうか?
例えばテスト環境と本番環境それぞれにpostgreSQLが動作しているサーバーがあり、
テスト環境でリンクを作成したMDBファイルを本番環境で実行する場合も
ODBCドライバ等の設定が同一であっても、その都度更新をしなくてはいけないのでしょうか?
アクセスでリンクテーブルマネージャの画面を見ると
○地球マーク public_テーブル名 (DNS=ドライバで設定した名前;DATABASE=DB名;)
となってますが、ドライバで設定した名前以外に何か持っているのでしょうかね?
初めてなのでさっぱりわかりません><
0485NAME IS NULL
2010/05/25(火) 16:44:56ID:???俺の疑問。何で本番用DBにリンク貼ったMDBとテスト用DBにリンク貼ったMDBの二つ
用意しないんだろう?俺がAccessのド素人故に抱く疑問なんだろうか。
それともう一つの疑問。何でAccess経由でODBCを使ってるんだろう?
直接使えばいいんじゃ。
0486NAME IS NULL
2010/05/25(火) 17:27:21ID:???レスありがとうございます。
Access経由といいますか、Accessでレポート出力しています。
既存のシステムがpostgresqlでそこにアクセスしています。
0487NAME IS NULL
2010/05/25(火) 20:16:10ID:???Accessのスレや検索するといいでしょう。
0488NAME IS NULL
2010/05/26(水) 00:12:40ID:???0489NAME IS NULL
2010/05/26(水) 01:40:15ID:???0490NAME IS NULL
2010/05/29(土) 15:34:55ID:???どうすんだよ・・・スレ止まっちゃったじゃねぇか
0491NAME IS NULL
2010/05/30(日) 12:35:32ID:???0492NAME IS NULL
2010/06/03(木) 00:03:08ID:ZpHh5vtT0493NAME IS NULL
2010/06/03(木) 01:50:54ID:???createdb された db1 と db2 があったとして、
ユーザ human は db1 だけ見られて、db2 は見られない、ってできませんか?
pg_hba.conf で指定できるけど、
createdb とかする度にその定義を書いて再起動するのはイマイチで。
0494NAME IS NULL
2010/06/03(木) 02:07:27ID:???もしそうなら俺も知りたい
0495494
2010/06/03(木) 02:18:53ID:???REVOKE CONNECT ON DATABASE db2 FROM public;
とかやってみたら、オーナー以外接続できないようにできた。
# 依然 \l には出てくるけど。
0496NAME IS NULL
2010/06/03(木) 03:23:36ID:???存在すら隠したいならインスタンス2つ立ち上げて接続分けるしかない
0497NAME IS NULL
2010/06/05(土) 13:29:34ID:???Shared Database Hosting
ttp://wiki.postgresql.org/wiki/Shared_Database_Hosting
0498NAME IS NULL
2010/06/12(土) 17:56:01ID:wRV5qdR+以前まで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
0499NAME IS NULL
2010/06/12(土) 19:23:01ID:???postgres データベースをDROPしちゃったのでは?
createdb postgres で作り直すか、-d <既にあるDB> で接続するDBを明示すればOKと思われる。
ただ、いろんなコマンドで -d 指定するのも面倒だから、postgres を作り直したほうが良いかもね。
0500NAME IS NULL
2010/06/12(土) 19:39:08ID:???見事そのとおりでした。
postgresのDBは必須だったのですね。
質問内容に対する見事なエスパーありがとうございました。
0501NAME IS NULL
2010/06/13(日) 06:39:39ID:???0502NAME IS NULL
2010/06/13(日) 07:48:43ID:???(postgresデータベースを作るときを除く。)
psqlとかはユーザ名と同じDBになるけど。
0503NAME IS NULL
2010/06/14(月) 16:29:13ID:???template1って何だったっけか?
0504NAME IS NULL
2010/06/14(月) 16:30:19ID:???知りたい奴はぐぐれ。
0505NAME IS NULL
2010/06/15(火) 07:35:06ID:???0506NAME IS NULL
2010/06/15(火) 13:53:22ID:NHxMlo8dコードでリンクは切替えられると思ったが
#昔やったきがするけど、コードは今手元に無いw
0507NAME IS NULL
2010/06/18(金) 18:45:26ID:???http://livedoor.blogimg.jp/tekepo/imgs/3/4/3414dfca.jpg
ばらまこうぜ!
0508NAME IS NULL
2010/06/24(木) 17:12:55ID:???突然UPDATEに要する時間が20倍になってしまいました。(900レコードを1レコードずつ更新するのに1秒以下で
0509NAME IS NULL
2010/06/24(木) 17:14:58ID:???0510NAME IS NULL
2010/06/24(木) 17:18:54ID:???突然UPDATEに要する時間が20倍になってしまいました。
(900レコードを1レコードずつ更新するのに1秒以下で済んでいた)
REINDEXすると一時的に改善するんですが、数分経つとまた20秒くらいかかってしまいます。
まったく解決策が見出せないのです・・・どのあたりについて調べればいいかでもいいのでアドバイスお願いします
RHEL5 POstgreSQL8.3.1 slony-i1.2
0511NAME IS NULL
2010/06/24(木) 17:23:18ID:???ありがとうございます。
autovacuumを設定しています。(ログ出力はしていませんが・・・)
postgres.confのAUTOVACUUM PARAMETERSで設定しているのは以下の3つです
autovacuum = on
log_autovacuum_min_duration = 2
autovacuum_naptime = 3min
0512NAME IS NULL
2010/06/24(木) 17:42:56ID:???んーーーー
とりあえず切り分けしたいので、コマンドでVACUUM ANALYZEして直後に時間測ってみて
0513NAME IS NULL
2010/06/24(木) 17:47:22ID:???Free Space Map関連を増やしてみるとか
0514NAME IS NULL
2010/06/24(木) 18:36:10ID:???それ以外のことは何もしていません。とりあえず今は1秒くらいで処理が終わっています。
confは下記以外デフォルトです
max_connections = 100
shared_buffers = 32MB
AUTOVACUUM関連
関係あるか分かりませんが、topコマンドでメモリ使用量を確認したところ
遅い時はusedが物理メモリ8G中7.9GBくらいで、通常は、8G中7GBくらいでした。
FSMが小さいと、データベースクラスタの容量がどんどん膨れ上がると書いている人が居たので
関係ありそうです。FSM周りについて少し勉強してみます。
0515NAME IS NULL
2010/06/24(木) 20:48:28ID:???0516NAME IS NULL
2010/06/25(金) 09:31:50ID:???0517NAME IS NULL
2010/06/25(金) 15:17:21ID:???他のトランザクションと重なってたりするとHOT効かないことあるんで、
排他ロックかけるってのもありかも?
あとはFILLFACTOR調整したり・・・
0518NAME IS NULL
2010/06/25(金) 15:57:23ID:???いろんな測定。OSのI/Oとかも含めて。
0519NAME IS NULL
2010/06/25(金) 18:09:29ID:???0520NAME IS NULL
2010/06/26(土) 00:46:09ID:cCUVcESFlets postgres 見てチューニングするといいよ
0521NAME IS NULL
2010/06/27(日) 16:04:21ID:???まず、実行計画を速い時と遅い時で見ること。
ソートがオンメモリとディスク上になってたりしないか?
OSが何なのかわからないけど、vmstat的なもので、速い時と遅い時になにか
違いがあるのか調べたら?
0522NAME IS NULL
2010/06/27(日) 16:57:32ID:???定期的にREINDEXする、でもいいけど
0523NAME IS NULL
2010/06/27(日) 17:14:24ID:???0524NAME IS NULL
2010/06/27(日) 22:51:05ID:???インデックスを張ったカラムを更新しているのでなければ、
そのテーブルの fillfactor を 50% 未満にすると改善されるのでは。
0525NAME IS NULL
2010/06/28(月) 03:03:26ID:???0526NAME IS NULL
2010/06/28(月) 11:48:20ID:???0527510
2010/06/28(月) 18:09:19ID:???現在は、処理が正常に動いている(1秒間に900レコードupdate出来てる)ので
再発した時のために教わったことを整理して備えてる状態です。
お陰様でやれる事が見えてきました。
topコマンド画面をただ眺めてる時間が短くなりそうです(汗
しかしすでに稼動中且つ正常に動作している中で色々試すのは怖いものがありますね・・・
>>517
PKのカラムは更新していません。
>>518
SQLの実行時間を測って満足してました。
HDDへの書込み速度を比べてみます
>>517,520,524
HOT、FILLFACTORについて勉強してみます
>>521
なるほど・・・勉強になります
インデックスが使われることは確認したのですが
そういう事も分かるんですね
>>522-524
原因が隠蔽されてしまう可能性がありますが・・・検討してみます。
>>525
追記型DBなので効果が無いと思うんですがどうなんでしょうか
>>526
何か分かったら絶対書き込むようにします
レス消費して恐縮ですが・・・
0528NAME IS NULL
2010/06/28(月) 18:18:57ID:???なんかわかって気が向いたらまた書き込みヨロ。
0529NAME IS NULL
2010/06/29(火) 22:38:45ID:???レスはどんどん消費してほしい
0530NAME IS NULL
2010/07/08(木) 16:17:31ID:089bL9oR現在、postgresqlをつかったpush型webアプリケーションを調査中です
tomcat+apache+phpで設計しようと思うのだけれども
できればwebサーバー側のスクリプトは統一したいのです
そこでphpをやめてjavaに統一しようと思ったのですが、notify/listenをトリガーに設定しようとすると
java/jdbcではポーリングをするはめになるようです(非同期がつかえない)
だからと言ってjavaをやめるとcometがどうもよくないのです
そこで質問です
java/phpのブリッジにはsapiか、jniのどちらを採用する方が一般的でしょうか?
また、その際の注意点、留意点があったら教えてください
あと調査の結果でないと思うのだけれども、jdbcでnotify/listenでポーリングせず
スマートに非同期できる方法があるのでしたら教えてください
よろしくお願いします
0531NAME IS NULL
2010/07/08(木) 20:35:09ID:???0532NAME IS NULL
2010/07/19(月) 11:51:06ID:???0533NAME IS NULL
2010/07/31(土) 12:07:33ID:6Gfxgj+P0534NAME IS NULL
2010/08/02(月) 22:49:28ID:???0535NAME IS NULL
2010/08/06(金) 10:14:15ID:???8.3です。
0536NAME IS NULL
2010/08/06(金) 11:28:44ID:???ビューは仮想的なテーブルであって、ビュー自体にデータを保存する場所機能がない為、
インデックスを張る事はできません。
テーブルに適切なインデックスを設定して下さい。
テーブルに張ったインデックスは、ビューを使った時に有効活用されます。
0537NAME IS NULL
2010/08/07(土) 09:20:28ID:???rootでは動かせない?
0538NAME IS NULL
2010/08/08(日) 11:34:03ID:???目的がはっきりしてるならできないこともないけど、
ユーザーの作り方がわからない、とかならやめといたふが・・・
0539NAME IS NULL
2010/08/08(日) 13:55:33ID:???rootになれないので一般ユーザのままインストールできますかって質問なら成立するけど
0540NAME IS NULL
2010/08/08(日) 23:03:28ID:???対応できるのかなと思って。
0541NAME IS NULL
2010/08/09(月) 01:00:24ID:???そんな奴いるのか?
0542NAME IS NULL
2010/08/09(月) 18:09:35ID:???DB使えるなら誰でもrootで実行できちゃうよね
0543NAME IS NULL
2010/08/09(月) 18:12:12ID:???ポート1024以下で動かしたい場合でもリダイレクトでやるべきだろうし。
0544NAME IS NULL
2010/08/11(水) 16:50:59ID:???rootで動かすってのがごっちゃになってない?
0545NAME IS NULL
2010/08/22(日) 20:28:16ID:???別セッションでトランザクションがかかりっぱなしになっている以外に
原因て考えられるでしょうか。
OS: CentOS5.2
ver: postgres8.1.11
Webシステム全体が止まってしまうのですがCPU使用率も高くないし、トランザクションかけてるところは
全部チェックしたのですがあやしいところがないし、pg_logにも何も出ないしで
困っています
0546NAME IS NULL
2010/08/22(日) 20:54:20ID:???トリガーでなんかやってるとか?
0547545
2010/08/22(日) 21:09:38ID:TfBU30EW気になるのは止まったときにpg_activityをみると20個くらいはAのテーブルのUPDATE文なのですが、
2,3個BのテーブルのUPDATE文が混じってることです。トランザクションが問題なら
別のテーブルに影響でないですよね?Bが20個くらいでAが2,3個の時もあります。
トランザクション中に違う順番でロックかけてデッドロックも疑ったのですが、
プログラムを見てもこれと行ってあやしいところがありません。むーーーん、、、
0548NAME IS NULL
2010/08/24(火) 09:12:27ID:???0549NAME IS NULL
2010/08/24(火) 10:00:21ID:???0550NAME IS NULL
2010/08/24(火) 13:08:14ID:4eZnnJ7wその機能は、もともと稼働していたのか?
新規なのか?
新規なら機能バグでしょ?
プーリングしてる?
時間のかかるSQL文をチェックする変数あったよね?
0551NAME IS NULL
2010/08/24(火) 20:47:03ID:???0552NAME IS NULL
2010/08/24(火) 23:41:46ID:???このシステムは3年ほど稼働していて新機能が随時追加されていて、
去年辺りからあまりレベルの高くないPGがまじっていて何度か致命的なフリーズをおこし
(ユーザーの1クリックで500MBのテーブルを条件無しで全部メモりに読み込んだりとか、
登録する度に過去データをコピーするので倍々にレコードが増えていったりとかw)、
その度に私が対処してきたのですが、今回ばかりは原因を見つけられずにここに
相談してみた次第です。同じモジュールが他にも10サイトほどで稼働しているのですが、
現状ここでしか起きていません。ただ、ここでしか使ってない機能もあるしこのサイトが
一番負荷が大きいので、プログラムの問題なのかOS/DBの設定の問題なのか
ハードウェアの問題なのかの切り分けも微妙という状態です。
一応Webサーバーの方にはトランザクションかかりっぱなしならコミットするという
ロジックを入れて二日ほど落ちていません。が、もともと週末に1,2回落ちるだけなのでまだなんとも。
>>550
フリーズ中にpg_activityみてもPrimaryKEY指定のUPDATE文が残っているだけですし、
ミドルウェアの機能で全SQLの実行時間を集計していて特にあやしいSQL文はありません。
というか毎晩vacuumしたり過去データ削除で時間はかかってますがフリーズのタイミングと
相関がありません。
0553NAME IS NULL
2010/08/25(水) 07:41:55ID:???トランザクションと全く関係ないような画面のSELECT分にfor updateが付いてるとかのイージーエラーじゃね。
0554NAME IS NULL
2010/08/25(水) 22:00:20ID:???使ってないしそのPGはselect for updateの存在すら知らないと思います。
やっぱりロック絡みですよね。今度起きたらpg_lockみてみます。
select * from pg_locks l left outer join pg_class c on l.relation = c.relfilenode
こんな感じでロックかかってるテーブル特定できますよね。
0555NAME IS NULL
2010/08/25(水) 22:20:10ID:???0556NAME IS NULL
2010/08/25(水) 22:35:25ID:???決め付けや思い込みでバグが見つけれて無いだけな気がする
出てません、してません、ありません
では見つかるバグも見つからないと思う。
0557NAME IS NULL
2010/08/25(水) 22:41:51ID:???結構同感。
> みなさまレスありがとうございます。 >>551ログの設定はデフォルトです。
で、結局ログ出てるの出てないの?
回答者にデフォルトがどうだったとか、いちいち調べさせたいわけ?
> 全部チェックしたのですがあやしいところがないし、pg_logにも何も出ないしで
何も出ないとは? UPDATE 以外のも何も出てないの?
本当に微塵も何も出てないなら、>>551 となって話はループするんだが。
0558NAME IS NULL
2010/08/25(水) 22:45:59ID:???MLじゃなくてこっちで質問する判断力がまずどうかと思う
名前だして質問したくないレベルってことか?
0559NAME IS NULL
2010/08/25(水) 22:55:28ID:???0560NAME IS NULL
2010/08/25(水) 23:03:38ID:???0561NAME IS NULL
2010/08/25(水) 23:46:52ID:???このレベルの人だとデッドロックは見つけられないだろうな〜
とは思った(笑)
0562NAME IS NULL
2010/08/31(火) 01:13:31ID:???すいません、書き方が悪かったですね。フリーズに関連するログは出てないだけで、
それ以外の時には「LOG: クライアント接続に想定外のEOFがありました」等はでています。
(posgresql-8.4にupgradeしたのでログが日本語になりました)
>>558
MLは昔はいくつも入ってたのですがチェックするだけで時間喰うしつい答えたくなったりするので
最近は使っていませんでした。質問ある時だけ入るのも悪い気がするし
>>561
すいません、今までは自分が全体を見てるプロジェクトではデッドロックなんて起こしたこと無かったので
PostgreSQLのpg_locksは今回のことで知ったばかりで、無知でお恥ずかしい限りです。
いちPGの時は関わったプロジェクトでデッドロックが起きた事もありますが、OracleでDBAもいたし
自分のところじゃなかったので首突っ込んでなかったんですよね
0563NAME IS NULL
2010/08/31(火) 04:08:26ID:???posgresql-8.4にupgradeしたので
posgresql-8.4にupgradeしたので
0564NAME IS NULL
2010/08/31(火) 08:36:31ID:???MLに聞かない理由は分かった。
で、ここなら質問ある時だけくるのもおkなのね
0565NAME IS NULL
2010/08/31(火) 08:46:34ID:???ダメな理由があるか?
0566NAME IS NULL
2010/08/31(火) 08:55:34ID:???べつに
こっちの人には悪いと思わないのかなと思ってね
俺はMLでも2chでも、一見さんでも構わないと思うけど、
どうやって聞いたらアドバイスが貰いやすいとか、
考えて質問しろよと思う
0567NAME IS NULL
2010/08/31(火) 12:04:21ID:???postgresの問題じゃないだろう、というのもあります。こっちの方が
気軽に聞けるし、ここはちょくちょく来てますし。質問は
>別セッションでトランザクションがかかりっぱなしになっている以外に
>原因て考えられるでしょうか。
に集約されるのですがわかりにくかったでしょうか。
他に考えられないのであれば自分のバグの探し方が足りないだけでしょうし、
他の原因もあるのであれば見当違いの調査をしてる可能性もあるので、
なんかヒントでもないかなあ、と思って質問した次第です。
まあでも雰囲気悪くしちゃったみたいなんでおとなしくプログラムのバグ
探し続けます。
0568NAME IS NULL
2010/08/31(火) 12:15:14ID:???あるよ。
ハードウェアのトラブル。
0569NAME IS NULL
2010/08/31(火) 20:07:41ID:???0570NAME IS NULL
2010/08/31(火) 21:01:07ID:???0571NAME IS NULL
2010/09/01(水) 00:04:11ID:???0572NAME IS NULL
2010/09/04(土) 02:19:05ID:???postgresの問題じゃないとするのならスレ違いじゃね?
それはそれとして、稼働中のシステムのものについてそんな簡単に
アップグレードしちゃっていいの?
ちゃんと検討してるのか怪しいように思える。
んで、本題だけど、今まで発生しなかったけれど、プログラムの修正によって
発生するようになったのなら差分を追いかければ済む話。
そこで作りこんでいなければ、「あまりレベルの高くないPG」以外が作った
潜在バグが表面化しただけ。
0573NAME IS NULL
2010/09/04(土) 17:23:36ID:???の間違いのような気がする
0574NAME IS NULL
2010/09/06(月) 13:46:02ID:???成功したらコミット、SQL例外が出たときのみロールバックする、というコードがあり
SQL例外以外の例外の時にトランザクションがかかりっぱなしでした。
そのPGが参考にしたと思われるコードではSQL例外以外のものは出る余地がなかったのですが
問題の箇所では異常データが送られてくることを想定してないといけなかったという感じです。
トランザクションかけるときは全ての例外キャッチでロールバックするというのを徹底したいと思います。
ありがとうございました。
バージョンアップについては、前述の通りASPで同じシステムが10サイト以上入っており、
新サイト追加の時にテストして8.4を導入済みで実績があった(暗黙の型変換絡みで一カ所だけ修正が必要でした)
のと、検索速度増加を期待してあげました。というかいちいちここで背景まで説明するのは
うざいだけだと思うんだけどそんなに聞きたいの?単に「どうせロクに検査してねえんだろ」という
事を確認して他人をバカにしたいだけだからスルーするのが大人ってものなんだろうか
0575NAME IS NULL
2010/09/06(月) 13:57:19ID:???0576NAME IS NULL
2010/09/06(月) 14:31:44ID:???0577NAME IS NULL
2010/09/06(月) 14:39:16ID:???>原因て考えられるでしょうか。
0578NAME IS NULL
2010/09/06(月) 16:14:24ID:???ちなみにまとめておくと、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でもないのにこんなの見たら一発でわからないと
駄目なんですかね。頑張って精進します。
0579NAME IS NULL
2010/09/06(月) 16:30:33ID:???良く分かってないのはお前だろ
0580NAME IS NULL
2010/09/06(月) 16:31:45ID:???結局正解はお前だけだったな
0581NAME IS NULL
2010/09/06(月) 16:40:29ID:???まあ知ったこっちゃないか
0582NAME IS NULL
2010/09/06(月) 16:42:55ID:???どうしたらこんな素っ頓狂な発想がでてくるのかね>>579
0583NAME IS NULL
2010/09/06(月) 16:47:10ID:???0584NAME IS NULL
2010/09/06(月) 16:52:16ID:???って言ってもphpとかのスクリプト言語しかやった事無い人には想像できないよね
0585NAME IS NULL
2010/09/06(月) 16:53:39ID:???0586NAME IS NULL
2010/09/06(月) 16:55:56ID:???0587NAME IS NULL
2010/09/06(月) 17:06:18ID:???その他の例外は何もしないでfinallyでclose?
0588NAME IS NULL
2010/09/06(月) 17:18:38ID:???いちいちコネクションを持ちまわらなくてもいいようにスレッドローカルに紐づけて
任意の場所でconnection.close()が呼べるようになってるから
だから>>587みたいなtry-catch-finallyじゃなくて、トランザクションをかけるところでは
try-catchでrollback、SQL実行は別のDaoクラスのメソッドでtry-finallyでクローズ。
Daoの方はトランザクションがかかってるかどうかは気にしない
0589NAME IS NULL
2010/09/06(月) 17:22:34ID:???質問者って開発言語すら書いてないよね。
最初はDB知らないだけかと思ってたけど、
SEとしての資質が欠如しているような
0590NAME IS NULL
2010/09/06(月) 17:34:17ID:???お前が馬鹿なのと品性下劣なのと自分の醜悪な部分を人に見せびらかすという
性癖を持っている変態なのは理解してあげたから、もう二度と湧いて出てくるな。
0591NAME IS NULL
2010/09/06(月) 17:52:58ID:???0592NAME IS NULL
2010/09/06(月) 18:10:18ID:???よちよち歩きのクセにみえだけは貼りたがる
0593NAME IS NULL
2010/09/06(月) 18:13:18ID:???同じ状況に戻すだろう、どんなミドルなんちゃらを使ってんだ?
0594NAME IS NULL
2010/09/06(月) 18:35:44ID:???TomcatとJavaでやってるけどclose漏れ以外でそんなんなったことないぞ
0595NAME IS NULL
2010/09/06(月) 18:47:47ID:???0596NAME IS NULL
2010/09/06(月) 18:49:55ID:???確かにプーリングした場合に、使うミドルウエアによってはあり得るんだろうけど
それにしたって、普通にプーリングしてもトランザクションなんて維持されないし、
かなり特殊なパターンじゃね?
0597NAME IS NULL
2010/09/06(月) 18:50:17ID:???0598NAME IS NULL
2010/09/06(月) 20:08:50ID:???もちろん"するべからず"だけどね(笑)
0599NAME IS NULL
2010/09/06(月) 20:47:30ID:???0600NAME IS NULL
2010/09/06(月) 22:16:25ID:???してもコミットされないというのが最近の主流だと思ってたんだが、うちは少数派だったんだな。
というかスレタイとずれまくり
0601NAME IS NULL
2010/09/06(月) 22:31:42ID:???また概念が違うしな
0602NAME IS NULL
2010/09/06(月) 22:58:46ID:???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だもの。
0603NAME IS NULL
2010/09/06(月) 23:58:01ID:???分散トランザクション使ってるかもしれないだろ
そんな予測もできない奴はPHPでも使ってろよ
0604NAME IS NULL
2010/09/06(月) 23:58:52ID:???こいつらが一番解ってない
0605NAME IS NULL
2010/09/07(火) 03:54:51ID:???> 事を確認して他人をバカにしたいだけ
君は本当にバカだなぁ。
そりゃあ検査してないなら、自分が見てるプロジェクトではこんなことなかった!とかいう傲慢なPLをバカにするけれどね。
そうでなくともトラブル発生中に他の変更要素を加えるなんてバカだなぁとしか思えないのに。
0606NAME IS NULL
2010/09/07(火) 09:10:20ID:???いい加減にスルーしろよ
0607NAME IS NULL
2010/09/07(火) 09:41:23ID:???0608NAME IS NULL
2010/09/07(火) 17:07:31ID:???0609NAME IS NULL
2010/09/07(火) 17:29:05ID:???dblinkは調べた?
0610NAME IS NULL
2010/09/07(火) 18:00:07ID:???これって違うマシンのPostgreSQLサーバにも接続できるんでしたっけ?
0611NAME IS NULL
2010/09/07(火) 18:14:23ID:???hostやportを指定するから出来るんじゃね?
0612NAME IS NULL
2010/09/07(火) 18:25:25ID:???これって、dblink用にモジュール追加するんでしたっけ?
ってことは、インフラチームにお伺いを立てることに…
0613NAME IS NULL
2010/09/07(火) 19:31:57ID:???ソースからやってるなら頑張ってとしか言えない
0614NAME IS NULL
2010/09/08(水) 03:10:54ID:???がんばって思い出しなよ
0615k
2010/09/08(水) 18:08:59ID:c+IijDxV0616NAME IS NULL
2010/09/21(火) 12:09:28ID:Fbol+TGjhttp://www.postgresql.org/
0617NAME IS NULL
2010/09/21(火) 12:47:09ID:???0618NAME IS NULL
2010/09/22(水) 22:54:22ID:3dsl4h+OBEGIN;
SELECT Fields FROM Table;
COMMIT;
と書かなくても
SELECT Fields FROM Table;
と書けば
トランザクションが働きますか?
0619NAME IS NULL
2010/09/22(水) 22:56:52ID:3dsl4h+OPostgresqlは、
BEGIN;
UPDATE Table SET Fields = 1 ;
COMMIT;
と書かなくても
UPDATE Table SET Fields = 1 ;
と書けば
トランザクションが働きますか?
0620NAME IS NULL
2010/09/22(水) 23:42:01ID:???psqlから入力すれば、自動コミットされる。
0621NAME IS NULL
2010/09/22(水) 23:55:56ID:???0622NAME IS NULL
2010/09/26(日) 14:11:40ID:???SELECT pg_start_backup 後の
マスター側からスレーブ側へのデータコピーが、よくないのかな。
スレーブ側が立ち上がらない。
0623NAME IS NULL
2010/09/26(日) 14:41:15ID:???0624NAME IS NULL
2010/09/26(日) 15:43:18ID:???いくつか紹介されてる。ぐぐれ >>623
0625NAME IS NULL
2010/09/26(日) 15:54:27ID:???どんなエラーメッセージが出てる?
0626622
2010/09/26(日) 16:23:24ID:???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')
0627626
2010/09/26(日) 16:46:12ID:???■pg_log(一部文字化けしています) は、スレーブ側のログではなく、
コピーした後のログ、すなわち、マスタ側のログでしたので、関係ありません。
イベントビューアのエラーログしか情報はわかりません。
コピー後は、postmaster.pid は、削除してスレーブ起動していますが、
イベントビューアの下記エラー
GMT FATAL: bNt@C"postmaster.pid"????: Permission denied
が問題なのかな。
0628NAME IS NULL
2010/09/26(日) 17:54:42ID:???0629NAME IS NULL
2010/09/26(日) 18:03:07ID:???きちんと設定しろ。全然できてないじゃないか。
Unix版の設定をよく読んで理解したうえでやってくれ。
スレーブ側のログも読めないんじゃどうしようもない。
0630NAME IS NULL
2010/09/26(日) 21:20:50ID:???0631NAME IS NULL
2010/09/26(日) 22:42:45ID:???ログないんだからアドバイスしようがないだろ >>630
0632NAME IS NULL
2010/09/26(日) 22:51:41ID:???なんの実もない煽りだけやんなら目障りだから書き込むな
0633NAME IS NULL
2010/09/26(日) 23:17:27ID:???0634NAME IS NULL
2010/09/26(日) 23:47:09ID:???逆切れしてる・・・ゆとりか。
0635NAME IS NULL
2010/09/27(月) 00:09:50ID:???0636NAME IS NULL
2010/09/27(月) 00:22:50ID:???だれが回答者?
0637NAME IS NULL
2010/09/27(月) 00:32:54ID:???いるのは質問者と外野のみ
0638622,626
2010/09/27(月) 03:03:27ID:???pg_log配下のログは生成されていないようなので、
それ以前の問題ということだと思います。
イベントビューアログのエラー、
GMT FATAL: bNt@C"postmaster.pid"????: Permission denied
しか手がかりはありません。
Win版で動作確認された方いるのでしたら、その設定例があれば、幸いです。
中国人か台湾人のWin版の成功例があるみたいだから、参考にしてみます。
*.confの設定はわかるけど、中国語の解読が問題だな。(^^;
0639622,626
2010/09/27(月) 03:19:16ID:???0640NAME IS NULL
2010/09/27(月) 03:35:19ID:???だ か ら
スレーブ側のpostgresql.confにログを出させる設定しないとログがでないんだよ。
もしもマスタのpostgresql.confをそのまま使っていて、ディレクトリまわりを特に変わった設定してないなら、
絶対にログがでるはず。それでログがでないのなら、スレーブが立ち上がっていない可能性がある。
だが、スレーブは立ち上がってpsqlで接続できんだろ?つうことはログがでないのはおかしいのだ。
ログを出すように努力しろとしか言えない。
postgresql.confの設定値のうちディレクトリのどこかの設定がおかしくてマスタとスレーブがごっちゃになってるとかじゃないのか?
もちろんスレーブは起動してないなんてオチ。
0641NAME IS NULL
2010/09/27(月) 03:39:17ID:???いい加減にしろよお前
0642622,626
2010/09/27(月) 10:00:36ID:???>>640
スレーブが立ち上がらない、その原因がわからないってことですが。
Program Files\PostgreSQL\9.0\data 配下をマスターからコピーすると、
立ち上がらないということです。
もちろん、*.conf 設定はしています。
コピーしないで、同じ、*.conf 設定だとスレーブは立ち上がります。
0643NAME IS NULL
2010/09/27(月) 10:42:47ID:???ワロスペシャル
>>622
> スレーブ側が立ち上がらない。
0644NAME IS NULL
2010/09/27(月) 10:46:43ID:???WinOSは何?
postmaster.pidが作れないってことかな?
面倒だからフォルダ全部everyone フルコントロールにして試したらどう?
0645NAME IS NULL
2010/09/27(月) 10:54:25ID:???0646NAME IS NULL
2010/09/27(月) 11:44:03ID:???pg_start_backupとか無しで単にコピーしただけのやつは起動できるの?
0647622,626
2010/09/27(月) 17:34:02ID:???>>644
postmaster.pid は作られていませんね。
マスター側:Win2000
スレーブ側:WinXP
>>646
>pg_start_backupとか無しで単にコピーしただけのやつは起動できるの?
pg_start_backup を実行せず、data配下をコピーしてもダメですね。
0648NAME IS NULL
2010/09/27(月) 17:41:52ID:???0649NAME IS NULL
2010/09/27(月) 18:11:45ID:???0650622,626
2010/09/27(月) 22:12:03ID:???動きます。
Posgreのデータ、ディレクトリ構造はよく知りませんが、
data配下をコピーして、動作するものなのですかね?
手詰まりなので、
もう一度、最初から試そうと思っています。
0651NAME IS NULL
2010/09/27(月) 23:25:32ID:???「ポスグレ癖あって使いにくい 糞だ糞だ」
と日々つぶやいていたが、案件がSqliteになって
「ポスグレのが良いよ〜 Sqlite糞すぎだよ〜」
と日々つぶやくようになった俺が通りすぎますよ
0652NAME IS NULL
2010/09/27(月) 23:45:23ID:???MyISAMじゃねえんだから
0653NAME IS NULL
2010/09/28(火) 00:01:33ID:???2. マスタの$PGDATAをスタンバイにコピー
3. SELECT pg_stop_backup()
という手順を踏まないとスタンバイ動かないよ。
0654622,626
2010/09/28(火) 09:16:25ID:???しばらく断念です。
0655NAME IS NULL
2010/09/28(火) 10:23:45ID:???0656NAME IS NULL
2010/09/29(水) 03:08:12ID:???PostgreSQL停止時のdataをスレーブに持っていって動かないんだとしたら、
プライマリとスレーブのアーキテクチャが違うのでは、一方が32bitでもう一方が64bitとか
0657NAME IS NULL
2010/09/29(水) 03:09:46ID:???0658NAME IS NULL
2010/09/29(水) 11:43:18ID:???こういう場合の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
0659NAME IS NULL
2010/09/29(水) 17:59:20ID:???を実行したあとだと、どうなる?
0660NAME IS NULL
2010/09/30(木) 02:22:34ID:???可能であれば、TableA(WhereValue,Value)に複合インデックスを作成すれば、大きく改善できるかもしれない。
0661658
2010/09/30(木) 11:55:10ID:???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するとインデックスが使われるようになったので
削除しました。
0662NAME IS NULL
2010/09/30(木) 12:28:51ID:???Index Scan Backwardが使われると思ったんだけど、
そうなってないね。
drop index index660;
して、
create index index662 on TableA(WhereValue,Value) desc;
したらどうかな。
0663NAME IS NULL
2010/09/30(木) 12:47:17ID:???create index index*** on TableA(WhereValue,Value,Bid);
や
create index index*** on TableA(WhereValue,Value,Bid) desc;
あたりで変わるかもしれない。
0664658
2010/09/30(木) 15:22:15ID:???ありがとうございます。
ともかくTableAのインデックスが肝のようですね、
いくつかパターンを試してみてまた報告させてもらいます。
0665NAME IS NULL
2010/10/01(金) 00:15:37ID:???0666658
2010/10/01(金) 17:29:10ID:???ご意見ありがとうございました。
最終的には
create index indexname on TableA(WhereValue,Value,Bid);
このインデックスで平均Total runtimeが0.01s以下で収まるようになりました。
ただ、連続でかつ、説明不足で申し訳ないのですが、
本SQLのWhere句については、OR で複数の要素がつながる仕様でした。
例)Where (TableA.WhereValue = 310 or TableA.WhereValue = 9 or ...)
これについては、現在のところ速度改善が行われていませんので、
試行錯誤の上、また、結果を報告させていただきます。
以上、ありがとうございました。
0667NAME IS NULL
2010/10/01(金) 20:32:48ID:???0668NAME IS NULL
2010/10/02(土) 05:09:19ID:???(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
のようにすれば、いまのインデックスが活用されると思う。
0669841
2010/10/02(土) 16:43:57ID:???0670NAME IS NULL
2010/10/04(月) 04:03:24ID:???0671NAME IS NULL
2010/10/04(月) 08:03:42ID:???0672NAME IS NULL
2010/10/04(月) 11:12:53ID:???0673NAME IS NULL
2010/10/04(月) 20:51:04ID:???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の低い質問かもしれませんがお分かりの方お手数ですが教えてください、お願いします。
0674NAME IS NULL
2010/10/04(月) 21:25:48ID:???EXECUTE ''CREATE SEQUENCE '' || quote_ident(SEQ_NAME) || '' START 1'';
のようにするのかな?
http://www.postgresql.jp/document/9.0/html/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
0675673
2010/10/04(月) 21:37:11ID:???動的SQLで書けばひょっとしたら出来るのかな
今環境ないので試せませんが、明日試して見ます。
ヒントありがとうございます。
・・・ちょっと考えれば分かりそうなことでしたね、考えてるときは動的SQLなんて頭の中から消えてましたorz
0676658
2010/10/05(火) 09:20:28ID:???>668の方法ですごく高速になりました。
かかわってくださった皆さん本当にありがとうございました。
0677NAME IS NULL
2010/10/05(火) 22:16:41ID:BAZfEN9h\pg_logにfunctionの途中経過の値を出力したいのですがどうすればいいでしょうか
例えば$1などのバインドする値など
0678NAME IS NULL
2010/10/05(火) 23:57:52ID:???functionとか使ったことないけど、
http://www.postgresql.jp/document/9.0/html/plpgsql-errors-and-messages.html
0679NAME IS NULL
2010/10/06(水) 01:21:47ID:???0680NAME IS NULL
2010/10/06(水) 03:12:02ID:???つ ttp://lets.postgresql.jp/documents/technical/9.0/1
0681NAME IS NULL
2010/10/06(水) 03:20:30ID:???凄く分厚くなりそうw
0682NAME IS NULL
2010/10/06(水) 04:54:12ID:???レプリケーション周りは、それだけで本1冊書けるからねい。
なんせ、>>680の日本PostgreSQLユーザ会のPostgreSQL 9.0の
新機能の説明ページですら、PostgreSQL 9.0本体標準機能で
抜けているところを説明し、それを補完するためにpgpoolだの
Slony-IだのPGClusterだのの説明をしているわけだし。
0683NAME IS NULL
2010/10/06(水) 05:38:02ID:???把握した
0684NAME IS NULL
2010/10/06(水) 08:28:04ID:???初歩的な質問で申し訳ないのですが・・・
pg_dump_allでバックアップしたデータのリストアって、何もせずただpsqlで普通にdumpデータ流しこむだけじゃだめなんですよね?
今あるデータベースの内容に関係なくリストアする(SQLを流し込む)ために、全(各?)データベースを一度削除したり、
キレイにリストアできるようにリストア前の準備をするのが普通(必須)なんでしょうか?
いろんな本やネットを見ても、「dumpしたものをpsqlなりで流し込む」くらいのこといか書いていないような気がして・・・
(実際ただ流しただけでは完全にリストアはされてませんでした。当たり前かもしれないけれど、データベースを全部削除してから流し込んだらうまくいきました)
とんでもない変なこと言ってたらすみません・・・
0685NAME IS NULL
2010/10/06(水) 08:34:50ID:???pg_dumpall のオプションは何でやった?
0686NAME IS NULL
2010/10/06(水) 10:22:32ID:???0687NAME IS NULL
2010/10/06(水) 10:53:13ID:???textsearch_ja使って全文検索してるけど、
これってcount(id)って早くならないかな。
ginとB-treeの複合indexは作れないよね?
0688NAME IS NULL
2010/10/06(水) 12:08:55ID:???http://wiki.postgresql.org/wiki/Slow_Counting/ja
カタログ情報でごまかすか、トリガを使って行数を別テーブルに保存する
0689NAME IS NULL
2010/10/06(水) 17:01:50ID:???説明足りなかったみたいですみません。
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);
こういうことができたらたぶん早くなりそうなのにと思うけど無理だし
0690NAME IS NULL
2010/10/06(水) 19:18:29ID:???idがNULLでない行が、わずかしかない場合には、複合インデックスに意味があるが、
そうでない場合には、あまり意味がないと思う。
特に、idがNULLの場合がないとすれば、
SELECT count(*) FROM T WHERE to_tsvector('japanese', text) @@ to_tsquery('japanese','検索語');
と同じことで、複合インデックスはまったく意味が無いと思う。
0691NAME IS NULL
2010/10/06(水) 21:12:15ID:???0692NAME IS NULL
2010/10/07(木) 07:40:44ID:???そうなんですか、200万行くらいのテーブルなんですが、
速くするのは無理そうな感じですかね
1万行ヒットする検索とか投げると1分くらい帰ってこないんですが、
企業とかだとこういうのどうやってるんだろうなぁ
0693NAME IS NULL
2010/10/07(木) 09:22:03ID:???0694NAME IS NULL
2010/10/07(木) 10:18:10ID:???時間かかってるだけでは?
>>693のように絞ってみては
0695NAME IS NULL
2010/10/07(木) 10:58:25ID:???欲しいのは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
0696NAME IS NULL
2010/10/07(木) 12:37:33ID:???0697NAME IS NULL
2010/10/07(木) 13:14:17ID:???Likeだと、どんな検索語投げても約50秒ですね。
textserch_jaのインデックス使うと、
該当レコードが少ない場合0.1秒未満で帰ってくるので
さすがにシーケンシャルだと辛い感じです。
0698NAME IS NULL
2010/10/07(木) 14:52:34ID:???0699NAME IS NULL
2010/10/07(木) 15:41:39ID:???SSDで解決できそうな気がする
0700NAME IS NULL
2010/10/07(木) 15:46:16ID:???説明の仕方が悪くてすみません。
Like使って検索する場合「検索語A」も「検索語B」...「検索語Z」もすべて約50秒かかりました。
ts_vector使って検索する場合「検索語A」では0.1秒、「検索語B」では60秒かかります。
検索語は大量にあるので、
「検索語A」や「検索語B」のような極端なものばかりでもなく、
ほとんどの検索語は、ts_vectorで検索すると
だいたい10-20秒くらいで実行できます。
それが695のクエリなんですが、
この状態が限界速度なのか、
設定やクエリに工夫がないだけなのか。
そのあたりが知りたい感じです。
0701NAME IS NULL
2010/10/07(木) 19:40:35ID:???PostgreSQLフォーラムに聞いた方がいいかもね。
0702NAME IS NULL
2010/10/07(木) 19:59:35ID:???にあるとおり、
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','検索語');
とすると、またすこし違うかもしれない。
0703NAME IS NULL
2010/10/07(木) 20:04:35ID:???よく分からんが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で試してみたら?
0704NAME IS NULL
2010/10/07(木) 23:38:07ID:???0705NAME IS NULL
2010/10/08(金) 10:23:08ID:???http://neta.ywcafe.net/000960.html
http://neta.ywcafe.net/001049.html
0706NAME IS NULL
2010/10/08(金) 10:55:52ID:???>699
力技ですが、確かに効果はありそうですね
ディスクとしての信頼性が少し怖いですが。
>702
情報ありがとうございます、
一度実践してみますが、少々時間がかかりそうです。
また、報告に参ります。
>703
ありがとうございます。
バグですか、でもまAndOrも使わないシンプルな状態ですので、
とりあえずは関係なさそうです
>704-705
Ludiaも選択肢だったんですが、出来上がるファイルサイズが馬鹿でかかったのと
昔Tritonn(Mysql+Senna)で同じようにスピードで悩んでたので、
今回はTextSearch_jaにしてみました。
スピードに関してはあまり変わりませんでしたけどw
0707NAME IS NULL
2010/10/09(土) 00:19:49ID:???0708NAME IS NULL
2010/10/11(月) 11:05:07ID:???0709NAME IS NULL
2010/10/14(木) 18:38:08ID:???ERROR: メモリ不足です
DETAIL: サイズ471989501の要求に失敗しました
っていうエラーが出るんだけど、
これって設定ファイルのどの項目いじれば限界容量上げれますか?
それとも小分けにするしか方法がない?
0710NAME IS NULL
2010/10/14(木) 19:16:57ID:???0711NAME IS NULL
2010/10/14(木) 21:04:50ID:???だっけ
0712NAME IS NULL
2010/10/20(水) 21:30:17ID:cd5KjE//CSEでpostgresqlに接続するとシステムテーブルが表示されユーザ定義テーブルにアクセスできません。
ユーザ名、パスワード、データベース名は間違いないと思います。
サーバ名をlocalhost
ポートを5432
としているのですが、どうすれば自分で定義したテーブルにアクセスすることができるでしょうか
0713NAME IS NULL
2010/10/20(水) 22:26:53ID:???昔はSQL崩しで多少お世話になってた気がするけど、また懐かしいなそれはw
0714NAME IS NULL
2010/10/20(水) 22:31:33ID:cd5KjE//そうです
0715NAME IS NULL
2010/10/21(木) 00:10:25ID:???0716NAME IS NULL
2010/10/21(木) 11:47:17ID:???pgAdminIIIじゃいかんの?
0717NAME IS NULL
2010/10/21(木) 12:35:11ID:???CSE知らないのに明後日なアドバイスするのってどうなの?
>>712
権限設定が不明なんでアドバイスしようがない
0718NAME IS NULL
2010/10/21(木) 12:54:07ID:???CSE使ってたよ。ODBC接続もサポートしてるからどうしてるか聞いたんだよ
0719NAME IS NULL
2010/10/21(木) 12:56:12ID:???バージョンの違いでうまくいかないようならODBCはさんで試してみるのも手だよ
0720NAME IS NULL
2010/10/21(木) 21:47:40ID:G5GCo38y有難うございます
ODBCだと問題ないのですが、直接つなぐとシステムテーブルのみが表示されるのです
ODBCで済ませることもできるのですが、なぜ直接つなぐと自分が作ったテーブルに
アクセスできないのかと思いまして・・・
0721NAME IS NULL
2010/10/21(木) 21:54:36ID:???0722NAME IS NULL
2010/10/21(木) 22:54:36ID:G5GCo38y見えます
0723NAME IS NULL
2010/10/22(金) 00:39:19ID:???考えられないけど、ODBCの時と別のユーザーにしてないよね?
0724NAME IS NULL
2010/10/22(金) 10:26:25ID:???1.59からぜんぜんバージョンアップしてないし。
自分は、CSE使えなかったから、pgAdminIII を使うようになった。
pgAdminIIIもバグあったり、使いづらい部分もあるけどね。
0725NAME IS NULL
2010/10/22(金) 15:02:24ID:???そして、一応最新版は1.60betaだ。
1.59に差し替えてみたけど、テーブルは見えたな。
各バージョンとか何も書いてないので回答はスルー。
0726712
2010/10/22(金) 20:20:58ID:9SqnX56BCSEのバージョンは1.59です
CSEは昔から漠然と使っており、直接つなぐと自分で定義したテーブルを
見ることができないことに釈然としない思いでいました
pgAdminIIIをインストールしてみます
0727706
2010/10/26(火) 13:32:24ID:???遅くなってすみません。
先日、テーブル構築が終了しました。
結論から申し上げますと、
countに関する速度的な差は、やはり、全権読み込んでカウントしているらしく
あまり変わりませんでした。
ただ、検索そのものについては、速度が上がったと思います。
(行数など100万件ほど増えているので正確な結果はわかりませんが)
いろいろありがとうございました。
0728NAME IS NULL
2010/10/29(金) 17:52:05ID:NxxWaUovlogへの出力が文字化けして読めません。
nkfでフィルタさせても化けたまま・・・
createdbするときのエンコードとかはUTF8で正しく設定されており、
クエリーそのもの内容は2バイト文字があっても正常に出てきます。
端末のlocale設定などをいろいろいじってみたんですが何をやっても
ダメで、ググった結果をいろいろ試しましたが何れも効果はなし。
同じような症状が出てる方います?
0729NAME IS NULL
2010/10/29(金) 18:51:12ID:???いろいろ
0730NAME IS NULL
2010/10/30(土) 12:36:29ID:???FreeBSDのgettextとかlibiconvが正しく使えていないのかも。
FreeBSD+PG+日本語の組み合わせってちゃんと検証されていない気がする。
0731NAME IS NULL
2010/10/30(土) 19:48:22ID:???0732NAME IS NULL
2010/11/01(月) 13:48:19ID:5GELdooGubuntu 10.04で使ってるけど、エラーメッセージとかは英文でしか出なかったような
0733NAME IS NULL
2010/11/01(月) 16:26:19ID:???0734NAME IS NULL
2010/11/02(火) 18:32:50ID:???日テレ実況で醜態(ドラマ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
パーツ寄り子
0735NAME IS NULL
2010/11/03(水) 14:28:32ID:???ダンプをリストアしたときに表示される内容が化ける問題と同じような気がする。
表示上は化けててもDBの中身には問題ないけど。
0736NAME IS NULL
2010/11/05(金) 10:07:28ID:???postgresql-8.3-603.jdbc3.jarのように、完全にDBのバージョンにドライバのバージョンも合わせないと動かないものなのでしょうか?
実際これでPostgreSQL8.4と問題なく通信しています。
0737NAME IS NULL
2010/11/08(月) 08:36:46ID:???基本的に新しいJDBCなら古いサーバに繋がる。
むしろサーバのバージョンに関係なく新しいJDBCを使うのが良いと聞いたことがある。
ただ、JDBCのバージョン間の挙動に互換性が無い場合があるので、
メンテナンスならドライバのメジャーバージョンは上げないほうが良いかもしれないが。
0738NAME IS NULL
2010/11/13(土) 06:48:21ID:???データはそのまま使えないの?
0739NAME IS NULL
2010/11/13(土) 09:34:15ID:???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.
0740NAME IS NULL
2010/11/13(土) 11:30:31ID:???I got it.
0741NAME IS NULL
2010/11/19(金) 00:41:54ID:???postgreSQL7.4.30をtcp/ipを使用して接続しようとしてみるけど、ポートが開放されてないといわれる。
ポート番号を5433に変更して起動したら、netstat -lでは開放されているように見える。
でも、外からは接続できない。
ポート番号を5432に戻して起動したら、やっぱりnetstat -lでは開放されているように見える。
でも、外からは接続できない。
ファイアーウォールは無効状態だし、postgresql.confもpg_hba.confも何度も見直した。
外から繋ぐ時も、ポート指定している。
何か設定が間違っていないか、アドバイス頂きたい。
0742NAME IS NULL
2010/11/19(金) 02:21:55ID:???素人的な書き方ですまないけれど、
クライアントホストからネットワーク的に到達できているか確認する(pingとか?)
listenしているnicに到達しているかをみてみる(0.0.0.0でlistenしているなら関係なし)
SELinux、ipchainを改めて確認する
あたりを、やってたとしても、改めてやってみてはどうでしょうか。
あと、ゲスト上でpsql -p 5432で繋がるか確認してみるとか。
0743NAME IS NULL
2010/11/19(金) 02:49:18ID:???0744NAME IS NULL
2010/11/19(金) 02:59:40ID:???telnet localhost 5432 が繋がるか確認して、
telnet (自分のIP) 5432 が繋がるか確認して、
最後に外部から telnet (ターゲットのIP) 5432 が繋がるか確認すれば、
大雑把に切り分けられるんじゃないだろうか。
0745NAME IS NULL
2010/11/19(金) 05:09:06ID:???0746NAME IS NULL
2010/11/19(金) 21:49:47ID:???route みたりifconfigでGATEWAYが設定されているか
ping , tracepathの疎通や
ssh やhttpサーバ動かして繋がるか
ぐらい
selinuxは、1番影響がないのはpermissiveかな
0747NAME IS NULL
2010/11/19(金) 21:52:44ID:???0748741
2010/11/19(金) 23:10:33ID:???postgreSQLの起動オプションに「-h 127.0.0.1」なんて爆弾を仕込んでやがった
Pacemakerで起動してたから、起動オプションまで頭が回らなかったよ。
みんなありがとう。
0749NAME IS NULL
2010/11/19(金) 23:28:22ID:???0750NAME IS NULL
2010/11/19(金) 23:46:36ID:???0751NAME IS NULL
2010/11/20(土) 00:55:30ID:???0752NAME IS NULL
2010/11/21(日) 16:43:01ID:???0753NAME IS NULL
2010/11/21(日) 19:02:23ID:???勝手に設定を上書きする Pacemaker の文化?作法?は、
あんまり褒められたものではない気がするぞ。
0754NAME IS NULL
2010/11/22(月) 11:08:08ID:???強制的に「-h 127.0.0.1」となるような設定がされているの?
0755NAME IS NULL
2010/11/22(月) 11:21:26ID:???これのことなのか?
0756NAME IS NULL
2010/11/23(火) 04:14:45ID:???って制約はどう設定するのですか?
0757NAME IS NULL
2010/11/23(火) 04:23:30ID:???0758756
2010/11/23(火) 04:23:32ID:???o1 o2 o3
--------
2 2 9
入力時点で、ダメ!みたいな
0759NAME IS NULL
2010/11/23(火) 04:30:29ID:???列が2個の場合それでいけますね
n個の場合どう対応すれば良いのでしょうか?
0760NAME IS NULL
2010/11/23(火) 05:44:19ID:???列1 <> 列2 and 列2 <> 列3
0761NAME IS NULL
2010/11/23(火) 05:53:22ID:???列1 <> 列2 and 列1 <> 列3 and 列2 <> 列3
が正しいと思います
列が少なければ根性で入力可能です
しかしもっと増えるとリーグ戦の表の半分の入力回数になります
これはO(n^2)だと思うのでちょっと現実的とは言えません
0762NAME IS NULL
2010/11/23(火) 07:25:19ID:???0763NAME IS NULL
2010/11/23(火) 07:35:57ID:???0764756
2010/11/23(火) 08:05:45ID:???はい。
LOTO6の出玉の記録を(順番付きで)とってます
同じ回で同じ番号は出現し得ませんよね
少なくともダブった入力ミスを省きたくて
まあボーナス番号含めて7つですから
根性で実装できちゃったんですけどね
スマートにやりたいなと
0765NAME IS NULL
2010/11/23(火) 08:39:36ID:???pkey(抽選通番、出た順の連番)
unique(抽選通番、出た数字)
0766756
2010/11/23(火) 09:01:09ID:???inning o1 o2 o3 o4 o5 o6 bonus
506 27 39 21 11 5 37 26
みたいなテーブルなんですが
出た順の連番フィールドと出た数字フィールドの違いが判りません><
0767NAME IS NULL
2010/11/23(火) 09:03:27ID:???506 2 39
506 3 21
506 4 11
506 5 5
506 6 37
506 7 26
0768NAME IS NULL
2010/11/23(火) 09:04:54ID:???0769756
2010/11/23(火) 09:21:23ID:???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 をユニーク制約にすると
あ、データベース触るの初めてです^^
0770769
2010/11/23(火) 09:26:02ID:???0771NAME IS NULL
2010/11/23(火) 09:28:10ID:???0772756
2010/11/23(火) 09:31:37ID:???正規化するのかぉ(´;ω;)
うまく楽する方法ありますか?
0773756
2010/11/23(火) 17:29:15ID:???やっと正規化できた
VIEWとやらを作ってからINSERTで流し込んだ
英語マニュアルと悪戦苦闘して
pg_enumとかも迷い込んで
大冒険だった
取り敢えず助かりました
あり^^
0774NAME IS NULL
2010/11/23(火) 19:37:21ID:???さてどうなることやらと眺めていたけど、正規化の指摘で素直に理解できてるじゃん。
珍しく好感の持てるヤシだった。DBは初めてかもしれんが素人じゃないね。(チラシ裏柿
0775NAME IS NULL
2010/11/24(水) 05:49:29ID:???0776NAME IS NULL
2010/11/24(水) 07:52:17ID:???0777NAME IS NULL
2010/11/24(水) 11:12:45ID:???今回のみたいなユニーク制約もつけられるのかな。
0778NAME IS NULL
2010/11/24(水) 22:12:40ID:???0779NAME IS NULL
2010/11/25(木) 12:56:51ID:???0780NAME IS NULL
2010/11/27(土) 06:55:12ID:???配列っていうイメージがすぐに沸かない。
よって、使った事ないな。
(PHPで配列型をハンドリングできるのかな・・・)
0781NAME IS NULL
2010/11/27(土) 13:44:24ID:???ORDB•XMLDB•ドキュメント指向KVS(MongoDBやBigTable?)とか使った方がいいんじゃね?ってなりそうだな。
でもEnumとかは、使いたい気がする。
0782NAME IS NULL
2010/11/27(土) 14:14:03ID:???0783NAME IS NULL
2010/11/29(月) 11:04:41ID:???亀レスだけど、エラー出力メッセージを日本語にする必要がなければ
postgresql.confの「LC_MESSAGES」を'ja_JP.UTF-8'じゃなくて'C'にすると
幸せになれるかもしれない。
http://www.postgresql.jp/document/8.4/html/locale.html
0784NAME IS NULL
2010/11/30(火) 08:13:04ID:???date型式のデータを取得すると YYYY-MM-DD とハイフンでつながれますが、
これをデフォルトで YYYY/MM/DD とスラッシュで区切りたいのですが、
どのように設定したらよいのでしょうか?
0785NAME IS NULL
2010/11/30(火) 10:09:31ID:???SET datestyle TO SQL,YMD;
で、いけるかと思ったが、手元のバージョンじゃ11/30/2010のMDYで表示されたわ。
postgresql.confを書き換えたらYMDで表示されるのかな?
datestyleでググって、あとは試してみて。
0786NAME IS NULL
2010/11/30(火) 18:47:38ID:???ありがとうございます。調べてみます。
0787NAME IS NULL
2010/11/30(火) 22:35:41ID:???一台のサーバで何人かで各自好きに独自にDBを作っています。
psql -lすると、全員のが見えてしまいますが、
自分が作ったDBだけ見えるようにするにはどうしたらいいでしょうか。
0788NAME IS NULL
2010/11/30(火) 23:45:55ID:???DBのインスタンスを分けないと無理。
ログインはできないはずだから、DB名が見えるのは気にしないのが吉。
0789NAME IS NULL
2010/12/01(水) 22:21:15ID:???0790NAME IS NULL
2010/12/01(水) 22:37:50ID:???0791NAME IS NULL
2010/12/02(木) 00:04:16ID:???0792NAME IS NULL
2010/12/02(木) 06:18:27ID:???インストールの最後の
「クラスタの初期化中...数分お待ちください」
の箇所です。
Ver 8.4.5のインストールは問題なくできます。
解決方法が分かる方いましたら教えてください。
なお、Cドライブのスキャンディスクは行いました。
0793NAME IS NULL
2010/12/02(木) 06:20:38ID:???それは大変ですね
0794792
2010/12/02(木) 06:42:26ID:???>Ver 8.4.5のインストールは問題なくできます。
今、再度やったらインストールできなくなっていました。
以前は出来ており、アンインストールしてからインストールしたら
できなくなってしまったようです。
申し訳有りませんが、792の質問は撤回し、
PostgreSQLをアンインストールして再度インストールすると、
インストールの最後で止まってしまう。
この解決方法が分かる方いましたら教えてください。
0795NAME IS NULL
2010/12/02(木) 09:15:13ID:???0796NAME IS NULL
2010/12/02(木) 12:04:18ID:???0797NAME IS NULL
2010/12/02(木) 14:52:40ID:???0798NAME IS NULL
2010/12/02(木) 16:58:16ID:TJNe4aq7データベースのサイズは100GBほどです。
0799NAME IS NULL
2010/12/02(木) 17:40:47ID:???0800NAME IS NULL
2010/12/02(木) 17:43:53ID:TJNe4aq7PgAdminIIIからダンプ開始しました。ありがとうございました。
0801NAME IS NULL
2010/12/02(木) 18:02:59ID:???てか、100GBっておおきいね。ラージオブジェクトとか使ってるのかな。
0802NAME IS NULL
2010/12/02(木) 22:58:39ID:???ありがとうございます
0803794
2010/12/04(土) 13:03:16ID:???PostgreSQL 8 をアンインストールして再度インストールすると、
インストールの最後「クラスタの初期化中。。。」で止まってしまいます。
(Windows版です)
上(795, 796)で教えていただいた、スキャンディスク・デフラグ・Postgresアカウントの削除
をやってみましたがダメでした。
何か解決方法をご存知の方いましたらご教授お願いいたします。
試す価値のありそうなアドバイスなどでも結構です。
よろしくお願いします。
0804NAME IS NULL
2010/12/04(土) 17:20:22ID:???よくある事象なら煽りでもヒントくらいのレスはある。
それが無いなら余程レアケースなんだろ。
レアケースの場合は詳細な環境を書いてもレスは付かない事あるんだから、
そんな質問の仕方でレスが付くと思わないほうがいい。
0805NAME IS NULL
2010/12/04(土) 18:04:52ID:???DOS窓から直接initdbしたら何かエラーメッセージが出てくれるんじゃないかな?
Windows(の何?) で動かすときのアカウントに注意な。
0806NAME IS NULL
2010/12/04(土) 18:09:21ID:???別ディレクトリにするか、削除してしまうとか。
あとはPostgresのバージョンを落としてみるとか、いっそ7を試しにいれてみるとか。
0807NAME IS NULL
2010/12/04(土) 18:30:29ID:???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で作成したデータベースクラスタはそのまま利用が可能です。
0808NAME IS NULL
2010/12/05(日) 19:49:31ID:???よくあるのは「管理者として実行」してないことかな。
古いインストーラだと自動昇格してくれなかった気がする。
あとは postgres ユーザのパスワード違いとか。
「クラスタの初期化中」ってことは、バイナリはインストールされている
はずだから、>>805 のとおり手作業のinitdbでチェックすると良さげ。
0809NAME IS NULL
2010/12/05(日) 21:40:53ID:???0810NAME IS NULL
2010/12/06(月) 01:23:22ID:???0811803
2010/12/10(金) 05:06:38ID:???レスありがとうございました。
教えていただいた事を参考にさせていただき、次の事をやってみました。
・HDのチェックディスク、最適化。
・postgresユーザの削除。
・PostgreSQLディレクトリの削除
・PostgreSQLレジストリの削除(2箇所)
・PostgreSQLデータディレクトリを別の場所を指定
・AVG Freeというアンチウイルスソフトをアンインストール
これらをやって再度インストールしてもダメでした。
インストールで止まっている最中initdbしてみると、
次のエラーメッセージを表示します。
データベースシステム内のファイルの所有者は"Owner"ユーザでした。
このユーザがサーバプロセスを所有しなければなりません。
データベースクラスタはロケールJapanese_Japan.932で初期化されます。
(WindowsにはOwnerユーザでログインしています)
解決方法お分かりの方、いらっしゃいますか?
WindowsXP、ファイルシステムはNTFS、スタンドアロンです。
よろしくお願いします。
(何度もすみません)
0812NAME IS NULL
2010/12/10(金) 06:00:39ID:???ファイル名を指定して実行で「services.msc」と入力して、サービス一覧を確認してみて。
0813NAME IS NULL
2010/12/10(金) 06:30:54ID:???本当にPostgreSQL関連のユーザが残っていないか、
コマンドプロンプトでnet usersして確認してみ
0814NAME IS NULL
2010/12/10(金) 06:38:28ID:???>>812
サービスは残っていません。
>>813
net users でpostgresは存在しません。
(インストールエラーの度にnet user postgres /delete で消しています)
手詰まりで困っています・・・
0815NAME IS NULL
2010/12/10(金) 07:28:18ID:???どうせWindow版なんてまともに動くとは誰も期待してないんだから
インストール出来ないのも親切設計くらいに思ったほうがいい。
0816NAME IS NULL
2010/12/10(金) 07:50:35ID:???PostgreSQLデータディレクトリのファイルの所有者はOwnerだけど、
postgreSQLのサーバ自体はそれ以外のユーザ(administratorなど)で起動しているんじゃないの?
0817NAME IS NULL
2010/12/10(金) 10:44:49ID:???同じやり方で別のPCにはインストル出来るのかな。
0818NAME IS NULL
2010/12/10(金) 11:03:36ID:???0819NAME IS NULL
2010/12/10(金) 18:49:45ID:v6WE8fXXid毎にそれまでの平均を出させたい等
id point
1 5
2 10
3 7
4 6
id avg
1 5
2 7.5
3 7.3
4 7
0820NAME IS NULL
2010/12/11(土) 10:37:03ID:???"作成先のスキーマが選択されていません"
と言います。publicスキーマは削除して別個に作成してます。
どうすればよいのでしょうか?
0821NAME IS NULL
2010/12/11(土) 16:15:09ID:???http://www.geocities.jp/oraclesqlpuzzle/pgcon2009-olap.html
0822819
2010/12/13(月) 07:45:37ID:???ありがとうございました^^
SELECT id, avg(point) OVER ( ORDER BY id )
FROM the_table;
何でWindow functionって云うんですか?
0823NAME IS NULL
2010/12/14(火) 12:53:38ID:???データベースのユーザとしてOSにログインしてる時
サーバのリストが出てこないんですが
管理者権限でログインしてる時はサーバ表示問題無いんです
Windows2000 SP4です
0824NAME IS NULL
2010/12/14(火) 13:25:45ID:???Linux版は知らんけど、これではとても「商用に」なんて言えたものではない。
0825NAME IS NULL
2010/12/14(火) 14:23:07ID:???0826NAME IS NULL
2010/12/14(火) 14:50:19ID:???0827NAME IS NULL
2010/12/14(火) 16:35:48ID:???0828NAME IS NULL
2010/12/14(火) 18:07:31ID:???なぜ商用になんて言えないんだろ。
0829NAME IS NULL
2010/12/14(火) 22:25:50ID:???0830NAME IS NULL
2010/12/15(水) 00:47:01ID:???pgAdminのSQLのエラー時レスポンスとか
ステータスバーのコメントは正しく表示されますのでまあやれてますが
0831NAME IS NULL
2010/12/15(水) 03:13:48ID:???と言うか文字化なんて7.xの頃にSoralisでしか経験したことねぇ
0832NAME IS NULL
2010/12/15(水) 16:34:53ID:???「クエリーは、350 ミリ秒で結果なしでうまく帰りました。」
とか表示されるのは単語文節訳を組み合わせてるからか?
0833NAME IS NULL
2010/12/15(水) 18:56:56ID:???0834NAME IS NULL
2010/12/15(水) 19:32:22ID:???0835NAME IS NULL
2010/12/15(水) 20:07:47ID:???0836NAME IS NULL
2010/12/17(金) 01:38:03ID:???0837NAME IS NULL
2010/12/17(金) 06:12:14ID:???独自にIDと名前で管理する事って同じ?
0838NAME IS NULL
2010/12/18(土) 01:50:34ID:???効率的には同じ。管理テーブルとJOINしなくても、
名前を自動的にIDに変換してくれることが利点だと思う。
0839NAME IS NULL
2010/12/18(土) 07:11:52ID:???0840811
2010/12/18(土) 13:21:01ID:???解決しましたので報告します。
【症状】
PostgreSQLのインストールの最後に、「クラスタを初期化中・・・」と
表示したまま停止してしまう。
【原因】
.BAT の拡張子の関連付けに不具合があったためです。
通常、.BATを実行(エクスプローラから.BATをダブルクリック)すると通常DOS窓を開いて
バッチファイルを起動しますが、何もせずに終了してしまう、という状態にWindowsレジストリが
設定されていました。
【対策】
Windowsレジストリを編集し、正常にバッチファイルが起動するようにしました。
【補足】
.BATを実行するとエディタが起動するなどになっていれば直ぐに原因は判ったのですが、何も
せずに終了してしまっていたので、不具合の特定が遅れてしまいました。
お騒がせしてすみませんでした。
この苦労がPostgreSQLの普及や皆さんのお役に立てればうれしいデス。
0841NAME IS NULL
2010/12/18(土) 13:34:12ID:???詳細報告乙&おめでとう!
0842NAME IS NULL
2010/12/19(日) 10:54:19ID:???それはさすがにエスパーできんかったw
0843NAME IS NULL
2010/12/19(日) 11:25:13ID:???クラックされてないか?
0844NAME IS NULL
2010/12/19(日) 14:10:51ID:???0845NAME IS NULL
2010/12/19(日) 15:28:33ID:???ちなみに、正常な場合はこうなる:
C:> assoc .bat
.bat=batfile
C:> ftype batfile
batfile="%1" %*
0846NAME IS NULL
2010/12/19(日) 18:56:01ID:???ALTER TABLE tbl_A
ALTER COLUMN "列名1" SET STORAGE ;
COMMENT ON COLUMN tbl_A."列名1" IS 'コメント列名1';
Line2: ALTER COLUMN "列名1" SET STORAGE ;
^
などとエラーになりますが、なぜでしょうか?SQL文を書き込むのではなく、
列のプロパティ・ペインに書き込んでの変更です。
0847NAME IS NULL
2010/12/19(日) 19:14:16ID:???0848NAME IS NULL
2010/12/19(日) 22:44:04ID:???0849NAME IS NULL
2010/12/20(月) 03:16:25ID:???じゃあ何使えば良いんだよ!?
0850NAME IS NULL
2010/12/20(月) 14:42:54ID:???0851NAME IS NULL
2010/12/20(月) 16:02:48ID:???>>847は揚げ足取りかも。
でも、コメントつけるときにそのようなエラーに遭遇したことはないかなー
0852NAME IS NULL
2010/12/20(月) 20:27:30ID:???>>847
おまい何つかってんだよw
晒してみろカス
psqlとか言うなよハゲ
phpPgAdminとか言うなよ低脳
0853NAME IS NULL
2010/12/20(月) 20:48:45ID:???もしかしたらアクセス。
0854NAME IS NULL
2010/12/20(月) 21:44:34ID:???DBViewerはシリアルとか見れないからなあ。
pgAdminはバックアップなんかも簡単にできて機能は最強だと思うけど、
複数DBに繋いだときにSDIだとどのウィンドウのがどのDBのかわかりにくくて
いまいち馴染めないなあ。
0855NAME IS NULL
2010/12/20(月) 22:22:41ID:???どのDBに接続してるか出てると思うけれど、見てる画面が違うかもしれないのでなんとも。
0856NAME IS NULL
2010/12/21(火) 00:18:17ID:???0857NAME IS NULL
2010/12/21(火) 00:30:40ID:???Oracle使ってもMySQL使っても同じインターフェースってのがいいんだがなあ
SI Object Browserがもうちょっとやる気出してくれたら
0858NAME IS NULL
2010/12/21(火) 03:39:06ID:???0859NAME IS NULL
2010/12/21(火) 03:47:43ID:???CSEの話?
857とは別人だけど、1.60beta+libpq.dllで問題なくDBMS:PostgreSQLにて
8.4.6や9.0.2相手に使えてますよ。
0860NAME IS NULL
2010/12/21(火) 04:44:45ID:???それ以上の事できないけど
0861NAME IS NULL
2010/12/21(火) 05:05:20ID:???それ以上ってなんだ?
0862846
2010/12/21(火) 09:07:31ID:???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 '全国地方公共団体コード';
0863846
2010/12/21(火) 09:14:18ID:???エラー3行目の”^”は”コード”の”コ”の下に表示されてます。
データベースは
エンコーディング:utf8
コーレーション:Jpanese, Japan
文字型:Jpanese, Japan
です。
0864NAME IS NULL
2010/12/21(火) 14:47:55ID:???サーバ(PostgreSQL)のバージョンは?
少なくとも7系列だったら、そのSQL文は通らないと思うから
対応バージョンがあってないんだと思う。
0865846
2010/12/21(火) 15:13:26ID:???PostgreSQL:9.0
pgAdminIII:1.12.1
です。
0866NAME IS NULL
2010/12/21(火) 17:00:09ID:???pgpoolによるレプリケーション+負荷分散の環境にしてから、
DROP INDEXがwaitingで止まったまま動かなくなるようになった。(´・ω・`)
解決方法知ってる方居ましたらよろしくお願いします。
0867866
2010/12/21(火) 17:01:12ID:???0868NAME IS NULL
2010/12/21(火) 20:15:00ID:???0869846
2010/12/21(火) 23:13:35ID:???COMMENT ON COLUMN scm_zip.tbl_import."全地公団コード" IS '全国地方公共団体コード';
0870NAME IS NULL
2010/12/21(火) 23:40:38ID:???PgAdminの日本語処理(Shift_JIS)に何らかの不具合があるのかな。
サーバ側で全部ログに吐かして、どのようなSQLが発行されていたか
確認したらわかったかも。
0871NAME IS NULL
2010/12/21(火) 23:41:54ID:???0872NAME IS NULL
2010/12/21(火) 23:44:07ID:???0873NAME IS NULL
2010/12/21(火) 23:54:57ID:???定義や修正のSQLなんかも見れるから、テスト環境で確認したら
そのSQLを本番サーバのpsqlへ流し込み。
おかげで、ALTER文なんて全然覚えていないや。
クエリーツールがpsql見たいにTabキーで補完してくれると楽なんだけど。
0874NAME IS NULL
2010/12/22(水) 00:04:12ID:???0875NAME IS NULL
2010/12/22(水) 00:47:15ID:???個人的にはpsqlのほうが好きだけど。
0876NAME IS NULL
2010/12/22(水) 01:17:27ID:???おっ、出来た。サンクスです。VS等のエディタと同じなのになぜ気づかなかったのだろうw
でも、テーブル名やカラム名は一覧が表示されるが、マウスでクリックしないと選択出来ないのね。
選択肢がひとつしかないところまで打つと残りは補完してくれるのだけれど。あぁ、psqlと同じなのか。
0877NAME IS NULL
2010/12/22(水) 01:25:58ID:???自分もよくEnter押して、失敗するけど。
0878NAME IS NULL
2010/12/22(水) 01:38:01ID:???何度もスマソ。選べました。
手慣れている分だけpsqlの方が小気味よく使えそうだが、
補完してくれるのならPgAdmin�Vにどっぷり浸かってもいいな。
0879NAME IS NULL
2010/12/22(水) 01:54:25ID:???0880NAME IS NULL
2010/12/22(水) 05:25:22ID:???psqlがTabで補完出来るように、PgAdmin�Vのクエリーツールでもできたらいーな。
って話しです。(>>873からの流れで)
0881NAME IS NULL
2010/12/22(水) 13:23:35ID:???0882NAME IS NULL
2010/12/22(水) 20:05:49ID:???設定とかあるの?
0883NAME IS NULL
2010/12/22(水) 20:50:04ID:???shared_buffersに1GB以上指定すると
起動しなくなります。
参考サイト見たら3GBとか設定されてるのをみるので
1GB以上も可能なんですよね?
0884NAME IS NULL
2010/12/22(水) 21:30:01ID:???shmmaxじゃね?
0885NAME IS NULL
2010/12/22(水) 21:37:06ID:???俺のもそうだよ。
物理メモリのサイズじゃないの?
0886NAME IS NULL
2010/12/22(水) 21:45:55ID:???0887NAME IS NULL
2010/12/22(水) 22:42:17ID:???テーブル名とか、where句のカラム名とかでできると思うよ
0888883
2010/12/23(木) 00:25:38ID:???>885
説明足りませんでした。すみません
Windows 2008 server R2 64bit
搭載メモリ16GB
タスクマネジャーで通常時の消費メモリ2G弱なので
足りないってことはないと思います。
0889NAME IS NULL
2010/12/23(木) 00:32:10ID:???>>884もいってるけど、shmmaxじゃないの?
0890NAME IS NULL
2010/12/23(木) 00:33:26ID:???0891NAME IS NULL
2010/12/23(木) 00:35:32ID:???こういうお話があるので、32MBにしたらどうでしょうか。
0892NAME IS NULL
2010/12/23(木) 00:51:29ID:???0893NAME IS NULL
2010/12/23(木) 00:56:50ID:???0894NAME IS NULL
2010/12/23(木) 01:08:36ID:???0895NAME IS NULL
2010/12/23(木) 01:19:01ID:???0896NAME IS NULL
2010/12/23(木) 04:19:00ID:???それだと1-2GBで上限にひっかかるのも無理も無い。
9.0から64bit版があるから、乗り換えてみたら?
0897NAME IS NULL
2010/12/23(木) 04:48:52ID:c+uJyMV9All evidence I've seen points to that
you should have shared_buffers
as *small* as possible on win32,
because memory access there is slow.
0898NAME IS NULL
2010/12/23(木) 09:44:30ID:???パフォーマンスを上げたいのではなく、とにかくshared_buffersを大きくしたいだけだったらごめんね。
0899NAME IS NULL
2010/12/23(木) 12:51:24ID:???Who does write this ?
0900NAME IS NULL
2010/12/23(木) 17:09:37ID:AsyKUZ+j2ヶ月ほど前にINSERTされた可能性が高いのですが、ログはもう流れてしまっており、
なんとか確認できないか手段を探しています。どうかよろしくお願いします。
0901NAME IS NULL
2010/12/23(木) 17:18:01ID:???0902NAME IS NULL
2010/12/23(木) 17:25:11ID:AsyKUZ+jそんなのが全てのテーブルの各カラムについてるんですか?
0903NAME IS NULL
2010/12/23(木) 17:27:36ID:???0904NAME IS NULL
2010/12/23(木) 17:32:56ID:AsyKUZ+j検索しているのですが、分かりません。
0905NAME IS NULL
2010/12/23(木) 18:12:23ID:???そういう目的のために DEFAULT CURRENT_TIMESTAMP な列を余分に
持っておく設計もあるとは思うけど。何も準備していなかったなら、
残る手段はテーブルのファイルの最終更新時刻を見るか、
xmin を見てトランザクションIDから判断するくらいだろうか。
0906NAME IS NULL
2010/12/24(金) 03:51:04ID:???Rainer Bauer did write.
0907NAME IS NULL
2010/12/24(金) 10:41:25ID:???それ、最終更新日に使えるの?
それともnull不可、default指定した列をnullでupdateするとdefault入るのかな。
0908NAME IS NULL
2010/12/24(金) 11:24:53ID:???最終更新日カラムをテーブルの最後にもつのが普通だと思ってたけど、
web屋から入ってきた人にはそうでもないんだろうなあ
0909NAME IS NULL
2010/12/24(金) 11:48:11ID:???0910NAME IS NULL
2010/12/24(金) 12:47:10ID:???not null制約つけてるからnullにはならないと思うんだけど。普通にエラーかね。
登録日ならdefaultで指定してもいいかもしれないけど、>>909のように登録日と更新日を
保持するなら両方ともロジックから設定したほうが分かりやすくていいかな。
web屋だけど。
0911NAME IS NULL
2010/12/24(金) 13:06:19ID:???Webフレームワークでもデフォでそういう機能あるのが殆ど
RailsとかCakePHPとか
0912888
2010/12/24(金) 13:25:06ID:???textsearch_ja使いたいって理由で8.4使っていますので、
解決は無理そうですね。
ありがとうございました。
0913NAME IS NULL
2010/12/24(金) 13:40:13ID:???違うよ。
読んでないのかな。
0914888
2010/12/24(金) 17:16:21ID:???小さいほうが有効なんですね。
ありがとうございました。
0915NAME IS NULL
2010/12/24(金) 18:44:17ID:???意味合いが違うからPostgresが32bitだからでいいんじゃないの?
0916初心者
2010/12/27(月) 08:19:08ID:IG6MxVWP0917初心者
2010/12/27(月) 08:24:06ID:???ALTER TYPE name RENAME TO new_name;
0918NAME IS NULL
2010/12/30(木) 20:23:23ID:NdZiDxrg0919NAME IS NULL
2010/12/30(木) 20:36:56ID:???閲覧のリクエストの度に一時テーブル作る外注ならクビにするけど
0920NAME IS NULL
2010/12/30(木) 20:53:47ID:NdZiDxrgで、どうするの?
CREATE VIEWとか?
0921NAME IS NULL
2010/12/30(木) 21:01:11ID:???0922NAME IS NULL
2010/12/30(木) 21:16:43ID:NdZiDxrg0923NAME IS NULL
2010/12/30(木) 21:25:45ID:???アプリ側のメモり内ですきなようにしろ
そんな事でいちいちDBサーバーのI/O負荷あげんな
DBサーバーはスケールアウトが難しくてスケールアップに
なりがちだからコストが高くなる。DBにはなるべく本業以外させない
0924NAME IS NULL
2010/12/30(木) 22:12:41ID:NdZiDxrg仕事じゃないんです
ただ、普通はどうしてるのかなと思いまして
0925NAME IS NULL
2010/12/31(金) 00:01:47ID:???0926NAME IS NULL
2010/12/31(金) 04:36:18ID:???0927NAME IS NULL
2010/12/31(金) 08:21:41ID:???俺もこれやってます。
あらかじめビュー作っておく方法もあるけど、DBへの負荷としては一緒だと思う。
0928NAME IS NULL
2010/12/31(金) 08:51:05ID:Ws6muYWRTRUNCATEすればいいんでないのかい
同時に作成されるんならしょうがないのかな、
参照用のテーブル先につくっとけないのかね?
0929NAME IS NULL
2010/12/31(金) 09:25:06ID:???0930NAME IS NULL
2010/12/31(金) 09:37:03ID:Ws6muYWRディスクIO的には大差ないのはわかる
テーブルの生成を常に行わないって意味で書いたんだけど
結局こんなこと考えるのは設計が悪いだけだと思う
0931NAME IS NULL
2010/12/31(金) 13:36:20ID:???いろいろなシステムを手がけると、いろんな問題が出る。
設計が悪いだけだと断じる貴方は、よほど実務経験が乏しいようだ。
0932NAME IS NULL
2010/12/31(金) 15:17:44ID:Ws6muYWRつぎはぎだらけでそうなるなら致し方ない面もあると思うけど
結果としては設計が悪いに帰着すると思うが
いかがか?
0933NAME IS NULL
2010/12/31(金) 15:25:47ID:???0934NAME IS NULL
2010/12/31(金) 19:21:18ID:zJ6oCjND0935NAME IS NULL
2010/12/31(金) 19:29:00ID:Ws6muYWR設計が悪いから、直せる部分ごっそり直せるんだったら直す
それができないなら次善の策を考える
それだけだと思うけど
0936NAME IS NULL
2010/12/31(金) 19:59:11ID:???挿入時に自動付番されたSERIAL型の値を得るにはどうしたらいいの?
エロい人教えてください!
0937NAME IS NULL
2010/12/31(金) 22:26:24ID:zJ6oCjND0938NAME IS NULL
2010/12/31(金) 23:04:02ID:???普通のシーケンスと同じように currval() で取得できるよ。
もしくは、INSERT 〜 RETURNING を使えるなら、1回で済む。
0939936
2011/01/02(日) 06:41:32ID:???INSERT 〜 RETURNING という方法があるんですね。
素晴しい!!!
さっそくマニュアルで調べました。
エロい人ありがとう!!!
0940NAME IS NULL
2011/01/02(日) 18:35:00ID:???良い方法を知っている方いますか?
要件は
・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などでもそうなってしまうようです。
0941NAME IS NULL
2011/01/02(日) 22:46:38ID:pX9o7PmA初めて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を、データソース構築ウィザードで編集できる。
上記のとおりで×
0942NAME IS NULL
2011/01/03(月) 16:48:17ID:???レコードが存在しないときはINSERT
をしたいです。
SELECTして、結果セットがあればUPDATE、なければINSERT
をすればよいのですが、もっとスマートに行う方法は
ありますでしょうか?
1つのSQLでこれが実現できれば、TRANSACTIONでロックする必要が
なくなるため、アプリのコードが単純化され非常にありがたいのですが・・・
よろしくお願いします。
0943NAME IS NULL
2011/01/03(月) 18:17:15ID:???それで存在しない場合は単に UPDATE 0 ってなるだけだから、それを検出して INSERT。
これを 1回で実行できる手順があるなら、俺も知りたいw
0944NAME IS NULL
2011/01/03(月) 18:37:56ID:???ちょっと前に同じような話題がMLに出て、そこの解が書かれてたよ
0945NAME IS NULL
2011/01/03(月) 19:11:27ID:???0946NAME IS NULL
2011/01/03(月) 19:20:27ID:???0947NAME IS NULL
2011/01/03(月) 20:38:39ID:???0948NAME IS NULL
2011/01/04(火) 02:12:30ID:???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
0949NAME IS NULL
2011/01/04(火) 05:05:28ID:???0950NAME IS NULL
2011/01/04(火) 08:43:24ID:???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
0951942
2011/01/04(火) 18:17:02ID:???レスありがとうございました。
SQL規格にMERGEコマンドというのがあるんですね!
PostgreSQL 9.1α4に実装されるとのことですが、PostgreSQL 9.1正式版までは
本番には使いたくないので、ストアドで実装することにします。
皆様ありがとうございました。
0952NAME IS NULL
2011/01/04(火) 22:13:52ID:???Npgsqlって、DbAdapter.Update()のとき
.NET側でDateTime型(PostgreSQL側ではdateやtimestamp型)
の列があって、かつ、値が入っているときは
InvalidCastExceptionで実行エラーになるね。
それだけでもうNpgsqlは使えないという結論になりました。
0953NAME IS NULL
2011/01/05(水) 14:32:40ID:???あほかと
0954NAME IS NULL
2011/01/05(水) 14:50:32ID:???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));
0955952
2011/01/05(水) 17:20:05ID:???した時の話ね。つまりDbCommandBuilderに更新系のコマンドを
自動作成させた場合のNpgsqlのバグの話です。
0956NAME IS NULL
2011/01/05(水) 18:45:25ID:???もしかしてNpgsqlのせいではないのではないだろうか?
0957952
2011/01/05(水) 23:23:39ID:???データプロバイダを Npgsql から dotConnect にかえたら
エラーは出なくなりました。
他のDBとプロバイダの組み合わせでも
例えば、
OracleClient と Oracle
SqlClient と SQL Server
とかでも出ないですね。
0958NAME IS NULL
2011/01/05(水) 23:31:42ID:???0959NAME IS NULL
2011/01/06(木) 19:20:58ID:???スタックビルダでインストールできないけど@Windows
0960NAME IS NULL
2011/01/10(月) 15:42:08ID:???PostgreSQL Part.8
http://hibari.2ch.net/test/read.cgi/db/1294641578/
0961NAME IS NULL
2011/01/12(水) 22:15:00ID:???0962NAME IS NULL
2011/01/13(木) 00:01:06ID:???0963NAME IS NULL
2011/01/13(木) 02:53:07ID:???0964NAME IS NULL
2011/01/13(木) 10:10:57ID:???0965NAME IS NULL
2011/01/13(木) 19:49:40ID:???0966NAME IS NULL
2011/01/14(金) 23:08:15ID:???0967NAME IS NULL
2011/01/14(金) 23:44:45ID:???0968NAME IS NULL
2011/01/15(土) 00:20:31ID:???0969NAME IS NULL
2011/01/15(土) 13:19:30ID:???0970NAME IS NULL
2011/01/15(土) 14:49:09ID:???0971NAME IS NULL
2011/01/19(水) 20:33:42ID:Axy8UdDb0972NAME IS NULL
2011/01/27(木) 00:17:05ID:???0973NAME IS NULL
2011/01/27(木) 02:29:25ID:???MySQLも同じくらいに過疎ってるの?
0974NAME IS NULL
2011/01/27(木) 11:07:19ID:OcfKbA070975NAME IS NULL
2011/01/27(木) 12:09:31ID:???何でもかんでも聞かずに、自分で調べろや。
0976NAME IS NULL
2011/01/29(土) 11:53:58ID:???0977NAME IS NULL
2011/02/05(土) 04:45:39ID:WW9mb35qその仮想表の記憶領域を結局要するから実体持つじゃん
ペテンだ
それとも閲覧しようとする度に元になったSQL発行して必要な部分だけ見せてるの?違うでしょ
しっかりシステムに記録してるじゃん
要は他のテーブルに依存するテーブルの事じゃん
0978NAME IS NULL
2011/02/05(土) 05:40:52ID:wBvA7A3P実装のしかたはRDBMSによってどうなるかは異なると思うけど
実体は
>それとも閲覧しようとする度に元になったSQL発行して必要な部分だけ見せてるの?
だよ
0979NAME IS NULL
2011/02/05(土) 06:24:42ID:WW9mb35qマジで?
じゃあビューって一般にテーブルより重いのね
0980NAME IS NULL
2011/02/05(土) 06:45:50ID:???だからマテリアライズドビューとかが生まれたわけで。
0981NAME IS NULL
2011/02/05(土) 10:09:20ID:???あり^^
0982NAME IS NULL
2011/02/06(日) 10:08:19ID:eJZDeFPi何に使うの?
サービス開始と停止はAdministratorアカウントじゃないとどうせ駄目だし
開発者アカウントでもデータベースの閲覧は可能にするし
0983NAME IS NULL
2011/02/06(日) 10:15:11ID:???必要なければ root や Administrator では動作させないと言うのは今時普通だと思うが。
0984NAME IS NULL
2011/02/06(日) 15:58:27ID:u/f+f7bh多分ここらへんの拡張
http://www.postgresql.jp/document/pg902doc/html/extend.html
インストール時に全部または一部自動的にインストールするために
アカウントを作るようにしたものだと思う
9.0のベータ版でははいんなかったけど
リリースしてからはアカウントが自動的に作られるようになってた
0985NAME IS NULL
2011/02/06(日) 16:27:23ID:???Windowsネィティブ環境でのPostgreSQLのインストールと実行についてのよくある質問とその回答
http://www.postgresql.jp/wg/jpugdoc/faq_windows-ja.html#2.3
> 2.3) なぜPostgreSQLを実行するために管理者以外のアカウントが必要なのですか?
> ハッカーがパッケージ内のソフトウェアの不具合を使用してコンピュータへの取っ掛かりを持った場合、
> ハッカーはそのサービスを稼動しているユーザアカウントの権限を持つことになります。
> PostgreSQLではこうした不具合はまだありませんが、
> ハッカーがPostgreSQLの不具合を見つけ、 それを悪用してシステムをハックしたとしても、
> 損害が最小となるように管理者以外のサービスアカウントの使用を強制しています。
0986NAME IS NULL
2011/02/06(日) 20:46:09ID:eJZDeFPiあ!なんだ管理者権限でログインして
変な小細工せずに普通にサービス開始すれば
勝手にpostgresアカウントで実行されるんですね
今解りました
プロパティのタブをいじくり回せば良かったんだ
パフォーマンスでプロセスを監視に入れてインスタンスの欄に
ちゃんとpostgresって表示されてました
あり^^
じゃあpostgresアカウントってログインするような物じゃないんですね
このアカウントとデータベースの接続パスワードが同じって
良くない事ですか?
0987NAME IS NULL
2011/02/06(日) 21:47:05ID:???> じゃあpostgresアカウントってログインするような物じゃないんですね
基本的にはそう言うこと。
> このアカウントとデータベースの接続パスワードが同じって良くない事ですか?
セキュリティ的には別にする方が望ましい。
一緒だと、接続パスワード知っててそのサーバーにアクセスできる人はそのアカウントで
ログインできてしまうことになるから。
ただ、そのリスクがどれぐらいあるかはケースバイケースだから一概に駄目とは言い切れ
ない。
もしリスクが高いなら、パスワードは言うに及ばす postgres アカウントの名前を含め
Administrator, Guest 等の既知の名前も類推されにくい名称に変更すべき。
0988NAME IS NULL
2011/02/06(日) 22:27:04ID:???あり^^
0989NAME IS NULL
2011/02/06(日) 23:22:22ID:???Very good answer!!
レス数が950を超えています。1000を超えると書き込みができなくなります。