PostgreSQL Part.11©2ch.net (752レス)
1-

1 転載ダメ©2ch.net [ageteoff] 2016/05/03(火) 15:42:33 ID:???
PostgreSQL (ぽすとぐれすきゅーえる, ぽすとぐれす) について語るスレです。

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

●前スレ
PostgreSQL Part.10
2chスレ:db
2 2016/05/03(火) 15:50:06 ID:???
あらあら、次の舞踏会はこちらで開かれるのかしら?
3 2016/05/03(火) 15:56:07 ID:BecA4HPo(1)
●過去スレ
PostgreSQL 2テーブル目 (WebProgから派生)
2chスレ:db
PostgreSQL & pgsql-jp ML 3テーブル目
2chスレ:db
【Windows】 PostgreSQL8 Part.1 【対応】 (実質part4)
2chスレ:db
PostgreSQL Part.5
2chスレ:db
PostgreSQL Part.6
2chスレ:db
PostgreSQL Part.7
2chスレ:db
PostgreSQL Part.8
2chスレ:db
PostgreSQL Part.9
2chスレ:db
PostgreSQL Part.10
2chスレ:db

●関連過去スレ
■   PostgreSQLのことならここで聞け   ■ (初心者part1)
2chスレ:db
■   PostgreSQLのことならここで聞け   ■ (初心者part2)
2chスレ:db
PostgresSQLについて語ろう (雑談part1)
2chスレ:db
PostgreSQLについて語ろう where OID=2::oid (雑談part2)
2chスレ:db

●関連スレ
2ch検索
http://find.2ch.net/index.php?STR=PostgreSQL
WebProg/PostgreSQL 2テーブル目
2chスレ:php
4 2016/05/03(火) 19:08:46 ID:???
>>3
あ、忘れてたありがと
5 2016/05/04(水) 00:35:18 ID:???
おっつおっつ
6 2016/05/12(木) 22:34:05 ID:???
PostgreSQL 9.6 beta1
http://www.postgresql.org/about/news/1668/

9.5から9.1のマイナーバージョンアップも。
7 2016/05/12(木) 22:59:09 ID:???
マイナーバージョンアップではなく
累積バグ修正と呼べといつも思う
8 2016/05/14(土) 07:25:02 ID:???
http://semver.org
9 2016/05/17(火) 12:51:27 ID:???
DBバージョン上げたら
insert into a select * from a_tmp where code = 1

列"b_flg"は型booleanですが、式は型textでした
ってエラー出るようになったんだけど、
CREATE CASTで対処するのが正しい道?
10 2016/05/17(火) 13:09:37 ID:???
>>9
エスパー求む
11 2016/05/17(火) 13:23:11 ID:???
>>9
そこで動かなくなるのってかなり古かったんじゃないか?

a_tmp にある b_flg に相当する列の型を boolean に変更すべきだろう。
CREATE (TEMP?) TABLE a_tmp (LIKE a) すればミスを避けられる。
12 2016/05/17(火) 13:28:59 ID:???
エスパーじゃないとわかんないのかw

説明すると
table a
code integer
b_flg boolean

table a_tmpも同じ構成のテーブル

で、booleanのフィールドがTRUEとか返すんだけど、それが
文字列だと思われてエラーになるみたい
# 8.4くらいから?
13 2016/05/17(火) 14:40:07 ID:???
>>11
もちろんa_tmpの b_flgの型はbooleanです。
14 2016/05/17(火) 15:00:34 ID:???
って自分でテーブル作って同じの試したらうまくいく・・・・

select b_flg from a_tmp

TRUEが帰ってくる時と
tが帰ってくる(こっちでエラーになる)のあるんだけど、何違うんだろ・・・
15 2016/05/17(火) 15:07:39 ID:???
「boolean型」なのか「text型にbooleanっぽい文字列が入ってる」のかをきちんと確認したほうが良い。
特にSELECT INTOでテーブルを作るような場合だと型指定が曖昧な場合がある。
16 2016/05/17(火) 15:33:03 ID:???
>>9
> DBバージョン上げたら
何から何に上げたのか

> insert into a select * from a_tmp where code = 1
どこでこれを実行しているのか

> table a_tmpも同じ構成のテーブル
本当か?

> で、booleanのフィールドがTRUEとか返すんだけど
何で実行するとそうなるのか

> 文字列だと思われて
思う主体は何か?
17 2016/05/17(火) 15:35:23 ID:???
> って自分でテーブル作って同じの試したらうまくいく
うまくいく環境と、うまくいかない環境の差異は何か
18 2016/05/17(火) 15:42:34 ID:???
>>9
> CREATE CASTで対処するのが正しい道?
なわきゃない
19 2016/05/17(火) 20:41:11 ID:???
なぜテーブル定義を確認しないんだろう...
20 2016/05/18(水) 13:16:35 ID:???
確認した結果同じ構成だったんだろ
知らんけど
21 2016/05/21(土) 16:12:15 ID:???
質問: shared_bufferを16GBに設定しているのに、実際にはそれ以下しか使用されてないっぽいんだが、どういうことでしょうか。

sahred_bufferの値が16GBであることを確認

$ grep shared_buffers /etc/postgresql/9.3/main/postgresql.conf
shared_buffers = 16GB # min 128kB

メモリ使用量を確認 (ファイルキャッシュを除くと9.781GBしか使われてない)

$ free -m
total used free shared buffers cached
Mem: 64384 64065 319 0 0 54284
-/+ buffers/cache: 9781 54603
Swap: 65487 120 65367

なおデータサイズは40GB程度。最大のテーブルが20GBくらいあって、それを全件検索してもメモリ使用量が増えない。
そのせいで性能が頭打ちになっている。だれかヒントおねがい。
22 2016/05/21(土) 17:03:47 ID:???
>>21
pg_buffercache を突っ込んで調べてみるのはどうか?
http://www.postgresql.jp/document/9.5/html/pgbuffercache.html
23 2016/05/21(土) 17:42:43 ID:???
>>21
SeqScan時は一定量のメモリでやり繰りする機能が入っているから全メモリは使わない。
強制的に共有バッファに乗せたいなら pg_prewarm を試すといい。

そして、「そのせいで性能が頭打ち」は誤解だったと気付くだろう。
24 2016/05/23(月) 09:04:57 ID:???
>>22
ありがとうございます。こんな便利なモジュールがあるんですね。
とはいえインストールするのはDBAの許可が下りなさそうなので困りました。

>>23
ありがとうございます。pg_prewarmのmanualページを読むと、
「プレウォームはキャッシュが主に空のとき、一般的には起動時にもっとも有用です。」
とありました。起動時以外は効果は薄いんでしょうか。困りました。

> そして、「そのせいで性能が頭打ち」は誤解だったと気付くだろう。

そうなんでしょうか。今のところ、HDDから最初に読み込むときに時間がかかるのが問題であり、2回目以降は高速なのでSQLは問題ないかなと思ってます。
たとえば select * from users where id = :user_id のようなSQLがあったら、
2回目以降はメモリキャッシュに載っているので数msですが、ユーザごとの最初の
アクセスではHDDから読み込むので、2秒〜3秒かかってしまうのが問題です。
それで、shared_bufferを16GB設定しているのに実メモリは9GBしか使っていない
(ファイルキャッシュを除く)のを改善すれば解決できると思っているんですが、
甘いでしょうか。
25 2016/05/23(月) 12:01:07 ID:???
>>24
ああ、全件検索が遅いのが問題なんじゃなくて、
全件検索ではウォームアップができないのが問題だったのか。
それなら pg_prewarm が適するだろうね。
テーブルだけでなくインデックスも prewarm が必要か確認して欲しい。
「起動時以外は効果は薄い」とは「あくまで準備体操」の意味。
全ユーザが一通りアクセスした後のメモリ状態になるまでの時間を早めているだけだからね。
26 2016/05/23(月) 13:51:14 ID:???
>>24
> たとえば select * from users where id = :user_id のようなSQLがあったら、
> 2回目以降はメモリキャッシュに載っているので数msですが、ユーザごとの最初の
> アクセスではHDDから読み込むので、2秒〜3秒かかってしまうのが問題です。

そのたとえが本当に適切なたとえだとしたら、遅い原因はキャッシュにのってないから
じゃなくて、インデックスがないからだな。
27 2016/05/24(火) 03:22:09 ID:???
さすがにそれは考えにくいから例えが適切じゃなかったんだろうなぁ。
28 2016/05/26(木) 23:53:37 ID:6qsFySzK(1)
すみません、教えてください。
Windows7/8/10などのクライアントOSにPostgreSQL本体をインストールして、他のPCからそのDBに
アプリケーションで読み書きした場合、Windowsのライセンス違反になるのでしょうか?

http://itpro.nikkeibp.co.jp/article/COLUMN/20060811/245694/?rt=nocnt
↑のような制限にかかってしまうのでしょうか?

もしライセンス違反なら、PowerGresのような製品でWindows7/8/10で動作すると書いてあるん
ですが、これはスタンドアロン限定ということですか?
29 2016/05/27(金) 06:22:59 ID:???
>>28
ここで聞くより、PowerGres販売元にメールで聞いた方が良いと思う。
30 2016/05/27(金) 09:17:39 ID:???
>>28
問題ない
31 2016/05/27(金) 09:51:30 ID:???
ありますん
32 2016/05/27(金) 11:01:47 ID:???
そんなめんどくさいライセンス違反なんてあるの?
33 2016/05/27(金) 13:32:13 ID:???
>>28
> アプリケーションで読み書きした場合、Windowsのライセンス違反になるのでしょうか?
なる。
というのが本当かどうかを知りたければ、まずこれを読め。
http://www.haruru29.net/blog/windows-share-files-20-devices/
納得できなければ、MSに聞くのが手っ取り早い。

> もしライセンス違反なら、PowerGresのような製品でWindows7/8/10で動作すると書いてあるん
> ですが、これはスタンドアロン限定ということですか?
じゃないの?
34 2016/05/27(金) 14:04:58 ID:Swk78D+S(1/2)
通信したらいかんの?
windows上のブラウザからデータもらうWebサーバーはみんなライセンス違反?
35 2016/05/27(金) 14:14:16 ID:???
IISなら限定的に公開してもいいという話もあるな
ただし、同時接続数10までというのは、同時に10台のクライアントからと言う意味ではなく、
connectionの数という話もある
普通のブラウザでアクセスすると、同時に5本くらいアクセスに行くから、台数でいうと2台までとか
そんな制限になってるらしい

まあ、Microsoftに質問するのが確実だろうが
(ただ、Web情報によれば、サーバ用途は駄目と言われるらしいが)
36 2016/05/27(金) 14:16:17 ID:???
すごく古い情報だが、
http://www.atmarkit.co.jp/fwin2k/win2ktips/207rest_iis_pro/rest_iis_pro.html
> Webサーバの機能制限
> TCPでの同時接続数は最大10個まで
> TCPレベルでの同時接続数が最大で10個までに制限される。1人のユーザーが多数のTCP接続を開始している場合には、それだけで10個のTCP接続がいっぱいになってしまう可能性がある

これが正しい情報で、なおかつ今でも有効だとすると、事実上Webサーバとしては機能しないだろう
37 2016/05/27(金) 14:18:08 ID:???
ちなみに、MS謹製のサーバ機能以外のアプリは、問い合わせると軒並み駄目だと言われる気がする
(個人の想像です)
38 2016/05/27(金) 14:27:21 ID:???
MSっていろいろめんどくさいね。そら逃げますわぁ
39 2016/05/27(金) 14:30:32 ID:???
Linuxにしとくのがいいよ
40 2016/05/27(金) 15:05:36 ID:???
ですよねぇ。ソース持ってきてメイク、インストールでそのまんま使えるのが
気持ちいい。ぼろいPCでもまぁ動く。社員DBぐらいならそんなもんで十分。
41 2016/05/27(金) 18:07:55 ID:tcTYH4g1(1)
電話でpowergressに聞くと、クライアントOSにポスグレをインストールして他の端末からアクセスしても問題ないはず、そんな問い合わせはないとのこと。メールじゃないから正式回答かは分からないが。

しかしマイクロソフトによると、それはNG。ポスグレがインストールされてる端末のアプリケーション(ポスグレ本体)を介して結果を返しているので、サーバにしか許されない操作をしていることになるらしい。

ベンダーによっては、本来NGの使い方を製品ページで提案してるが、知らないか、都合よく解釈してるか、どっちかなんだろうな。
42 2016/05/27(金) 18:18:17 ID:???
>>41
> 電話でpowergressに聞くと、クライアントOSにポスグレをインストールして他の端末からアクセスしても問題ないはず、そんな問い合わせはないとのこと。メールじゃないから正式回答かは分からないが。
なんと質問したかによるな。
ちゃんとWindowsのライセンス的に問題はないか聞いたか?
43 2016/05/27(金) 22:30:53 ID:Swk78D+S(2/2)
MSがダメっつーんだからダメだろ
44 2016/05/27(金) 22:37:49 ID:???
サーバ用途なのにWindows Serverを使わないような貧乏人にはLinux (サポート無し) がお似合い
45 2016/05/27(金) 22:47:11 ID:???
そら そーだなぁ と言って離れてくわけです
46 2016/05/27(金) 22:52:18 ID:???
シュリンクラップ契約は有効かっつー話はあるけどな。
47 2016/05/27(金) 23:15:31 ID:???
Excel共有なんかどうなるんだろ
48 2016/05/28(土) 00:08:57 ID:???
真面目な人ほど、コンプライアンスに厳しい会社ほど
従います。当たり前ですけど。
49 2016/05/28(土) 05:27:06 ID:???
>>47
共有するブックを置くファイルサーバーが Windows Server ならなんの問題もない
つか、コンテンツの問題じゃないし
50 2016/05/28(土) 14:55:10 ID:???
unique制約のindexをdescで作れますか
51 2016/05/28(土) 15:04:12 ID:???
>>50
目的は?
52 2016/06/16(木) 13:48:47 ID:???
PostgreSQLはストレージがHDDじゃなくてSSDでも装置の特性に合ったバッチリ最適なデータの出し入れをしてくれますか?
53 2016/06/16(木) 18:05:16 ID:???
してくれません
プランコストの調整くらいはできるが
基本的にはOSに丸投げ
54 2016/06/16(木) 18:13:16 ID:???
そうでしたか。。
55 2016/06/16(木) 18:37:11 ID:???
他のRDMSではSSD用に処理が分かれているのだろうか
56 2016/06/16(木) 20:43:11 ID:???
さすがに本体の処理は変わらんと思うがキャッシュ機構とかは専用設計があるみたい
http://www.oracle.com/technetwork/jp/database/articles/pickup/index-1598207-ja.html
57 2016/06/17(金) 01:21:21 ID:???
ストレージが比較的高速なサーバー機だとデフォルトのrandom_page_costが
全然合わないから調整必須、ってのは昔からだな。
58 2016/06/17(金) 02:49:21 ID:???
当然 I/O statは見るわなぁ。
59 2016/06/19(日) 00:37:31 ID:???
一度仕事で使ってみたい
60 2016/06/19(日) 10:44:21 ID:sk8gYGH6(1)
ボードゲームのオリジナルオーダー制作
http://www.logygames.com/logy/ordermade.html
簡単に本格自作ボードゲームが作れる時代到来!!
http://jellyjellycafe.com/3869
100円ショップでボードゲームを自作しよう
https://sites.google.com/site/jun1sboardgames/blog/makeyourbg
ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」
http://boardgamelove.com/archives/boardgame-make-1/
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
http://gigazine.net/news/20150820-board-game-crowdfunding/
61 2016/08/13(土) 22:21:08 ID:N8gS1gM5(1)
■質問内容
検索結果の続きを取得するSQLを教えてください。

■詳細
データベースを検索し、100件ずつ取得しようとしています。

検索結果は100件ずつ取得するため、検索結果が100件以上ある場合は、
続きとして101件目から取得することになります。

通常はOFFSET句を使用して続きを取得しますが、更新の多いデータベースのため、
レコード数が増減する可能性があり、OFFSETで特定の数スキップすると問題が発生します。
例えば、続きの100件を取得する際、スキップする最初の100件の中に新たなレコードが1件増えると、
最初の100件取得した際の100件目のレコードと、続きの101件目のレコードは同じものになります。

WHERE句で解決を試みようとも思いましたが、ユニークな値でORDER BYをかけているわけではないため、不可能と判断しました。
ORDER BYで対象としているカラムの結果は同じ値のものも含まれており、
その同じ値の続く途中で件数によって区切られた場合、そのカラムをWHEREの対象にはできません。

助けてください。
62 2016/08/13(土) 22:33:42 ID:???
ソートキーは当然あるわけだから、「前回の最後のソートキーより大きな100件」を取得すればいいんでない?
63 2016/08/14(日) 03:22:54 ID:???
>>62
すいません、ソートキーというのはORDER BYで指定するカラムですよね。
そのカラムの値がユニークではないので、その値で判定できないんです。
このようなイメージです。

〜 ORDER BY score;

score
--------
2500
2800
3000
3000
3000
3400

例えばこれで3件ずつ取得するためにLIMIT 3を付けた場合、3000のスコアの途中まで取得されるので、
WHERE > 3000というような形で指定できないのです。
64 2016/08/14(日) 06:01:16 ID:???
テンポラリテーブル作って検索結果突っ込んでおくとか
主キーだけでも
65 2016/08/14(日) 07:47:45 ID:???
>>61
続きを取得している間はトランザクションは開きっぱなしなのか?
更新されても結果が変化しないのが条件なら
開きっぱなし or 全行を一時保管しておく必須がある

トランザクションを切るなら並行する更新結果も見えてしまうが
更新によって主キーとソートキーが変わらないならば
「欲しいソートキー + 主キー」を条件にすればいい
ORDER BY score, pkey WHERE score >= 前回のscore AND pkey > 前回のpkey
66 2016/08/14(日) 09:02:39 ID:???
実はユニークな主キーもないとか言い出したりして。
67 2016/08/15(月) 07:13:36 ID:???
うぎゃ
68 2016/09/04(日) 22:19:47 ID:???
次のバージョンって10になるのん?
69 2016/09/06(火) 00:48:17 ID:???
>>68
9.6
70 2016/09/11(日) 05:22:55 ID:???
どうしてPostgreSQLはMySQLに勝てたのか
71 2016/09/16(金) 04:50:18 ID:???
>>63
score が 3000 であるレコード同士の順番をどうにかして決めておかないとだめだよ。

> 例えば、続きの100件を取得する際、スキップする最初の100件の中に新たなレコードが1件増えると、
> 最初の100件取得した際の100件目のレコードと、続きの101件目のレコードは同じものになります。
これを嫌うということは、最新のデータが表示されない可能性があるけれど、それはそれでいいってことかな
72 2016/09/16(金) 13:33:25 ID:???
>>61
> 最初の100件取得した際の100件目のレコードと、続きの101件目のレコードは同じものになります。
逆にそっちの方がいいかもよ。

仮に、scoreの降順でデータを取得するとする。
最初の検索時は350件あって、データの変更がなければ4ページ。
最初は1位5000点)〜100位(4000点)が表示される。

で、その表示中に、4001〜4999点に10人追加されたとする。
その結果、旧91〜100が101〜110位になる。

そのとき、「次」を見たときどうなってるのが良いか?
・旧101〜200位が表示される
・新101〜200位が表示される

今は、こうあるべきだと思っている。
> ・旧101〜200位が表示される
考えて欲しいのは、そこで「前」を見たらどうなっているべきか。
また、新たに追加された10人はいつどのようにすれば見られるのか。
73 2016/09/16(金) 14:14:33 ID:???
1か月も前のレスなのに急にどうした
74 2016/09/16(金) 14:54:50 ID:???
直近のコメントが今日だったから、最近の話題かと勘違いしたわ
75 2016/09/17(土) 23:30:54 ID:???
>>70
実際に勝ってるかどうかは知らないけど、もし勝つとしたら商用無料のせいだろ
76 2016/09/18(日) 00:08:28 ID:???
MySQLだって無料で商用に使えるが。
77 2016/09/18(日) 00:15:45 ID:???
実際のデータがわからんからなんとも
78 2016/09/18(日) 00:36:42 ID:eQBFaRs8(1)
MySQLってまだあるの?
79 2016/09/18(日) 20:47:05 ID:???
>>78
冗談にしてはパンチが足りない
80 2016/09/18(日) 23:51:08 ID:???
MySQLってマラあるの?
81 2016/09/18(日) 23:53:40 ID:???
>>78
まいしーくぅえる
82 2016/09/18(日) 23:55:26 ID:???
>>80
ねえよ
83 2016/09/19(月) 00:40:19 ID:???
まらぁ?
84 2016/09/19(月) 11:36:37 ID:???
ドゥーユーリーメンバー
85 2016/09/19(月) 19:01:18 ID:???
トゥエニファスタァイ セプテンバー
86 2016/09/19(月) 19:53:19 ID:???
セプテンバーレイン
87 2016/09/20(火) 09:13:48 ID:???
9月のあめーはつめたくて〜
88 2016/09/20(火) 11:13:36 ID:???
稲垣吾郎?
89 2016/09/22(木) 00:47:57 ID:???
MySQLと比べるなら、機能的に圧勝してるから比べ物にならないでしょ
PostgreSQLが勝ったというよりは、MySQLが選択肢に入ってなかっただけ
普段からPostgreSQLを使ってるとこは、わざわざMySQLを習得するコストがもったいないから
MySQLをさける傾向がある
90 2016/09/22(木) 02:23:39 ID:???
やってる人はやってるんだろうし、ご勝手にって感じかな。
もう気にかけることも無くなったね。
91 2016/09/22(木) 08:05:39 ID:???
10年前は熱いライバルだったのに
92 2016/09/22(木) 08:34:13 ID:???
比べるなら相手はMariaじゃないの?
もしくはローエンドOracleか
93 2016/09/22(木) 14:05:12 ID:???
レンタルサーバで使える所少なかったり
CMSとかで対応してないとかあるからなー
そういう場面ではMySQL選ばざるを得ない
94 2016/09/22(木) 20:36:09 ID:???
え?
PostgreSQLって流行ってるの?
もう廃れてきているのかと思った
どこの記事見ても、MySQLとかMariaDBとかばっかりだもんな
95 2016/09/22(木) 20:54:32 ID:???

96 2016/09/22(木) 21:40:30 ID:???
C++のような存在
97 2016/09/22(木) 21:42:08 ID:???
postgresql はC
MySQL は C++
98 2016/09/22(木) 21:56:20 ID:???
いわゆるWeb系はMySQL系
基幹業務にOracleを使う金がないとこはPostgreSQL
ベンチャー企業が中小相手にシステム構築するときに使う

MySQL系の記事が多いのは最近やっと使えるようになってきたからだよ
AWSの影響もあるだろうしな

言語に例えるんだったらPostgreSQLはVBやPHPで
MySQLはJavascriptのイメージだな
99 2016/09/22(木) 22:00:36 ID:???
ほー 詳しい
100 2016/09/22(木) 22:18:22 ID:???
VBやPHPに例えられても嬉しくないなぁ
レンタルサーバで使えない問題は Heroku Postgres で多少はマシになったか
1-
あと 652 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 4.564s*