PostgreSQL Part.9
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001NAME IS NULL
2012/05/26(土) 22:58:15.78ID:???●関連サイト
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.8
http://toro.2ch.net/test/read.cgi/db/1294641578/
0002NAME IS NULL
2012/05/26(土) 22:58:50.47ID:???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 Part.7
http://hibari.2ch.net/test/read.cgi/db/1256300618/
PostgreSQL Part.8
http://toro.2ch.net/test/read.cgi/db/1294641578/
●関連過去スレ
■ 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
2012/05/26(土) 23:00:27.17ID:???0004NAME IS NULL
2012/05/26(土) 23:16:14.38ID:???構文解析が済んでいるからって、処理順をすべて無視して良いとは限らないでしょう。
つーか、なぜあなたは自分レス>>前スレ978の不都合さを無視するの?
0005NAME IS NULL
2012/05/27(日) 03:30:16.07ID:???0006NAME IS NULL
2012/05/27(日) 03:35:07.11ID:???case文とか
countとか、sumとかの集約関数さえも知らん奴を相手にしてたのでは
ウンチクを語るならSQLの基本的な仕様を理解してからにして欲しいですな
0007NAME IS NULL
2012/05/27(日) 11:49:56.28ID:???言語設計(概念レイヤとでも言うか)と実装レイヤがごっちゃなのよね、あの子。
0008NAME IS NULL
2012/05/27(日) 13:58:50.33ID:???そのための字句解析、意味解析なのに、
その仕様である実行順も各句の役割も無視してる
具体例に対してちゃんと検証しようともしてない。まあSQL知らないからしょうがないのかも知れないが、それならそれなりの応対があるだろうに。
0009NAME IS NULL
2012/05/27(日) 15:53:45.14ID:???0010NAME IS NULL
2012/05/27(日) 17:45:00.71ID:???>>4
>>>前スレ1000
>
>構文解析が済んでいるからって、処理順をすべて無視して良いとは限らないでしょう。
処理順を無視してなんかないですよ。where句から処理が始まったとして、それより前に別名を展開する処理を追加しただけですね。
どこをどうみたら、処理順をすべて無視したと感じたのでしょうか。
>つーか、なぜあなたは自分レス>>前スレ978の不都合さを無視するの?
978ってこれ?
978> > 例えば、初心者が何故以下のような文でエラーが起きるか理解できなくなる。
978> > SELECT COUNT(foo) AS cnt FROM hoge WHERE cnt > 2 GROUP BY bar;
978> この例だと WHERE COUNT(foo) > 2 としたところで何の違いもない。
これについてなら、すでに983にあるとおり。
983> 何の違いもなくエラーが出るよってことでいいのかな
WHERE cnt > 2 も WHERE COUNT(foo) > 2 も同じようにエラーになる。それだけ。「不都合」って言ってるけど何が不都合?
0011NAME IS NULL
2012/05/27(日) 18:52:48.69ID:???0012NAME IS NULL
2012/05/27(日) 21:28:57.34ID:???信者ってw
丁寧に汚い言葉を使わずに、丁寧に返信していたつもりだが、
もう、そう言うようにしかとっていただけないのなら、勝手にしてください。
あ、最後に
>>983> 何の違いもなくエラーが出るよってことでいいのかな
>>WHERE cnt > 2 も WHERE COUNT(foo) > 2 も同じようにエラーになる。それだけ。「不都合」って言ってるけど何が不都合?
そういう意味ね。失礼、取り違えてました。
0013NAME IS NULL
2012/05/28(月) 02:19:09.68ID:???select
a as b,
b <- selectで別名解決はしないままでよい?
from tableA
where b = 3; <- 別名と、本来のカラム名との区別はどうやってつける?
0014NAME IS NULL
2012/05/28(月) 03:24:14.95ID:???rand()*3::integer as id
,val
from
a
where
id < 100
これは?aテーブルにid列があったらどうする?
selectは、物理テーブルと関係のないを作り出したり、
複数列から一つの列を作り出したり出来る。上の人のエイリアスがかぶる場合ってのもそうだし、人間様がどれが欲しいのか理解できるのか?
それとも全部エラーにしちゃうのか?現在の標準仕様ならばなんの不都合もなく実行できるのだが。
0015NAME IS NULL
2012/05/28(月) 03:32:53.32ID:???select floor(random()*1000)とかと読み替えてくれ
0016NAME IS NULL
2012/05/28(月) 04:16:41.22ID:???エイリアス優先とかルール作っちゃうと意図したことができなくなるよ
case文で例を、
念のために、aテーブルの構成は
id | subid1 | subid2 | val1 | val2
select
case
when val2 > 100 then subid1
else subid2
end as id
,val1
from
a
when
id > 50
aテーブルのidが50以上の行を抽出して、その行に対してだけcaseの条件文から新しいid列、val1列を導きたいんだけど、
勝手にselect句のcaseが適用されちゃう、どう解決しよう?
0017NAME IS NULL
2012/05/28(月) 10:58:24.31ID:???>それより前に別名を展開する処理を追加しただけですね。
正しく動作させるには「前」じゃなくて「スコープの外側」な
from
{
�@
where
{
�A
select
{
�B
}
}
}
「別名を展開」する命令を�@〜�Bのどこに書けばいいか分かるだろ?
C言語なんかだとどんな馬鹿でも「前」に書けば自動的にスコープ内に入るから
君みたいなプログラミング初心者ほど「前」に書けばいいという固定観念に縛られて
こういうミスをやってしまうんだよ
君はもっと勉強して脳みそを鍛えたらSQLを使いこなせるんじゃないかなあ
0018NAME IS NULL
2012/05/28(月) 11:51:04.41ID:???君はもっと勉強して脳みそを鍛えたらSQL「も」使いこなせるんじゃないかなあ
0019NAME IS NULL
2012/05/28(月) 15:29:32.54ID:???0020NAME IS NULL
2012/05/28(月) 16:18:18.30ID:???SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON ・・・
テーブル名で修飾してるのはスコープの概念そのものなんだが理解できるかい?
0021NAME IS NULL
2012/05/28(月) 17:57:59.12ID:???SELECT COUNT(foo) AS cnt FROM hoge WHERE cnt > 2 GROUP BY bar;
これを
WHERE COUNT(foo) > 2
こんな展開したら明らかに処理順無視してるじゃねーか・・・
WHEREの方が先に動くっていってんだからよう
たまたまWHERE句でcount関数が使えないだけだろ
0022NAME IS NULL
2012/05/28(月) 19:29:41.44ID:???サブクエリとか分かりやすいスコープ
0023NAME IS NULL
2012/05/28(月) 19:31:34.32ID:???彼は、そういうのはエラーになればいいだろ、展開して問題ないものだけ動けばいいんだという言い分だと思う。
展開して問題ないものの判断ができない場面があることに気づいてないみたいよ。
0024NAME IS NULL
2012/05/28(月) 20:12:30.91ID:???そもそも 列名 AS 別名 とはselect句の出力の属性を宣言しているのであって、プロシージャ(手続き)を宣言しているわけではない
それにも関わらず「それより前に別名を展開する処理を追加しただけですね。」というのはプロシージャを追加したということになり
もはや非手続き型言語ではない
そんな基本的な矛盾に気がつかないようではプログラマとして致命的だ
0025NAME IS NULL
2012/05/28(月) 22:24:55.48ID:???いつも過疎で平穏な、DB板のPostgreSQLスレに彼は来た。
「試したところ、エラーになりました。
psql=> select id as ticket_id from tickets where ticket_id < 10;
ERROR: column "ticket_id" does not exist」
どうにもこのエラーが受け入れられないらしい。
思えば初めから他人の話にはほぼ全て否定的であった。
前スレ>>957,968,971,975,978
(そもそもやつがsqlに対して無知だからおかしてる間違いだろ?
字句解析・意味解析の知識はあるか知らんが(ほんとか?評価順の重要さも分かっていないようだが)、
SQLの知識が無いという自覚なしに、誰もsqlを持ち上げたりしてる訳じゃなく仕様を読めって言ってるだけなのに)そう俺は思った。
>SQL信者の必死さに涙が止まらない
あとからこんな言葉が吐かれることになるとは、
この時はまだ思いもしなかった。この言葉は、俺の今後の人生をきっと豊かにしてくれるだろう。
前スレ>>990
>構文解析や意味解析についての、簡単でもいいので基礎知識があれば、
>別名をwhere句で使えるようにするのが特に困難なことではないはずだ、
>というのがすぐにわかるんだけど。
>たぶん構文解析についての基礎知識がないやつが、SQLの仕様書がどうのこうの
>いっているのだろう。
>なぜそういう仕様になっているのかが聞かれているのに、SQLの仕様を読めと
>答えてるのは滑稽すぎる。
最高に恥ずかしい!!!この晩はこれをつまみに一杯やった。
評価順があると、具体例挙げてどう動くか考えろと、言っても無駄だった。
前スレ>>1000
>だーかーら、そのまえにSQLの構文解析と意味解析をしてるでしょうが。
>構文解析 → 意味解析 → FROM句→WHERE句→SELECT句・・・
> ^^
> ここで構文解析木を操作して別名を展開すればいいだけ。
>なんでwhere句やselect句の順番にこだわるの。whereやselectの処理に入るまえに別名を展開すればいいだけなのに、なんでこんなことがわからないの。
>なんで結果が変わると思ったの?
とか頓珍漢なこと言っちゃって結局クエリの内容見ないのだ。
(なんで順番にこだわんないの?)よいこのみんなは思ったはずだ。
その後も同じような主張を繰り返した。
(自信満々なのはいいが、人の話をちゃんと聞かないようじゃ何のために質問しに来たんだか…
何かもっと面白い提案でもでるのかと思ってたのに…まぁこんな日も有るか)
大変ワイルドな出来事でした。
0026NAME IS NULL
2012/05/28(月) 23:23:23.59ID:???てか、元質問者と同一認定していいのか?
0027NAME IS NULL
2012/05/29(火) 19:56:25.45ID:???正直なところどう感じたのかをお伺いしたい。
0028NAME IS NULL
2012/05/29(火) 20:33:19.53ID:???pgsql-jpで石井さんに詰め寄るくらいして頂きたかった。
0029NAME IS NULL
2012/05/29(火) 20:42:50.92ID:???0030NAME IS NULL
2012/05/29(火) 21:34:53.21ID:???「試したらエラーになりました。簡単なことなんですけど、どうしたらできますか?」ってね
もはや何かの陰謀に違いない
0031NAME IS NULL
2012/05/29(火) 23:11:12.20ID:???0032NAME IS NULL
2012/05/30(水) 15:16:04.86ID:???0033NAME IS NULL
2012/05/30(水) 16:47:44.19ID:???0034NAME IS NULL
2012/06/01(金) 14:48:03.25ID:???index only scanも導入されるし、
カスケードレプリケーション、range型とかも。
もうあれだな。
0035NAME IS NULL
2012/06/01(金) 14:53:46.91ID:???0036NAME IS NULL
2012/06/02(土) 00:17:26.28ID:???マイエスキューエラーに馬鹿にされなくて済みます
0037NAME IS NULL
2012/06/03(日) 00:11:20.77ID:???WITHが便利過ぎてワロタ。
とあるテーブルAから、条件に合うレコード削除して
その内容を「削除済み」用のテーブルBに書いて、
ついでにテーブルCの該当レコードのフラグカラムを書き換え。
これが一文一発で出来て、明示的なトランザクション制御要らず。
気持ち良過ぎやろ。
0038NAME IS NULL
2012/06/03(日) 08:31:40.10ID:???0039NAME IS NULL
2012/06/06(水) 17:49:32.07ID:???http://www.moongift.jp/2012/06/20120604-3/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+moongift+%28MOONGIFT+-+%3F%3F%3F%3F%3F%3F%3F%3F%3F%3FIT%3F%3F%3F%3F+-%29&utm_content=LocalHost
0040NAME IS NULL
2012/06/08(金) 07:38:08.88ID:???0041NAME IS NULL
2012/06/13(水) 07:34:48.22ID:???logファイルにSQLが出力されるのを抑止し
たいのですが、どのようにすればよいで
しょうか?
0042NAME IS NULL
2012/06/13(水) 09:42:39.93ID:???見てわかんなかったらマニュアルを読め
0043NAME IS NULL
2012/06/13(水) 12:13:08.03ID:???http://www.postgresql.jp/document/8.4/html/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHEN
log_min_error_statement PANIC
かな
0044NAME IS NULL
2012/06/13(水) 14:14:10.20ID:???わざわざ設定しないと出ないはずだが。
0045NAME IS NULL
2012/06/13(水) 18:19:53.31ID:???0046NAME IS NULL
2012/06/14(木) 17:11:51.92ID:???するときに、場所って指定できますか。
たとえばカラム「age」をカラム「name」と「gender」のあいだに追加したいとか。
0047NAME IS NULL
2012/06/14(木) 18:24:58.88ID:???普通はテーブル作りなおさないとできないんじゃなかったかな。
RDBはもともとカラムの位置を気にしないものだし。
0048NAME IS NULL
2012/06/14(木) 18:56:18.06ID:???*指定したくて気になるならView作ればいいし、
DROPして作りなおすのもありっちゃあり
0049NAME IS NULL
2012/06/14(木) 21:01:55.02ID:???postgresの場合は出来たら便利なのは分かってるけど他に優先度が高いのがあって、手掛ける人がいないってどこかで読んだような
0050NAME IS NULL
2012/06/14(木) 21:03:48.39ID:???http://wiki.postgresql.org/wiki/Alter_column_position
0051NAME IS NULL
2012/06/14(木) 22:10:32.27ID:???0052NAME IS NULL
2012/06/17(日) 14:29:53.21ID:???対応するのもアホくさいと思うがなあ
0053NAME IS NULL
2012/06/17(日) 14:54:04.60ID:???変更コストがどうかと言う問題はあるけれど。
20列のテーブルで3-5列に処理区分1,処理区分2,処理区分3とあり、
処理区分4だけが21列目。しかも、20列目の入力時刻の後になるというのは
いろいろな意味で好ましいことではない。
0054NAME IS NULL
2012/06/17(日) 15:44:40.84ID:???:
予備1 varchar(100)
:
予備2 varchar(100)
:
があったりして。
0055NAME IS NULL
2012/06/17(日) 17:29:01.34ID:???すべてのユーザがviewを通してすべてのテーブルを管理しているという訳では
ないからね。やはり列の並び順も少なくとも管理しやすさには大きく関係する。
一般にはね。
0056NAME IS NULL
2012/06/20(水) 15:38:39.38ID:???CREATE TABLE documents
(
id serial NOT NULL,
document text,
CONSTRAINT pky PRIMARY KEY (id )
);
CREATE INDEX idx
ON documents
USING gin
(document COLLATE pg_catalog."default" gin_trgm_ops)
documentカラムには、
平均1000文字の英文が100万行格納されています。
上記の状態のテーブルに次のSQLを実行しました。
--「keyword etc」が含まれているかどうか確認
SELECT EXISTS(
SELECT * FROM documents WHERE document_text like E'%keyword etc%'
);
実行した結果は、0.5秒〜300秒を超えてタイムアウトするものまで様々です。
(「keyword etc」の場合10.8秒でした。)
設定ファイルの編集やSQLの改善でもう少し早くすることはできないでしょうか。
ちなみに、実行している間は、実行しているコアのCPU使用率が100%になっています。
0057NAME IS NULL
2012/06/20(水) 16:54:48.99ID:???0058NAME IS NULL
2012/06/20(水) 18:34:00.40ID:???トリグラムを使わずに
CREATE INDEX idx ON documents USING gin(to_tsvector(document));
として、
SELECT EXISTS(
SELECT * FROM documents WHERE document @@ ts_query('keyword & etc') and document like E'%keyword etc%'
);
としたらどうなる?
0059NAME IS NULL
2012/06/20(水) 18:35:40.85ID:???SELECT EXISTS(
SELECT * FROM documents WHERE to_tsvector(document) @@ ts_query('keyword & etc') and document like E'%keyword etc%'
);
のまちがいだった。
006056
2012/06/20(水) 18:55:08.87ID:???ありがとうございます。
1件(1行)でもキーワードがあるかどうかを確認したいので、
そのように1件見つかった瞬間に処理を切り上げてもらえるのが助かります。
>58
ご提案ありがとうございます。
なるほど、一度vector検索してから
連語があるか確認するのですね。
一度テストしてから、またお返事させていただきます。
0061NAME IS NULL
2012/06/21(木) 20:53:06.34ID:???trgrm自体の検索は大体そこそこ早いんだよ
でもインデックスでヒットした後に実テーブル確認しに行ったりするとそこで速度が落ちる。
だからヒット数が多ければ多いほど遅くなるよ。 特にメモリに実テーブルがのっていない場合。
そんな感じじゃない?>>56
そうであれば、差し支えなければそもそもginでヒットする件数をgin_fuzzy_search_limitで抑えちゃうことができるのでそれを検討してみては?ここに書いてあるよ
www.postgresql.jp/document/9.1/html/gin-tips.html
0062NAME IS NULL
2012/06/27(水) 17:48:43.01ID:???>>58-59
いくつか検証してみましたが、
今より高速になるものもあれば、むしろ速度が落ちるものもありました。
原因としては、
to_tsvector(document) @@ ts_query('keyword & etc')
の段階で該当する行が大量にあった場合、
そこからは、シーケンシャルなlike検索が行われているような気がします。
(ただ、実行計画では、BITMAP HEAP SCANとなっていますので、
インデックスを使ってなお遅いということなのかも知れません。)
>61
gin_fuzzy_search_limitを1に設定して実行してみました。
確かに実行速度は、早くなったのですが、有るはずの文字列がないと判断されるようになりました。
gin_fuzzy_search_limitを0、または9999999等の十分大きな値に設定すれば、
>56のクエリで[True]が帰ってくるSQLでも、
gin_fuzzy_search_limitの値を小さく(例えば1や10)にすると
[FALSE]が帰ってきます。
where句でヒットした行数を絞って返すという認識なのですが、
(1000件ヒットしても、gin_fuzzy_search_limitが10ならば、10件しか返さない)
間違っておりますでしょうか?
0063NAME IS NULL
2012/06/28(木) 20:49:09.44ID:???なので小さく設定しすぎると、正しい結果が帰らないこともある。
事情を説明するのが面倒(というかソース追う時間が無くて自分も正確に把握してない)
なので、興味があれば調べてみて。
ということで、速度(と結果)が妥協できるところで、
小さく設定するのがよし。
0064NAME IS NULL
2012/06/28(木) 21:19:43.23ID:???ginインデックスのみからwhere句条件で探す(これは早い。転置なんで当たり前)
→正しいかどうかヒープ(メモリに納められてる実タプル(もちろん無ければディスク読む))をもう一回条件で調べる
(bitmapの説明は省いた)
て手順だから。プランでrecheckって出てるでしょ?
インデックスっていつも正しい情報が入ってるって限らないのよpgは
0065NAME IS NULL
2012/06/29(金) 11:17:17.20ID:Q8TsbVeKpostgresql 9.1.2 locale=C, DBの文字コードはUTF-8
接続クライアント
a. WindowsXP上のTeraTerm UTF-8
b. JDBC type4接続 Java文字コードはUTF16BE
2点質問があります。
(1) a.において、psqlが出力するエラーメッセージが文字化けします。
SELECT結果(UTF-8)は問題ありません。
文字化けを解消する、またはメッセージを英語にする方法をご存知であれば教えてください。
(2) b.において、JAVA例外(PSQLException)のメッセージが文字化けします。
ログファイルの文字コードはUTF-8。
SELECT結果(UTF-8)は問題ありません。
こちらも文字化けを解消する、またはメッセージを英語にする方法をご存知であれば教えてください。
006665
2012/06/29(金) 11:19:28.71ID:Q8TsbVeKosのタイムゾーンは日本です。
よろしくお願いします。
0067NAME IS NULL
2012/06/29(金) 16:30:32.16ID:???を参照して文字コードを指定する必要があるのかもしれない。
0068NAME IS NULL
2012/06/29(金) 18:04:40.36ID:???CentOS 5.2 locale=C
て言ってるけど、具体的には何で判断して
どこに設定されてる?LC_ALL?LANGUAGE?LANG?
とりあえずそこら辺を確認して
それからpostgresql 9.1.2 locale=Cていってるけど、
postgresqlはソースから入れたんだよね?
ちゃんとインストールしたpostgresqlが動いてる?
(たまに、インストールしたのにシステムにデフォルトで入ってるpostgresあげてる人とかいるので)
何処に設定したものからCって判断してる?
"実際に動いてるpostgresの"postgresql.confで
lc_messages = 'C'
lc_monetary = 'C'
lc_numeric = 'C'
lc_time = 'C'
になってるかい?
psqlでの
select name, setting from pg_settings where name like 'lc\_%';
の結果
name | setting
-------------+---------
lc_collate | C
lc_ctype | C
lc_messages | C
lc_monetary | C
lc_numeric | C
lc_time | C
みたいにconf(と思っているもの)と一致してるかい?
それを確認した上で、
export LANG=C
してpsqlコマンド使っても化け文字?
006965
2012/06/29(金) 21:27:43.37ID:CwgX9y5+おかげさまで(1) については解決しました。
原因は、トラブルシュートのテスト用に用意した、意図的に壊した設定ファイルが読まれていました。
正しい設定ファイルに置き換えることで解決しています。
(2) については状況が変わりません。
どうも本体ではなくJDBCドライバの問題のような気がします。
0070NAME IS NULL
2012/07/07(土) 15:32:17.19ID:???0071NAME IS NULL
2012/07/24(火) 13:30:06.59ID:???0072NAME IS NULL
2012/07/24(火) 19:06:10.69ID:???schemaのことだね?
オプションにあるべ
0073NAME IS NULL
2012/07/24(火) 21:01:08.03ID:???0074NAME IS NULL
2012/07/24(火) 21:07:44.77ID:???0075NAME IS NULL
2012/08/03(金) 16:19:20.68ID:???ここに
integer 4バイト
bigint 8バイト
とありますが、これは64bit版でもそうなのでしょうか。
0076NAME IS NULL
2012/08/04(土) 16:42:13.17ID:???YES. 32/64bitで差はない。
0077NAME IS NULL
2012/08/07(火) 10:10:03.88ID:???ありがとうございます。
いちおう確認ですけど、x86_64ならintが64bitだから、PostgreSQL 64bit版でもintegerとbigintに性能の差はないと考えていいですよね?
0078NAME IS NULL
2012/08/07(火) 11:13:07.24ID:???DBのINTに関係は無いよ、環境に寄らずMDBSが決めたサイズになる。
0079NAME IS NULL
2012/08/07(火) 16:56:07.46ID:???64bit環境だからって64bitとは限らないし。
というか32bitのままって方が多そう。
0080NAME IS NULL
2012/08/15(水) 12:46:09.78ID:???が、
configure: error: in `/Users/jiro/Downloads/postgresql-9.1.0':
configure: error: C compiler cannot create executables
と文句を言われ途中で止まってしまいます。
対処法をご存知のかたがいましたらご教授願います。
0081NAME IS NULL
2012/08/15(水) 13:21:08.32ID:TlE9Z+hr0082NAME IS NULL
2012/08/15(水) 14:06:21.38ID:???Xcodeとコマンドラインツールは入れてるよね?
0083NAME IS NULL
2012/08/16(木) 12:45:21.74ID:???片方のテーブルの型がtextでつなげる方の型がinteger
おまけにtextの方が0で頭が埋ってる10桁なんだがどうやるんですか?
教えて下さい偉い人
SELECT * FROM a LEFT OUTER JOIN b ON a.accountcode = to_char(b.id, '0000000000');
これじゃなぜかだめっす
0084NAME IS NULL
2012/08/16(木) 13:48:01.64ID:???a.accountcode::INT とかでいかない?
0085NAME IS NULL
2012/08/16(木) 19:01:32.33ID:???to_char(b.id, 'FM0000000000');
偉くないので分からないけど、こっちの方が良いかもしれない。
to_char(b.id, 'FM0999999999');
0086NAME IS NULL
2012/08/22(水) 01:02:20.86ID:???デバッグのいい方法ないですかね?
PgAdmin�Vだと関数のデバッグのみでトリガ関数のデバッグができないようでして
0087NAME IS NULL
2012/08/22(水) 02:06:49.47ID:???0088NAME IS NULL
2012/08/22(水) 08:02:55.65ID:???0089NAME IS NULL
2012/08/23(木) 16:35:57.98ID:???selectすると、必ずpostgresのプロセスごと落ちるんだけど、
何か方法ないですか?
分割した個々のテーブルにならselectしても落ちないんですが、
個々のテーブルをselectするSQLを5つくらいunionでつなげてもやっぱり落ちます...
0090NAME IS NULL
2012/08/29(水) 02:04:44.97ID:???0091NAME IS NULL
2012/08/29(水) 10:19:16.67ID:???Posted on 2012-08-27
だいぶ先かな
0092NAME IS NULL
2012/08/31(金) 08:57:08.31ID:???0093NAME IS NULL
2012/08/31(金) 13:07:04.38ID:???比較スレへどうぞ。
MySQL vs PostgreSQL Part2
http://toro.2ch.net/test/read.cgi/db/1123011800/
0094NAME IS NULL
2012/09/01(土) 19:25:06.73ID:???飼い殺し乙
とか言ってやれ。事実だし。
0095NAME IS NULL
2012/09/02(日) 11:52:33.57ID:hfAxyDdYPostgreSQLでもできますか?
やりかた教えてください><;
0096NAME IS NULL
2012/09/02(日) 11:59:14.43ID:???複数作れる。同時に起動するときは、それぞれのpostgresql.confで
ポート変えないとならんけどね。
0097NAME IS NULL
2012/09/02(日) 12:31:47.63ID:???0098NAME IS NULL
2012/09/03(月) 00:12:18.97ID:???pg_hba.conf でログインできるDBを制限
スキーマ + ロールでアクセス制限
どれでもお好きに。ちなみに、MySQLのDB ≒ Postgresのスキーマ だと思ったほうがよいかも。
0099NAME IS NULL
2012/09/06(木) 11:36:17.07ID:???alter tableだとsequenceが変わらないような気がします。
0100NAME IS NULL
2012/09/06(木) 12:09:39.64ID:???自己レスです。
¥d hogehoge_id_seq
すると、なんとシーケンスはbigintで作られているではあーりませんか。
これなら alter table hogehoge alter column id type bigint だけでいけそうです。
0101NAME IS NULL
2012/09/06(木) 22:35:39.12ID:???歴史的な経緯?
0102NAME IS NULL
2012/09/07(金) 05:15:46.93ID:???0103NAME IS NULL
2012/09/07(金) 12:01:00.99ID:???足りなくて困ってる人数ないだろうし。
0104NAME IS NULL
2012/09/07(金) 17:04:23.71ID:???0105NAME IS NULL
2012/09/17(月) 15:26:30.91ID:fmu2IRishttp://www.postgresql.org/
0106NAME IS NULL
2012/09/17(月) 15:49:57.08ID:???おい、起きろ
0107NAME IS NULL
2012/09/17(月) 19:18:56.82ID:???意外と早いんだな。
0108NAME IS NULL
2012/09/17(月) 19:56:17.28ID:???0109NAME IS NULL
2012/09/17(月) 21:56:19.47ID:4clxm/pY質問があります。
postgresql8.1を使用しているDBサーバがあり、
毎日3:00からVACUUMとDBバックアップを行っています。
通常ではVACUUMに30分くらいかかっていたのですが、
1週間前あたりからVACUUMに6時間くらいかかるようになってしまいました。
今回、原因究明のため商用機を調査することになったんですけど、
VACUUMが急に時間がかかるようになることに心当たりがある方はいるでしょうか?
また、調査する場合はどのあたりから調査していくべきでしょうか。
0110NAME IS NULL
2012/09/17(月) 23:45:11.49ID:???0111NAME IS NULL
2012/09/18(火) 00:18:25.21ID:WP7LnWlOさーせんw
0112NAME IS NULL
2012/09/18(火) 08:00:41.75ID:???0113NAME IS NULL
2012/09/18(火) 11:13:20.04ID:???0114NAME IS NULL
2012/09/24(月) 03:06:22.66ID:???WHERE serial IN ?$1?
0115NAME IS NULL
2012/09/24(月) 03:12:50.60ID:???NULLへの対応が必要ならば、別途 調整がいる。
0116NAME IS NULL
2012/09/24(月) 03:45:22.40ID:???0117NAME IS NULL
2012/09/26(水) 20:42:11.37ID:wFrvL7PY教えてください!!
0118NAME IS NULL
2012/09/28(金) 03:21:24.92ID:???0119NAME IS NULL
2012/09/30(日) 15:47:01.67ID:???LANGUAGE 'C'をLANGUAGE 'c'にしないと動かないってとこでハマったわ。'
0120NAME IS NULL
2012/09/30(日) 19:58:41.68ID:???0121NAME IS NULL
2012/10/01(月) 10:52:13.58ID:???select * from pg_language; でCかcの違いじゃないのかなあ。
0122NAME IS NULL
2012/10/01(月) 11:32:18.61ID:???8.4使ってた。そこでインストール済みの拡張言語見れたのか・・・。
0123NAME IS NULL
2012/10/04(木) 01:46:06.95ID:???新規開発も全て PostgreSQL です。現在まで何も問題ありません。
ですが、最近、世界的に MySQL にシェアを奪われ続けており、この先ずっと PostgreSQL を使い続けるべきか、正直、迷っています。
どんなものでしょうか?
0124NAME IS NULL
2012/10/04(木) 02:40:20.37ID:???0125NAME IS NULL
2012/10/04(木) 02:53:14.19ID:???なるほど。
よく分かりました。吹っ切れました。
ありがとうございます。
0126NAME IS NULL
2012/10/04(木) 06:44:27.97ID:???0127NAME IS NULL
2012/10/04(木) 09:10:57.91ID:???だから>>123は杞憂だよ
0128NAME IS NULL
2012/10/04(木) 10:11:08.85ID:???心情的には PostgreSQL と心中してもいいかな、くらい思ってるので。
0129NAME IS NULL
2012/10/04(木) 11:38:42.60ID:???無くなってから次考えりゃいい
0130NAME IS NULL
2012/10/04(木) 13:20:44.90ID:???0131NAME IS NULL
2012/10/04(木) 23:18:24.26ID:???>createdb -U Postgres -O ユーザ名 DB名
と入力すると、"createdb : コマンドライン引数が多すぎます。(始めは"?O")
と言われるのですが、何がダメなんでしょうか?
バージョンは9.0.4です。
(普段は電気屋さんしてます。)
0132NAME IS NULL
2012/10/04(木) 23:44:33.46ID:???ユーザ名はアルファベットオンリー?
0133NAME IS NULL
2012/10/05(金) 01:20:55.65ID:???$psql -U postgres
#create user ユーザ名;
#create database DB名 owner ユーザ名;
でやってるけど、そんなコマンドあるんだな。
0134NAME IS NULL
2012/10/05(金) 02:17:46.03ID:???CREATE DATABAS は、 SQL コマンド
createdb は、CREATE DATABASE の shell スクリプトラッパー
0135NAME IS NULL
2012/10/05(金) 08:57:01.29ID:???はい、そうです。全部小文字。
この前にユーザ作成しました。
0136NAME IS NULL
2012/10/07(日) 12:03:49.94ID:???0137NAME IS NULL
2012/10/09(火) 18:00:01.74ID:???指定する単語は16個までって決まってる?
where col %% '単語1 or 単語2 or 単語3 or .... or 単語16'
の検索結果と
where col %% '単語1 or 単語2 or 単語3 or .... or 単語16 or 単語17'
や
where col %% '単語1 or 単語2 or 単語3 or .... or 単語16 -単語17'
などの結果が全部同じなんだけど、
postgresの仕様?
sennaの仕様?
textsearch_sennaの仕様?
0138NAME IS NULL
2012/10/10(水) 04:00:10.34ID:???あ、それはこのスレに書き込む時、携帯の自動処理で大文字になってしまったのです。。。
0139NAME IS NULL
2012/10/10(水) 10:01:42.30ID:???環境はWindows?
0140NAME IS NULL
2012/10/10(水) 10:12:43.90ID:???「>」ってなってるからWindowsっしょ
0141NAME IS NULL
2012/10/12(金) 14:08:58.85ID:???or検索だからなのでは・・・?
あと、postgresの全文検索はインデックスが壊れる事がちょくちょくあったような。
そもそもsenna使ってる時点でノイズは結構出るから、あまり気にしなくていいのでは?
0142NAME IS NULL
2012/10/12(金) 16:43:38.89ID:???どうしてます?
うちの会社は基本的に24時間365日営業しているので、
ネット(システム)を停止できないです。
事情があれば、顧客に事前に通知して1日とか一斉休業するんですけど、
やっぱ、なかなかバージョンアップだけではそこまでできません。
セキュリティホールとか殆ど無いですからね、PostgreSQL…
0143NAME IS NULL
2012/10/12(金) 16:48:35.98ID:???そんな装備で大丈夫か?
0144NAME IS NULL
2012/10/12(金) 18:25:20.96ID:???$name = 'foobar';
select * from table where name = $name;
とかしたい。
0145NAME IS NULL
2012/10/12(金) 19:15:08.39ID:???若干使いづらいところはあるが、 \set と :varname 。
http://www.postgresql.jp/document/9.2/html/app-psql.html#APP-PSQL-VARIABLES
0146NAME IS NULL
2012/10/13(土) 00:44:44.96ID:???さんくす
0147NAME IS NULL
2012/10/13(土) 01:37:16.87ID:???すいません、「装備」とは?
0148NAME IS NULL
2012/10/13(土) 03:02:24.33ID:???どういうシステムか知らないけど、普通に動いて特に困らないならバージョンアップはしなくていいんじゃない。
さすがに未だ7使ってるなら計画練ってアップデートしたほうがいいと思うけど。
0149NAME IS NULL
2012/10/13(土) 07:14:23.17ID:???>>148
それはうまい解決方法がない、ということでいいのかな。
0150NAME IS NULL
2012/10/13(土) 14:31:39.67ID:???そういえばこの質問は止めたらマズいシステムで止めずにアップデートするには?だったか。
Slonyとpgpool使えばノンストップでバージョンUPいけるらしいけど、テーブル増えるから俺は使いたくないなー。
1日止めるような要件の時に一緒にやっちゃうのがいいんじゃない。
0151NAME IS NULL
2012/10/17(水) 01:34:55.10ID:I0xYCeC3時々、大量のレコードを更新や挿入するのですが、
とても時間がかかるため、
BEGIN; DROP TABLE して、
COPY table FROM stdin;
....
\. COMMIT;
のようにしようと考えています。
この処理の実行中、tableにアクセスされても問題ないのでしょうか?
あるいは BEGIN; の直後に LOCK table; は必要なのでしょうか?
レベルの低い質問ですみません。
0152151
2012/10/17(水) 01:40:58.77ID:???レコードレベルのロックであれば、テーブルそのものはなくなるわけではないので
普段は気にしないでSQLを書いていたのですが、今回初めて テーブルそのものを
DROP するため、不安になっているのです。トランザクションってのはつまり、
ROLLBACK さえすれば DROP そのものも無かったことにできるものだろうとは思うし、
DROP してしまう table をLOCK してもしょうがないだろうし・・・。混乱中です。
0153NAME IS NULL
2012/10/17(水) 06:47:11.44ID:???PostgresqlだとDROP TABLEやTRUNCATEやCOPYコマンドにもトランザクション制御ができるのはそのとおり。
DROP TABLEやTRUNCATEを実行すると、内部でACCESS EXCLUSIVE LOCKがかけられて、処理中は自分以外が
対象のテーブルにアクセスできなくなる。
http://www.postgresql.jp/document/8.4/html/explicit-locking.html#LOCKING-TABLES
0154151
2012/10/17(水) 12:09:59.64ID:???ありがとう御座います。
自動的にACCESS EXCLUSIVE LOCKがかけられるのですね。すっきりしました。
ユーザー側からはリードオンリーの巨大なテーブルだったので
挿入や更新の度に >>152 を行おうと思います。
0155NAME IS NULL
2012/10/17(水) 20:16:30.11ID:???0156NAME IS NULL
2012/10/17(水) 23:20:15.92ID:???何千件ものレコードを 更新または挿入するんです・・・。
インデックスをDROPしてからINSERT or UPDATE して、
またインデックスをCREATE するというのもやってみたんですが多勢に無勢でして。
状況としては管理者のみが編集できるマスターテーブルの更新です。
もちろん何千件といっても、実際の変更箇所は全レコードの数%なんですが、
変化したかどうかサーバーに問い合わせるのも時間かかるし、
そのマスターテーブルが Excel という仕様なので、>>151に考えが至ったのです。
0157NAME IS NULL
2012/10/17(水) 23:48:10.34ID:???(複数の表に対してインサートやアップデートだけじゃなく計算したりして)
処理するというのを分のオーダーでやってるんですけど。。。
まともなプロに見せたら、1時間ぐらいで10倍速くしてくれると思うよ。
0158NAME IS NULL
2012/10/17(水) 23:59:48.81ID:???0159NAME IS NULL
2012/10/18(木) 00:02:00.85ID:???0160NAME IS NULL
2012/10/18(木) 01:17:19.92ID:???いや、挿入更新処理を 遅くとも2〜3秒以内で終わらせたいのです。
>>158
そうなんです。状況によってそれもありえるのが厄介で・・・。
0161NAME IS NULL
2012/10/18(木) 02:05:42.92ID:???>いや、挿入更新処理を 遅くとも2〜3秒以内で終わらせたいのです
じゃ今、何秒かかってるの?
0162NAME IS NULL
2012/10/18(木) 02:09:31.97ID:???ひどいときだと20〜30秒くらいかかってました。
COPY で書き換えた所、1秒くらいで終わりました。
0163NAME IS NULL
2012/10/18(木) 06:24:01.99ID:???たとえDELETEとINSERTを使って20〜30秒かかっても、その間も他のユーザーは更新前のテーブルを参照できるんだから、
数秒のテーブルロックをかけるよりもシステムのロックがなくていい気がするけど、
COPY文を使って1秒テーブルがロックする程度のことを許容できるなら、そのやり方も早くて簡単でいいと思う。
0164NAME IS NULL
2012/10/18(木) 07:43:14.99ID:???それがわかってるならINDEXが使われるようにしたらいいだけでは?
0165NAME IS NULL
2012/10/18(木) 13:35:17.43ID:???おっしゃるとおりなんだと思います。今はまだマスターテーブルの管理者が一人だからいいですが、
そのうち別のキャンパスにもおきたい、とかなってくると話がややこしくなってきそうなので
そのときに備えて今から前任者の「Excelでマスターを編集」という状況から脱したいと思います。
ただ、やっぱ便利なんだな・・・いろいろと。
>>164
更新挿入の時にこちら(管理者)がWHERE句で参照する部分のINDEXはもちろん残しています。
ただ、他にも10以上のINDEXがはってあって、それの更新に時間がかかっているのかな?と
おもい削除してみたりしましたが、たいして変わらなかったんです。
今にして思うと COPY文でインデックスのCREATEもふくめて1秒で完了しているということは
INDEXの更新自体は殆ど関係無かったのでしょうかね。
0166NAME IS NULL
2012/10/18(木) 14:42:58.91ID:???なんとかすっきりできないものなのでしょうかねぇ。
MERGEをずっと心待ちにしているのだけど。
>>165
それにしてもインデックスの作成が早すぎて不思議な気分です。
ちょっと気味が悪いくらいです。と思って見直したら幾つかのインデックスを張り忘れていたw
それでもトータルで2〜3秒・・・やっぱ不思議だ・・・。
0167NAME IS NULL
2012/10/18(木) 16:00:20.14ID:???まさかパソコン詳しい先生が一人も居ない大学なの?
よくわからんが、多分統計情報が古いんだろ。
オラクルみたいなhintを埋め込むことができないのは不便だが、
例えば1000行INSした時点でanalyzeするとかしてみれば改善されるんじゃないか?
0168NAME IS NULL
2012/10/18(木) 18:46:19.58ID:???それならtruncate->copyでいいと思うわ。
何もdropする必要はないかと。
0169NAME IS NULL
2012/10/18(木) 22:54:25.72ID:???INSERT
if not inserted then UPDATE
INSERT
if not inserted then UPDATE
INSERT
if not inserted then UPDATE
...
みたいな感じでクライアントから数千行INSERT/UPDATEしようとしているんなら遅くて当然だよな。
0170NAME IS NULL
2012/10/18(木) 23:18:54.64ID:???そう。大学系。試薬系のデータベスなんですけど、(あまりいうと特定されるのでよしときますが)
前任者の残していったシステムで、この板のみんなが見たらあんまりなテーブル設計で腰を抜かすと思いますよ?
プライマリ以外にインデックスが付いていないというのもビックリ。
素人の自分ですらガンガン高速化できて楽しめましたよ?
式インデックスをつけたときは本気で感動されました。
>>168
明日、早速 truncate で試してみます。
>>169
まさにそんな感じでぶらうざ経由でphpから更新する使い方ですた。
あまりにも遅いので業を煮やしてこないだターミナル経由でアップするように作り変えたという次第です。
0171NAME IS NULL
2012/10/18(木) 23:21:11.10ID:???8.4って統計情報の更新、自動じゃないんでしたっけ?
勝手に最適化されているんだと思ってました。
調べてみます、ヒントをありがとうございます。
0172NAME IS NULL
2012/10/18(木) 23:27:31.18ID:???PK以外でINDEX付けないのは良くある。
というか、たかが数千行程度ならINDEX要らん。
INDEX付けると、それが効いてるSQLが速くなって感動するかもしれんが、
INSERTやUPDATEが遅くなって、全体でみると却って遅くなってる場合がある。
0173NAME IS NULL
2012/10/18(木) 23:40:56.52ID:???なるほど!勉強になります。案外とそういう配慮があったりして・・・。
0174NAME IS NULL
2012/10/19(金) 00:05:23.67ID:???規模的に余裕だと思う。
0175NAME IS NULL
2012/10/19(金) 06:35:36.65ID:???そりゃINS/UPDが遅くなるわな。。。
0176NAME IS NULL
2012/10/19(金) 11:09:05.06ID:???NFSマウントしたディレクトリに移動しようとしています。
こんなことして大丈夫でしょうか。本番環境ではないので、負荷は心配しなくていいですが、
DBに不整合が発生するようなことはたとえ開発環境といえど避けたいです。
0177NAME IS NULL
2012/10/19(金) 11:46:43.41ID:???>UPDATEして、できなければ INSERT するという書き方は
>なんとかすっきりできないものなのでしょうかねぇ。
>MERGEをずっと心待ちにしているのだけど。
9.1からこういうことができるようになったらしい。へえー
http://lets.postgresql.jp/documents/technical/9.1/1#syntax
> 例2 : MERGE 文はまだサポートされていませんが、UPDATE できなかったキーを持つ行のみ後から INSERT を行うと、
> 他DBの MERGE や REPLACE 文と同等の機能を実現できます。
0178NAME IS NULL
2012/10/19(金) 15:54:35.88ID:???良いよ。
バックアップ&リストアなんて基本的にファイルコピーだし。
0179NAME IS NULL
2012/10/19(金) 15:56:08.84ID:???結果的に呼出しが1回になったからその分速くなっただけで。
0180NAME IS NULL
2012/10/19(金) 19:55:44.50ID:???NFSのsyncオプションを有効すれば不整合は起きないかもしれないけど、
更新がとても遅くなるかもしれない。
0181NAME IS NULL
2012/10/22(月) 19:10:59.94ID:???こういうテーブルがあったとして、
create table example (
id serial primary key,
name varchar(255) not null,
created_at datetime not null default current_time
);
ここで、名前と日付(nameとdate(created_at))の組み合わせが一意になるように
ユニークキーを作ることはできますか。
dateカラムを作るのが簡単ではありますが、それを作らずに済む方法があれば教えてください。
0182NAME IS NULL
2012/10/22(月) 19:20:39.09ID:???0183NAME IS NULL
2012/10/22(月) 19:42:05.69ID:???CREATE UNIQUE INDEX X ON example (name,created_at);
では駄目なのかい?
0184NAME IS NULL
2012/10/22(月) 19:49:57.08ID:???CREATE UNIQUE INDEX X ON example (name,date(created_at));
とすればできる。
0185NAME IS NULL
2012/10/22(月) 20:11:47.91ID:???0186NAME IS NULL
2012/10/22(月) 20:22:16.56ID:???0187NAME IS NULL
2012/10/22(月) 20:22:50.35ID:???uniqueにするだけだから、date()する必要ないよ。
0188NAME IS NULL
2012/10/22(月) 20:39:57.29ID:???式インデックスでいいんじゃないかな。
0189NAME IS NULL
2012/10/23(火) 07:05:40.81ID:???むしろ同姓同名の人が登録した時に、それぞれを識別しようとして日付を足しただけに見える。
(なんで連番使わないんだってことになるけど、多分知らないんだろう)。
0190NAME IS NULL
2012/10/23(火) 07:33:52.11ID:???だね
0191NAME IS NULL
2012/10/23(火) 07:36:34.96ID:???人名かどうかなんてかいてないし、実際はユニークな型番かもしれない
まぁあれこれ推測して楽しむのを止めはしないけど
0192NAME IS NULL
2012/10/23(火) 10:18:05.21ID:???>CREATE UNIQUE INDEX X ON example (name,date(created_at));
おおっ、すばらしい!ありがとうございます。
どうせできないだろうと思ってたのに、できるんですね。きいてみるもんです。
>>188
>「時刻」ではなく、同じ「日付」に同じ名前の人がいないことを保証したいんだと思うよ。
はい、その通りです。同じ名前が1日に高々1件しか登録されないことを保証したかったので。
0193NAME IS NULL
2012/10/23(火) 11:04:57.45ID:???psqlコマンドが内部でperlを呼び出すことはありますか。
なおpsqlコマンドを使って copy (select ...) to stdout as csv を実行しています。
0194NAME IS NULL
2012/10/23(火) 11:57:07.21ID:???0195NAME IS NULL
2012/10/23(火) 18:31:21.31ID:???なんでdate型じゃなくてdatetime型使うのよ?
0196NAME IS NULL
2012/10/23(火) 18:32:53.05ID:???dateとtimeに分けておけばよかったかもしれないけどね。
0197NAME IS NULL
2012/10/23(火) 18:41:11.89ID:???ここでunique indexの作り方聞いてくるぐらいだしな。
0198NAME IS NULL
2012/10/23(火) 19:31:26.72ID:???>>181
> dateカラムを作るのが簡単ではありますが
0199NAME IS NULL
2012/10/23(火) 20:40:29.59ID:???dateカラムってのはdate型という意味?
0200NAME IS NULL
2012/10/29(月) 13:16:15.84ID:???誤ってデータを改変してしまうのを、万が一でも防ぐために。
0201NAME IS NULL
2012/10/29(月) 13:28:56.35ID:???psql で最初に SET default_transaction_read_only=on; するとか?
0202NAME IS NULL
2012/10/29(月) 14:41:58.89ID:???0203NAME IS NULL
2012/10/29(月) 15:07:35.69ID:???0204NAME IS NULL
2012/10/29(月) 15:57:59.66ID:???read-onlyなユーザを作る
0205NAME IS NULL
2012/10/29(月) 15:58:49.54ID:???serialが上がっていくのが気に食わない人もいるかもしれない
0206NAME IS NULL
2012/11/02(金) 16:57:02.96ID:???何がいけないのだろうか?
Mac mini: Core i7 2.3GHz クアッドコア
HDD: 5,400rpm 1TB
CentOS release 6.3 (Final)
Linux localhost 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
PostgreSQL: 8.4.13
$ pgbench -i test
$ pgbench -c 10 -t 1000 test
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 10
number of transactions per client: 1000
number of transactions actually processed: 10000/10000
tps = 84.380053 (including connections establishing)
tps = 84.399439 (excluding connections establishing)
0207NAME IS NULL
2012/11/02(金) 18:40:21.67ID:???0208NAME IS NULL
2012/11/02(金) 19:32:05.95ID:???律儀にdiskに書き込んでるとするならば、84.4tpsってのは妥当な線なんでは?
0209NAME IS NULL
2012/11/04(日) 21:16:06.80ID:???あまりアクセスされないデータを検索するSQLでexplain analyzeすると
INDEX SCANになってても初回のみ30秒ぐらいかかることがあります。
2回目以降は1秒以内に帰ってきます。これを最初から早くすることは可能ですか?
あるいはINDEXだけならshared_buffersに収まるサイズなので、INDEXだけでも
常時キャッシュされるようにすれば、早くなるのかな?とも思ったのですが、
考え方はあってますか?また、そのようなことは可能でしょうか。
postgresql9.1です。
0210NAME IS NULL
2012/11/04(日) 22:23:53.56ID:???あってると思うよ。
データを空読みすればいい。
0211NAME IS NULL
2012/11/04(日) 23:06:30.53ID:???データを空読みってcount(*)を取れってことでしょうか?
それだとテーブルデータがキャッシュされて、他のINDEXが
キャッシュから押し出されたりはしないのでしょうか?
0212NAME IS NULL
2012/11/04(日) 23:11:53.45ID:???INDEXのサイズは何100MB〜何TBぐらい?
数〜数十MB単位じゃないよね。
0213NAME IS NULL
2012/11/04(日) 23:14:55.63ID:???全テーブルのINDEXを合わせると3GBぐらいです。
メモリは16GB積んでてshared_buffersは4GBです。
0214NAME IS NULL
2012/11/04(日) 23:23:20.01ID:???0215NAME IS NULL
2012/11/04(日) 23:47:37.28ID:???全テーブル+INDEXがのるだけのshared_buffersが確保できるだけの
メモリを積むことができるのなら最初から質問なんかしていません。
INDEXのみをキャッシュする方法はないということでしょうか。
0216NAME IS NULL
2012/11/05(月) 00:37:44.19ID:???0217NAME IS NULL
2012/11/05(月) 05:39:19.32ID:VQaCCwqVご存知であれば教えてください。
0218NAME IS NULL
2012/11/05(月) 08:17:44.47ID:???近道はないよ。
0219206
2012/11/05(月) 11:41:48.75ID:???HDDは速くはないけど、それほど遅いとも思えないんです。
# bonnie++ -d /var/lib/pgsql/data/ -n 256:1024:1024:16 -u root
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
localhost 7472M 970 97 63074 5 29105 2 4534 90 93805 4 251.2 4
Latency 8409us 395ms 1243ms 34163us 79412us 336ms
Version 1.96 ------Sequential Create------ --------Random Create--------
localhost -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
256:1024:1024/16 10872 21 119910 54 40953 45 11077 22 2487 1 1091 1
Latency 1873ms 492ms 1037ms 1903ms 7695ms 10302ms
Macbook(Core2Duo 2.26GHz)上の仮想環境にインストールしたCentOSだと、tpsは500〜600程度、
さくらのVPS(安いやつ)で試しても、同じくtpsは500〜600程度だったので、ひょっとしたら1000超えるかもと
思っていたので、遅すぎて途方に暮れてます。
HDD環境では、どの程度のtpsが普通なんでしょうか。
0220206
2012/11/05(月) 11:42:43.10ID:???$ pgbench -S -c 100 -t 10000 test
starting vacuum...end.
transaction type: SELECT only
scaling factor: 1
query mode: simple
number of clients: 100
number of transactions per client: 10000
number of transactions actually processed: 1000000/1000000
tps = 33454.043328 (including connections establishing)
tps = 33727.065343 (excluding connections establishing)
0221NAME IS NULL
2012/11/05(月) 12:46:56.46ID:???>>208
0222206
2012/11/05(月) 13:42:57.11ID:???えっと、それは
while (true) {
fputs("abc", fp);
fflush(stdout);
}
が5400rpmのHDDだと、どうあがいても90回程度しかループできないということですか?
0223NAME IS NULL
2012/11/05(月) 14:17:48.60ID:???0224NAME IS NULL
2012/11/05(月) 18:57:06.60ID:???0225NAME IS NULL
2012/11/05(月) 23:00:18.12ID:???HDDのキャッシュが無効化されていてかつ、fflushじゃなくてfsyncならそうなるかも
0226NAME IS NULL
2012/11/05(月) 23:17:13.34ID:???ttp://www.postgresql.jp/document/9.1/html/runtime-config-wal.html
0227206
2012/11/06(火) 11:12:51.36ID:???今まで、なんとなくなんですが、HDD以外のハードのスペックが上がれば、それなりに更新性能も
上がるんだと思ってたんですが、HDDの性能で頭打ちになるんですね。
5,400rpm程度のHDDだと、最高でも5,400tpmしか出ないということか・・・。
0228NAME IS NULL
2012/11/06(火) 12:42:02.32ID:???0229NAME IS NULL
2012/11/07(水) 00:29:03.22ID:???dropdbコマンドを使って削除するとの事なんですが、
ではdropdbコマンドはどうやってDBを削除してるんでしょうか?
内部の動きが知りたいです
0230NAME IS NULL
2012/11/07(水) 00:53:57.84ID:???postgresかtemplate1
0232NAME IS NULL
2012/11/07(水) 11:59:51.35ID:???0233NAME IS NULL
2012/11/07(水) 16:40:41.77ID:???select cast( regexp_replace('123', '(.)(.)(.)*', '\\2') as int) as count
ERROR: 型integerの入力構文が無効です: "\2"
SQLステート:22P02
\\を\にすることでエラーを回避できました。
select cast( regexp_replace('123', '(.)(.)(.)*', '\2') as int) as count
プログラムでこのSQLを動かしているのですが、サーバの設定を変更しないでPostgreSQL8、PostgreSQL9.2両方に対応するには、
if文でいちいち分岐しなければならないのでしょうか?
0234NAME IS NULL
2012/11/07(水) 16:55:58.95ID:???http://www.postgresql.jp/document/9.2/html/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE
0235NAME IS NULL
2012/11/07(水) 19:39:35.88ID:???いや、、、大抵はカーネルキャッシュ、デバイスのキャッシュがそこをひろうから。。。
0236NAME IS NULL
2012/11/07(水) 21:32:02.99ID:???バッテリー内蔵のRAIDカード使ってるとかなら別だが。
0237NAME IS NULL
2012/11/07(水) 21:36:56.45ID:???0238NAME IS NULL
2012/11/07(水) 22:38:17.67ID:???何言ってんだハゲ
0239NAME IS NULL
2012/11/07(水) 22:38:26.31ID:???>>226
0240NAME IS NULL
2012/11/08(木) 20:39:45.85ID:???>書き込みをキャッシュしてしまうとcommitの意味がなくなるだろ。。。
commit ってディスクにデータが書かれることを意味しないぞ。
0241NAME IS NULL
2012/11/08(木) 21:23:35.34ID:???普通はディスクにLOGが書き込まれたということが重要なんだが、
同期レプリケーションなんかだとレプリカにデータ送っただけで良しとするのもありだな。
そもそもデータが壊れても気にしないよ、って使い方もあるだろしな。
どっちが普通なのかは議論になるかも知れないな。
0242NAME IS NULL
2012/11/08(木) 23:00:28.23ID:???話がずれてる
0243NAME IS NULL
2012/11/11(日) 11:49:52.66ID:???0244NAME IS NULL
2012/11/12(月) 22:57:25.03ID:???トランザクションAが、あるテーブルtable1にinsertします (updateではない)。
別のトランザクションBが、table2をupdateします。
そしてtable1とtable2は、どちらもcustomersテーブルへの外部参照をもっています。
このとき、以下のような「customersテーブルにshared lockがかかってデッドロックになった」というエラーが出るんですが、どういうことでしょうか。
DETAIL: Process 30798 waits for ShareLock on transaction 1779489; blocked by process 30802.
Process 30802 waits for ShareLock on transaction 1779490; blocked by process 30798.
HINT: See server log for query details.
CONTEXT: SQL statement "SELECT 1 FROM ONLY "public"."customers" x WHERE "id" OPERATOR(pg_catalog.=) $1 FOR SHARE OF x"
疑問点:
・トランザクションAでもBでもcustomersテーブルは更新されないのに、なぜshared lockが必要なのか?
・shared lockが必要だとして、(exclusive lockではない)shared lockだけでなぜデットロックが発生するのか?
・どう解決すればいいのか?あるいはどう深く調べればいいのか?
よろしくお願いします。
0245NAME IS NULL
2012/11/12(月) 23:43:45.22ID:???> HINT: See server log for query details.
0246NAME IS NULL
2012/11/13(火) 10:27:26.48ID:???サーバのログには、実行中のSQLが出ているだけでした。
つまり insert into table1 .... と update table2 set .... が表示されているだけで、
ほかに手がかりは載ってなかったので。
0247NAME IS NULL
2012/11/13(火) 16:37:40.22ID:???http://itpro.nikkeibp.co.jp/article/COLUMN/20050904/220557/?ST=oss&P=3
0248NAME IS NULL
2012/11/13(火) 21:57:56.13ID:???shared lock がかからなかった場合、どうなるか考えてみよう。
table1 へ insert しているデータは、当然 customers テーブルを外部参照している関係上、
customers テーブル上に「レコードがある」ことが必要。
仮に customers テーブルにロックをしない場合、
table1 insert → customers delete → table1 commit
って順序で処理が起きたら、table1 に、「対応する customers レコードがない」データが作ら
れてしまう可能性があるだろ?
従って table1 への insert トランザクションが完了するまでは、customers テーブルを更新
されてはまずい。故に排他ロックがかかる。
0249NAME IS NULL
2012/11/14(水) 00:02:41.77ID:???0250NAME IS NULL
2012/11/14(水) 00:20:28.65ID:???> 仮に customers テーブルにロックをしない場合、
テーブルロックする必要はないですよね。行ロックだけでいいはず。
> customers テーブルを更新されてはまずい。
テーブルの更新はいいのでは?該当行の更新がまずいだけで。
> 故に排他ロックがかかる。
あれ、shared lockって排他ロックのことなんでしょうか。
読み取り用のロックではないのですか?
0251NAME IS NULL
2012/11/14(水) 00:23:52.68ID:???ありがとうございます。そこを読む限り、排他ロックではなくshared lockだからデッドロックは起こらないはずなんですよね。
以下引用
> PostgreSQL 8.1では共有ロックによって問題を解決
>
> このような外部キーの問題は、共有行ロックを導入することによって解決できる。
> 共有ロックでは、共有ロックを発行するトランザクションはお互いに相手をブロックしないため、
> 外部キーをめぐってトランザクションがお互いにブロックして並列実行性を損なうこともないし、
> 外部キーが原因のデッドロックをひきおこす心配もなくなる。
結局、原因はわからずじまいか。
0252NAME IS NULL
2012/11/14(水) 04:11:24.02ID:???table1かtable2にcustomersを更新or削除するトリガーでも張ってるんじゃない?
0253NAME IS NULL
2012/11/14(水) 20:20:42.94ID:???0254NAME IS NULL
2012/11/14(水) 21:24:23.67ID:???0255NAME IS NULL
2012/11/16(金) 09:14:27.03ID:???0256NAME IS NULL
2012/11/19(月) 00:54:21.97ID:???ログにShareLockと書かれているのはデッドロック時のお決まりの文言。
実際に何のロックがかかっているかはpg_locks見ないと分からないよ
0257NAME IS NULL
2012/11/22(木) 20:47:19.28ID:???0258NAME IS NULL
2012/11/24(土) 06:22:39.07ID:???0259NAME IS NULL
2012/11/24(土) 23:22:07.15ID:???0260NAME IS NULL
2012/11/25(日) 01:54:56.41ID:???0261NAME IS NULL
2012/11/25(日) 09:49:21.50ID:???0262NAME IS NULL
2012/11/27(火) 14:42:11.58ID:???0263NAME IS NULL
2012/11/27(火) 15:17:35.84ID:???0264NAME IS NULL
2012/11/30(金) 17:57:53.06ID:???でApache,PHP等と連携したデータベース構築を試みています。
UTF-8エンコードとしてdb作成し、そこにテーブルを作り
INSERT文を複数列作成したUTF-8文字コードのtextファイルを \i コマンドで読み込ませると
以下の2種類のエラー羅列で埋まります。。
character with byte sequense 0xef 0xbb in encoding "SJIS" has no equivalent in encoding "UTF8"
invalid byte sequence for encoding "SJIS": 0x82 0x30
このテキストファイルをSJISに無理やり変換すれば問題無くINSERTされますし(当然化ける文字も有り)、
エラーを吐く行などをペーストしてコマンドプロンプトから直接実行してもうまく行きます(ただし表示させると一部化け有り)
UTF-8テキストのまま実行するにはどうしたらよろしいでしょうか・・・助言のほどよろしくお願いします
0265NAME IS NULL
2012/11/30(金) 20:49:46.55ID:???そもそもコマンドプロンプトじゃなくてGUIツールを使いなさい。
0266264
2012/11/30(金) 22:20:00.03ID:???取り敢えずCMDの文字コードはchcpで変更してみましたが結果は同じでした
まあ、これは入出力・表示文字コードの問題なのでファイル入出力とは関係ないとは思ってましたが(合ってるかな??
GUIツール・・・ということで最初に思い立ったのはpgAdminIIIについてるSQLクエリ実行ツール?でやってみたら上手く行きました!!
今までTeraTermでLinuxのDBサーバにアクセスしてCUIで弄ってたので目から鱗です。
他にもGUIツールってあるんでしょうか。
が、、しかしあまり原因がはっきり解ってない上に
pgAdminIII が多機能過ぎてついて行けてない自分がいます。。orz...
0267NAME IS NULL
2012/11/30(金) 23:35:32.21ID:???UTF8の日本語はまともに扱えなかったはず。
DBもファイルもプログラムもCUIでの操作も全部同じ文字コードで扱わないと駄目。
>他にもGUIツールってあるんでしょうか。
ちょっと上にも書いてるがフリーでメジャーなのはpgAdminIIIとphpPgAdmin、
商用でもよければNavicatが便利。ただしNavicat Premiumじゃなければ機能的に微妙
0268NAME IS NULL
2012/12/01(土) 00:33:57.86ID:???psqlの\iはlinuxで言えばcat ファイル | psql -cと同じこと
クライアントの文字コードに引きずられる
0269NAME IS NULL
2012/12/01(土) 06:48:18.80ID:???psqlでログインした後、\iの前に
set client_encoding to 'utf-8';
すればINSERTスクリプトは通るんでは。
その後SELECTしたら文字化けしそうだけど。
0270NAME IS NULL
2012/12/01(土) 16:26:32.67ID:???0271NAME IS NULL
2012/12/02(日) 11:16:21.37ID:???0272NAME IS NULL
2012/12/02(日) 13:59:51.45ID:???0273NAME IS NULL
2012/12/02(日) 14:13:08.07ID:???順序が重要なら、その結果を元の orderでソート
0274NAME IS NULL
2012/12/02(日) 15:15:40.15ID:???あざっす^^
reverseのreverseってパフォーマンス的にどうなんすかね
�@PostgreSQLに両方やらせる
�APostgreSQLに最初のreverseを、クライアントプログラムで更にreverse
どっちが速いですかね?
※接続は1つだけの個人専用システム
0275NAME IS NULL
2012/12/02(日) 15:29:32.31ID:???0276NAME IS NULL
2012/12/02(日) 15:59:22.92ID:???�@でいきます
ひょっとしたらよく判らん最適化されるかもしれないし
0277NAME IS NULL
2012/12/07(金) 00:59:42.04ID:???0278NAME IS NULL
2012/12/14(金) 01:23:44.44ID:yD0VPqJ9testテーブルはこんな感じのとき、
key ver value
--- --- -----
CPM 1.4 1000
CPM 1.2 500
OS2 5.0 2000
OS2 4.0 1600
WIN 3.1 50
WIN 95 200
WIN 98 2
--- --- -----
CREATE UNIQUE INDEX test_pkey ON test USING btree (key, ver);
以下の実行結果のように key ごとに、それらの ver が最大の value を選択するSQLを検討中です。
実行結果
key ver value
--- --- -----
CPM 1.4 1000
OS2 5.0 2000
WIN 98 2
--- --- -----
いまのところ2つ考えてみましたが、もっと速いSQLってありますか?
SQL1:Total runtime: 6.492 ms
SELECT key, ver, value FROM (SELECT key, ver, value, rank() OVER (PARTITION BY key ORDER BY ver DESC) AS rnk FROM test) AS temp WHERE rnk=1;
SQL2:Total runtime: 3.539 ms
SELECT * FROM test AS temp WHERE NOT EXISTS ( SELECT * FROM test WHERE key=temp.key AND ver>temp.ver );
ちなみに、テーブルは key が20種類くらい、keyごとにvalueが20個ぐらいです。
0279NAME IS NULL
2012/12/14(金) 07:26:39.54ID:???特別PostgreSQL用でなくても大丈夫だよ。
0280NAME IS NULL
2012/12/14(金) 10:57:46.23ID:???http://www.postgresql.org/docs/9.2/static/release-9-2-2.html
0281NAME IS NULL
2012/12/14(金) 21:10:37.40ID:???SQL質疑応答スレ 13問目
http://toro.2ch.net/test/read.cgi/db/1343899481/4
これと比較してみたらどうでしょ
0282NAME IS NULL
2012/12/14(金) 21:43:06.34ID:???0283278
2012/12/15(土) 10:28:22.52ID:???同じ条件で試してみました。
Total runtime: 3.204 ms
おぉ、僅差かもしれないけど、これが一番速いですね。ありがとう。
>>279
考えてみたらSQLの本なんて1度も読んだことなかった。
自分には一読が向いているような気がしてきたよ。どうもです。
>>282
まさに、それだね。
0284NAME IS NULL
2012/12/19(水) 22:48:14.21ID:/zfe6YaMPostgreSQLの同期レプリケーションで、マスタサーバがダウンした時に、
実行されているトランザクションがスレーブでコミットされたか、
アボートされたかを確認する方法ってありますか?
ユーザにはコミット応答がかえって来ませんでしたが、スレーブを昇格させて
新マスタにしたところ、コミットされデータが更新されている事象が発生しています。。。
よろしくお願います。
0285NAME IS NULL
2012/12/19(水) 23:06:59.58ID:???0286NAME IS NULL
2012/12/20(木) 01:19:35.45ID:???PostgreSQL 8.4 です。
0287NAME IS NULL
2012/12/20(木) 11:19:16.27ID:???0288NAME IS NULL
2012/12/20(木) 14:18:18.70ID:???bytea だと簡単なのに、そうすると & とか | が使えない・・・。
0289NAME IS NULL
2012/12/22(土) 04:03:32.30ID:???英語の質問です
〉Fix the syslogger process to not fail when log_rotation_age exceeds 2^31 milliseconds (about 25 days)
not to じゃないの?
0290NAME IS NULL
2012/12/23(日) 13:10:27.64ID:???0291NAME IS NULL
2012/12/23(日) 14:19:18.72ID:???http://www.sraoss.co.jp/PostgreSQL/Manual/document/9.2/html/datatype-datetime.html#AEN5786
0292NAME IS NULL
2012/12/23(日) 22:13:17.05ID:???まさにそれでした。使えることを確認しました。ありがとうございます。
未定義をnull にしたくなかったので助かります。
0293NAME IS NULL
2012/12/24(月) 06:14:37.49ID:???使い道は無さそうだから別に無くてもかまわないが。
0294NAME IS NULL
2012/12/24(月) 06:17:01.96ID:???だが、その方法を使うと、実際の日付がその値を超えたところで矛盾するから
気をつけたほうがいいな。だいたい2943世紀ごろだが。
0295NAME IS NULL
2012/12/24(月) 10:45:27.97ID:???0296NAME IS NULL
2012/12/24(月) 12:03:55.54ID:???PostgreSQLのテーブル単位のレプリケートが必要になっていろいろと調べているところですが、
slony-Iは、多対一の非同期レプリケート(のようなこと)は設定で出来るか知っている方おります?
具体的には複数のサーバーにレプリケートしたいテーブルがあって、
それらはサーバー同士の間でもユニークなレコードを持っていて、
これらを1つのサーバーに UNION みたいに集めたいのです。
難しいようでしたら自作しようと考えているのですが
slonyで可能であれば楽できるなと思っているところです。
0297NAME IS NULL
2012/12/27(木) 15:16:13.25ID:???"fix * to not"でググると、良くある言い回しみたいだよ。
0298NAME IS NULL
2012/12/27(木) 15:37:03.11ID:???0299NAME IS NULL
2012/12/27(木) 15:48:24.91ID:???0300NAME IS NULL
2012/12/27(木) 15:52:14.45ID:???0301NAME IS NULL
2012/12/27(木) 18:01:33.83ID:???だれか検証したひとがいたら教えて。
0302NAME IS NULL
2012/12/28(金) 00:00:24.03ID:???コンパイル時に、PCに載ってるCPUに応じたコードを生成させたりできるから。
0303NAME IS NULL
2012/12/28(金) 17:04:37.34ID:???速くなる可能性があるのは分かるんですが、実際速くなった人はいるかなと思って。
CentOSだとrpmパッケージがi386でコンパイルしてるから、いまどきのCPUならコンパイルし直したほうが速くなるけど
Ubuntuはdebパッケージがi686でコンパイルされてるようだから、変わらないかもしれない。
でもPostgreSQLのコンパイルはめんどくさいので、だれか試した人がいたら教えてください。
0304NAME IS NULL
2012/12/28(金) 19:36:17.64ID:???めんどくさいって、ふつーに configure;make;make install だけだろ
0305NAME IS NULL
2012/12/29(土) 00:12:47.99ID:???0306NAME IS NULL
2012/12/30(日) 01:44:22.43ID:???0307NAME IS NULL
2012/12/31(月) 18:53:59.09ID:vZpLnkOOhttp://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1226114724/53
¥¥¥¥¥¥¥『万有サロン』書き込み大賞・総額100万円¥¥¥¥¥¥¥¥¥¥¥¥
この掲示板に優秀な書き込みをして、総額100万円の賞金をゲットしよう!(*^^)v
万有サロン
http://jbbs.livedoor.jp/study/3729/
書き込み大賞の詳細
http://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1069922074/78-
書き込み大賞の詳細(資料倉庫内)
http://www2.tba.t-com.ne.jp/a-z/omake/banyu/taisho.htm
また、あらゆる疑問に関する質問を、携帯電話やメールでも受け付けています。
電話番号 080-4437-4187
メール [email protected]
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
0308NAME IS NULL
2013/01/06(日) 02:51:40.46ID:???クライアントが『今はこれだけしか受け取りきれないよ』って時はどうするの?
データのポインタみたいなのをコネクション毎に保持しておくて
『ここまで送った』しおり代わりとするの?
0309NAME IS NULL
2013/01/06(日) 03:08:34.28ID:???0310NAME IS NULL
2013/01/06(日) 09:31:42.51ID:???TCPの確認応答とか、ウィンドウ制御の話。
0311NAME IS NULL
2013/01/06(日) 14:05:43.74ID:???最寄りのノードにデータ送る作業するだけで
後はOSI参照モデルを実装した外部システムが巧いことやってくれる算段なんですね
0312NAME IS NULL
2013/01/06(日) 14:15:26.01ID:???ミドルで全部受け取り済みな気がするなあ
0313NAME IS NULL
2013/01/06(日) 16:17:39.96ID:PFtSFSQD↓
告訴状を【検察の直告班】に郵便局の内容証明付で送付(疎明資料・証拠にはICレコーダー、スマホによる録音が適しています)
↓
審査 → 不受理 → 告訴状再提出または刑法 第193条で訴えを起こす
↓
受理 → 告訴事実を認め示談交渉(↓) →示談成立 → 法廷相場50〜100万円の示談金 ※示談拒否が良い
↓ ↓
事案化← 前科あり ←示談不成立(↓)→ 示談外交渉→ 犯罪者の年収半額×最大懲役年数の和解金支払い※推奨
↓ ↓
↓ 起訴 →公判 → 罰金刑=前科(起訴事実を認めてるため)→追討ち民事訴訟
↓
審査 → 起訴(強制捜査・留置場)→ 公判 → 懲役刑などの厳罰(反省が認められないため)→追討ち民事訴訟
↓
不起訴、起訴猶予
↓
検察審査会法第30条(検察審査会へ申し立て)→ 起訴 → 起訴後は同上
刑法 第193条(公務員職権濫用)で検察事務官を刑事告訴 → 同上
◎告訴→告訴受理→示談交渉→厳罰を求め示談不成立→示談外交渉→和解金支払い・和解契約(公正証書・即決和解で秘密保持契約)
◎偽装請負・出向・違法派遣事件では派遣・出向先両方の代表者、役員、現場責任者に告訴できます。
前科がついた犯罪者が法人の代表であれば公的な入札からの排除、取引先や顧客との契約解除など社会的制裁・批判に晒されることから辞職または解任が妥当、役員・社員であれば懲戒を想定。
◎事業者内部の加害関係者による刑事告発(刑事訴訟法239条1項)も可能です。
加害者本人、管理間接部門の社員が刑事告発に踏み切る場合も和解金による解決が妥当です。
注意:告訴が受理されない理由
●3年間(※)の時効が過ぎたもの ※違法派遣
●同一事実について過去に告訴取消しがあったもの
●関連する民事訴訟を有利に導く目的の場合
●証拠が希薄なもの ※被害者が契約時に違法派遣・偽装請負・多重派遣と知っていても刑事告訴は有効です。
0314NAME IS NULL
2013/01/07(月) 07:50:49.15ID:???外しているかもしれないが、
ORDER BYして LIMIT で クライアントがほしい分だけSELECT するという話?
テーブルによっては漏らさずとることは出来ないけど。
0315NAME IS NULL
2013/01/07(月) 15:47:46.90ID:???膨大なデータを、クライアントが遅延評価で受け取りつつ
クライアント側で専門の重い処理をしていくとき
0316NAME IS NULL
2013/01/07(月) 16:44:48.89ID:???0317NAME IS NULL
2013/01/07(月) 17:52:04.82ID:???0318NAME IS NULL
2013/01/08(火) 11:52:03.98ID:5ntVS72y被告訴人は、以下に該当すると考えるので、被告訴人の厳重な処罰を求めるため告訴します。
職務経歴書を提示した事前面接を実施 または 偽装請負 または 偽装出向
労働者派遣法第26条(契約の内容等)、職業安定法第44条(労働者供給)に違反
多重派遣・多重出向
労働基準法第6条(中間搾取の禁止)に違反
疎明資料
事前面接日時、場所、出席者、資料のコピー、音声記録
就業場所・就業期間・就業時間
指揮命令
指示を誰が行っているかの記録、音声記録
仕事で使う道具や、資材の負担(所有)のあり方
業務で使用しているパソコン・備品などの所有者
契約書
請負、雇用契約書、出向指示など書面のコピー
刑事告訴ガイダンス
★痴漢も民事でなく刑事事案ですが、裁判所が和解金を被害者に支払わせて解決するのが絶対的過半数です。和解で解決しない事案、つまり公訴までいって判例となる事例を探すほうが難しいことでしょう。
★録音は一方の当事者が取る限り合法です。※加害者に録音の同意を求める必要はありません。
★告訴状を検察に提出しても受理されなければ加害者側には知られることはありません。不受理の場合は何事も起きてないように粛々と振る舞ってください。
★告訴を取り下げるとき検察に提出した資料は全て返却されます。また検察があなたが提出した証拠をあなたの許可なく裁判の証拠として使用はできません。告訴を取り下げたのちの録音資料には当事者の立場が失われるため証拠能力はありません。
★和解時に告訴した事実は秘匿事項となります。犯罪者が秘密保持契約に違反した場合の損害賠償金は「即決和解」か「公正証書」で最低5000万円〜にしましょう。支払いを拒否すれば強制執行手続きを(裁判不要)してください。
★派遣会社や事業会社が同業者に貴方の情報をリークしたなら同業者(又は競合他社)に弱みを握られることになります。
余程信用のおける相手でなければ、リークはできないでしょう。信頼のおける方にしても、その方の口が軽ければ、いずれ事実は分かります。
★リークの情報を得た事業者のなかには、リークの事実を貴方に教えてくれる方がいるかもしれません。その際は損害賠償金で得たお金の3割程度を謝礼金として渡してください。
0319NAME IS NULL
2013/01/09(水) 08:16:56.38ID:4HXcyysT違法派遣(偽装請負・多重派遣・偽装出向・事前面接等)についての刑事罰
【告訴権者=業務委託、準委任、共同受注、業務請負契約および特定派遣(契約・正規)、一般派遣、正規社員】
�@職業安定法第44条の労働者供給事業の禁止規定に違反(1年以下の懲役または20万円以下の罰金)
■偽装請負・多重派遣・偽装出向・多重出向
■事前面接(顔合わせ・面談・職場見学等)と履歴書・職務経歴書・スキルシート等提出による労働者の特定(※)
(音声録音で立証可能)
�A労働基準法第6条(中間搾取の禁止) (1年以下の懲役又は50万円以下の罰金)
■多重派遣・多重出向
※違法派遣(派遣労働者の特定)→派遣法で認められた派遣労働者ではない→労働者供給事業→職業安定法44条違反というの
が前提となる法解釈となります。派遣法における罰則が軽微なのは法律の不備や労働者軽視などが原因ではありません。
違法派遣は全て職業安定法44条で裁くことが可能なため、刑罰の重複を避けるために派遣法には軽微な罰則(主に裁量行政による)しかないのです。
使用者に有利な民事訴訟や労働関係諸局への通報等の対極にあるのが書面(告訴状)による刑事告訴(※告訴先は検察の直告班)です。
労働関係諸局への通報・斡旋による軽微な「適正化」や監督・指導に対して、法律に定められた刑事罰を問うことになり、
違法派遣業者にとって有罪は考えられる限り最大の処罰となります。同時に刑事罰を受けた
担当者が取引先に与える悪印象を考慮すれば、通常会社側は告訴が受理された時点で告訴取り下げに
動くのが妥当でしょう。懲役、前科がつく刑罰が下される可能性から、告訴取り下げの和解金は高額となることが多いのです。
告訴の流れとしては、
刑事告訴⇒告訴受理⇒告訴取下げ要請⇒取下げ和解金入金⇒告訴取下げ
となります。告訴の懲役刑適応は犯罪者個人に対してのみですので、告訴する対象は
派遣先・派遣元 社長
派遣先・派遣元 責任者・管理役員・取締役
派遣先・派遣元 人事管理担当者・人事管理役員・取締役
が妥当です。刑事告訴取り下げの和解金額は犯罪者個人と交渉するとよいでしょう。(告訴状は人数分提出する必要あり)
0320NAME IS NULL
2013/01/12(土) 13:36:06.00ID:???あるいはexplainで分かるとして、explainの出力のどれを見ればいいですか。
10個くらいjoinしているけども、条件で絞ってからjoinすれば (レコード数が
少ないので) 大した時間がかからないだろうと思われるSQLがあります。
しかし計測してみるとそれなりの実行時間がかかっていました。joinを外したところ、大幅に高速化できました。
なので、もしかしたら内部では「joinしてから条件で絞っている」のではないかと
疑っています。それを調べたいです。
0321NAME IS NULL
2013/01/12(土) 13:46:02.17ID:???理解力・想像力が乏しいのであればpgadminのグラフィカルな奴でも使えば。
0322NAME IS NULL
2013/01/12(土) 18:10:15.12ID:???joinのために使われたアルゴリズムによる。
問い合わせ計画の読み方を一通り理解すればわかると思う。
http://www.postgresql.jp/document/9.2/html/using-explain.html
0323NAME IS NULL
2013/01/13(日) 08:47:41.37ID:???ありがとうございます。
explainで調べたところ、limitより先にjoinされてました。
これだと相当な量のレコードがjoinされてしまい、遅くなって当然でした。
そこで今度は、joinより先にlimitで絞り込む方法について教えてください。
手元で試したところ、副問い合わせを使って先にlimitで絞り込み、
その結果を使って外側でjoinすると、確かに速度は改善されました。
しかし副問い合わせを使うよう変更したSQLは、カラム数が多いこともあって
内側と外側のselect文で重複したカラム名がたくさんでてしまい、
メンテナンス性の悪いSQLになってしまいました。
できればもとの素直なSQLのまま、joinのタイミングだけlimitよりあとにするよう
変更したいです。
そのようなことはPostgreSQL (9.1) でできますか?
0324NAME IS NULL
2013/01/13(日) 08:49:24.84ID:???やり方は自分で考えろ。
0325NAME IS NULL
2013/01/13(日) 09:27:23.04ID:???ワイルドカード"*"を使えばいいんじゃないかな。
0326NAME IS NULL
2013/01/13(日) 11:56:46.89ID:???こういう負け惜しみ回答がつくということは、joinのタイミングを指定することがPostgreSQLではできないということですね。
>>325
いえ、ワイルドカードは使えません。たとえば:
select x.a, x.b bar.name, baz.name
from (select a, b, bar_id, baz_id from maintbl where a>=:var1 and b<=:var2) as x
join bartbl on x.bar_id = bartbl.id
join baztbl on x.baz_id = baztbl.id
ここでワイルドカードを使うと、内側のSQLでのみ必要なカラムが外側にも出てきてしまうので、だめです。
select x.*, bar.name, baz.name
from (select a, b, bar_id, baz_id from maintbl where a>=:var1 and b<=:var2) as x
join bartbl on x.bar_id = bartbl.id
join baztbl on x.baz_id = baztbl.id
0327NAME IS NULL
2013/01/13(日) 12:52:23.28ID:???それで、limitをどこに書くって言ってるわけ?
0328NAME IS NULL
2013/01/13(日) 13:15:47.98ID:???「joinのタイミングだけlimitよりあとにする」なんてできる DBMS はないと思うが…
0329NAME IS NULL
2013/01/13(日) 14:09:07.33ID:???説明不足でしたので、サンプルのSQLで説明します。
-- もとのSQLは、joinしてからlimitで絞るので遅かった
select main.id, main.value, main.foo, main.bar, main.baz,
aaa.name, bbb.name, ccc.name, ddd.name, eee.name
from main
join aaa on main.aaa_id = aaa.id
join bbb on main.bbb_id = bbb.id
join ccc on main.ccc_id = ccc.id
join ddd on main.ddd_id = ddd.id
join eee on main.eee_id = eee.id
where main.value >= :value_from
and main.value <= :value_to
order by main.value
limit 10
offset 0
-- これを、limitで絞ってからjoinするように変更すると速くなった
-- しかしselectで指定するカラム名に重複が多く、メンテしにくくなった
select tmp.id, tmp.value, tmp.foo, tmp.bar, tmp.baz,
aaa.name, bbb.name, ccc.name, ddd.name, eee.name
from (
select main.id, main.value, main.foo, main.bar, main.baz,
main.aaa_id, main.bbb_id, main.ccc_id, main.ddd_id, main.eee_id
from main
where main.value >= :value_from
and main.value <= :value_to
order by main.value
limit 10
offset 0
) as tmp
join aaa on tmp.aaa_id = aaa.id
join bbb on tmp.bbb_id = bbb.id
join ccc on tmp.ccc_id = ccc.id
join ddd on tmp.ddd_id = ddd.id
join eee on tmp.eee_id = eee.id
0330NAME IS NULL
2013/01/13(日) 14:12:48.96ID:???>そもそも limit で絞り込んで join するのと、join して limit するんじゃ結果が違うことがある
それはその通りなのですが、結果が同じ場合もあるわけで、その場合は人間が判断してjoinのタイミングを指定できるようにしてくれたほうがうれしいです。
0331NAME IS NULL
2013/01/13(日) 14:15:12.31ID:???最終結果以外でlimitが入るのは何かがおかしい。
0332NAME IS NULL
2013/01/13(日) 14:39:33.51ID:???>limit以外に絞り込む手段は無いの?
where句でも絞ってますよ。
ただwhereで絞っても数百〜数千件くらいまでしか絞れないです。
order+limitでは10件とか20件に絞りこみます。
>最終結果以外でlimitが入るのは何かがおかしい。
そうなんですか?
まあ別に「最終結果以外でlimitを使いたい」というわけではなく、「可能な場合はlimitを先に実行してからjoinを行う」ことをPostgreSQLが自動的にやってくれるくらい賢ければそれでいいです。
今はやってくれないので、仕方なく人間が指定するしかなくて、その方法を質問しています。
0333NAME IS NULL
2013/01/13(日) 14:52:44.54ID:???>>329 のクエリが両方常に同じ結果になるというのなら、mainとaaa〜eeeまではすべてn対1対応になっているのだろうから、
left joinの外部結合に書きなおせばいい。
0334NAME IS NULL
2013/01/13(日) 15:02:18.50ID:???> ここでワイルドカードを使うと、内側のSQLでのみ必要なカラムが外側にも出てきてしまうので、だめです。
俺は >>325 じゃないから、>>325 の本心はわからんが、内側のこと言ってるんじゃないのか
select x.a, x.b bar.name, baz.name
from (select * from maintbl where a>=:var1 and b<=:var2) as x
join bartbl on x.bar_id = bartbl.id
join baztbl on x.baz_id = baztbl.id
0335NAME IS NULL
2013/01/13(日) 15:27:51.87ID:???explainの先頭の表がmainでなかったり、nested loop joinじゃなくて
hash joinが出てきたりしたら、統計がとられていないかjoinするテーブルの
idにindexが張られていないことが思いつくが。
あと、joinするテーブル数が12以上だったらgeqoで最適化がはしょられているとか。
0336NAME IS NULL
2013/01/13(日) 18:15:06.71ID:???329では「order by main.value」と書いてますが、実際にはここがちょっと複雑な計算式になってます。
そのせいでプランナがうまく効いてくれないのでしょうか。
また副問い合わせにする前のSQLだと、explainの先頭は Limit になってます。
hash joinは出てこずNested LoopとIndex Scanがばかりです。
joinするテーブル数は12まではいかないですし、どれもidはprimary key (sequence) なのでindexは作成されてます。
0337NAME IS NULL
2013/01/14(月) 10:23:48.76ID:???0338NAME IS NULL
2013/01/17(木) 19:16:36.78ID:3WZzA8BLpostgres 9.2
の環境でログのローテーションが機能しないんですが
同様の症状の方いませんか?
ファイルサイズ指定でローテーションしようとしてます
設定は何度も確認しました
win7 postgres8.4では動いてて
同じ設定なのですが
0339NAME IS NULL
2013/01/17(木) 19:19:55.28ID:???基本的な問題の切り分けでもやってみたら?
OSかPostgreSQLのバージョンをどちらか合せてやってみてどうなるか
0340NAME IS NULL
2013/01/17(木) 19:49:16.56ID:3WZzA8BLpostgres9.1ではローテーションが機能しました。
9.2のバグ?
9.1に戻すか、次を待つか考えます
とりあえず報告まで
0341NAME IS NULL
2013/01/17(木) 20:04:12.76ID:EwS78HY0人事原則
1 現行法では、社員が仕事を怠けたり、能力不足、就業規則違反、目標を達成できなくても解雇をしたり叱責することは違法です。どんな駄目社員、嘘つき社員、怠け者も定年まで解雇が違法なのが現行の正社員制度です。
2 パワハラは社風にあわない社員、成績の振るわない社員を自主退職に追い込む言わば人事的措置として用いられることが多い。
※違法な解雇の和解金相場は、労働審判で3ヶ月、通常裁判で1年以上の報酬、さらに社員が和解を拒めば復職が可能です。弁護士への着手金は12〜15万円、和解拒否なら20〜50万円程度。
人事部・ホットライン・御用組合へ直訴
メリット: 一時的緩和や人事異動
デメリット: 役員へ情報筒抜け、危険分子の烙印(情報漏洩がホットライン直訴者に多いのは人事部の常識)、パワハラ放置で自主退職に追い込まれる
民事訴訟・調停・労働審判
メリット: 損害賠償
デメリット: 裁判費用、解雇措置、民事不介入で刑事事案化を阻止、長期係争、パワハラ上司の継続雇用
刑事告訴
メリット: 1パワハラ上司の解雇・懲戒、または2多額の和解金、1と2どちらでも被害者の雇用は維持
デメリット: 人事異動(出世コースから外れる)
◎録音は一方の当事者が取る限り合法です。※加害者に録音の同意を求める必要はありません。
◎告訴受理後の和解金は加害者の資産・収入に応じて変えてください。犯罪者の昨年の年収の半額程度×最大懲役年数が妥当です。
◎パワハラの被害についての告訴は1侮辱罪2脅迫罪3強要罪4威力業務妨害罪5傷害罪の順序で行ってください。警察・検察の協力(犯罪者の自宅・職場の強制捜査、留置所勾留)により罪の立証が楽になります。
◎刑事告訴した社員を解雇したり処遇面で著しい差別を行うことはないでしょうが、出世や管理職以上の昇進の可能性はあきらめるべきでしょう。
◎刑事告訴は民事訴訟と違って裁判による被害者への2次被害にありません。検察庁が被害者に代わって訴えをおこすので、無料で、時間と手間も告訴状をかくことと音声録音を残すだけです。
◎和解契約(公正証書・即決和解)では告訴した事実は秘匿事項となります。犯罪者が秘密保持契約を違反した場合の損害賠償金は、最低5000万円〜にしましょう。
0342673
2013/01/18(金) 16:00:00.26ID:???外部に対してもリッスンしています。
local all all password
host all all 127.0.0.1/32 password
あと、postgresql.confのlisten_addressesはコメントアウトしています。
ここ以外に変更しなければならない場所はあるのでしょうか?
宜しくお願いします。
0343342
2013/01/18(金) 16:00:58.58ID:???0344NAME IS NULL
2013/01/18(金) 17:43:44.93ID:???0345673
2013/01/18(金) 17:58:18.27ID:???postgresql.confは未設定で、
外部からnmapで見たら開いていて、更にTELNETでもつながる状態です。
0346NAME IS NULL
2013/01/18(金) 18:04:31.85ID:???何言ってるのかわかんない。
grep listen_address /path/to/postgresql.con
と
netstat -a | grep postgres
の結果を貼って。
0347NAME IS NULL
2013/01/18(金) 18:08:07.46ID:???0348673
2013/01/18(金) 18:12:00.19ID:???以下のようになりました。
[grep listen_address postgresql.conf]
#listen_addresses = 'localhost' # what IP address(es) to listen on;
[netstat -a | grep postgres]
tcp 0 0 *:postgresql *:* LISTEN
tcp 0 0 localhost.localdo:35514 localhost.lo:postgresql TIME_WAIT
tcp 0 0 localhost.localdo:35519 localhost.lo:postgresql TIME_WAIT
tcp 0 0 localhost.localdo:35517 localhost.lo:postgresql TIME_WAIT
tcp 0 0 localhost.localdo:35516 localhost.lo:postgresql TIME_WAIT
tcp 0 0 localhost.localdo:35512 localhost.lo:postgresql TIME_WAIT
tcp 0 0 localhost.localdo:35513 localhost.lo:postgresql TIME_WAIT
tcp6 0 0 [::]:postgresql [::]:* LISTEN
宜しくお願いします。
0350NAME IS NULL
2013/01/18(金) 18:21:49.50ID:???確かに、postgresql.confでコメントアウトしていて、*でlistenしてるな。
うーん、わからんわ。ごめん。
PostgreSQLを複数インストールしていて、編集したpostgresql.confが今起動しているサーバのものじゃ
ないのかなぁ。
0351NAME IS NULL
2013/01/18(金) 18:25:36.72ID:???> すいません。pg_hdaを以下のように設定しているのですが、
> 外部に対してもリッスンしています。
で、どうしたの? って話なんだけど。何を困ってるのか分からん。
クライアントから接続できないとかなら、各種ログ出せば?
0352NAME IS NULL
2013/01/18(金) 18:28:00.00ID:???localhostからのconnectだけを受け付けたいのだが、それができないというのが困ってることだと。
もちろん、Firewallで制限したり、pg_hba.confで制限したりはできるけど、localhostだけでlistenできた方がいいでしょ。
0353342
2013/01/18(金) 18:28:08.04ID:???> PostgreSQLを複数インストールしていて、編集したpostgresql.confが今起動しているサーバのものじゃないのかなぁ。
念の為確認してみます。
>> 351
ローカルからのみの接続にしたいのです。
0354NAME IS NULL
2013/01/18(金) 18:29:34.56ID:???全IPアドレスからのconnectを受け付けることしかできないんじゃ困るでしょ。
0356NAME IS NULL
2013/01/18(金) 18:34:26.63ID:???pg_hda.confに書いてあるのは >>342 だけで後は全部コメント行なの?
postgresのサービスを再起動して設定を有効にした?
外部からpostgresにアクセスした状態で
netstat -a | grep postgres
とすると結果はどうなる?
0357NAME IS NULL
2013/01/18(金) 18:43:06.32ID:???ひょっとしてWebアプリとかで内部経由でpostgresにアクセスしようとしてる?
postgresのpg_hda.confの設定は認証の許可を設定できるけど、ポートを閉じたりできないし、telnetのアクセスにも関係ないよ。
0358NAME IS NULL
2013/01/18(金) 18:44:27.48ID:???起動オプションでパラメータを上書きしてるんじゃね?
0359342
2013/01/18(金) 18:53:53.15ID:???それぞれ確認してみますので、少し待って下さい。
0360NAME IS NULL
2013/01/18(金) 20:52:21.73ID:???0361NAME IS NULL
2013/01/18(金) 21:09:41.96ID:???0362NAME IS NULL
2013/01/18(金) 21:10:47.37ID:???すみません
0363NAME IS NULL
2013/01/18(金) 22:55:38.17ID:???0364NAME IS NULL
2013/01/19(土) 03:26:05.97ID:???0365NAME IS NULL
2013/01/19(土) 13:26:50.72ID:???SELECT 1 FROM <table_name> WHERE <条件>
で良いのでしょうか?
0366NAME IS NULL
2013/01/19(土) 15:56:51.66ID:???SELECT 1
じゃ常に1が返るだろう。
SELECT COUNT(1) > 0 FROM ・・・
とか?
0367NAME IS NULL
2013/01/19(土) 16:00:24.38ID:???0368365
2013/01/19(土) 16:20:51.92ID:???365の方法が最速な気がしないので質問する次第です。
言葉が足りず、すみません。
0369NAME IS NULL
2013/01/19(土) 16:54:10.47ID:???0370NAME IS NULL
2013/01/19(土) 17:05:30.79ID:???0372NAME IS NULL
2013/01/20(日) 09:51:14.88ID:???exists はlimitあわせればなんとか
0373NAME IS NULL
2013/01/21(月) 22:03:40.94ID:???postgresql.conf の listen_address をコメントアウトしてるみたいだけど
逆にコメント外して listen_addresses = 'localhost' にしたらどうなるの?
それでも netstat が変化しなかったら、読まれてないか上書きされてるかのどちらか
localhost 以外にも自分の普通のIPつけるとかしてみたらいいんじゃないかな
あと netstat には -n つけるのがオススメ
0374NAME IS NULL
2013/01/22(火) 16:58:15.13ID:???0375NAME IS NULL
2013/01/22(火) 18:40:50.69ID:???>>356はその辺も解決できる提案だとおもうけど、結果はられてないし結論は不明だけど。
0376NAME IS NULL
2013/01/27(日) 00:41:09.08ID:wayacMrf実行中のトランザクションの最も古いxidの値が、
行のxmaxより大きい場合にVACUUMしてよい行と判断していると考えてよいですか?
0377NAME IS NULL
2013/01/27(日) 00:44:44.45ID:wayacMrf行の可視性はどのように保証しているのでしょうか?
スナップショットを取得して判断している?マニュアルを読んでも、スナップショットについて理解できなかったので、可能であればスナップショットについて教えてください。
0378NAME IS NULL
2013/01/27(日) 16:54:37.24ID:???0379NAME IS NULL
2013/01/27(日) 18:44:34.73ID:???0380NAME IS NULL
2013/01/30(水) 15:05:04.04ID:???確実に最新の値を読む必要があるならばマスターを読みにゆくしかないのでは?
0381NAME IS NULL
2013/01/31(木) 02:44:30.11ID:???たとえば
select created_at from exampletable where id = 1;
を実行したら
2013-01-01 12:34:56.389940
と表示されます。
これを
2013-01-01 12:34:56
と表示させたいです。
0382NAME IS NULL
2013/01/31(木) 08:34:43.72ID:???少数以下一位で四捨五入とかしたいならもうちょっとややこしいだろうけど。
0383NAME IS NULL
2013/01/31(木) 09:56:34.74ID:???to_char(created_at, 'YYYY-MM-DD HH24:MI:SS') でいいんでない?
0384NAME IS NULL
2013/01/31(木) 10:18:02.79ID:???元からテーブル作成時にそうしてしまう手もあるけど。
SELECT NOW()::TIMESTAMP(0);
とか
CREATE table (t TIMESTAMP(0),・・・・
とかね
0385NAME IS NULL
2013/01/31(木) 10:20:10.63ID:???CREATE TABLE table名・・ね
0386NAME IS NULL
2013/01/31(木) 15:03:36.36ID:???説明がたりませんでした。
いちいちキャストとか変換とかせずに、一括して秒未満を切り捨てて表示するような方法はないでしょうか。
>>384
テーブルスキーマでそのような指定ができるんですね。なるほど。
うーん、スキーマを変更する権限が自分にあればよかったんですけど。
0387NAME IS NULL
2013/01/31(木) 15:16:36.55ID:???0388NAME IS NULL
2013/01/31(木) 15:19:50.44ID:???あれもできない、これもできないって後から言うくらいなら
どこまでできるのか先に提示してよ。
0389NAME IS NULL
2013/01/31(木) 15:26:53.99ID:???一発で今のデータの小数点以下を消してしまえばいいし
0390NAME IS NULL
2013/02/14(木) 17:09:45.13ID:???PostgreSQL 9.1で実験したら:
select count(id) from users; -- 45ms
select count(*) from users; -- 34ms
自分の間違いじゃないかと思うんですが、もし違いがあるなら教えてください。
0391NAME IS NULL
2013/02/14(木) 17:41:15.84ID:???ちなみに順番逆にしても*の方が速い?
0392NAME IS NULL
2013/02/14(木) 17:45:55.29ID:???同じだと思うよ。
参考URL:
http://wiki.postgresql.org/wiki/Slow_Counting/ja
ちなみに、上のページにも書かれているけど、9.2からはインデックスオンリースキャンが実装されているので
事情が違う。
0393NAME IS NULL
2013/02/14(木) 17:48:00.11ID:???http://lets.postgresql.jp/documents/technical/9.2/1
0394NAME IS NULL
2013/02/14(木) 18:38:15.00ID:???何度か実行してみた結果です。順番変えても変わらず。analyzeしてもそう。
>>392
> 同じだと思うよ。
ですよねー。
> 9.2からはインデックスオンリースキャンが実装されているので事情が違う。
9.2からは count(id) と count(*) のどっちが速くなるんですか?
本来ならインデックスオンリースキャンでも変わらないようにみえます。実験してないけど。
0395NAME IS NULL
2013/02/15(金) 10:29:28.66ID:???> 9.2からは count(id) と count(*) のどっちが速くなるんですか?
9.2で何の事情が違うというのは、9.1までのCOUNT(*/id)との動作が違うということで、どちらかが
どうということではないよ。
> 本来ならインデックスオンリースキャンでも変わらないようにみえます。実験してないけど。
そう、インデックスを使えるなら、COUNT(*)もCOUNT(id)も9.1より速くなる。
0396NAME IS NULL
2013/02/15(金) 17:03:26.06ID:???> COUNT(*)もCOUNT(id)も9.1より速くなる。
そういうことを聞きたいんじゃなくて、count(*)とcount(id)で速度に違いはあるのかということです。
9.2になっても、違いはないはず -- Yes or No?
0397NAME IS NULL
2013/02/15(金) 17:15:42.66ID:???COUNT(*)とCOUNT(id)は、インデックススキャンが使われるなら、やっぱり同じだろう。
0398NAME IS NULL
2013/02/15(金) 18:14:31.46ID:???0399NAME IS NULL
2013/02/20(水) 12:35:12.92ID:???configureオプションに何を指定したか、バイナリのオプションで表示できないのかな?
0400NAME IS NULL
2013/02/20(水) 13:32:01.40ID:???0401NAME IS NULL
2013/02/20(水) 13:42:59.33ID:???ありました。そしてオプション表示されました。ありがとうございました。
http://www.postgresql.jp/document/8.4/html/app-pgconfig.html
0402NAME IS NULL
2013/03/14(木) 21:24:41.85ID:???0403NAME IS NULL
2013/03/16(土) 21:42:31.11ID:???0404NAME IS NULL
2013/03/20(水) 01:20:39.20ID:???テーブルA,B,Cてあって、BはAのIDを、CはBのIDみたいに親子関係に有った時、
テーブルAで採番されたIDを持つコピー後データをBに、テーブルBで採番されたIDを持つコピー後データをCに
て感じにしたいんだけど、今のテーブル構造だとコピー元、コピー後のマッピングができなくてどうにも出来ないんだ。
それぞれのテーブルにold_idみたいに、コピー前IDを持つようにしたほうが早い?
0405NAME IS NULL
2013/03/20(水) 03:01:36.92ID:???0406NAME IS NULL
2013/03/20(水) 06:31:51.52ID:???この板、ほんとスキルが高くて親切な人が多いなあ。
Letsの人かな。
感謝してます。
0408NAME IS NULL
2013/03/27(水) 23:37:45.57ID:???lo_importで画像を登録するにはpostgresユーザー権限が必要だけど
実際そのDBを使うのはhogeユーザーっていう状況です
importした後にalter lrage objectを使ってhogeユーザーに変えようと思っているんですが、
この時lo_importで発行したoidを変数的なものに入れておくことは出来ないでしょうか
今やっている方法としては、lo_import('ファイル', 1);
alter lrage object 1 owner on hoge
てかんじでIDを直打ちしているんです
0409NAME IS NULL
2013/03/31(日) 11:22:15.98ID:???一時テーブル作って、INSERT文でlo_import 使えばそのテーブルにid入ることは入るけど
そう言う手はどう?
0410NAME IS NULL
2013/04/02(火) 14:29:15.00ID:???だだだ大丈夫ですかぁあああ!?
0411NAME IS NULL
2013/04/05(金) 09:12:17.06ID:???外に晒してなくて信頼できるところからしか接続されないようになってるなら
それほど影響ないかもしれないけど。
0412NAME IS NULL
2013/04/24(水) 19:09:55.83ID:???ストアド(pl/pgsql)の定義を厳密にチェックするように設定出来ますか?
lintに相当するチェック機能はありませんか?
0413NAME IS NULL
2013/04/24(水) 20:13:18.47ID:???0414NAME IS NULL
2013/04/25(木) 12:35:08.00ID:???こういうのとかどうかね
0415NAME IS NULL
2013/04/27(土) 16:13:16.72ID:???windows7Pro
PostgreSQL9.2.1
で開発しています。
教えてください。
javaでsqlのinsert文を発行するとき
String str1 = (String) table.getValueAt(row, 1);
String str2 = (String) table.getValueAt(row, 2);
String str = "insert into test_numbers (number, date) values ('"+ str1 + "', '" + str2 + "')";
(1)str1が'1'でstr2が'20130427'ならinsertできて
(2)str1が'1'でstr2が'2013/04/27'ならinsertできないのですが
どうしてなのでしょうか?
コンソールから上記sqlを発行すると、(1)も(2)も問題なく処理されます。
0416NAME IS NULL
2013/04/27(土) 21:59:14.36ID:jltwdQnBコンソールはクライアントのロカールを見て、日付の書式を自動的に年/月/日に
設定してくれている。
Javaからの接続はこの設定を変えないので、サーバ側で指定された書式(たぶん
月/日/年になっている)が使われている。
年/月/日形式の日付書式を使うには、
サーバのpostgresql.confにある設定を
datestyle = 'iso, ymd'
とするか、毎回接続開始時に
set datestyle to 'iso, ymd';
とすればよい。
0417NAME IS NULL
2013/04/28(日) 10:48:30.26ID:???商用ソフトとして作ってるなら、日付書式は予めプログラム側でやっとく方が良いよ。
0418NAME IS NULL
2013/04/28(日) 16:40:46.97ID:???0419NAME IS NULL
2013/04/29(月) 14:07:33.75ID:???ゴキブリ在日朝鮮人に生活保護が支払われている
ゴキブリ在日朝鮮人の一家族で年間600万円である
ゴキブリ在日朝鮮人の2人に1人は生活保護だ
これより安い給料で働いている日本人が
少ない給料から支払った税金が
ゴキブリ在日朝鮮人の生活保護になっている
ゴキブリ在日朝鮮人は生活保護をもらって
感謝もせず 当然のような顔をして
毎日パチンコをして遊び暮らしている
ゴキブリ在日朝鮮人の犯罪者も非常に多い
ヤクザの2人に1人はゴキブリ在日朝鮮人だ
日本社会の寄生虫 ゴキブリ在日朝鮮人
日本から出て行け! ゴキブリ在日朝鮮人
0420NAME IS NULL
2013/04/29(月) 23:36:02.70ID:???>>417
>>418
ありがとうございます!
0421NAME IS NULL
2013/05/12(日) 05:40:49.34ID:xkZS/dht0422NAME IS NULL
2013/05/13(月) 23:12:55.27ID:???integer型1カラムで主キーを設定してテーブルを作成しました。
ここに特定のIDをINSERTできれば、排他ロックを取得、
エラーが起これば、他のクライアントで排他処理中としようかと。
INSERT INTO TESTTABLE SET ID=123 ;
とSQLを投げて、エラー(例外)をキャッチしているのですが、
もっとスマートな方法はありませんか?
エラーが返ってくるのではなく、INSERTが成功すればTRUE、
失敗すればFALSEを返すようなSQL文ってないでしょうか?
0423NAME IS NULL
2013/05/13(月) 23:19:28.28ID:???0424NAME IS NULL
2013/05/14(火) 00:03:43.40ID:???ちと調べてきます。
0425NAME IS NULL
2013/05/14(火) 00:50:56.20ID:???起こせよ寝坊しただろ
0426NAME IS NULL
2013/05/14(火) 06:51:13.88ID:???0427NAME IS NULL
2013/05/14(火) 12:28:25.59ID:???0428NAME IS NULL
2013/05/14(火) 16:10:31.76ID:???PostgreSQLはそういうソフトじゃないしねい
0429NAME IS NULL
2013/05/14(火) 16:45:29.41ID:???0430NAME IS NULL
2013/05/15(水) 19:34:48.52ID:???年に一度くらいは、pg_dumpしてpsqlリストアとかすべき?
あんまり関係ないですかね?
0431NAME IS NULL
2013/05/15(水) 20:17:13.34ID:???0432NAME IS NULL
2013/05/15(水) 20:28:27.65ID:???0433NAME IS NULL
2013/05/15(水) 21:38:42.58ID:???0434NAME IS NULL
2013/05/16(木) 00:07:46.22ID:???無知だったわ。
でも止められないシステムだから、気軽にできないなぁ
0435NAME IS NULL
2013/05/16(木) 00:10:40.67ID:???0436NAME IS NULL
2013/05/16(木) 19:55:22.39ID:???0437NAME IS NULL
2013/05/16(木) 21:27:47.08ID:???0438NAME IS NULL
2013/05/16(木) 21:48:44.28ID:???他所だと止めてない、っていうとパッチ当ててないのか?とか批判されそうだけど。
0439NAME IS NULL
2013/05/16(木) 22:04:00.81ID:???非難すべき状況かもしれないし、そうじゃないかもしれないし
0440NAME IS NULL
2013/05/17(金) 00:56:07.32ID:???0441NAME IS NULL
2013/05/17(金) 07:17:48.85ID:???その核となるDBMSは止められないことが多いからなあ…
セキュリティ確保のためオンライン自動アップデート系の
メンテ方法も採用できないことも多いし…
運用はいつの世でも大変だ
0442NAME IS NULL
2013/05/17(金) 15:41:04.62ID:???いまどき運用サイドから見て止められないシステムを作っちゃうのが悪いわ。
0443430
2013/05/18(土) 16:17:51.60ID:???怖いからFWや別のレイヤーで色々ガチガチには固めてるけど。
トラブっても責任逃れする準備も含めて周到にやってる。
で、ここの人達はみんな9.2とか使ってるのか。裏山
0444NAME IS NULL
2013/05/18(土) 17:30:41.27ID:???できないですよね。
0445NAME IS NULL
2013/05/19(日) 17:40:28.78ID:???9.2どころか8.3でもダメじゃなかったっけ?
0446NAME IS NULL
2013/05/20(月) 08:54:04.38ID:???これだけじゃレプリケーションは勿論駄目だけど一応使えてるよ
0447NAME IS NULL
2013/05/20(月) 13:28:12.96ID:???textsearch_jaだけど若干のソースの書き換えと文字コードをutf-8bom無しへの変換でいけたよ。
ソースの書き換えはsqlの大文字を小文字に直した程度だったと思う。
0448NAME IS NULL
2013/05/20(月) 17:49:13.70ID:???うちは8.2だわ
0449NAME IS NULL
2013/05/22(水) 08:44:10.45ID:sZW/XsQO0450NAME IS NULL
2013/05/22(水) 09:17:11.25ID:???0451NAME IS NULL
2013/05/22(水) 09:19:18.16ID:???止められない事情と天秤にかけての判断になるからな
無理矢理止めて入れ替えてトラブったら目も当てられん
現実は厳しいぜ
0452NAME IS NULL
2013/05/22(水) 09:21:51.73ID:???いちいち調整するのも大変だし、
autoじゃ拾いきれなくてどっちみち手動vacuumするしかなかった。
0453NAME IS NULL
2013/05/22(水) 12:25:38.36ID:???0454NAME IS NULL
2013/05/22(水) 15:05:32.48ID:sZW/XsQO0455NAME IS NULL
2013/05/22(水) 16:08:44.22ID:???まぁ以前のバージョンに比べればデッドタプル多少貯まってもパフォーマンスに影響そんな無いみたいだから気にしてないけど。
0456NAME IS NULL
2013/05/23(木) 11:18:18.71ID:???0457NAME IS NULL
2013/05/23(木) 14:11:26.77ID:CmgD6Bceたしか自動バキュームのワーカープロセスが1つしかないから
大きいテーブルの自動バキュームが走ると、それが終わるまで
他のテーブルへの自動バキュームが出来なくなるとかだった気がする。
で、8.3からは複数ワーカープロセスが動けるようになった。
0458NAME IS NULL
2013/05/31(金) 03:38:01.00ID:???一般論で言えば、テーブルにFILLFACTORを設定すれば、そんなにデッドタプルが溜まることはなくなるはず。
0459NAME IS NULL
2013/05/31(金) 05:51:48.57ID:???0460NAME IS NULL
2013/05/31(金) 06:03:46.91ID:bz/a3XA7バージョン9.2です。
例えばwhere id=? and code=? という条件を
codeのパラメーターの値が無ければすべて抽出するという書き方はありますか?
0461NAME IS NULL
2013/05/31(金) 07:58:45.54ID:???0462461
2013/05/31(金) 08:00:38.15ID:???WHERE ID=? AND ( X )
Xの部分は自分で考えろ。
0463NAME IS NULL
2013/05/31(金) 20:54:33.02ID:laXbRm2m()で括っているのがヒントですか?
0464NAME IS NULL
2013/05/31(金) 22:20:53.49ID:???0465NAME IS NULL
2013/05/31(金) 23:02:30.51ID:laXbRm2mパラメーター値がある時は抽出できますが
すべて抽出はできませんでした
0466NAME IS NULL
2013/06/01(土) 03:28:14.99ID:???0467NAME IS NULL
2013/06/01(土) 07:35:46.87ID:???0468NAME IS NULL
2013/06/01(土) 08:49:31.94ID:gkJE/QhY>>467 だとほんとにすべて抽出されます。
私の書き方がまちがっていたようです。
すいません。
例えば
where id=? and code=? という条件で
code=0 の時
where id=?
code=1以上 の時(値があるとき)
where id=? and code=?
と、したいのです。
0469NAME IS NULL
2013/06/01(土) 09:35:50.62ID:???>>462
0470NAME IS NULL
2013/06/01(土) 09:48:40.81ID:???0471NAME IS NULL
2013/06/01(土) 10:04:02.82ID:???0472NAME IS NULL
2013/06/01(土) 10:11:04.56ID:???もしパラメータがないことを表す値がcode = 0のようにわかっているなら
select * from R where id=? and (code=0 or code=?)
そうでないなら、467にかっこを加えて
select * from R where id=? and (code=? or not exists (select * from R where id=? and code =?))
0473NAME IS NULL
2013/06/01(土) 10:16:30.29ID:???0474NAME IS NULL
2013/06/01(土) 10:25:06.96ID:gkJE/QhYできました!ありがとうございます。
これって相関サブクエリでcode=?以外を抽出するって意味でしょうか?
0475474
2013/06/01(土) 10:29:08.37ID:gkJE/QhYselect * from R where id=? and (code=? or not exists (select * from R where id=? and code =?))
0476NAME IS NULL
2013/06/01(土) 10:50:15.78ID:???外野は黙ってろ
そういうくだらない茶々入れが荒れる元になるんだ
お前のところの教育がどうこうなんてこの流れで言うことか
話の流れに沿わない書き込みはするな
0477NAME IS NULL
2013/06/01(土) 16:16:29.67ID:???穏やかに行こうよ。
0478NAME IS NULL
2013/06/01(土) 22:23:59.30ID:???いや相関ではない。
手続き的に言えば
最初にサブクエリが実行され、その結果(true/flse)に置き換えて
メインクエリが実行されるというイメージ。
(よっぽど駄目なDBMSでなければ)
0479474
2013/06/01(土) 23:28:51.60ID:gkJE/QhY丁寧な説明とわかりやすい指導ありがとうございます。
0480NAME IS NULL
2013/06/03(月) 02:34:33.27ID:???0481NAME IS NULL
2013/06/03(月) 02:39:01.34ID:???前者は質問者の話の流れで行くと、code=0は常に偽となるだろうから
select * from R where id=? and (code=0 or code=?) は
select * from R where id=? and (FALSE or code=?) となって
select * from R where id=? and code=? と同じかなと。
後者なら回りくどいけど、動きそうか。
0482NAME IS NULL
2013/06/03(月) 09:23:40.91ID:???0483NAME IS NULL
2013/06/03(月) 10:28:05.38ID:???0484460, 474
2013/06/03(月) 19:14:11.67ID:2r5NLX9l0485NAME IS NULL
2013/06/03(月) 20:32:31.77ID:???あなたが希望したとおりに動いてるのなら正解
そうじゃないなら間違い
0486460, 474
2013/06/03(月) 20:45:51.67ID:2r5NLX9lこのsqlで、
code=0 すべてのレコードを抽出
code=1 codeが1のレコードを抽出
code=2 codeが2のレコードを抽出
というかたちで希望どうりの動きができています。
0487NAME IS NULL
2013/06/03(月) 22:19:10.74ID:???だったらサブクエリなんか使わんでも
select * from R where id=? and (code=? or ?=0)
でいいんじゃね?
0489NAME IS NULL
2013/06/03(月) 23:29:01.79ID:???0490NAME IS NULL
2013/06/04(火) 08:17:27.14ID:???0491NAME IS NULL
2013/06/05(水) 02:59:27.46ID:???0492NAME IS NULL
2013/06/05(水) 19:02:19.75ID:???0493NAME IS NULL
2013/06/05(水) 19:09:28.06ID:???0494NAME IS NULL
2013/06/05(水) 20:41:39.33ID:???0495NAME IS NULL
2013/06/11(火) 16:13:30.71ID:???CREATE FUNCTIONでストアド作る時にフィールドやらテーブルの存在チェックをする方法はありませんか?
もしくはビューやストアドに使われてるフィールドやらテーブルの存在チェックを一括で実行する方法はありませんか?
デフォルト設定のMacOSX用9.2.4と、Windows版pgAdminIIIの組み合わせでストアドを作っています。
設定変更でチェック出来るなら変更します。
今は1個1個実行してバグ出ししてます。
(命名規則違反が見つかった時とかは修正後ストアドのテストやり直し><;;)
0496NAME IS NULL
2013/06/11(火) 16:27:20.52ID:???> CREATE FUNCTIONでストアド作る時にフィールドやらテーブルの存在チェックをする方法はありませんか?
無い。
> もしくはビューやストアドに使われてるフィールドやらテーブルの存在チェックを一括で実行する方法はありませんか?
無い。
> (命名規則違反が見つかった時とかは修正後ストアドのテストやり直し><;;)
自動テストにしておけばいい。
0497NAME IS NULL
2013/06/11(火) 16:31:27.36ID:???�dクス。VBAのExplicitに慣れすぎた体にはストアドのこの仕様(?)は堪える。orz
0498NAME IS NULL
2013/06/11(火) 22:27:06.62ID:???pg_restoreでエラーが出るんですが、原因がわかりません。
CentOS 5.3
PostgreSQL 7.3.6
pg_restore -h localhost -p 5432 -U postgres -v -d "mydb" "/home/root/xxx.backup"
エラーメッセージ
pg_restore: [archiver] unsupported version (1.10) in file header
RedHatでバックアップしたやつなんだけど同じ7.3.6のをバックアップしたのに「unsupported version」ってなんで??
Windowsで PostgreSQL8.? を入れてあるやつでバックアップしたんだけどそれが原因?
この場合、無理やりリストアする事はできない?
0499NAME IS NULL
2013/06/12(水) 01:49:31.84ID:???Function作る時にTableがなければerrorでるだろ?
0500NAME IS NULL
2013/06/12(水) 02:47:25.94ID:???そのエラーメッセージでググると
それっぽいQ&A記事が引っかかるよ
0501498
2013/06/12(水) 09:04:13.53ID:???ググったんだけどそもそも日本語の結果がほとんどヒットしなくて、
違うバージョンのにリストアする方法しか見つからなかった
因みに諸事情によりdumpのオプション変えて取り直しとかは不可な状況です
0502NAME IS NULL
2013/06/12(水) 09:12:37.22ID:???訳せよ。
0503NAME IS NULL
2013/06/12(水) 10:52:41.81ID:???> pg_restore: [archiver] unsupported version (1.10) in file header
>
> RedHatでバックアップしたやつなんだけど同じ7.3.6のをバックアップしたのに「unsupported version」ってなんで??
> Windowsで PostgreSQL8.? を入れてあるやつでバックアップしたんだけどそれが原因?
1.10になってるということはPostgreSQL 8.0以降のpg_dumpを使ってしまったみたいだね
> この場合、無理やりリストアする事はできない?
PostgreSQL 8.0以降の版でいったんリストアしてからテキストダンプして古い方に取り込むとか
0504NAME IS NULL
2013/06/12(水) 14:37:34.23ID:???LANGUAGE SQL の時はね。
LANGUAGE plpgsq lの時は出ない。
0505NAME IS NULL
2013/06/12(水) 16:41:34.53ID:???0506NAME IS NULL
2013/06/12(水) 22:23:32.26ID:???0507NAME IS NULL
2013/06/12(水) 22:40:13.45ID:???0508NAME IS NULL
2013/06/13(木) 00:22:06.60ID:???質問にもそれなりの仕方・手順というものがある
聞かれた方が「何でそんなこと聞くの?」って
目を白黒させるようなものはいただけない
0509NAME IS NULL
2013/06/13(木) 04:28:12.64ID:???0510NAME IS NULL
2013/06/13(木) 14:56:45.22ID:???0511NAME IS NULL
2013/06/13(木) 19:35:13.46ID:???0512NAME IS NULL
2013/06/13(木) 21:02:19.46ID:???0513NAME IS NULL
2013/06/13(木) 21:20:49.50ID:???ヌルかナルかなんてどっちだっていいじゃない!
0514NAME IS NULL
2013/06/13(木) 21:56:47.86ID:???てか、古いな
0515NAME IS NULL
2013/06/14(金) 04:15:07.05ID:???(お……Fullか……?)
0516NAME IS NULL
2013/06/16(日) 19:39:58.89ID:???0517NAME IS NULL
2013/06/18(火) 03:05:22.33ID:???キャッシュなどはすべてクリア済みっす
0518NAME IS NULL
2013/06/18(火) 04:54:47.40ID:???カーネルが持ってるキャッシュもあるし、OS再起動後に計ってるってこと?
マシンのスペック、postgresql.confは全く一緒なの?
0519517
2013/06/18(火) 14:31:42.81ID:???キャッシュクリアの方法ですがOS再起動しています。
以下、作業手順になります。
1.測定
2.OS再起動
3.SQLで使用しているテーブルに対して、VACUUM ANALYZEとREINDEXを実施
4.測定
このとき、1と4の結果で実行計画が同じなのに、処理時間は倍以上あったりします。
ちなみに、4のあとOSを再起動して、
再度、VACUUM ANALYZEとREINDEXを実施後に測定すると、
実行計画や処理時間が1の結果と同じになったりします。(ならないときもあり)
何が原因でここまで不安定になるのでっしょう?
0520NAME IS NULL
2013/06/18(火) 14:57:57.12ID:???あと、他のプロセスが忙しかったりはしないのか?
0521NAME IS NULL
2013/06/18(火) 14:59:32.20ID:???0522NAME IS NULL
2013/06/18(火) 15:00:07.19ID:???0523517
2013/06/18(火) 15:16:20.98ID:???>>521
測定時間は速いときは約30分、遅い時は約1時間です。
測定時裏で動いている各プロセスの動きとかは確認していないので確認してみます。
>>522
OS は CentOS5.6 てす。
あとPostgresSQLのバージョンは 9.2.4.1 です。
0524NAME IS NULL
2013/06/18(火) 19:05:32.67ID:???ディスクアクセスの所要時間(待ち時間)の差だけでも30分ぐらいになるんだろう。
0525NAME IS NULL
2013/06/18(火) 21:53:22.09ID:???0526NAME IS NULL
2013/06/18(火) 22:15:05.43ID:???connectして、execして、disconnectしてたりして。
0527NAME IS NULL
2013/06/18(火) 23:35:51.98ID:???0528NAME IS NULL
2013/06/18(火) 23:55:22.91ID:???まさかとは思うが、autovacuumが動いてて影響してるとか…
0529NAME IS NULL
2013/06/19(水) 00:16:12.98ID:???1. の方が早いのかな?
当てずっぽうだけど4. の方は、ヒープのヒット率が低くてディスクI/Oが増えてるとか。
0530NAME IS NULL
2013/06/19(水) 08:23:36.43ID:???0531NAME IS NULL
2013/06/19(水) 10:25:52.29ID:???0532NAME IS NULL
2013/06/21(金) 00:07:09.32ID:???ttp://ml.postgresql.jp/pipermail/pgsql-jp/2013-June/016379.html
0533NAME IS NULL
2013/06/21(金) 12:35:42.96ID:???この人、MLで質問する前に楽天で質問してた
ttp://qanda.rakuten.ne.jp/qa8137892.html
だいじょぶか、この会社
0534NAME IS NULL
2013/06/22(土) 14:15:50.88ID:???MLに入ってなかったんじゃないの?
2chに慣れてしまっているせいかメールクライアントやMLのスレッド表示はなんか見づらい
0535NAME IS NULL
2013/06/22(土) 15:30:37.80ID:???0536NAME IS NULL
2013/06/22(土) 15:36:45.93ID:???※標準で入ってるN-gram検索は2文字以下では使い物にならないのでそれ以外で
0537536
2013/06/22(土) 16:51:43.46ID:???Ludiaで終わってたと思ってたNTTデータがやってくれてました
ありがたやありがたや
これで、MySQLからPostgreSQLに戻ってくることができる
0538NAME IS NULL
2013/06/23(日) 00:18:51.92ID:???レプリケーションしてるかどうかも確認できないレベルで運用してたってスゴくね?
ド素人がなんでレプリケーション組んだんだろ?
故障してから24時間、どこから手をつけていいか全然見当つかなかったようだし、
監視ツールも使ってないみたいだし。
0539NAME IS NULL
2013/06/23(日) 00:34:34.73ID:???世の中のシステム管理者のレベルってそういうのが結構多いよ。
この前、お客さんところ行ってサーバー見たらさ、
RAIDの管理ツールも入ってるのに、SATAのHDDが1台入ってるだけなんだよ。
そこの会社のサーバー数十台全部そういう状態。
担当者は、RAID組んであるはずなのになぁ、、、って言ってたわ。
0540NAME IS NULL
2013/06/23(日) 06:07:11.57ID:???0541NAME IS NULL
2013/06/23(日) 09:17:35.68ID:???それ、最初からRAIDになってなかった臭いな。
刑事事件に発展しそうな案件だな。
0542NAME IS NULL
2013/06/23(日) 10:26:49.19ID:???0543NAME IS NULL
2013/06/23(日) 16:36:46.10ID:???0544NAME IS NULL
2013/06/23(日) 17:15:30.25ID:???思いっきり安い見積もりでオプションのHDD入れてないとかかな
0545NAME IS NULL
2013/06/23(日) 17:21:26.07ID:???pg_bigrm?
標準のginってfastupdateでもやっぱちょっと遅くない?(更新が)
そう言えば9.2でamが追加になってたけど、txtsearchsennaって9.2いけんのけ?
0546NAME IS NULL
2013/06/23(日) 21:12:11.11ID:???昔勤めていた会社ならやりそうだ。
0547NAME IS NULL
2013/06/24(月) 21:27:18.96ID:???textsearchsennaはインスコでこける
0548NAME IS NULL
2013/06/24(月) 22:03:24.95ID:???多分追加になったamを書き足せばいけるだろ。
帰ったらやってみるかな。
0549NAME IS NULL
2013/06/24(月) 23:03:39.09ID:???自分でソース書き換えるしかない?
0550NAME IS NULL
2013/06/24(月) 23:05:49.57ID:???0551NAME IS NULL
2013/06/24(月) 23:18:17.54ID:???俺の理解力が足らないのかと少し悩んだ
0552NAME IS NULL
2013/06/24(月) 23:20:26.48ID:???0553NAME IS NULL
2013/06/24(月) 23:56:07.85ID:???0554NAME IS NULL
2013/06/25(火) 00:03:38.85ID:???0555NAME IS NULL
2013/06/25(火) 07:34:53.19ID:???0556NAME IS NULL
2013/06/25(火) 11:25:15.44ID:???0557NAME IS NULL
2013/06/25(火) 13:25:32.79ID:???でも、「書いたまま」ってのがイミフだな・・・・・・。
0558NAME IS NULL
2013/06/25(火) 14:46:00.13ID:???結合に関しては()使えば強制できるんだっけ?
0559NAME IS NULL
2013/06/25(火) 15:02:43.04ID:???0560NAME IS NULL
2013/06/25(火) 15:05:50.75ID:???0561NAME IS NULL
2013/06/25(火) 20:20:25.03ID:???書いたままというのは
select A from R1,R2 where F
みたいな形の式を「R1,R2を結合(直積)して条件Fで選択してAで射影」という素朴な順序で評価する
という意味です。
RDBMSは通常ここから、関係代数式の等価規則を使って演算順序を組み替えるとか、
統計情報をもとにハイパーグラフのリダクションや動的計画法で効率的な順序を決める
といった最適化をして実行計画を作るわけですが、その効果をみる上でもベースとなる
素朴な評価順序での計測ができないかなと思って質問しました。
0562NAME IS NULL
2013/06/25(火) 20:33:41.30ID:???0563NAME IS NULL
2013/06/25(火) 20:34:00.52ID:???漢字で表現するなら「愚直な順序」の方が適切だな。
0564NAME IS NULL
2013/06/25(火) 20:36:14.59ID:???�@SELECT R1.*,R2.* FROM R1,R2;
�ASELECT R1.*,R2.* FROM R1,R2 WHERE F;
�BSELECT A FROM R1,R2 WHERE F;
これで561の計測したいことは全部計測できるだろ。
0565NAME IS NULL
2013/06/25(火) 20:43:06.86ID:???enable_hashjoin とか使うといいかもね。そこまでの強制力はなかったと思うけど。
0566NAME IS NULL
2013/06/25(火) 20:53:07.62ID:???これは各段階に常にMaterializeを入れた結果になるから駄目だろ。
0567NAME IS NULL
2013/06/25(火) 20:55:33.27ID:???select文をパースして最初にできる問い合わせ木の順序と考えると
「素朴」でもいいんじゃない。
0568NAME IS NULL
2013/06/25(火) 22:01:36.25ID:???>>561は差を知りたいだけなんだろ?
0569NAME IS NULL
2013/06/25(火) 22:17:41.86ID:???よく知らんけど。
0570NAME IS NULL
2013/06/26(水) 00:14:55.71ID:???0571NAME IS NULL
2013/06/26(水) 03:24:05.11ID:???>>RDBMSは通常ここから、関係代数式の等価規則を使って演算順序を組み替えるとか、
>>統計情報をもとにハイパーグラフのリダクションや動的計画法で効率的な順序を決める
>>といった最適化をして実行計画を作るわけですが、
ポスグレのプランナとオプティマイザは不可分で、最初っからダイナミックプログラミングで
ごりごりプランツリーをつくってくから、「後から最適化」って概念がないんじゃないの。
因みにポスグレはプラン処理の前処理で"1+1"を2にしたり、可能ならサブクエリをJOINにするとかの最適化を行うらしい。
某書籍の受け売り。
0572NAME IS NULL
2013/06/26(水) 05:41:33.52ID:???主にやってること
■スカラー表現の簡素化
主に定数たたみ込み(
2 + 2 -> 4
CASE WHEN 2+2 = 4 THEN x+1
ELSE 1/0 END
-> ERROR: division by zero にはなりませんように・・・
はい。なりません。
->x+1です。
■簡単なSQL関数の展開
CREATE FUNCTION incr(int) RETURNS int
AS
'SELECT $1 + 1' LANGUAGE SQL;
SELECT incr(col) FROM table;
-> SELECT col + 1 FROM table;
■ジョイン木の簡素化
・フラット化("pull up")タイプのサブSELECTs 出来るだけ
出来なければ、サブプランを再帰的に生成する。
・UNION ALLをフラット化する、継承木を展開する
・ジョインの長さを削減する(outer join -> inner join)
・IN、EXISTS サブSELECTsをセミジョインに変換する
・非joinを識別する
■簡単なviewのフラット化
CREATE VIEW v AS
SELECT a, b+c AS d FROM t WHERE x > 0;
SELECT v.a, v.d FROM v WHERE v.a = 42;
Rewriterによる生成:
SELECT v.a, v.d FROM
(SELECT a, b+c AS d FROM t WHERE x > 0) v
WHERE v.a = 42;
サブSELECTフラット化による生成:
SELECT t.a, t.b+t.c FROM t
WHERE t.x > 0 AND t.a =42;
0573NAME IS NULL
2013/06/27(木) 22:44:31.96ID:???0574NAME IS NULL
2013/06/30(日) 00:45:46.63ID:???刑事事件じゃなくて、民事だろ!
って、おもってから、数秒後・・・あぁ、なるほど、刑事事件か。と納得した。
0575NAME IS NULL
2013/06/30(日) 02:04:40.16ID:???0576daisuke
2013/07/01(月) NY:AN:NY.ANID:???update文で教えてください。
顧客情報のテーブル→t_client
注文内容のテーブル→t_orderがあります。
注文内容と顧客情報を合体させて、
顧客情報にカートIDを入れたいです。
ご教授よろしくお願いします。
0577NAME IS NULL
2013/07/01(月) NY:AN:NY.ANID:???0578NAME IS NULL
2013/07/01(月) NY:AN:NY.ANID:???SQLの基礎さえできていないようだけど
どういう経緯でそんなことをやる羽目になったの?
もし業務でやらされているのならば
明日朝一番にギブアップ報告しろと言いたくなるレベル。
0579NAME IS NULL
2013/07/02(火) NY:AN:NY.ANID:???0580NAME IS NULL
2013/07/02(火) NY:AN:NY.ANID:???レスしたら負けだ
0581NAME IS NULL
2013/07/02(火) NY:AN:NY.ANID:???0582NAME IS NULL
2013/07/02(火) NY:AN:NY.ANID:???あなたが設計したの?
他の人が設計したんじゃなきゃもう一度勉強してやり直した方がいいよ
0583NAME IS NULL
2013/07/02(火) NY:AN:NY.ANID:???それならテーブル構成ぐらい晒せや
0584NAME IS NULL
2013/07/03(水) NY:AN:NY.ANID:???この度、ハードウェア更新することになり、Linuxもバージョンアップします。
その際に過去のDBを移行するのですが、7.4.xxをインストールするのが
最も作業量ミニマムでしょうか?
0585NAME IS NULL
2013/07/03(水) NY:AN:NY.ANID:???ダンプ→りストアでだいたい済むけど
7->8はキャストしてないと通らなかったりするからなあ
って同じサーバに複数のバージョンのpostgreSQL入れて試してみりゃいいじゃん
0586NAME IS NULL
2013/07/04(木) NY:AN:NY.ANID:???一番作業量が少ないと思う。
0587NAME IS NULL
2013/07/09(火) NY:AN:NY.ANID:???こないだ重大な脆弱性に対する緊急アプデがあったばかりで
7とかはアプデ対象外だというに。
0588NAME IS NULL
2013/07/09(火) NY:AN:NY.ANID:???0589NAME IS NULL
2013/07/09(火) NY:AN:NY.ANID:???0590NAME IS NULL
2013/07/09(火) NY:AN:NY.ANID:???古いものを運用し続けることに労力を割くか、
0591NAME IS NULL
2013/07/09(火) NY:AN:NY.ANID:???検証しながらやればいいよなあ
0592NAME IS NULL
2013/07/09(火) NY:AN:NY.ANID:???アホなH社に全プログラムをタダで再検証させられたぜよ。
H社のDBのスペシャリストが本番と違うバージョンでテストしてたくせに。
0593NAME IS NULL
2013/07/10(水) NY:AN:NY.ANID:???あそこのオープンソース系の連中、腐ってるだろ
なんのアウトプットも無い
0594NAME IS NULL
2013/07/10(水) NY:AN:NY.ANID:???オープンソース?
そんなんやってたっけ?
昔、S○ がちょっとやってたぐらいしか知らない
オープンアーキテクチャ (と、彼らがほざいてる) のことなら、同意
0595NAME IS NULL
2013/07/10(水) NY:AN:NY.ANID:???http://www.hitachi.co.jp/products/it/linux/opensource/index.html
SystemTapはお世話になった
0596NAME IS NULL
2013/07/11(木) NY:AN:NY.ANID:???なるほど、それなりにやってるんだな。
0597NAME IS NULL
2013/07/11(木) NY:AN:NY.ANID:???0598NAME IS NULL
2013/07/14(日) NY:AN:NY.ANID:???0599NAME IS NULL
2013/07/14(日) NY:AN:NY.ANID:???0600NAME IS NULL
2013/07/14(日) NY:AN:NY.ANID:???0601NAME IS NULL
2013/07/16(火) NY:AN:NY.ANID:???1000ビットくらいあるフラグのアレイを bit varying型 で格納するべきか、
それとも1フラグ1レコードで記憶すべきか・・・。
bit varying の nビット目が 0か1か調べたり、0や1を直接書き込む効率的な関数ってありましたっけ?
0602NAME IS NULL
2013/07/16(火) NY:AN:NY.ANID:???0603NAME IS NULL
2013/07/16(火) NY:AN:NY.ANID:/QqZF5MJhttp://www.postgresql.jp/document/9.1/html/functions-bitstring.html
> &、|、#のビット文字列オペランドは同一長でなければなりません。
という記述を見てまずいかと思ったけど、キャストで解決できるようだ。
効率的な関数とやらはよく調べてないのでわかんないけど、一般的なフラグ処理でいいんじゃないのかな。
それでも必要だとおもい、調べても見つからないなら作ればいいかと。
0604NAME IS NULL
2013/07/17(水) NY:AN:NY.ANID:???>>603 どうも無さそうなので、PL/pgSQLの関数を作ってみました。
ただ、自分の方法はすごく頭の悪い方法かもしれないです。
5ビット目とか6ビット目ならシフトで気にならないですが、
800ビット目とか900ビット目とかになると、
その回数シフトさせるオーバーヘッドが気持ち悪いです。
もっとも、EXPLAIN ANALYSE で見るボトルネックはもっと他にあるようで、
5ビットも900ビットも大差なかったです。
そして、1フィールドに全フラグを押し込める方式も、フラグごとに1レコード用意する方式も、
全体のデータが少ない現在の試験環境では処理コストそのものに大差ないようです。
というわけで、今後は
・複数のフラグを(たとえば10個や20個を)まとめて処理する状況が頻発するのか
・フラグごとに集計する必要があるのか
・1レコード1フラグにしてメモリーにのりきるのかどうか
このあたりから熟考してみます。>>602-603 ありがとう。
0605NAME IS NULL
2013/07/17(水) NY:AN:NY.ANID:???0606NAME IS NULL
2013/07/17(水) NY:AN:NY.ANID:???06071/3
2013/07/18(木) NY:AN:NY.ANID:???イレギュラーな質問が多くて恐縮なのですが。
1/3 64bitサーバで32bit版のPostgreSQLは動作するのか
具体的には、x86_64のサーバ(CentOS5)で、32bit版のPostgreSQL8.2のRPMは正
常に動作できるのでしょうか?
x86_64の仮想サーバ(CentOS5)で試したところ、32bit版のPostgreSQL8.2の
postgresql, postgresql-lib, postgresql-server
をインストール、動作させることができました。
どうやら動作自体はするもののようです。
ただ、原理的に正常に動くものなのか、どなたかお教えいただけないでしょう
か。
06082/3
2013/07/18(木) NY:AN:NY.ANID:???具体的には、32bit版の8.2と、64bit版の9.1のです。
RPMで複数バージョンのPostgreSQLをインストールしてみよう ? Let's Postgres
http://lets.postgresql.jp/documents/tutorial/new_rpm
この記事は9.0以降のRPM同士についてのようですが、インストール先ディレクトリが
/usr/pgsql-<メジャーバージョン>
となっているなら、それより前のバージョンのRPMもひとつは共存できるかと思い
試してみました。
先に8.2(32bit)をインストールした環境に、9.1(64bit)の
postgresql, postgresql-lib, postgresql-server
のRPMをインストールすると、
> エラー: 依存性の欠如:
> postgresql < 7.4 は postgresql-server-8.2.22-1PGDG.rhel5.i386 と競合します。
というエラーが出ました。
そこで、 --force --nodeps というオプションをつけるとインストールでき、
9.1のポート番号を変えると、8.2, 9.1のどちらも動作しました。
update-alternatives が設定されるので /usr/bin/psql などは9.1系になって
しまうかと思いましたが、実際には8.2系のままでした。
rpm -ql でファイルのインストール先を確認したところ、どれもかぶってはい
ませんでした。
ただ、これもかなり変則的な使い方のようなので、原理的に動作するものなのか
お伺いしたいのです。
06093/3
2013/07/18(木) NY:AN:NY.ANID:???これだけは変則的でない質問かもしれません。
postgresql-jdbc の内容を見たところ、JDBCのjarファイルの他は、GCJのライ
ブラリだけのようでした。これならこのRPMはインストールする必要がなく、
Download
http://jdbc.postgresql.org/download.html
からJARファイルを取得するだけで良いのではないかと思うのですが、いかがで
しょうか?
実は、8.2(32bit)のpostgresql-jdbcのインストールに失敗しました。
> エラー: 依存性の欠如:
> libgcj_bc.so.1 は postgresql-jdbc-8.2.512-1PGDG.rhel5.i386 に必要とされています
32bit版のgcjとの依存関係があったのです。使わないGCJ(32bit)をサー
バに入れずに済ませたくて、質問させて頂きました。
以上です。変則的な質問が多くて恐縮ですが、どうかよろしくお願いいたします。
0610NAME IS NULL
2013/07/18(木) NY:AN:NY.ANID:???0611NAME IS NULL
2013/07/19(金) NY:AN:NY.ANID:???0612NAME IS NULL
2013/07/20(土) NY:AN:NY.ANID:???0613NAME IS NULL
2013/07/20(土) NY:AN:NY.ANID:???>>608 いや、ポート番号を変えるのが常道であって、それで正解だと思うが?
0614NAME IS NULL
2013/07/20(土) NY:AN:NY.ANID:???自動更新とか無いと一時テーブルと何も変わらんよなあ…
マテビュー(ポスグレの)リフレッシュするときって排他ロック掛かるよね?
0615NAME IS NULL
2013/07/21(日) NY:AN:NY.ANID:???とはいっても、現時点で既に cronで定期的に 実表にランキングを書き出しているから
新たにマテビューをつかうメリットなんて思いつかないが。
それはそうと、
ttp://www.slideshare.net/hadoopxnttdata/postgre-sql93-24136770
このスライドいいね。 9.3 とか 9.4 がよくわかった。
0616607
2013/07/21(日) NY:AN:NY.ANID:???ご回答ありがとうございます。
そもそも自分は、64bitサーバで32bitバイナリが動くということ自体、知りま
せんでした。
64bit環境での32bitプロセスの動作 - Linuxカーネルメモ
http://wiki.bit-hive.com/linuxkernelmemo/pg/64bit%B4%C4%B6%AD%A4%C7%A4%CE32bit%A5%D7%A5%ED%A5%BB%A5%B9%A4%CE%C6%B0%BA%EE
動かない場合はないのか、PostgreSQLは大丈夫なのか、お伺いしたかったので
す。
8.2(32bit)と9.1(64bit)でインストール先のファイルがかぶらないことは確認
できたのですが、ポートの他に競合するものがないか不安で、質問させていた
だきました。
--
お詫びしますが、実は >>607-609 はマルチポストです。申し訳ありません。
先に7/15(月)にpgsql-jp に加入、投稿させていただいたのですが、「 メール
に不審なヘッダがあります」とのことで「リスト司会者のチェックのために投
稿が保留されました。」という状態になってしまいました。
3日待っても進展がなかったので、こちらのスレッドに同じ内容を書き込ませ
ていただいた次第です。
ちなみに現在も進展がありません。どうなってしまったんだろう…。
0617NAME IS NULL
2013/07/21(日) NY:AN:NY.ANID:???0618NAME IS NULL
2013/07/22(月) NY:AN:NY.ANID:???triggerなんかで更新が必要なら、実表とそう変わらん気がする。
0619NAME IS NULL
2013/07/22(月) NY:AN:NY.ANID:QpLqH1LE今のところ自動リフレッシュがなさそうに見えるので用途は限定されるかも
0620NAME IS NULL
2013/07/22(月) NY:AN:NY.ANID:???0621NAME IS NULL
2013/07/22(月) NY:AN:NY.ANID:???0622NAME IS NULL
2013/07/23(火) NY:AN:NY.ANID:???そうほざいてた時期が俺にもありました
0623NAME IS NULL
2013/07/26(金) NY:AN:NY.ANID:???0624NAME IS NULL
2013/07/27(土) NY:AN:NY.ANID:EswCpdfC0625NAME IS NULL
2013/07/27(土) NY:AN:NY.ANID:???0626NAME IS NULL
2013/07/27(土) NY:AN:NY.ANID:???0627NAME IS NULL
2013/07/27(土) NY:AN:NY.ANID:???0628NAME IS NULL
2013/07/27(土) NY:AN:NY.ANID:???0629NAME IS NULL
2013/07/28(日) NY:AN:NY.ANID:???一人はぼくだとして(´・ェ・)もう一人は誰ー?
0630NAME IS NULL
2013/07/28(日) NY:AN:NY.ANID:???もう一人もキミだよ。
0631NAME IS NULL
2013/07/28(日) NY:AN:NY.ANID:???0632NAME IS NULL
2013/07/31(水) NY:AN:NY.ANID:???なんだー(´・ェ・)ぼくは一人じゃなかったのかー
0633NAME IS NULL
2013/08/24(土) NY:AN:NY.ANID:???0634NAME IS NULL
2013/08/24(土) NY:AN:NY.ANID:83q6fySG0635NAME IS NULL
2013/08/24(土) NY:AN:NY.ANID:???だから、ポスグレはちゃんと英単語を使いたいと思ってる
項目名どうやって決定してるよ?
0636NAME IS NULL
2013/08/25(日) NY:AN:NY.ANID:???0637NAME IS NULL
2013/08/25(日) NY:AN:NY.ANID:???ソフトが対応していないならともかく
日本人なのにわざわざ英語を使う必要はない
0638NAME IS NULL
2013/08/26(月) NY:AN:NY.ANID:???さすがに、ってどういう意味で言ってるの?
マルチバイトサポートしてるだろ?
0639NAME IS NULL
2013/08/26(月) NY:AN:NY.ANID:???カラム名だけを日本語にするのとテーブル名も日本語にするのでは、心理的障壁の高さが違うんでしょう。
0640NAME IS NULL
2013/08/26(月) NY:AN:NY.ANID:???slony-iの導入について、教えていただけませんでしょうか。
Windows2008R2にPostgreSQL(32bit) 9.0.13をインストールし、
さらに、スタックビルダを使ってslony-I 2.0.7-1をインストールしました。
C:\Program Files (x86)\PostgreSQL\9.0\bin
内に slon.exeが追加されたのはいいのですが、
コマンドプロンプトでslon.exeをたたくと、
「コンピューターに MSVCR90.dll がないため、プログラムを開始できません。
この問題を解決するには、プログラムを再インストールしてみてください。」
というエラーメッセージが表示されます。
※VC++ランタイムは、2003〜2013まで入っています。
そこで、参照がうまくいっていないのだと思い、
システムフォルダから「MSVCR90.dll」を上記binフォルダに入れてみましたところ、
下記のようなエラーとなりました。
「Microsoft Visual C++ Runtime Library
Runtime Error!
Program: C:\Program Files (x86)\PostgreSQL\9.0\bin\slon.exe
R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information.」
導入方法や検証方法に誤りがあれば、ご指摘いただきたく思います。
よろしくお願いします。
0641NAME IS NULL
2013/08/27(火) NY:AN:NY.ANID:???ランタイム入れなおしたら?
0642NAME IS NULL
2013/08/27(火) NY:AN:NY.ANID:???システムフォルダからコピーしてくる、ってのは割と悪手な気がする…
0643NAME IS NULL
2013/08/27(火) NY:AN:NY.ANID:???オープンソースなPostgreSQLなら、やっぱ、おーぷん2ちゃんねる?
0644640
2013/08/28(水) NY:AN:NY.ANID:???何度も入れなおしてみましたが、結果は同じでした。
>642
Winは64bitです。
ただ、641が張ってくれてるリンクがx86用だから、
それをインストールしたら、32bitのdllを持ってるって事ですよね...?
0645NAME IS NULL
2013/08/28(水) NY:AN:NY.ANID:???>C:\Program Files (x86)
これでわかるって。
実行してるものは32なのか64なのか
0646640
2013/08/28(水) NY:AN:NY.ANID:???PostgreSQLは32bitです。
slonも、スタックビルだでインストールしたので、32bitだと思います。
一応64bit用の「msvcr90.dll」もbinフォルダに入れて見ましたが、
以下のようなエラーが出ました。
※640のエラーはx86の「msvcr90.dll」を入れた際のエラーです。
「アプリケーションを正しく起動できませんでした (0xc000007b)。
[OK] をクリックしてアプリケーションを閉じてください。 」
ランタイムエラーが出てる->DLLを読み込めてはいる?
だと思うので、Slonも32bit用だと思います。
勘違いしてて、レスにあっていない返答になってたらすみません。
0647NAME IS NULL
2013/08/28(水) NY:AN:NY.ANID:???0648NAME IS NULL
2013/08/28(水) NY:AN:NY.ANID:???0649640
2013/08/28(水) NY:AN:NY.ANID:???Dependency Walkerで見てみると、
「LIBEAY32.DLL」も足りないといわれたので、
http://slproweb.com/products/Win32OpenSSL.html
から、「Win32 OpenSSL v1.0.1e」と「Win64 OpenSSL v1.0.1e」を
インストールしてみようとしましたが、
両方とも次のエラーが出ました。
「The Windows OpenSSL Installation Project setup has detected that the following critical component is missing:
Microsoft Visual C++ 2008 Redistributables」
どうにもこうにもVC++2008ランタイムが、正しくインストールされていないようです。
もう少し試行錯誤してみます。
0650NAME IS NULL
2013/08/28(水) NY:AN:NY.ANID:???これの
※VC のランタイムチェック の補足
かなあ、サーバはあまりいじくりまわさないからなあ。
0651NAME IS NULL
2013/09/04(水) 07:02:13.41ID:???0652NAME IS NULL
2013/09/08(日) 20:50:28.78ID:???見せてほしい。
0653NAME IS NULL
2013/09/08(日) 23:33:46.40ID:???0654NAME IS NULL
2013/09/08(日) 23:48:52.23ID:???ちょっと安心した
postgres (PostgreSQL) 8.4.12
0655NAME IS NULL
2013/09/08(日) 23:52:19.41ID:???0656NAME IS NULL
2013/09/09(月) 09:55:09.03ID:???0657NAME IS NULL
2013/09/09(月) 12:08:48.94ID:???0658NAME IS NULL
2013/09/09(月) 12:18:59.02ID:???0659NAME IS NULL
2013/09/09(月) 18:13:02.47ID:???0660NAME IS NULL
2013/09/09(月) 23:32:06.27ID:???0661NAME IS NULL
2013/09/10(火) 03:09:52.86ID:???http://www.postgresql.org/about/news/1481/
0662NAME IS NULL
2013/09/10(火) 08:40:09.41ID:???0663NAME IS NULL
2013/09/10(火) 18:19:37.26ID:???0664NAME IS NULL
2013/09/10(火) 18:24:34.66ID:???9.3 はビューに直接UPDATEかけられるとか
0665NAME IS NULL
2013/09/10(火) 18:26:13.62ID:???0666NAME IS NULL
2013/09/11(水) 04:04:52.58ID:???Simple views can now be updated in the same way as regular tables.
The view can only reference one table (or another updatable view)
and must not contain more complex operators, join types etc.
0667NAME IS NULL
2013/09/11(水) 09:40:36.68ID:???ようやくOracle 8i並みになったってことか?
0668NAME IS NULL
2013/09/12(木) 21:24:15.62ID:???起きろ
0669NAME IS NULL
2013/09/12(木) 21:58:40.11ID:???postgre鯖とpgpool2鯖はそれぞれ複数台づつあって、全部同時に壊れる事は無いとして。
pgpool2が1台にpostgre複数台ならまだ少し情報あるけど
pgpool2も複数台の構成は全然情報見つからない
0670NAME IS NULL
2013/09/12(木) 22:02:12.04ID:???0671NAME IS NULL
2013/09/12(木) 22:49:54.13ID:???ネガティブイメージなんだよな。
Replicationみたいに、どれかを本体に組み込んで欲しいよな。
0672NAME IS NULL
2013/09/13(金) 04:28:43.65ID:???インストール時に選択できるようにすればいいのに。
0673NAME IS NULL
2013/09/13(金) 20:32:33.93ID:???あの会社や、その会社の関係者だけだろ。
0674NAME IS NULL
2013/09/15(日) 04:30:46.50ID:KpcWKA8rど〜せゾウさん関係にたいした知識もなく言ってんだろ〜?老害だわ〜。
0675NAME IS NULL
2013/09/15(日) 08:53:24.80ID:???0676NAME IS NULL
2013/09/18(水) 03:09:17.82ID:???0677NAME IS NULL
2013/09/18(水) 07:49:02.35ID:???0678NAME IS NULL
2013/09/18(水) 20:42:14.61ID:???0679NAME IS NULL
2013/09/19(木) 09:23:20.82ID:+7crO47rtextsearch-ja使ってるんだけど2文字検索遅すぎなんだがぁ
0680NAME IS NULL
2013/09/23(月) 04:16:05.35ID:e8g5Zb/W0681NAME IS NULL
2013/09/23(月) 07:19:13.20ID:???用途によるとしかいえない
0682NAME IS NULL
2013/09/23(月) 08:11:55.49ID:e8g5Zb/Wオンラインゲーを作りたいんだけど、保存するのはユーザー情報と各種ゲーム内パラメーター
Postgresじゃ厳しいよね?
0683NAME IS NULL
2013/09/23(月) 08:36:40.57ID:???Postgres じゃなくて、君の方が
0684NAME IS NULL
2013/09/23(月) 09:41:39.55ID:???実はデータベースが本体で、サーバの提供する機能とか
ゲームクライアントはそのデータベースのデータを書き換える
補助ツールにすぎない、と考えることもできる。
0685NAME IS NULL
2013/09/23(月) 13:35:31.32ID:???おーまさにそんな感じだ
とりあえずmongodbでやってみるよ
0686NAME IS NULL
2013/09/23(月) 17:29:50.24ID:???バンバン稼ぐつもりなら、俺なら最初からオラクル使っとくな。
最初の内はXE使って、順調に行けばAmazonのRDSとかを使う前提で。
稼げるかどうかわからないなら、PostgreSQLにしとく。
0687NAME IS NULL
2013/09/23(月) 18:20:01.49ID:e8g5Zb/W結局SQL推しか
0688NAME IS NULL
2013/09/23(月) 18:29:42.23ID:???使いこなせねー奴は、流行りの言語やツール使っとけば良いよ。
0689NAME IS NULL
2013/10/01(火) 16:04:14.65ID:???0690NAME IS NULL
2013/10/01(火) 17:41:02.14ID:QrPbc1sj0691NAME IS NULL
2013/10/07(月) 13:46:31.99ID:m7Wu6fioデフォルトでpg_dumpがインストールされていると思ったのですが、入っていませんでした。
pg_dumpだけをインストールするにはどうすればいいでしょうか?
0692NAME IS NULL
2013/10/07(月) 14:14:07.77ID:???たぶんpostgresql-serverパッケージしかインストールされていないから
yum install postgresql
としてクライアントのパッケージをインストールする必要がある
0693NAME IS NULL
2013/10/07(月) 17:28:22.73ID:ANQ3Kcaiありがとうございます。
解決しました!
0694NAME IS NULL
2013/10/07(月) 17:33:26.41ID:???蛇足だけど、あるファイルをどのパッケージが持ってるか検索するには、
yum provides "*/pg_dump"
とかするといいよ。
postgresql-8.4.13-1.el6_3.x86_64 : PostgreSQL client programs
postgresql92-9.2.3-2PGDG.rhel6.x86_64 : PostgreSQL client programs and libraries
...
みたいに検索してくれる。
0695NAME IS NULL
2013/10/08(火) 07:21:42.78ID:???スレッドの疎結合を徹底させろ
yumの話はyumのスレでやらせろ
0696NAME IS NULL
2013/10/08(火) 16:52:30.94ID:???0697NAME IS NULL
2013/10/08(火) 17:10:29.77ID:???別にそれで要求を満たしてるなら、それでいいよ。
0698NAME IS NULL
2013/10/08(火) 17:16:35.20ID:???同じ環境ならサブバージョンで元に戻せるのですか?
0699NAME IS NULL
2013/10/08(火) 17:35:11.61ID:???WALログ管理するだけでいいだろ
0700NAME IS NULL
2013/10/08(火) 17:54:06.86ID:???0701NAME IS NULL
2013/10/08(火) 18:19:52.48ID:???コールドバックアップなら元に戻せる
0702NAME IS NULL
2013/10/08(火) 21:00:41.76ID:???0703NAME IS NULL
2013/10/09(水) 22:00:02.50ID:???ローカルホストだとうまくいくんだけど
リモートホストだと2バイト文字がうまく流れませぬ。
対処方法とかない??
0704NAME IS NULL
2013/10/10(木) 12:03:08.03ID:???client_encoding合ってる?
0706NAME IS NULL
2013/10/10(木) 17:08:22.26ID:???0707NAME IS NULL
2013/10/10(木) 18:04:35.64ID:???「psql -l」で、データベースのencodingが見られる。
あと、ローカルやリモートのOSやLANGなんかがわからないけど、
psqlの\encodingの設定とかが必要なのかも。
http://www.postgresql.jp/document/9.2/html/app-psql.html
0708NAME IS NULL
2013/10/11(金) 09:53:59.22ID:???0710NAME IS NULL
2013/10/11(金) 20:24:08.45ID:???707氏はまともだろ?俺もそうしてるけど。。。
SET client_encoding TO 'SJIS'; みたいに。
0711NAME IS NULL
2013/10/12(土) 06:34:56.97ID:9bkwkB92hstoreじゃRedisの代替はやっぱり厳しいかな?
0712NAME IS NULL
2013/10/14(月) 03:38:24.85ID:???0713NAME IS NULL
2013/10/31(木) 19:48:50.61ID:???方法を教えてください。
(ODBCは、PCに設定が必要なのでOLE DBで)
Npgsqlを使用してOLE DB接続しようとすると、
複数ステップのOLE DB の操作でエラーが発生しました。
と表示されてしまうのです。
宜しくお願いします。
0714NAME IS NULL
2013/11/01(金) 13:42:33.66ID:???0715NAME IS NULL
2013/11/01(金) 19:05:37.69ID:???0716NAME IS NULL
2013/11/03(日) 21:40:27.09ID:WS2i8ToBhttp://wiki.algomon.com/wiki/%E4%BA%8B%E5%89%8D%E9%9D%A2%E6%8E%A5
0717NAME IS NULL
2013/11/04(月) 09:50:46.60ID:???begin;
create table tbl ....;
insert into tbl ...;
update tbl set ...;
commit;
ここで、どれかのSQL文が失敗したときに、後続のSQL文をスキップする機能はありませんか。
今だと、たとえば create table 文が失敗したときに、後続のinsert文やupdate文も実行されようとして、エラー出力が増えてしまいます。こんなかんじで。
$ psql < foobar.sql
ERROR: current transaction is aborted, commands ignored until end of transaction block
ERROR: current transaction is aborted, commands ignored until end of transaction block
希望としては、SQLがエラーになった時点でメッセージを出してpsqlコマンドが終了してほしいです。
こういうことはできますか。よろしくお願いします。
0718NAME IS NULL
2013/11/04(月) 10:33:58.83ID:???ttp://www.postgresql.jp/document/7.2/programmer/plpgsql-control-structures.html
0719NAME IS NULL
2013/11/04(月) 12:27:00.52ID:???さすがに
ttp://www.postgresql.jp/document/9.3/html/plpgsql-control-structures.html
最新版にしてくれ
0720NAME IS NULL
2013/11/04(月) 12:44:43.26ID:???多少迷ったけどバージョンが分からんかったから古いの出しとけばええやろ的な。
0721NAME IS NULL
2013/11/04(月) 12:57:57.87ID:???しかし、なんぼなんでも 7.2 はないわなw
0722NAME IS NULL
2013/11/04(月) 15:13:13.86ID:???そのページはいろんな制御構文があるのでどれを使えばいいのでしょうか。
・エラーがあったらreturnする
・エラーがあるかどうかif文でたしかめる
0723NAME IS NULL
2013/11/04(月) 15:21:20.18ID:???pgbashとか使えそうな気が
0724NAME IS NULL
2013/11/04(月) 15:28:17.81ID:???どれを使えばいいのかは作ってる本人にしか分からんよ。
例えば1つ目の処理を行ってエラーが出たらreturnするとか、もしくは別の処理するのかとか、そんなの仕様次第。
分からんなりに一つ一つ試していけばいいんじゃね?
0725NAME IS NULL
2013/11/04(月) 15:30:15.96ID:???実行環境が7.2かもしれんし(震え声
一番上のほうに出したgoogle先生が悪いということで一つ。
0726NAME IS NULL
2013/11/05(火) 01:02:17.27ID:???psql コマンドで 一連のSQL 流し込む時に どうやったら その場で中止できるか、が元の質問でしょう?
たぶん ON_ERROR_STOP 環境変数を (適当に) 設定すればいいんじゃないかな
0727NAME IS NULL
2013/11/05(火) 07:14:06.37ID:???えー?
ちゃんと>717で
> ここで、どれかのSQL文が失敗したときに、後続のSQL文をスキップする機能はありませんか。
> 希望としては、SQLがエラーになった時点でメッセージを出してpsqlコマンドが終了してほしいです。
って書いてますよね?これで伝わらないのかよ…
0728NAME IS NULL
2013/11/05(火) 07:44:06.17ID:???ありがどうございます!
\set ON_ERROR_STOP ON を先頭につけたら、
エラーが発生した時点で終了するようになりました!
まさに希望する動作そのものです。
ttp://stackoverflow.com/questions/4480381/postgres-sql-fail-on-script-error
重ねて、ありがとうございました。
#それに比べて、的外れな回答を上から目線でする>724って・・・
#これだからエンジニアはコミュ障(r
0729NAME IS NULL
2013/11/05(火) 09:01:39.23ID:???おおすまんな、それ見落としてたわ。
0730sage
2013/11/05(火) 19:52:33.00ID:yhatM0Qn0731NAME IS NULL
2013/11/12(火) 14:38:33.22ID:???0732NAME IS NULL
2013/11/12(火) 14:59:53.32ID:???レプリケーションなら本体だけでできるし
0733NAME IS NULL
2013/11/12(火) 17:10:06.33ID:g6OOuhKa0734NAME IS NULL
2013/11/13(水) 08:45:21.37ID:???→Oracleは高いし、無償版は容量制限がねぇ…
→Postgresにしよう、でも壊れたら業務が止まるんでしょ?
→じゃあ多重化しよう、ググったらpgpool2ってのがいいらしいぞ ←イマココ
社内システムだから切り替えは手動でも構わないので、
標準のストリーミングレプリケーションを使っての
Active-Standbyでも十分っぽいですね。
0735NAME IS NULL
2013/11/13(水) 09:08:05.49ID:???停止時間よりも、ハードディスク故障かアプリ側のバグでの論理的なデータ破壊が怖そう。
レプリケーションを使うにしろ、そのあたりも考えたほうがいいよ。
0736NAME IS NULL
2013/11/13(水) 11:48:12.27ID:???0737NAME IS NULL
2013/11/13(水) 12:02:24.10ID:???前提が全ておかしい
「壊れたら業務が止まる」のはどのDBでもいっしょ
0738NAME IS NULL
2013/11/13(水) 12:05:19.59ID:???0739NAME IS NULL
2013/11/13(水) 13:50:55.92ID:???0740NAME IS NULL
2013/11/13(水) 14:27:41.05ID:???自分が有休取ってる時に止まって電話がかかってこない程度には
しておいたほうがいいな
0741NAME IS NULL
2013/11/13(水) 14:31:17.29ID:???0742NAME IS NULL
2013/11/13(水) 17:06:05.24ID:???って気はしたけど、どうでもいい
0743NAME IS NULL
2013/11/13(水) 19:33:11.18ID:???日次トランザクションデータのフォルダに置いて、
プログラムからそれをテーブルっぽく参照・更新している
と言う画期的?なシステムなので、RDB化したいのです…。
色々皆さんのおっしゃるとおりおかしなシステムなので、
もうちょっと前提条件から詰めなおしてきます。
0744NAME IS NULL
2013/11/13(水) 22:00:26.49ID:???下手にいじると大海嘯が起きるぞ
0745NAME IS NULL
2013/11/13(水) 23:08:34.25ID:+r/WxRJl前任?はそこまでの規模になる前にどうにかすべきだったね。
まぁ、一回でRDBMSに移行しようとせずに、部分的にはじめるのが吉。
0746NAME IS NULL
2013/11/14(木) 06:00:58.70ID:???0747NAME IS NULL
2013/11/14(木) 20:13:03.46ID:???プロが作れば100MBぐらいで収まるものでも、
アホが作ると11GBぐらいすぐに無くなっちゃうんだよ。
0748NAME IS NULL
2013/11/15(金) 23:03:11.62ID:6G3KwFUpXPでも7でも結果は同じ、\dataの中のポスグレconfが見つからないってさ・・・
ググリまくって丸1日やったけどもう疲れたあきらめて寝ますzzz
あ・・・上のほうに何か書いてあるっぼい?けどもう眠いやw明日見ヨット
0749NAME IS NULL
2013/11/16(土) 08:12:06.32ID:???> \dataの中のポスグレconfが見つからないってさ・・・
これ某システムのポスグレで発生して困ってる
0750NAME IS NULL
2013/11/16(土) 20:04:38.45ID:C6OwC7TPもしくは情報を出そう
0751NAME IS NULL
2013/11/16(土) 22:45:41.80ID:???ああ、すまん
普通に動作してたんだが、ちょっと不注意でディスクフルにしてからおかしくなったんよ
仮想マシンでスナップショットとってて、そこまで巻き戻して今は正常に動作してるから切羽詰まってる訳じゃないんだが、再発するとやだから誰か似たような経験した奴いないかなぁって
postgresql.conf はちゃんとあるし、権限も問題ないし、原因が全く特定できない
0752NAME IS NULL
2013/11/24(日) 20:13:40.54ID:???それか、文字セットに応じた文字数をカウントしてくれてますか?
0753NAME IS NULL
2013/11/24(日) 21:45:19.99ID:???文字数。EUCでもUTF8でも「あ」は長さ1としてカウントされる
0754NAME IS NULL
2013/11/24(日) 22:52:31.59ID:???ありがとうございます。安心しました。
やっぱりPostgresは日本語(マルチバイト?)対応最強ですね。
心強いです
0755NAME IS NULL
2013/11/25(月) 15:39:37.81ID:???PostgreSQLとPHPで私が組んだ業務システムがあります。
この度、多言語化(とりあえず中文)してくれとの要望が出てきたのですが、今、OS(Linux)もPostgresもPHPも全て文字セットはEUC-JPで統一してます。
やはり全てをUTF-8とかに変換する必要がありますか?
現在のEUCで格納されてるPostgresのデータをUTFに変換することは可能ですか?
0756NAME IS NULL
2013/11/25(月) 15:51:38.28ID:???クライアントの文字コード指定できるしね。
pg_upgradeとかリカバリーとかは使えない
何かとあるからUTF8に統一した方がいいと思うよ
0757NAME IS NULL
2013/11/25(月) 15:52:24.98ID:???必要性はちとわからんが
変換方法は
pg_dumpでエンコーディング指定してダンプを取ってリストアすればいけるよ
0758757
2013/11/25(月) 15:53:05.91ID:???0759NAME IS NULL
2013/11/25(月) 21:44:00.13ID:???>>757
pg_dump の ーE オプションで encoding を指定して出力できることを確認しました。
ありがとうございます。
話はそれますが、私は1.0未満のバージョン時代から Linux を利用してきた経緯から、ずっと EUC-JP で通してきたのですが、いまでは端末が Mac、サーバが Linux になってしまい、けっこう苦労してます(笑)
途中何度も UTF に移行しようと思ってたんですが、のびのびになってました。
こんな大規模で国際的なシステム(笑)になる前に移行しておけば良かった…
申し遅れました。私 >>755, >>752 です。
0760NAME IS NULL
2013/11/25(月) 23:00:07.84ID:1RY9W7N40761NAME IS NULL
2013/11/25(月) 23:14:30.82ID:???そうですよ
たしか 0.96
0762NAME IS NULL
2013/11/25(月) 23:41:11.09ID:???まぁ、なぜEUC-JPで通してしまうようなことをしてしまったかは、過ぎたことなので置いといて、
ちょこちょこリフレッシュしたほうが何かと苦労せずに済むと思います。
0763NAME IS NULL
2013/11/25(月) 23:52:06.52ID:???当時、Linux 上で日本語を使う場合は、JE というものを別途インストールする必要があり、それが EUC-JP 前提だったんですよ。
けっこう長くそういう時代が続きました。
0764NAME IS NULL
2013/11/26(火) 14:17:43.07ID:???LinuxがFreeBSDにだいぶ劣っていた時代だな。
日経にネガキャンされてJEがない=日本語が使えないと誤解をばらまかれたのは
FreeBSD陣営としてはかなりの痛手だった。
0765NAME IS NULL
2013/11/26(火) 15:00:45.15ID:???0766NAME IS NULL
2013/11/26(火) 15:46:48.68ID:???0767NAME IS NULL
2013/11/26(火) 17:38:40.32ID:???商売けがなかったのが敗因だろう
0768NAME IS NULL
2013/11/27(水) 01:54:33.60ID:???0769NAME IS NULL
2013/11/27(水) 15:06:09.34ID:???海外で流行ってるの?
いまだに日本だけだと思ってた
ただ、やっぱりなんか注目されてきた気はする。
MySqlを使い続けることへの問題に気がついたのかな?
0770NAME IS NULL
2013/11/27(水) 15:26:48.73ID:???コミュニティが活性化するのは偉大な進化をもたらすかもしれない。
0771NAME IS NULL
2013/11/27(水) 15:31:37.13ID:???オラクルと性能比較とかさせられたよ、蔵に
全く問題なかった
誰もがしってる世界的な通信キャリアに導入した。
まぁ、ある一部門だけど
0772NAME IS NULL
2013/11/27(水) 15:34:25.29ID:???PostgreSQLはいろいろ順風だな
0773NAME IS NULL
2013/11/27(水) 15:35:44.57ID:???ある陣営からの
0774NAME IS NULL
2013/11/27(水) 15:48:45.23ID:???0775NAME IS NULL
2013/11/27(水) 16:16:30.58ID:???http://www.google.co.jp/trends/explore?q=mysql+postgresql#q=postgresql&cmpt=q
0776NAME IS NULL
2013/11/27(水) 16:17:52.71ID:???こっち
http://www.google.co.jp/trends/explore?q=postgresql#q=postgresql&cmpt=q
0777NAME IS NULL
2013/11/27(水) 16:36:15.96ID:???0778NAME IS NULL
2013/11/27(水) 17:55:28.90ID:???0779NAME IS NULL
2013/11/28(木) 02:32:51.84ID:???>>777
傾向はMySQLも同じだね。
ちなみにHadoopは激増してる。
しかし、postgresもMySQLもCubaが一番興味持ってるつうのは
どういう事なんだろ?
0780NAME IS NULL
2013/11/28(木) 18:47:41.05ID:???どの陣営?
0781NAME IS NULL
2013/11/29(金) 22:59:22.38ID:???アメリカの輸出管理規制でOracleとかが使えないからかな?
0782NAME IS NULL
2013/11/29(金) 23:07:48.47ID:???0783NAME IS NULL
2013/11/30(土) 21:50:13.42ID:???表向き輸出できないけど、実際は入ってるよ。
ウィンドウズもバリバリ使ってるし。
0784NAME IS NULL
2013/11/30(土) 22:03:14.91ID:???Oracleも?
0785NAME IS NULL
2013/11/30(土) 22:06:31.62ID:???そんな当たり前のことをドヤ顔で言われても…
0786NAME IS NULL
2013/12/01(日) 02:50:48.25ID:???そんな当たり前のことを知らずに
781 名前:NAME IS NULL :2013/11/29(金) 22:59:22.38 ID:???
>>779
アメリカの輸出管理規制でOracleとかが使えないからかな?
782 名前:NAME IS NULL :2013/11/29(金) 23:07:48.47 ID:???
そうゆうこと
なんて書く奴もいるし
0787NAME IS NULL
2013/12/01(日) 09:23:51.79ID:???0788NAME IS NULL
2013/12/01(日) 10:35:41.14ID:???0789NAME IS NULL
2013/12/01(日) 11:39:28.75ID:???0790NAME IS NULL
2013/12/01(日) 11:54:05.01ID:???0791NAME IS NULL
2013/12/01(日) 12:04:32.46ID:???あるでしょ?普通に
いまどきDBMSを使わないデータ処理って考えられない
てか、ネタ?
0792NAME IS NULL
2013/12/01(日) 12:09:00.86ID:???0793NAME IS NULL
2013/12/01(日) 12:16:16.46ID:???北のほうがずっとマシだよ
0794NAME IS NULL
2013/12/01(日) 12:45:32.83ID:???0795NAME IS NULL
2013/12/01(日) 22:47:31.69ID:???0796NAME IS NULL
2013/12/01(日) 23:31:02.04ID:???で?
0797NAME IS NULL
2013/12/02(月) 00:18:27.76ID:???ww おめーこそ、で?なにがしたいの?w
0798NAME IS NULL
2013/12/02(月) 00:48:06.13ID:???RDBMSに移行するタイミングを逃した業務システムの例じゃないですかー!
0799NAME IS NULL
2013/12/02(月) 02:07:42.16ID:???ただのあほだったか
0800NAME IS NULL
2013/12/06(金) 13:51:20.58ID:???http://www.postgresql.org/about/news/1492/
0801NAME IS NULL
2013/12/06(金) 14:32:36.78ID:???俺情報に疎すぎ。
0802NAME IS NULL
2013/12/06(金) 15:00:28.45ID:???失敗は絶対に許されないから怖い。
ちなみにDBもアプリも全てソースからビルドしてます。
過去、8.1から8.4に更新した経験が一度あるだけ
0803NAME IS NULL
2013/12/06(金) 15:05:31.34ID:???pg_upgradeあるから前より楽よ
0804NAME IS NULL
2013/12/06(金) 18:02:15.77ID:???どうやっても無理目、がんばってね
0805NAME IS NULL
2013/12/06(金) 21:03:59.54ID:b4kCe0hpN-gram系ならpg_bigm使えばいいかも。
今日、1.1がリリースされたよ。
0806NAME IS NULL
2013/12/06(金) 23:45:07.69ID:???0807NAME IS NULL
2013/12/07(土) 03:25:51.99ID:???無理なら頑張らせるなよ
0808NAME IS NULL
2013/12/07(土) 09:53:37.76ID:???ちゃんとテストして問題点潰せば大丈夫
8.4からならそんなに大きな問題ないでしょ
0809NAME IS NULL
2013/12/07(土) 12:19:24.59ID:???8.1から8.4のときどれくらいかかったんかね
0810NAME IS NULL
2013/12/07(土) 12:30:21.24ID:???0811NAME IS NULL
2013/12/07(土) 13:15:19.85ID:???以下のような場合、
-----------
データベース:
testdb1
testdb2
testdb3
-----------
ユーザ(ロール):
postgres
user1
user2
user3
-----------
権限を
-----------
ユーザ(ロール):
postgres:全データベース
user1:testdb1のみ
user2:testdb2のみ
user3:testdb3のみ
というような設定をpgAdmin�Vで、したいのですが、
うまく行きません。
user1 でログインできても、
ERROR; permission denied for relation testdb1
となります。
できれば、WindowsのpgAdmin�VからLinuxのDBへ設定したいのですが、
Linuxでコマンドによる設定でも、実現できれば構いませんが、
どうしたら設定できますでしょうか?
0812NAME IS NULL
2013/12/07(土) 13:29:22.69ID:???ttp://wiki.postgresql.org/wiki/Running_%26_Installing_PostgreSQL_On_Native_Windows/ja
Win2000で、クライアントとして使ったことがあるのは、8.2.4
サーバーとして(Win2000Serverのことではない)でもいけるんじゃないかな。
サポートはしてないけど、動作する可能性がないわけではないから、
ここで聞くよりは、インストールして、試してみればいいだけのこと。
0813810
2013/12/07(土) 14:41:35.00ID:???8.2.4ってどこにある?
http://www.enterprisedb.com/products-services-training/pgdownload#windows
↑の8.4.19と8.3.23を試したけど、インストーラが起動しなかった。
0814NAME IS NULL
2013/12/07(土) 15:38:46.07ID:???8.2.0は、あったけど。
信頼できる先かどうかは、不明。
postgresql-8.2.0-1.zip
8.2.4 は、自分の手元にあるかな、たぶん。
0815810
2013/12/07(土) 16:07:59.00ID:???ググったらここにあった
http://www.postgresql.org/ftp/binary/v8.2.23/win32/
うまくインストールできて、起動して接続も確認しました。
いろいろいじって楽しんでみます。
ありがとう。
0816NAME IS NULL
2013/12/07(土) 16:16:33.67ID:???8.3からは、Win2000はダメなのかもね。
ちなみに、
v8.2.23 がそうだったか、どうか忘れたけど、
ODBCにバグがあるバージョンがあった。
0817NAME IS NULL
2013/12/07(土) 16:22:35.10ID:???8.2は大丈夫でしょう。
0818NAME IS NULL
2013/12/07(土) 17:31:46.99ID:???Windows 2000とか使ってるんだな。
0819NAME IS NULL
2013/12/07(土) 18:40:50.37ID:???0820NAME IS NULL
2013/12/07(土) 18:54:57.17ID:???100が出たら変えようと思うんだけど、なかなかでないから98で妥協でもいいのかな。
0821NAME IS NULL
2013/12/07(土) 22:53:50.64ID:???XP以降のライセンス縛りが無いから、
W2Kは仮想マシン上での評価/学習用途で未だに活躍中
ちなみにW2Kが実機インストールできるPCはすべて引退した
だから、この8.2情報は個人的にとても嬉しかったりする
PgはLinix/OSX上ばかりで動かしていたけど、
Winでも試してみようかなぁ....
0822NAME IS NULL
2013/12/07(土) 23:56:02.58ID:???どこの世界の話だろう。
評価するなら評価版使えばいいのに、不思議なことをいうなぁ。
0823NAME IS NULL
2013/12/08(日) 00:38:22.22ID:???Windows2000をいまごろ評価/学習ってどうゆうこと?
評価してどうすんの
学習してどうすんの
0824NAME IS NULL
2013/12/08(日) 00:45:23.56ID:???普通に評価するならライセンス縛りなんて言葉は出てこない。
…ちなみにライセンス縛りってアクティベーションのことであってる?(ここがもう不安)
0825NAME IS NULL
2013/12/08(日) 07:09:04.83ID:???XPは重い
VMwareではその差があまりにも大きい
0826NAME IS NULL
2013/12/08(日) 11:15:44.16ID:???評価用なら、今どき、WinXP以降を、持ってない人はそういないだろうし。
0827NAME IS NULL
2013/12/08(日) 13:48:22.82ID:???0828NAME IS NULL
2013/12/08(日) 14:11:29.72ID:???>>822,823
W2Kを評価/学習ではなく、W2K上で動くアプリの評価/学習でした
軽くてアクチの面倒が無いので、W2Kが便利という意味です
>>824
ライセンス的にグレーなのは理解しているのですが、自宅での趣味の範囲なので....
W2Kそのものは(ワレではなく)W98マシンのアプグレ用に購入した正規品です
で、W2Kの話題は板違いなので、この辺で失礼します
お騒がせしました
0829NAME IS NULL
2013/12/08(日) 14:12:38.04ID:???>>>812ですが、言葉が足りなかったようです
>>821の間違いでした
0830NAME IS NULL
2013/12/09(月) 17:55:06.18ID:???>>825の書き込み見てると、2005年ぐらいに思えてくる。。。
0831NAME IS NULL
2013/12/09(月) 18:23:34.40ID:???VM上のXPが重いんだったら実機だってまともに稼働しないよ
0832NAME IS NULL
2013/12/09(月) 20:36:32.67ID:???仕組みは知ってても、その仕組みがどういうときに発揮されるかを知らないとこうなるんだなぁ。。
たとえばNorthwoodならXPは快適に動作するが、仮想マシンは重いよね。
0833NAME IS NULL
2013/12/09(月) 21:31:36.43ID:???俺の棲息範囲だと、開発もテストも本番も全部VMなんだけど。。。
0834NAME IS NULL
2013/12/09(月) 21:45:15.48ID:???0835NAME IS NULL
2013/12/09(月) 22:10:50.83ID:???VMはI/Oの性能や信頼性が怪しいって話も以前は良く聞いたけど、最近は大丈夫なん?
それとも、I/Oがそれほど絡まない用途にお住まい?
0836NAME IS NULL
2013/12/09(月) 22:17:35.85ID:???実機よりよっぽど速いよ。
0837NAME IS NULL
2013/12/09(月) 22:20:12.37ID:???0838NAME IS NULL
2013/12/09(月) 22:26:15.67ID:???金が無い理由でのVMには嫌な記憶しかないわ。特にDBを置く場合は。
0839NAME IS NULL
2013/12/10(火) 03:49:31.22ID:???今は大抵物理HDDを丸ごとマウントできるようになってるよ。
あと、仮想HDDが丸ごとOSのキャッシュに乗っかるサイズに収まるなら、実機より速い。
0840NAME IS NULL
2013/12/10(火) 04:38:18.29ID:???うちの本番DBは無理
FusionIOのノード3台でも結構ぎりなのに
仮想化する利点が全く見あたりません
自分の環境がすべてだと思うなよ
オンプレで物理なんてまだまだ普通にある
0841NAME IS NULL
2013/12/10(火) 04:39:43.31ID:???0842NAME IS NULL
2013/12/10(火) 08:09:23.92ID:???だれも、全部 VM になってるなんて言ってないぞ
0843NAME IS NULL
2013/12/10(火) 09:03:56.57ID:???うちは運用する時のI/Oまで考えて実装しているから、
普通に実装した他所のシステムに比べるとI/Oは1/10以下で済んでいるじゃないかと思う。
実装中やテスト中でもテーブル定義やプログラムを変更してチューンしてるからな。
1から作り直しは無いけど、2から作り直しぐらいなら時々ある。
受託開発や人月契約じゃありえないだろうけど。
0844NAME IS NULL
2013/12/10(火) 15:19:27.00ID:???0845NAME IS NULL
2013/12/10(火) 16:24:01.88ID:???> うちは運用する時のI/Oまで考えて実装しているから、
普通でしょ
0846NAME IS NULL
2013/12/10(火) 16:45:43.08ID:???普通は動けばOKで納品して、1年経ってからチューニングで金取るもんだろ。
0847NAME IS NULL
2013/12/10(火) 17:27:14.25ID:???類は友を呼ぶってやつだね。
君の周りはそんなのばっかりなんだね。
0848NAME IS NULL
2013/12/12(木) 15:33:21.99ID:???WHERE expression = FALSE
の代わりに
WHERE NOT expression
とか書いたやつ
気持ち悪い
0849NAME IS NULL
2013/12/12(木) 23:54:21.70ID:???> WHERE expression = FALSE
この方が気持ち悪いわ
0850NAME IS NULL
2013/12/13(金) 15:49:51.53ID:???0851NAME IS NULL
2013/12/16(月) 05:05:37.41ID:???メモリの割当てくらいでしょ
0852NAME IS NULL
2013/12/16(月) 08:43:04.01ID:???0853NAME IS NULL
2013/12/16(月) 14:11:05.24ID:???0854NAME IS NULL
2013/12/16(月) 17:03:21.43ID:???0855NAME IS NULL
2013/12/16(月) 20:30:45.67ID:???0856NAME IS NULL
2013/12/16(月) 22:57:00.50ID:???0857NAME IS NULL
2013/12/30(月) 05:15:47.43ID:???Npgsqlだけではないと思いますが、
DataReaderを閉じる前に、別のDataReaderを使うと、
There is already an open DataReader associated with this Command which must be closed first.
というエラーが返ってきます。
これを回避するには、接続文字列に
Preload Reader = true
を追加ということでしたが、この指定をすることによる弊害はないですか?
デフォルトでPreload Reader = true ではないところを見ると、
なにか影響があるのかなと、多少気になります。
ちなみにDataReaderが重なってしまうのは、LISTENとNOTIFYを使用していて、
DataReaderで、あるデータを読み込もうとした瞬間にメッセージをひろってしまい、
そのNotificationイベントでまた別のテーブルデータをDataReaderを使用して、
読み込みなおそうとするためです。
0858NAME IS NULL
2013/12/31(火) 10:05:48.44ID:???まとめて読むのは、時間もかかるし、メモリも食う。
0859NAME IS NULL
2014/01/09(木) 03:36:49.93ID:???Integer型のフィールドを、ビット単位に 0 か 1 かで判定して select する方法はありませんか?
Postgres8.4 です。
0860NAME IS NULL
2014/01/09(木) 04:28:59.70ID:???0861NAME IS NULL
2014/01/09(木) 18:29:34.10ID:???0862NAME IS NULL
2014/01/10(金) 00:17:24.52ID:???0863NAME IS NULL
2014/01/10(金) 12:18:45.34ID:???0864NAME IS NULL
2014/01/10(金) 20:25:48.62ID:???0865NAME IS NULL
2014/01/10(金) 20:47:45.84ID:???0866NAME IS NULL
2014/01/11(土) 10:18:44.25ID:???0867NAME IS NULL
2014/01/11(土) 12:45:41.31ID:???0868NAME IS NULL
2014/01/11(土) 13:59:28.95ID:???0869NAME IS NULL
2014/01/22(水) 13:41:13.55ID:???http://lets.postgresql.jp/documents/technical/9.1/1#syntax
を参考に
テーブル定義:t_tbl
id int
dataA int DEFAULT 0
dataB int DEFAULT -1
modDate timestamp
WITH
val AS (SELECT((1001, 0, -1, '2014-01-23 23:59:59')::t_tbl).*),
upd AS (UPDATE t_tbl SET modDate = val.modDate FROM val
WHERE t_tbl.id = val.id
RETURNING t_tbl._id )
INSERT INTO t_tbl SELECT * FROM val WHERE id NOT IN (SELECT id FROM upd)
というようにして、とりあえず望みは達せられました。
ただ
val AS (SELECT...., 0, -1, .....),
のデフォルト値を入れてる"0, -1"の部分を、こういう具体的な値ではなく
何かデフォルト値であることを示すもの(INSERTでのDEFAULTみたいなもの)が
何か使えないでしょうか。
SQLを生成する(ホスト)プログラムもデフォルト値の具体的な値を知らねば
ならない(定数定義しなければならない)ということを避けたいと思っています。
0870NAME IS NULL
2014/01/22(水) 15:55:11.91ID:???たぶん何かを勘違いしているだけで、実際不満はないんじゃないかと思う。
0871NAME IS NULL
2014/01/22(水) 17:29:58.97ID:???難しいと思う。システムカタログの pg_attrdef でも見に行けば
デフォルト値のハードコードは回避できるかもしれないけど。
(DEFAULT)::row_type をしたいってことなんだろうけど、
ここの row_type はテーブルじゃなくて、複合型という扱いなんだよね。
テーブルの列はデフォルト値を持てるけど、複合型の段階では持てないから
スマートにはいかないな。なんちゃって MERGE での限界なのでは。
0872NAME IS NULL
2014/01/22(水) 20:42:29.92ID:5ZLJW5ibPostgreSQLのオンラインマニュアルは
DBMSの中では屈指のわかりやすさだと思う。
日本語文書がすぐに出てくるのもいいところ。
0873NAME IS NULL
2014/01/22(水) 22:05:47.73ID:???0874869
2014/01/22(水) 22:37:41.08ID:???そう、そんな感じの何かの手段が有れば、変更に対しての弱さを
一種類減らせるので、手段が有れば…と検索したりしましたが…でした。
ありがとうございました。>871
0875NAME IS NULL
2014/01/23(木) 03:01:57.90ID:???insert → defaultが使われるから問題ない(ですよね?)
upadte → 更新したい値を設定するから、default値は関係ない(ですよね?)
どっちかがはずれなんだと思うんですけど、分からないです。
0876NAME IS NULL
2014/01/23(木) 03:03:15.39ID:???なわけもないですよね…orz
0877NAME IS NULL
2014/01/23(木) 10:46:46.97ID:???::t_tblってするときに、全カラムの「値」を書きたくないってことだと思う。
ただ >>869 の書いたSQLを見ると、UPDATE では modDate しか触ってないんだよね。
これって、これを書く担当も dataA や dataB は更新しない (= デフォルト値がある) って
知っているってことなんじゃないか? それなら、最後も
INSERT INTO t_tbl(id, modDate) SELECT id, modDate FROM val ...
と普通に列リストを書けば、デフォルト値は使われる気はする。
最初の行構築の時には dataA, dataB には NULL でも入れておくか、
そもそも t_tbl にキャストせず、単に (int, timestamp) のペアだけを作ってもいい。
0878869
2014/01/23(木) 14:24:53.24ID:???WITH
val AS (SELECT 1001::int AS id, '2014-01-23 23:59:59'::timestamp AS mod),
upd AS (UPDATE t_tbl SET modDate = val.mod
FROM val
WHERE t_tbl.id = val.id
RETURNING t_tbl.id )
INSERT INTO t_tbl (id, modDate) SELECT id, mod FROM val WHERE id NOT IN (SELECT id FROM upd)
これでプログラム側でSQL生成のときに、
いちいちデフォルト値を書かせなくともよくなりました。
ありがとうございました >みなさま
>>875
単に定義はなるべく一ヶ所にしたい。そうでないと仮に仕様が変わったときに…
というようなことです。
ただまあ、データ受け取ったプログラム側で「このカラムがデフォルト値だったら…」
なんて処理があったら、結局同じことではありますが。
0879NAME IS NULL
2014/01/23(木) 17:52:38.46ID:2Sh6JlGf設定しても効いてないのとスーパーユーザーのsearch_pathがサーバー
再起動でpublicに戻ってしまうのは何がおかしいのでしょう?
=#ALTER USER testuser SET search_path TO testschema;
みたいな感じでやったんですが全然testschemaを見てないみたいです
明示的にtestschema.testtableみたいな感じだと見れます
環境はPostgreSQL9.3.2 Ubuntu14.04-AMD64です
0880NAME IS NULL
2014/01/23(木) 18:08:26.87ID:2Sh6JlGfpostgresql.confで設定してやらないと戻っちゃうんですね
0881NAME IS NULL
2014/01/23(木) 22:46:49.99ID:???次のようなテーブルが有ります。
テーブル "支払伝票"
カラム | 型
---------------------------
番号 | serial
支払先 | integer
金額 | integer
支払日 | date デフォルト now()
同じ月に同一の支払先を重複させないようにしたいです。
例えばこんな感じで…
# ALTER TABLE 支払伝票 ADD constraint 支払月 unique(女子番号,to_char(支払日,'YYYYMM'));
もちろんエラーになりますが。
支払月に相当する列を追加するしか方法はないですか?
0882NAME IS NULL
2014/01/23(木) 22:48:41.34ID:???誤記です
× ALTER TABLE 支払伝票 ADD constraint 支払月 unique(女子番号,to_char(支払日,'YYYYMM'));
◯ ALTER TABLE 支払伝票 ADD constraint 支払月 unique(支払先,to_char(支払日,'YYYYMM'));
0883NAME IS NULL
2014/01/23(木) 22:51:15.91ID:???それ以前に、1歴月に1回しか支払えないってのは、仕様上のバグだと思うんだが。
実際の支払日を使ってしまうと、月末締めなら、例えば今月なら1/4, 1/31の2回支払日があるから駄目だろ。
0884NAME IS NULL
2014/01/23(木) 23:00:35.07ID:???ありがとうございます。
実際には末締めで翌月10日(以降)の支払いなので1歴月に2回支払うことはないんです。
支払先が多くて複数の担当者が店頭で現金払いしているので、間違い(二重払い)が多くて困ってます。
0885NAME IS NULL
2014/01/23(木) 23:22:59.06ID:???値はトリガーとかでセットすればいいんじゃね
0886NAME IS NULL
2014/01/23(木) 23:26:55.60ID:???そうですね、
変な小細工を考えるよりそれが一番良さそうです
ありがとうございました
0887NAME IS NULL
2014/01/24(金) 10:11:25.55ID:???ALTER TABLE の構文上の制約だから、 CREATE UNIQUE INDEX ならいける。
CREATE UNIQUE INDEX ON 支払伝票 (
支払先,
CAST(extract('year' from 支払日) AS smallint),
CAST(extract('month' from 支払日) AS smallint)
);
to_char は IMMUTABLE 違反でエラーになるので extract で。
0888NAME IS NULL
2014/01/24(金) 11:01:15.65ID:???ありがとうございます
すばらしい!
新しく列、支払月を追加すること無く、以下のUNIQUE INDEXで見事に出来ました。
CREATE UNIQUE INDEX 支払月 ON 支払伝票 (
支払先,
CAST(extract('year' from 支払日) AS smallint),
CAST(extract('month' from 支払日) AS smallint));
PostgreSQL 奥が深いです。まだまだ勉強します。
ありがとうございました。
0889NAME IS NULL
2014/01/24(金) 21:13:09.87ID:???そんなところで、支払日から年月抽出してUNIQUE INDEX作っても、使えるシステムにはならないと思うんだ。
0890NAME IS NULL
2014/01/24(金) 23:35:40.77ID:???わからんけど、店頭のスタッフにタブレットでも持たせるんじゃない?
0891NAME IS NULL
2014/01/25(土) 00:35:22.85ID:???そんなこと言ってもしょうがないだろ
だいたい SQL や Postgres と関係ないし
余計なお世話だわな
0892NAME IS NULL
2014/01/26(日) 14:52:42.20ID:kqHC0R1ihttp://uni.2ch.net/test/read.cgi/newsplus/1389346716/
今後の犯罪傾向の予測と考察
事前面接の犯罪に憤りをもつ派遣社員や失業者が比較的警備の薄い厚労省、労働局、
労基署にいく可能性がある。しかし他の可能性を考えてみた。
事前面接中に派遣先と派遣元の担当者をターゲットにしたテロである。
派遣社員の事前面接は違法であり、事前面接中に派遣社員が暴れだした場合は
警察に通報できない状況となる。つまり通報すれば労基法6条違反、
職安法44条違反などの犯罪事実が報道で日本中に周知され、グッドウィル事件の再現となる可能性
が出てくる。そのため被害者である派遣先・派遣元が隠蔽しようとする奇妙なテロがおきうるのだ。
(※グッドウィル摘発のきっかけとなった事故は、現場の派遣スタッフの意図的な自傷事故だったとする説がある。)
事前面接
http://ja.wikipedia.org/wiki/%E4%BA%8B%E5%89%8D%E9%9D%A2%E6%8E%A5
事前面接等の違法行為の被害者として憲法において保全されるはずの権利
である給料が中間搾取され、労働契約も不安定なものとなり、派遣社員の
なかでは法治国家への不信が増大しているとの議論が存在する。
略〜過去・現在に事前面接下の派遣による中間搾取の損害を受
けた被害者は数百万人にのぼり、憲政史上、類をみない数の中間搾取による
犯罪被害者が創出され、それらの犯罪行為が放置されたことになる。犯罪
被害者も20〜40歳程度の若年・中年層が過半数を占めており、人口構成上、
公共の治安への影響力はきわめて強いといえる。被害者のなかで国(厚生
労働省・労働局・労働基準監督署)および司法(検察庁・警察)に対しての
不信や怒りが高まれば、大きな社会不安をおこす可能性はある。
0893まんちゃん ◆SYZTEPEAHI
2014/01/28(火) 18:16:49.01ID:W220JcwH0894NAME IS NULL
2014/02/01(土) 13:49:47.40ID:???create temp table で作ったテーブルなんですが、明示的に drop table しなくてもセッションが切れたら自動的に drop されるんですよね?
PHP から扱ってるんですが、どうもログを見ると drop されてないケースがたまにあるみたいで、なんで?って思ってます。
セッション毎に create temp table する前に drop table したほうがいいんですか?
warning はでますけど
0895NAME IS NULL
2014/02/01(土) 15:04:56.72ID:???セッション切れてないんじゃない?
pg_pconnect使ってるとか。
0896NAME IS NULL
2014/02/01(土) 21:06:00.13ID:???0897NAME IS NULL
2014/02/01(土) 22:50:19.70ID:???0898NAME IS NULL
2014/02/02(日) 20:45:10.93ID:???0899NAME IS NULL
2014/02/02(日) 22:27:13.45ID:???0900NAME IS NULL
2014/02/03(月) 01:36:24.32ID:???遅くなりましたが、ありがとうございました。
ひょっとしてそれが原因かも知れないです。
pg_pconnect使ってます。
明日(月曜日)試して報告します
0901NAME IS NULL
2014/02/03(月) 02:07:12.81ID:???dropしないDBMSあったと思う。
テーブルの定義は事前に用意しておくんだけど、内容はセッションごとに空からはじまるようなの。
0902NAME IS NULL
2014/02/03(月) 08:01:54.91ID:???それが普通じゃないのか?
0903NAME IS NULL
2014/02/03(月) 09:02:40.37ID:???0904NAME IS NULL
2014/02/03(月) 10:06:40.54ID:???事前に用意しておくって、そんなのだったら、一時テーブルじゃないじゃん。
0905NAME IS NULL
2014/02/03(月) 11:10:36.08ID:???>>902
postgresqlはレコードにとどまらず、テーブル定義自体が一時的。
>>904
内容が一時的かつセッション独立なので、目的は果たせるかと。
改修でレイアウト変更するときにクエリの変更だけで解決できないのは不便な気もするけどね。
0906NAME IS NULL
2014/02/03(月) 18:34:43.49ID:???つーことは、それがデファクト・スタンダードだろ。
0907NAME IS NULL
2014/02/03(月) 18:51:14.07ID:???そんなことを吠えられても
0908NAME IS NULL
2014/02/03(月) 18:52:33.20ID:???事前に用意しないで毎回CREATE TABLEして使う???
CREATE TABLEしている時点で、事前に用意してるという意味だろ?
CREATE TABLEしたにも関わらずメタデータが見えないなら欠陥だろ。
0909NAME IS NULL
2014/02/03(月) 19:02:31.26ID:???create temp table だろ?
あるセッション中でだけ有効なテーブルを作成するってこと
セッション終了で自動削除
意味わかってんのかいな?
あほなんかいな?
0910NAME IS NULL
2014/02/03(月) 23:55:56.31ID:???Oracle使ってる人間からすると909の書き込みは、こいつアホ?って思っちゃうわ。
CREATE (TEMP) TABLEしたものが存在しないという点に違和感感じない時点で麻痺してるんだろうけど。
0911NAME IS NULL
2014/02/04(火) 00:29:42.14ID:???やっぱあほやったか
CREATE TEMP TABLEしたものが存在しないってどうゆうことだ?
CREATE したのにw
おまえだけがオラクル使ってるわけじゃねぇよ、ボケ
0912NAME IS NULL
2014/02/04(火) 00:35:40.09ID:???Oracleの話は別でやってもらって良いかな
0913NAME IS NULL
2014/02/04(火) 00:49:31.38ID:???postgresでは一時テーブルはセッション終了時に自動的にdropされるって前提で 894 さんも訊いてるのに、Oracleは〜とか言い出す奴がいるから話がややこしくなるw
0914NAME IS NULL
2014/02/04(火) 03:36:58.11ID:???セッション中は存在するよ。
oracleでもwithあるでしょ。ああいうのだと思えばいい。
0915NAME IS NULL
2014/02/04(火) 22:04:38.51ID:???0916NAME IS NULL
2014/02/05(水) 14:19:47.89ID:???学習者は別としてだけどね。
かく言う俺もゴールド取得のためだけに無駄な勉強したなぁ
0917NAME IS NULL
2014/02/05(水) 23:11:50.30ID:???開発もOracleに実装されているのと同じような機能を載せて行ってるし。
0918NAME IS NULL
2014/02/06(木) 00:01:10.91ID:???ましてやOracle互換品などではない
それを実装仕様の差異について、Oracleの実装仕様が正しいことが
当然であるかのような思考しかできない>>910は、
アホと言われてもしかたないだろう
0919NAME IS NULL
2014/02/06(木) 00:52:03.72ID:???×Oracle使ってる人間からすると
○Oracleしか知らない人間からすると
ところで、PostgreSQLのトランザクションって、CREATE TABLEとかで勝手にコミットされる?
0920NAME IS NULL
2014/02/06(木) 01:14:14.13ID:???> 開発もOracleに実装されているのと同じような機能を載せて行ってるし。
ずいぶん偏った見方をするもんだね。
そういう部分もあるし、そうじゃない部分もある。
たとえば、RDBMSとしてそれはどうなのよというmysqlの機能を取り込んだりなど。
>>919
DDLもrollbackできる。
0921NAME IS NULL
2014/02/06(木) 08:38:20.03ID:???Oracleとの互換性が高いというのはPostgreSQLが使われるきっかけとして無視できないものだし、
Oracleとの互換性の高さを求めているユーザーも多い。
だからこそEnterpriseDBってものがあるわけだしな。
PostgreSQLの良さは、Oracleの機能も含めて色んな機能を貪欲に取り込んでいるところなのに、
Oracleの実装仕様は間違いだみたいな考え方の奴が多くなると
せっかくメジャーになりかけてるのに、またマイナーDBに逆戻りするよ。
もっとも、PostgreSQLに対するOracleとの互換性は、最近はあまり求められなくなってきているから
Oracleを否定してPostgreSQL独自仕様をどんどん増やせば良いんじゃないかな。
0922NAME IS NULL
2014/02/06(木) 08:55:49.03ID:???0923NAME IS NULL
2014/02/06(木) 10:38:13.64ID:???http://www.postgresql.jp/document/9.3/html/sql-createtable.html#SQL-CREATETABLE-COMPATIBILITY
標準に従わないのは珍しいから、標準仕様は不便だと考えられたんだろうね。
MySQL, SQL Server, DB2 も、Postgresに似た動作っぽい。
それこそ、Oracleに限定せず「色んな機能を貪欲に取り込んだ」結果なんじゃないかな。
0924NAME IS NULL
2014/02/06(木) 10:39:55.39ID:???被るところだったw
SQL標準が一般的でないって書いてるしね
0925NAME IS NULL
2014/02/06(木) 11:41:49.59ID:???突然何を?しかも内容が途中でひっくり返ってるから意図がわからない。
0926NAME IS NULL
2014/02/06(木) 14:00:09.48ID:???小器だなw
0927NAME IS NULL
2014/02/06(木) 16:58:14.09ID:???0928NAME IS NULL
2014/02/07(金) 16:07:59.74ID:???英語に強くないので本家のサイトにはあまり行きません。
PostgresSQLプロジェクトにはいくら感謝しても感謝しきれないです。
尊敬に近い気持ちがあります。
0929NAME IS NULL
2014/02/07(金) 17:25:07.23ID:???ttp://www.postgresql.org/about/donate_pg_org/
0930NAME IS NULL
2014/02/07(金) 20:19:15.29ID:???10%ぐらい手数料取ってもいいから。
0931NAME IS NULL
2014/02/07(金) 22:41:57.59ID:???君のビジネスチャンスということだな
0932NAME IS NULL
2014/02/08(土) 01:42:29.42ID:???なんで PayPal で寄付できないの?
得体の知れない企業・団体にクレジットカード番号を渡したくないんだけど
0933NAME IS NULL
2014/02/08(土) 12:12:03.31ID:???0934NAME IS NULL
2014/02/08(土) 17:27:34.78ID:???アメリカと違って寄付は税金面で控除にもならないし
せめて一口千円くらいに設定したら日本でも個人で寄付する人は多いと思うんですが
MySQLには寄付は不要でしょうけど
0935NAME IS NULL
2014/02/09(日) 01:29:07.30ID:???0936NAME IS NULL
2014/02/09(日) 16:50:51.79ID:???MySQLには不要だろうけど。
0937NAME IS NULL
2014/02/10(月) 12:32:03.15ID:???各国の支部の運営用のお金は支部でやってるんね
日本は会員制度でお金集めてるんだな
本体は10ドルからのクレカでの寄付か
支部だとPaypal使えるところもあるんな
企業スポンサーが結構多くて
本体のお金はあまり苦労してないらしいけどな
>>932
あっちの国の人はそういう感覚ないからな
0938NAME IS NULL
2014/02/10(月) 17:28:45.57ID:???>企業スポンサーが結構多くて
>本体のお金はあまり苦労してないらしいけどな
これは何の情報?
ソースはあるんだろうね?
0939NAME IS NULL
2014/02/10(月) 17:52:02.16ID:???>あっちの国の人はそういう感覚ないから
なことねぇわw
おまえ、知ったかばっかだな、全部
0940NAME IS NULL
2014/02/10(月) 18:18:16.49ID:???0941NAME IS NULL
2014/02/10(月) 18:20:46.35ID:???なじみの店だとカード見せないでもカード決済してくれちゃうくらい
おおらかだよな、向こうはw
0942NAME IS NULL
2014/02/10(月) 18:21:57.12ID:???0943NAME IS NULL
2014/02/10(月) 18:28:24.45ID:???>「なじみの店だと」
ばかなの?
0944NAME IS NULL
2014/02/10(月) 18:30:06.57ID:???0945NAME IS NULL
2014/02/10(月) 18:59:44.18ID:???こいつ、ほんまアホやなwww
ほんじゃ、おまえ、俺の「なじみの店」行ってみ?
0946NAME IS NULL
2014/02/10(月) 20:50:16.93ID:???国は?
0947NAME IS NULL
2014/02/10(月) 22:55:12.37ID:???おれに聞かれtも、寄付する気がなければやめれば
はなから・・・
0948NAME IS NULL
2014/02/11(火) 00:07:08.75ID:???おまえに聞いてねぇよ
ひっこんでろ、ぼけなす
0949NAME IS NULL
2014/02/11(火) 19:54:50.94ID:???つりか
0950NAME IS NULL
2014/02/14(金) 18:52:39.30ID:/dUFM7gI今、postgreSQLの入っているサーバーに、phpPGAdminをインストールし、GUIからデータベースをエクスポートしたいのですが、
以下のエラーが出て、サーバー内のデータベースが取得できません。
---------------------------------
SQLエラー:
ERROR: database with OID XXXXX(ここはOIDの値) does not exist
文:
SELECT pdb.datname AS datname, pr.rolname AS datowner, pg_encoding_to_char(encoding) AS datencoding,
(SELECT description FROM pg_catalog.pg_description pd WHERE pdb.oid=pd.objoid) AS datcomment,
(SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=pdb.dattablespace) AS tablespace,
pg_catalog.pg_database_size(pdb.oid) as dbsize
FROM pg_catalog.pg_database pdb LEFT JOIN pg_catalog.pg_roles pr ON (pdb.datdba = pr.oid)
WHERE true
AND NOT pdb.datistemplate
ORDER BY pdb.datname
Fatal error: Call to a member function recordCount() on a non-object in /usr/local/apache2/htdocs/phpPgAdmin/classes/Misc.php on line 1897
---------------------------------
ちなみに、環境は以下の通りです。
---------------------------------
postgreSQL ver : 8.1.5
php ver : 5.2.5
phpPgAdmin ver : 5.0.5
---------------------------------
どなたか、解決方法やアドバイスございましたら、ご教示下さい。
0951NAME IS NULL
2014/02/14(金) 20:21:24.22ID:???なおるかどうか分からんけど、Vacuum Fullしてみたら?
0952NAME IS NULL
2014/02/14(金) 20:25:31.44ID:???0953NAME IS NULL
2014/02/15(土) 15:10:48.18ID:???色んなグラフィカル?なツールがあるみたいだけど、DBシステムの変更やメンテナンスとかのレベルで便利だとはとても思えない
0954NAME IS NULL
2014/02/15(土) 18:33:46.15ID:w0wORzUIご助言ありがとうございます。
Vacuum Fullしましたが、依然変わらずです。
>952さん
psqlでは、きちんとデータベースやテーブル、またそのレコードは見えています。
0955NAME IS NULL
2014/02/16(日) 12:31:43.03ID:???直接pg_dump呼んだらいいのに、、と思ってしまうが。
0956NAME IS NULL
2014/02/16(日) 12:32:23.96ID:???http://blog.webcreativepark.net/2006/01/11-201906.html
0957NAME IS NULL
2014/02/18(火) 02:29:08.20ID:???PostgresSQLの拡張、最高だわ
0958NAME IS NULL
2014/02/18(火) 05:20:06.94ID:???知ってからの使用頻度たるやかなりのものだわ。
0959NAME IS NULL
2014/02/18(火) 10:45:42.35ID:???writable cteとして?
それとも削除した行をとっておくとか削除した行に対する処理?
0960NAME IS NULL
2014/02/18(火) 11:19:49.91ID:???0961NAME IS NULL
2014/02/18(火) 14:08:00.85ID:???それが俺も一番便利と思ったところ。
それ以外にも実際に色々と使い勝手が多くて、RETURNING句覚えてから使いまくってるけど、
恥ずかしいからここには書けないw
0962NAME IS NULL
2014/02/18(火) 14:16:49.21ID:???さらに to_char で文字列に変換したりしたうえで
0963NAME IS NULL
2014/02/18(火) 20:11:47.83ID:???postgresql 8.2 or later を require されて発狂した記憶があるのであまり賛同できない
使う側としては便利だけど。。。
0964NAME IS NULL
2014/02/18(火) 21:56:09.01ID:???subqueryでマルチカラム取得はダメだよと怒られちゃいます
create table tbl_a (id varchar, cn varchar, ou varchar);
insert into tbl_a values (select id from tbl_b), (select cn, ou from tbl_c);
0965NAME IS NULL
2014/02/18(火) 22:42:38.61ID:???tbl_b と tbl_c を結合というわけにはいかない状況?
0966NAME IS NULL
2014/02/19(水) 10:15:17.96ID:???良い方法って以前の話だけど
0967NAME IS NULL
2014/02/19(水) 10:35:32.04ID:???やりたいことの説明が出来ていない
0968NAME IS NULL
2014/02/19(水) 15:33:26.51ID:???脳みそが足りてない
0969NAME IS NULL
2014/02/19(水) 16:31:44.94ID:???アンカ間違えてるよ>>968でそ
0970NAME IS NULL
2014/02/19(水) 16:35:36.74ID:???0971NAME IS NULL
2014/02/19(水) 17:50:05.83ID:???0972NAME IS NULL
2014/02/19(水) 17:51:20.46ID:???なんで発狂するわけ?
で、完治したの?
0973NAME IS NULL
2014/02/22(土) 21:09:38.04ID:???(PostgreSQL 9.3)
0974NAME IS NULL
2014/02/22(土) 21:22:48.10ID:???select to_timestamp('2014-01-01 27:30:00','YYYY-MM-DD HH24:MI:SS');
0975NAME IS NULL
2014/02/22(土) 21:25:14.74ID:???>select to_timestamp('2014-01-01 27:30:00','YYYY-MM-DD HH24:MI:SS');
おお、すばらしいです!
「postgresql to_timestamp」でググったら、マニュアルはこちらのようなので、読んで見ます。
ttp://www.postgresql.jp/document/9.3/html/functions-formatting.html
ありがとうございました。
0976NAME IS NULL
2014/02/23(日) 01:54:19.48ID:???'2014-01-01 27:30:00' みたいなのだって日付/時刻型書式としてちゃんと受け入れてくれるから特段変換とか考えなくていいよ。
日付/時刻型書式の文字列をtimestamp型に変換してるだけだから
0977NAME IS NULL
2014/02/23(日) 01:56:04.84ID:???だって問題ない
0978NAME IS NULL
2014/02/23(日) 02:48:11.25ID:???0979NAME IS NULL
2014/02/23(日) 03:31:23.26ID:???何をやって?
0980NAME IS NULL
2014/02/24(月) 01:00:47.18ID:???psql=> select '2014-02-24 01:30:00'::timestamp - '2014-02-23 00:00:00'::timestamp;
-[ RECORD 1 ]------------
?column? | 1 day 01:30:00
これを、「25:30:00」のように表示させたいのですが、どうすればいいでしょうか。
to_char('HH:MI') を使っても、01:30 のような表示になってしまいます。
0981NAME IS NULL
2014/02/24(月) 03:16:44.39ID:???0982NAME IS NULL
2014/02/24(月) 16:51:43.81ID:???http://www.postgresql.org/about/news/1506/
レス数が950を超えています。1000を超えると書き込みができなくなります。