diff --git a/doc/FAQ_japanese b/doc/FAQ_japanese index 94766e0610..1789fd5481 100644 --- a/doc/FAQ_japanese +++ b/doc/FAQ_japanese @@ -1,851 +1,837 @@ - -
--原文最終更新日: Tue Oct 17 00:21:20 EDT 2000 - (ファイル日付は 03/02/2001) -
-現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us)
-
-この文書の最新版は -http://www.PostgreSQL.org/ -で見ることができます。 -
+PostgreSQL(ポストグレス・キュー・エル)についてよくある質問(FAQ)
-プラットホームに特有の質問については:http://www.PostgreSQL.org/users-lounge/docs/faq.html
-
に回答があります。
-
+原文最終更新日: Tue Mar 13 09:41:02 EST 2001 + +現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us) + +この文書の最新版は http://www.PostgreSQL.org/ で見ることができます。 + +プラットホームに特有の質問については:http://www.PostgreSQL.org/users-lounge/ +docs/faq.html +に回答があります。 -
-
[訳注:
- (以下、訳者による注釈を [訳注: と ] とで囲んで記します。)
+ (以下、訳者による注釈を [訳注: と ] とで囲んで記します。)
- http://www.PostgreSQL.org/ にアクセスすると http://postgresql.nucba.ac.jp/
+ http://www.PostgreSQL.org/ にアクセスすると http://postgresql.nucba.ac.jp/
にリダイレクトされ、"Not Found" になってしまうことがあります。その場合は、
- http://www.PostgreSQL.org/index.html
- にアクセスしてみてください。
+ http://www.PostgreSQL.org/index.html
+ にアクセスしてみてください。
-日本語版については以下の通りです。
+ 日本語版の製作については以下の通りです。
-最終更新日: 2001年03月03日
-訳者: 桑村 潤 (Jun Kuwamura <juk@jp.postgresql.org>)
+ 最終更新日: 2001年03月20日
+ 翻訳者: 桑村 潤 (Jun Kuwamura
-
-
-
- -
-
+5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうの +はなぜですか? +5.2) PostgreSQL 用に書いた粋な新しい型や関数は、どうすれば寄贈できますか? +5.3) タプルを返す C言語の関数はどのように書きますか? +5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜ +ですか? -
PostgreSQL は POSTGRES データベース管理システムの改良版で、次世代 DBMS 研究用のプロトタイプです。PostgreSQL は POSTGRES の強力なデータ・モデルと豊富なデータ・タイプ(型)を内包しつつ、POSTGRES で使われた PostQuel 問い合わせ言語を、拡張した SQL のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利用できます。 +1.1) PostgreSQL とは何ですか? -
PostgreSQL のすべての開発は、PostgreSQL 開発メーリングリストに参加しているインターネット上の開発者チームで行なっています。現在の座長は Marc G. Fournier ( scrappy@PostgreSQL.org )です。(以下に参加の仕方があります。)現在、このチームが PostgreSQL開発のすべての 面倒を見ます。 +PostgreSQL は POSTGRES データベース管理システムの改良版で、次世代 DBMS 研究用の +プロトタイプです。PostgreSQL は POSTGRES の強力なデータ・モデルと豊富なデータ・ +タイプ(型)を内包しつつ、POSTGRES で使われた PostQuel 問い合わせ言語を、拡張した +SQL のサブセットに置き換えています。PostgreSQL は無料で完全なソースを利用できま +す。 -
PostgreSQL 1.01 の著者は Andrew Yu と Jolly Chen でした。その他大勢の人々がこのコードの移植、テスト、デバグ、および、改良に貢献しました。PostgreSQL の派生元コードである POSTGRES はカリフォルニア大学バークレイ校において、 Michael Stonebraker 教授の指揮のもと、多くの学生、卒業生、職業プログラマたちの努力により作られました。 +PostgreSQL のすべての開発は、PostgreSQL 開発メーリングリストに参加しているイン +ターネット上の開発者チームで行なっています。現在の座長は Marc G. Fournier ( +scrappy@PostgreSQL.org )です。(以下に参加の仕方があります。)現在、このチームが +PostgreSQL開発のすべての面倒を見ます。 -
バークレイにおけるこのソフトウェアのもとの名前は Postgres でした。SQL の機能が追加された 1995 年にその名前は Postgres95 に変更されました。1996 年の終りにその名前は PostgreSQL に変更されました。 +PostgreSQL 1.01 の著者は Andrew Yu と Jolly Chen でした。その他大勢の人々がこの +コードの移植、テスト、デバグ、および、改良に貢献しました。PostgreSQL の派生元コ +ードである POSTGRES はカリフォルニア大学バークレイ校において、 Michael +Stonebraker 教授の指揮のもと、多くの学生、卒業生、職業プログラマたちの努力によ +り作られました。 -Post-Gres-Q-L.(ポスト - グレス - キュー - エル) と発音します。 +バークレイにおけるこのソフトウェアのもとの名前は Postgres でした。SQL の機能が +追加された 1995 年にその名前は Postgres95 に変更されました。1996 年の終りにその +名前は PostgreSQL に変更されました。 Post-Gres-Q-L.(ポスト - グレス - キュー - +エル) と発音します。 -
-
PostgreSQL は下記の著作権に従います。
-
+PostgreSQL は下記の著作権に従います。
[訳注:
正文は英語です。参考として、訳文を併記掲載します。
]
-
-
-PostgreSQL Data Base Management System
-Portions copyright (c) 1996-2000, PostgreSQL Global Development Group -Portions Copyright (c) 1994-6 Regents of the University of California
+ +PostgreSQL Data Base Management System + +Portions copyright (c) 1996-2000, PostgreSQL Global Development Group Portions +Copyright (c) 1994-6 Regents of the University of California Permission to use, copy, modify, and distribute this software and its -documentation for any purpose, without fee, and without a written -agreement is hereby granted, provided that the above copyright notice -and this paragraph and the following two paragraphs appear in all -copies. -
-IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY -FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, -INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS -DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. -
-THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER -IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO -OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR -MODIFICATIONS. -
+documentation for any purpose, without fee, and without a written agreement is
+hereby granted, provided that the above copyright notice and this paragraph and
+the following two paragraphs appear in all copies.
+
+IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
+DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
+PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
+THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
+SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
[訳注:
- POSTGRESQL データベース管理システム
+ POSTGRESQL データベース管理システム
- 部分著作権 (c) 1996-2001, PostgreSQL国際開発チーム
- 部分著作権 (c) 1994-6 カリフォルニア大学本校
+ 部分著作権 (c) 1996-2001, PostgreSQL国際開発チーム
+ 部分著作権 (c) 1994-6 カリフォルニア大学本校
- このソフトウェアとその文書を、如何なる目的でも、無料で、使用許諾書無しに、
- 使用、複写、修正、そして、配布することへの許可を、上記の著作権表示、この段
- 落、および、これに続く二つの段落が、すべての複写に添付される限りにおいて、
- ここにそれを認めます.
+ このソフトウェアとその文書を、如何なる目的でも、無料で、使用許諾書無しに、
+ 使用、複写、修正、そして、配布することへの許可を、上記の著作権表示、この段
+ 落、および、これに続く二つの段落が、すべての複写に添付される限りにおいて、
+ ここにそれを認めます.
- たとえカリフォルニア大学が以下のような損害の可能性について言及していた
- としても.このソフトウェア及び文書の使用上,直接的・間接的・特別・偶然
- もしくは必然的に,生じた失われた利益を含む損害に於いて,いずれの当事者
- に対してもカリフォルニア大学は一切の責任を負いません.
+ たとえカリフォルニア大学が以下のような損害の可能性について言及していた
+ としても.このソフトウェア及び文書の使用上,直接的・間接的・特別・偶然
+ もしくは必然的に,生じた失われた利益を含む損害に於いて,いずれの当事者
+ に対してもカリフォルニア大学は一切の責任を負いません.
- カリフォルニア大学は,特定目的のための商用性及び適合性の暗黙の保証を含
- む,しかしそれに限定されることのない,いかなる保証も明確に放棄します.
- ここにおいて用意されたソフトウェアは「あるがまま」ということを前提とし,
- カリフォルニア大学は維持・補助・更新・改良・修正を用意する義務を負いま
- せん.
+ カリフォルニア大学は,特定目的のための商用性及び適合性の暗黙の保証を含
+ む,しかしそれに限定されることのない,いかなる保証も明確に放棄します.
+ ここにおいて用意されたソフトウェアは「あるがまま」ということを前提とし,
+ カリフォルニア大学は維持・補助・更新・改良・修正を用意する義務を負いま
+ せん.
]
-
-
-
-
著者らは PostgreSQL のコンパイルとテストを次のプラットホーム上で行ないました。(これらのうちのいくつかはコンパイルに gcc が必要です): -
一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずです。リリースの時点で実際にテストを行なったことの報告がなされたプラットホームについてはインストール手引書に列挙してあります。 - -
-
MS Windows プラットホーム上で、libpq C ライブラリ、psql、それとその他のインターフェースは コンパイル可能で、バイナリーが走ります。この場合、クライアントを MS Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走るサーバと通信します。 -
Win32 libpq ライブラリと psql を作るために、win31.mak が配布に含まれてます。PostgreSQLは ODBC クライアントとも通信できます。 - -
現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベースサーバは Windows NT と Win2k 上で稼働しています。配布に含まれるpgsql/doc/FAQ_MSWINあるいはウェブサイトにある MS Windows FAQ をご覧下さい。Microsoft の素のプラットホームに移植する計画はありません。
-
-
PostgreSQL の元の anonymous ftp サイトです: +1.3) PostgreSQL の動作環境は? -
+著者らは PostgreSQL のコンパイルとテストを次のプラットホーム上で行ないました。 +(これらのうちのいくつかはコンパイルに gcc が必要です): - ミラーサイトについては、我々のメイン Web ページをご覧下さい。
+一般的に、最近のUnix互換プラットホームならばPostgreSQLをはしらせられるはずです
+。リリースの時点で実際にテストを行なったことの報告がなされたプラットホームにつ
+いてはインストール手引書に列挙してあります。
-
+1.4) Unix以外の移植版で使えるものは?
+
+クライアント
+
+MS Windows プラットホーム上で、libpq C ライブラリ、psql、それとその他のインター
+フェースはコンパイル可能で、バイナリーが走ります。この場合、クライアントを MS
+Windows 上で走らせて、TCP/IP 経由でサポートされている Unix プラットホーム上で走
+るサーバと通信します。
+
+Win32 libpq ライブラリと psql を作るために、win31.mak が配布に含まれてます。
+PostgreSQLは ODBC クライアントとも通信できます。
+
+サーバ
+
+現在、Cygnus Unix/NT 移植ライブラリの Cygwin を使って、PostgreSQL データベース
+サーバは Windows NT と Win2k 上で稼働しています。配布に含まれるpgsql/doc/
+FAQ_MSWINあるいはウェブサイトにある MS Windows FAQ をご覧下さい。Microsoft の素
+のプラットホームに移植する計画はありません。
+
+1.5) PostgreSQL はどこから手に入りますか?
+
+PostgreSQL の元の anonymous ftp サイトです:
+
+
+ ・ ftp://ftp.PostgreSQL.org/pub/
+
+ミラーサイトについては、我々のメイン Web ページをご覧下さい。
[訳注:
- 以下は日本のミラーサイトです:
+ 以下は日本のミラーサイトです:
- Japan: ftp://mirror.nucba.ac.jp/mirror/postgresql/pub/
- Japan: ftp://ring.ip-kyoto.ad.jp/pub/misc/db/postgresql/
- Japan: ftp://ring.crl.go.jp/pub/misc/db/postgresql/
- Japan: ftp://ring.saitama-u.ac.jp/pub/misc/db/postgresql/
- Japan: ftp://ring.astem.or.jp/pub/misc/db/postgresql/
- Japan: ftp://ring.exp.fujixerox.co.jp/pub/misc/db/postgresql/
- Japan: ftp://ring.jah.ne.jp/pub/misc/db/postgresql/
- Japan: ftp://ring.etl.go.jp.jp/pub/misc/db/postgresql/
- Japan: ftp://ring.asahi-net.or.jp/pub/misc/db/postgresql/
- Japan: ftp://ring.so-net.ne.jp/pub/misc/db/postgresql/
- Japan: ftp://ring.aist.go.jp/pub/misc/db/postgresql/
+ Japan: ftp://mirror.nucba.ac.jp/mirror/postgresql/pub/
+ Japan: ftp://ring.ip-kyoto.ad.jp/pub/misc/db/postgresql/
+ Japan: ftp://ring.crl.go.jp/pub/misc/db/postgresql/
+ Japan: ftp://ring.saitama-u.ac.jp/pub/misc/db/postgresql/
+ Japan: ftp://ring.astem.or.jp/pub/misc/db/postgresql/
+ Japan: ftp://ring.exp.fujixerox.co.jp/pub/misc/db/postgresql/
+ Japan: ftp://ring.jah.ne.jp/pub/misc/db/postgresql/
+ Japan: ftp://ring.etl.go.jp.jp/pub/misc/db/postgresql/
+ Japan: ftp://ring.asahi-net.or.jp/pub/misc/db/postgresql/
+ Japan: ftp://ring.so-net.ne.jp/pub/misc/db/postgresql/
+ Japan: ftp://ring.aist.go.jp/pub/misc/db/postgresql/
]
-
-
-
主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に関することであれば議論ができます。このリストへの参加のは、電子メールの本文(Subject 行ではありません)に次の2行を書いて、 +主要なメーリング・リストは: pgsql-general@PostgreSQL.orgです。PostgreSQL に関す +ることであれば議論ができます。このリストへの参加のは、電子メールの本文(Subject +行ではありません)に次の2行を書いて、 + subscribe + end -
- subscribe - end -+pgsql-general-request@PostgreSQL.org へ送って下さい。 -
pgsql-general-request@PostgreSQL.org へ送って下さい。 +ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文"に: + subscribe + end +と書いて pgsql-general-digest-request@PostgreSQL.org へ電子メールを送って下さい +。 -
ダイジェスト版のメーリング・リストもあります。このリストへの参加は "本文"に: +ダイジェスト版は、メインリストが受信するメッセージ 30k 程度溜る毎にダイジェスト +版リストのメンバーに送付されます。 -
- subscribe - end -+バグのメーリングリストも利用できます。このリストへの参加は "本文"といっしょに: +bugs-request@PostgreSQL.org へ電子メールを送って下さい。 -と書いて pgsql-general-digest-request@PostgreSQL.org へ電子メールを送って下さい。 +開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子メ +ールの本文に: -
ダイジェスト版は、メインリストが受信するメッセージ 30k 程度溜る毎にダイジェスト版リストのメンバーに送付されます。 + subscribe + end -
バグのメーリングリストも利用できます。このリストへの参加は "本文"といっしょに: -bugs-request@PostgreSQL.org +と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さい。 -へ電子メールを送って下さい。 +PostgreSQL についてもっと詳しく知りたければ、次の postgreSQL WWWホームページか +らたどれます: + + http://www.PostgreSQL.org -
開発者の議論のためのメーリングリストも利用できます。このリストへの参加は電子メールの本文に: +IRC チャンネルも EFNet にあります。そのチャンネルは #PostgreSQL です。 unix コ +マンドでirc -c '#PostgreSQL' "$USER" irc.phoenix.net を使います。 -
-
- subscribe - end -- -
と書いて、pgsql-hackers-request@PostgreSQL.orgへ電子メールを送って下さい。 - -
PostgreSQL についてもっと詳しく知りたければ、次の postgreSQL WWWホームページからたどれます: - -
- http://www.PostgreSQL.org --
- -IRC チャンネルも EFNet にあります。そのチャンネルは #PostgreSQL です。 -unix コマンドでirc -c '#PostgreSQL' "$USER" irc.phoenix.net -を使います。
-
-
[訳注:
- 1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUGが設立されました。
- JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場です。
- 正会員の会費は無料ですが、会員の積極的な貢献が会の運営を助けています。詳しくは、JPUGのWeb サイト:
- http://www.jp.postgresql.org/
- をご覧ください。会員登録も可能となっています。
- 1990年代中ごろより、ポストグレスの日本語メーリング・リストを石井 達夫さんが主催しています。詳細は、
- http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html
- をご覧下さい。アーカイブを、いわきりさんのpgsql-jp ML検索システム
- http://datula.mio.org/~iwakiri/pgsql_jp/
- で検索することもできます。
- ]
-
+ 1999年7月23日、日本PostgreSQLユーザー会(にほん ぽすとぐれす ゆーざー かい)、略称JPUGが設立されました。
+ JPUG は非営利組織で、PostgreSQLを利用する人達の相互協力の場です。
+ 正会員の会費は無料ですが、会員の積極的な貢献が会の運営を助けています。詳しくは、JPUGのWeb サイト:
+ http://www.jp.postgresql.org/
+ をご覧ください。会員登録も可能となっています。
+ 1990年代中ごろより、ポストグレスの日本語メーリング・リストを石井 達夫さんが主催しています。詳細は、
+ http://www.sra.co.jp/people/t-ishii/PostgreSQL/ML/info.html
+ をご覧下さい。アーカイブを、いわきりさんのpgsql-jp ML検索システム
+ http://datula.mio.org/~iwakiri/pgsql_jp/
+ で検索することもできます。
+ ]
-
商用サポート会社のリストはhttp://www.postgresql.org/users-lounge/commercial-support.htmlにあります。
-
-
+商用サポート会社のリストはhttp://www.postgresql.org/users-lounge/
+commercial-support.htmlにあります。
[訳注:
- 日本では、SRA Inc. オープンシステム事業部 にて商用サポートが行なわれています。
- ミラクル・リナックス株式会社 で "Miracle Linux for PostgreSQL" の販売とサポートが
- 開始されました。
+ 日本では、SRA Inc. オープンシステム事業部 にて商用サポートが行なわれています。
+ ミラクル・リナックス株式会社 で "Miracle Linux for PostgreSQL" の販売とサポートが
+ 開始されました。
]
-
-
-
PostgreSQL の最新版はバージョン 7.0.3 です。 -
我々は、4カ月毎にメジャーリリースを行なうことを計画しています。 -
-
配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)およびいくつかの小さなテスト例題が含まれます。/doc ディレクトリをご覧下さい。また、オンラインでのマニュアルを、 -http://www.PostgreSQL.org/users-lounge/docs/ -でも閲覧できます。 +配付の中に、いくつかのマニュアルとオンライン・マニュアル(マニュアル・ページ)お +よびいくつかの小さなテスト例題が含まれます。/doc ディレクトリをご覧下さい。また +、オンラインでのマニュアルを、 http://www.PostgreSQL.org/users-lounge/docs/ で +も閲覧できます。 -
PostgreSQL の本もあります。 -http://www.PostgreSQL.org/docs/awbook.html
+PostgreSQL の本もあります。 http://www.PostgreSQL.org/docs/awbook.html
-
[訳注:
- 日本ポストグレスユーザー会のPostgreSQL Book翻訳分科会で、
- 翻訳作業が進行中。
+ 日本ポストグレスユーザー会のPostgreSQL Book翻訳分科会で、
+ 翻訳作業が進行中。
]
-
-
psql も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴らしい \d コマンドを持ちます。 -
我々の Web サイトには、もっと沢山の文書があります。 +psql も、型、演算子、関数、集約、その他の情報をお見せする、いくつかの素晴らしい +\d コマンドを持ちます。 -
-
+我々の Web サイトには、もっと沢山の文書があります。 -PostgreSQLは拡張されたSQL-92のサブセットをサポートします。 -我々のページの - -TODO リストに、既知のバグや欠落機能や将来計画についての記述があります。 +1.9) 既知のバグや無い機能はどうやって見つけますか? -
-
- -http://www.PostgreSQL.org/docs/awbook.html -にあるPostgreSQL本で SQL を教えています。 +PostgreSQLは拡張されたSQL-92のサブセットをサポートします。我々のページの TODO +リストに、既知のバグや欠落機能や将来計画についての記述があります。 + +1.10) SQL はどのように学べば良いですか? + +http://www.PostgreSQL.org/docs/awbook.html にあるPostgreSQL本で SQL を教えてい +ます。 + +素晴らしい学習書には、 http://w3.one.net/~jhoffman/sqltut.htm と http:// +ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM. + +とがあります。その他に、 "Teach Yourself SQL in 21 Days, Second Edition" が、 +http://members.tripod.com/er4ebus/sql/index.htm にあります。 + +多くのユーザに、 The Practical SQL Handbook, Bowman Judith S. et al., +Addison-Wesley が好評です。その他に、The Complete Reference SQL, Groff et al., +McGraw-Hill のようなのもあります。 -
-素晴らしい学習書には、 - -http://w3.one.net/~jhoffman/sqltut.htm と - -http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM.
-とがあります。その他に、 -"Teach Yourself SQL in 21 Days, Second Edition" が、 - -http://members.tripod.com/er4ebus/sql/index.htm -にあります。 -
-多くのユーザに、 -The Practical SQL Handbook, Bowman Judith S. et al., Addison-Wesley -が好評です。 -その他に、The Complete Reference SQL, Groff et al., McGraw-Hill -のようなのもあります。 -
-
[訳注:
- 石井達夫氏による日本語の参考文献の紹介ページ
- http://www.SRA.co.jp/people/t-ishii/PostgreSQL/doc-jp/index.html
- があります。
- 近藤直文氏の「初心者向のDB設計入門・SQL入門参考書紹介」のコーナー
- http://www.shonan.ne.jp/~nkon/ipsql/books_SQL.html
- があります。
- 堀田倫英氏の「PostgreSQL日本語マニュアル」
- http://www.net-newbie.com/
- ではオンラインマニュアルの検索ができます。
- 丸山不二夫氏のUNIX データベース入門
- http://www.wakhok.ac.jp/DB/DB.html
- はオンラインで読むことができます。
+ 石井達夫氏による日本語の参考文献の紹介ページ
+ http://www.SRA.co.jp/people/t-ishii/PostgreSQL/doc-jp/index.html
+ があります。
+ 近藤直文氏の「初心者向のDB設計入門・SQL入門参考書紹介」のコーナー
+ http://www.shonan.ne.jp/~nkon/ipsql/books_SQL.html
+ があります。
+ 堀田倫英氏の「PostgreSQL日本語マニュアル」
+ http://www.net-newbie.com/
+ ではオンラインマニュアルの検索ができます。
+ 丸山不二夫氏のUNIX データベース入門
+ http://www.wakhok.ac.jp/DB/DB.html
+ はオンラインで読むことができます。
]
-
-
- -対応してます。西暦2000年より後の日付も、紀元前2000年より前の日付も、簡単に扱えます。 -
-
+1.11) PostgreSQLは西暦2000年問題(Y2K)に対応していますか? -まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に含まれている -PostgreSQL Developersの文書を読みます。 -2番目に、pgsql-hackers と pgsql-patches メーリング・リストを購読(subscribe)します。 -3番目に、高品質のパッチをpgsql-patchesに発信します。 +対応してます。西暦2000年より後の日付も、紀元前2000年より前の日付も、簡単に扱え +ます。 -およそ十人ちょっとの人達が、PostgreSQL CVSアーカイブにコミットする権限を持っています。 -そのそれぞれの人達が沢山の高品質なパッチを発信するので、現在コミッターとなっている人達はそれに追い付くのが大変ですが、我々は彼らがコミットしたパッチは高品質であると確信しています。 -
-
"bug-template" ファイルの項目を満たして、pgsql-bugs@PostgreSQL.orgに送って下さい。 +まず最初(1番目)に、最新のソースをダウンロードし、我々の Web サイトか配布に含ま +れている PostgreSQL Developersの文書を読みます。2番目に、pgsql-hackers と +pgsql-patches メーリング・リストを購読(subscribe)します。3番目に、高品質のパッ +チをpgsql-patchesに発信します。およそ十人ちょっとの人達が、PostgreSQL CVSアーカ +イブにコミットする権限を持っています。そのそれぞれの人達が沢山の高品質なパッチ +を発信するので、現在コミッターとなっている人達はそれに追い付くのが大変ですが、 +我々は彼らがコミットしたパッチは高品質であると確信しています。 -
その前に http://postgreSQL.orgにある最新の FAQ をチェックして下さい。 +1.13) バグレポートはどのように発信しますか? -
それと同時に ftp サイト ftp://ftp.postgreSQL.org/pub/で、もっと新しいバージョンの PostgreSQL あるいはパッチをさがしてみて下さい。 +"bug-template" ファイルの項目を満たして、pgsql-bugs@PostgreSQL.orgに送って下さ +い。 -
-
+その前に http://postgreSQL.orgにある最新の FAQ をチェックして下さい。 -ソフトウェアを計る方法にはいくつかあります。機能と性能と信頼性とサポートと価格です。 +それと同時に ftp サイト ftp://ftp.postgreSQL.org/pub/で、もっと新しいバージョン +の PostgreSQL あるいはパッチをさがしてみて下さい。 -
-
- -
PsqlODBC と OpenLink ODBC の二つの ODBC ドライバーが利用可能です。 - -
PsqlODBC は PostgreSQL の配布に含まれています。それについてのさらに詳細な情報は -ftp://ftp.PostgreSQL.org/pub/odbc/ -から取得できます。
-
-
[訳注:
- PsqlODBC の 日本語パッチを片岡裕生さん(kataoka@interwiz.koganei.tokyo.jp)が作られました:
- ●http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html
+ PsqlODBC の 日本語パッチを片岡裕生さん(kataoka@interwiz.koganei.tokyo.jp)が作られました:
+ ●http://www.interwiz.koganei.tokyo.jp/software/PsqlODBC/index.html
]
-
-
-
OpenLink ODBC は http://www.openlinksw.com/から入手できます。標準的な ODBC クライアント・ソフトウェアで使えますので、支援しているすべてのプラットホーム(Win, Mac, Unix, VMS)から PostgreSQL の ODBC が利用できます。 - -
たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、フリーウェア版はいつでも入手可能のようです。質問は、postgres95@openlink.co.ukにお願いします。 - - -Programmer's Guide -の ODBC の章もご覧ください。 -
-
データベースを裏に持つ Web ページについての素晴らしい紹介が、
-http://www.webtools.com にあります。
-
http://www.phone.net/home/mwm/hotlist/にも、もう一つあります。 -
Web への拡張のためには、PHP が卓越したインターフェースとなっています。http://www.php.net/にあります。
+たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、フリーウ
+ェア版はいつでも入手可能のようです。質問は、postgres95@openlink.co.ukにお願いし
+ます。 Programmer's Guide の ODBC の章もご覧ください。
-
+2.2) PostgreSQL を Web ページと連携させるにはどんなツールがありますか?
+
+データベースを裏に持つ Web ページについての素晴らしい紹介が、
+http://www.webtools.com にあります。
+
+http://www.phone.net/home/mwm/hotlist/にも、もう一つあります。
+
+Web への拡張のためには、PHP が卓越したインターフェースとなっています。http://
+www.php.net/にあります。
[訳注:
- PHPに関する日本語の情報は、2000年4月19日に発足した日本PHPユーザ会のサイト
- http://www.php.gr.jp/
- あるいは、廣川 類さんのサイト
- http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/index.html
- にかなりまとめられています。
- 前田 充宏さんにより作られたPHP/FIの日本語パッチが様々な人の手を経てPHP3.0.7に適用されました。
- 現在はPHPJ-DEVにて、
- http://php.jpnnet.com/
- 佐藤さんを中心にマルチバイト拡張として作り直され、最新版はPHP-3.0.18に対応しています。
- 塚田 卓也さんは、PHP4 用の日本語関係の拡張モジュール
- ftp://night.fminn.nagano.nagano.jp/php4/
- を用意して下さってます。
- 本家の方で国際化のMLも立ち上がっています。
+ PHPに関する日本語の情報は、2000年4月19日に発足した日本PHPユーザ会のサイト
+ http://www.php.gr.jp/
+ あるいは、廣川 類さんのサイト
+ http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/index.html
+ にかなりまとめられています。
+ 前田 充宏さんにより作られたPHP/FIの日本語パッチが様々な人の手を経てPHP3.0.7に適用されました。
+ 現在はPHPJ-DEVにて、
+ http://php.jpnnet.com/
+ 佐藤さんを中心にマルチバイト拡張として作り直され、最新版はPHP-3.0.18に対応しています。
+ 塚田 卓也さんは、PHP4 用の日本語関係の拡張モジュール
+ ftp://night.fminn.nagano.nagano.jp/php4/
+ を用意して下さってます。
+ 本家の方で国際化のMLも立ち上がっています。
]
-
-
複雑な場合、多くの人は Perl インターフェースと CGI.pm を使います。 -
Perl を使った WDB を基にした WWW ゲートウェイはhttp://www.eol.ists.ca/~dunlop/wdb-p95からダウンロードできます。
+複雑な場合、多くの人は Perl インターフェースと CGI.pm を使います。
-
+Perl を使った WDB を基にした WWW ゲートウェイはhttp://www.eol.ists.ca/~dunlop/
+wdb-p95からダウンロードできます。
[訳注:
- WDB は、Web から DataBase への Perl の Interface です。
- wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。
- 現在、WDBI という名前になっているもの
- http://www.egroups.com/list/wdb-users/
- と、WDBの名前のままのもの
- http://www.i-con.dk/wdb/
- とがあります。その経緯はよくわかりません。
+ WDB は、Web から DataBase への Perl の Interface です。
+ wdb-p95 へのリンクは切れてしまっています。おそらく、Perl DBI 経由で DBD::Pg の利用が可能と思われます。
+ 現在、WDBI という名前になっているもの
+ http://www.egroups.com/list/wdb-users/
+ と、WDBの名前のままのもの
+ http://www.i-con.dk/wdb/
+ とがあります。その経緯はよくわかりません。
]
-
-
-
pgaccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この配布と共に出荷されます。Pgaccess にはレポート・ジェネレータもあります。Web ページはhttp://www.flex.ro/pgaccessです。 +2.3) PostgreSQL はグラフィカル・ユーザ・インターフェースを持っていますか?レポ +ート・ジェネレータは?埋め込み問い合わせ言語へのインターフェースは? -
ecpg という C 言語のための埋め込み SQL 問い合わせ言語インターフェースもあります。 +pgaccess と呼ばれる素晴らしいグラフィカル・ユーザ・インターフェースがあり、この +配布と共に出荷されます。Pgaccess にはレポート・ジェネレータもあります。Web ペー +ジはhttp://www.flex.ro/pgaccessです。 -
-
以下のものがあります: +2.4) PostgreSQL と通信するにはどんな言語が使えますか? -
+以下のものがあります:
+
+
+ ・ C (libpq)
+ ・ C++ (libpq++)
+ ・ 埋め込みC (ecpg)
+ ・ Java (jdbc)
+ ・ Perl (perl5)
+ ・ ODBC (odbc)
+ ・ Python (PyGreSQL)
+ ・ TCL (libpgtcl)
+ ・ C Easy API (libpgeasy)
+ ・ 埋め込みHTML (PHP from http://www.php.net)
-
[訳注:
- rubyの作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが
- ruby の PostgreSQL インターフェースを作りました。現在の維持管理は斉藤 登さんがしています。
- http://webclub.kcom.ne.jp/mb/noborus/ruby/
+ rubyの作者であるまつもと ゆきひろ(matz@ZetaBITS.COM)さんと、まつもと えいじ(ematsu@pfu.co.jp)さんが
+ ruby の PostgreSQL インターフェースを作りました。現在の維持管理は斉藤 登さんがしています。
+ http://webclub.kcom.ne.jp/mb/noborus/ruby/
PgBash は 境田 雅明 さんが作った bash の PostgreSQL インターフェースです。
- http://www.psn.co.jp/PostgreSQL/pgbash/
- Bashコマンドラインでpostgres に問い合わせできます。
+ http://www.psn.co.jp/PostgreSQL/pgbash/
+ Bashコマンドラインでpostgres に問い合わせできます。
]
-
-
-
-
-
- -
簡単な方法は、 configure を走らせるときに --prefix オプションを指定することです。 - -
-
さまざまな問題が考えられますが、まず最初にあなたのカーネルに System V IPC の拡張がインストールされているかを確認して見てください。PostgreSQL はカーネルによる共有メモリーとセマフォのサポートを必要とします。 - -
-
カーネルが共有メモリーを持つ設定になっていなかったか、でなければ、カーネルに対して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大きさは、使っているアーキテクチャとpostmaster を走らせるときに設定するバッファの数とバックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッファサイズのままで、少なくとも約1MBが必要です。 - -
-
もしエラーメッセージがIpcSemaphoreCreate: semget failed (No space left on device)であれば、カーネルが十分なセマフォを使えるように構成されていません。Postgresは潜在的なバックエンドプロセス毎に一つのセマフォを必要とします。とりあえずの解決策はpostmasterを起動するときに、バックエンドプロセスの数をより少なく制限をすることです。既定値の32より小さな数のパラメータを-Nで使います。より恒久的な解決策は、カーネルのSEMMNS と SEMMNI パラメータを増やすことです。 -
もし、エラーメッセージがなにか他のものであれば、カーネルの構成でまったくセマフォのサポートをしていないかもしれません。 - -
- -
既定値では、PostgreSQL は unix ドメインソケットを使うローカルマシンからの接続しか許しません。postmaster 起動に -i フラッグを加え、$PGDATA/pg_hba.conf ファイルを適切に直して、ホスト主導型の認証を使わないかぎりは他のマシンからは接続できないでしょう。これによりTCP/IPの接続が可能になります。 -
操作不能なセマフォも過度のデータベースアクセス中にクラッシュを引き起こすことがあります。 - -
-
既定の設定ではローカルマシンからの unix ドメインのソケット接続しか許しません。TCP/IP 接続を可能にするには postmaster が -i オプションで開始されていて、pgsql/data/pg_hba.conf ファイルに適切なホストの記載が追加されていることを確認してください。 - -
-
確かにインデックスは問い合わせの速度を増します。EXPLAINコマンドで PostgreSQL がどのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どのインデックスが使われているかを見ることができます。 -
もし INSERT を多用している場合は、COPY コマンドを使って大きなバッチ処理でそれを行なうことを検討して下さい。これは、INSERT を別々に行なうよりもっと高速です。次に、BEGIN WORK/COMMIT のトランザクション・ブロックの中に無い文は、それら自身がそれぞれのトランザクションに入っていると見なされます。いくつかの文を一つのトランザクション・ブロックの中で行なうことを考えて下さい。これによりトランザクションのオーバーヘッドが減ります。また、大きなデータの変更を行なう際はインデックスを一度外して、作り直すことを考えてみて下さい。 - -
チューニングのオプションがいくつかあります。postmaster を -o -F オプションで起動することによって、fsync() を無効にすることができます。これによって、各トランザクション毎に fsync() でディスクを更新するのを止めさせます。 - -
postmaster -B オプションを使ってバックエンド・プロセスにより使われる共有メモリー・バッファを大きくすることもできます。もし、このパラメータを高くしすぎると、カーネルの共有メモリー空間の制限値を越えてしまっうために postmaster が走らなくなるでしょう。既定値では、それぞれのバッファの大きさは 8K で、バッファ数は 64 です。 - -
バックエンドを -S オプションを使って、それぞれのバックエンド・プロセスが一時的な並べ替えによって使うメモリーの最大サイズを増やすこともできます。 その -S の値はキロバイト単位で、既定値は 512 (すなわち、512K)です。 - -
また、CLUSTER コマンドを使って、テーブルのデータをインデックスに合わせるためにグループ化することもできます。詳しくは、オンラインマニュアルで CLUSTER を見て下さい。 - -
-
PostgreSQL は、デバグのために意味のある、状態情報を報告するいくつかの機能を持ちます。 - -
まず、--enable-cassert オプションで configure を走らせます。そうしてコンパイルすることにより、沢山の assert() が、バックエンドの進捗状況を監視し、何か予期せぬことが起きるとプログラムを停止するようになります。 - -
postmaster と postgres の両方でいくつかのデバグ・オプションの利用ができます。まず、次のように postmaster を起動するときはいつでも、標準出力とエラー出力をログ・ファイルに送るようにしてあることを確かめて下さい。 - -
- cd /usr/local/pgsql - ./bin/postmaster >server.log 2>&1 & -- -
これにより PostgreSQL の最上部のディレクトリに server.log ファイルが置かれます。このファイルはサーバーが遭遇した問題やエラーについて有用な情報を含みます。Postmaster は更に詳細な情報を報告するための -d オプションを持ちます。その -d オプションは、デバグ・レベルを指定します。高いデバグ・レベルでは、大きなログファイルを生成することに注意しなくてはなりません。 - -
もし、postmasterが走っていなければ、postgresバックエンドをコマンド行から走らせることができ、直接SQL文をタイプすることができます。このやりかたは、デバグ目的のときだけお奨めします。セミコロンではなく、改行が問い合わせの終りになることに注意してください。もし、デバグシンボルを入れてコンパイルしていれば、デバッガを使って何が起きているかを見ることができます。postmaster からバックエンドを開始したわけではないので、独立な環境で走っているのではなくロック/バックエンドとの対話の問題が重複することはありません。 - -
もし、postmasterが走っていれば、あるウィンドウでpsqlを開始すると、psql で使われる postgresプロセスのPIDが見つかります。デバッガを使ってpostgresのPIDにアタッチ(attach)します。デバッガの中からブレーク・ポイントをセットし、psqlから問い合わせを発行します。デバグのためにpostgresを始動する場合は、PGOPTIONS="-W n" を設定でき、それから、psql を開始します。これにより、n 秒開始を遅らせるはずなので、デバッガでアタッチして始動を順を追って見ることができます。 - -
postgreSQL プログラムには、デバグと性能測定にとても役に立つ -sや -Aや -t 等のオプションがあります。 - -
何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング(プロフィール付き)でコンパイルすることも可能です。そのバックエンドのプロフィール・ファイルは pgsql/data/base/dbname ディレクトリに格納されるでしょう。クライアントのプロフィールはクライアントの現行ディレクトリに置かれるでしょう。 -
-
postmasterが同時始動できるバックエンドプロセスに対する制限数を増やす必要があります。 -
PostgreSQL 6.5以降では、既定の最大プロセスは32プロセスです。適切な-Nの値でpostmasterを再起動することにより増加させることができます。既定の構成では-Nは最大1024まで設定できます。もし、もっと必要であればinclude/config.hの中のMAXBACKENDSを増加させ、再構築します。もし、望むならconfigureの --with-maxbackends切替を使って、-Nの既定値を構成時に設定できます。 +3.1) どのようにすれば /usr/local/pgsql 以外の場所にインストールできますか? -
もし、-N を 32よりも大きくするのであれば、-Bも既定の64より大きい値に増加させなくてはならないし、-B は少なくとも -N の2倍はなくてはならず、おそらく最高性能を望むならばそれより大きい値が必要なはずです。バックエンドプロセスをたくさんにすると、いろいろなUnixカーネル構成パラメータも増やすことが必要になるかもしれません。 -共有メモリー・ブロックの最大値(SHMMAX)、 -セマフォの最大数(SEMMNSとSEMMNI)、 -プロセスの最大数(NPROC)、 -ユーザ毎の最大プロセス数(MAXUPRC)、 -開くファイルの最大数(NFILEとNINODE -も確認事項に含まれます。 -PostgreSQLに許されるバックエンドのプロセス数が制限されているのは、 -システムのリソースを使い果してしまうことを避けるためです。 +簡単な方法は、 configure を走らせるときに --prefix オプションを指定することです +。 -
6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更するには、include/storage/sinvaladt.hの中のMaxBackendId定数を修正した後に再構築が必要でした。 +3.2) postmaster を走らせると、Bad System Call とかコア・ダンプしたとのメッセー +ジが出ます。なぜですか? -
-
問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし ORDER BY 句を満たすためにバックエンドの -S パラメータで許可した値よりも大きなスペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイルがいくつか生成されます。 -
-一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエンドが潰れてしまうとそうなりません。もし、そのときバックエンドがひとつも走ってなければ、pg_tempNNN.NNファイルを消しても安全です。 +3.3) postmaster を走らせようとすると、IpcMemoryCreate エラーが出ます。なぜです +か? -
-
-
+カーネルが共有メモリーを持つ設定になっていなかったか、でなければ、カーネルに対 +して使える共有メモリーの大きさを大きく設定する必要があります。具体的な大きさは +、使っているアーキテクチャとpostmaster を走らせるときに設定するバッファの数とバ +ックエンドプロセスに依存します。ほとんどのシステムでは、既定値のバッファサイズ +のままで、少なくとも約1MBが必要です。 -
ロケールの設定を確かめて下さい。PostgreSQL は postmaster プロセスを走らせたユーザーのロケールの設定を使います。postgres とpsql には SET コマンドがあり、データ書式を制御できます。これらをあなたの操作環境に合わせて設定して下さい。 +もしエラーメッセージがIpcSemaphoreCreate: semget failed (No space left on +device)であれば、カーネルが十分なセマフォを使えるように構成されていません。 +Postgresは潜在的なバックエンドプロセス毎に一つのセマフォを必要とします。とりあ +えずの解決策はpostmasterを起動するときに、バックエンドプロセスの数をより少なく +制限をすることです。既定値の32より小さな数のパラメータを-Nで使います。より恒久 +的な解決策は、カーネルのSEMMNS と SEMMNI パラメータを増やすことです。 -
-
詳述は、オンラインマニュアルで DECLARE を見て下さい。 +3.5) 他のホストから自分の PostgreSQL データベースへのアクセスを防ぐにはどうしま +すか? -
-
オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... LIMIT....を使ってみて下さい。 +操作不能なセマフォも過度のデータベースアクセス中にクラッシュを引き起こすことが +あります。 -
たとえ、欲しいのは最初の数行だけでも、すべての問い合わせを評価しなくてはならないかもしれません。ORDER BY を持った問い合わせを考えてみて下さい。 -もし、ORDER BYに合ったインデックスがあるとすると PostgreSQLは要求された最初の数行だけで評価できるかもしれませんが、でなれば、PostgreSQL は意図した行が生成されるまですべての行を評価しなければならないかもしれません。 +3.6) 他のマシンから自分のデータベースに接続できないのはなぜですか? -
-
- psqlのソースコードが書かれた pgsql/src/bin/psql/describe.c ファイルを読むことができます。 -そこには、psqlのバックスラッシュコマンドによる出力のためのSQLコマンドが含まれています。 psql に -E オプションをつけて起動すれば、与えたコマンドを実行するための問い合わせが出力されます。 -
+3.7) よりよい性能を得るために、どのようにデータベース・エンジンを調整できますか +? +確かにインデックスは問い合わせの速度を増します。EXPLAINコマンドで PostgreSQL が +どのようにあなたの問い合わせを翻訳しているかを見ることができ、そして、どのイン +デックスが使われているかを見ることができます。 -
ALTER TABLE DROP COLUMN はサポートしていませんが、その代わりにこうします: +チューニングのオプションがいくつかあります。postmaster を -o -F オプションで起 +動することによって、fsync() を無効にすることができます。これによって、各トラン +ザクション毎に fsync() でディスクを更新するのを止めさせます。 -
- SELECT ... -- 削除したい列以外の列をすべて選択します。 - INTO TABLE new_table - FROM old_table; - DROP TABLE old_table; - ALTER TABLE new_table RENAME TO old_table; -+postmaster -B オプションを使ってバックエンド・プロセスにより使われる共有メモリ +ー・バッファを大きくすることもできます。もし、このパラメータを高くしすぎると、 +カーネルの共有メモリー空間の制限値を越えてしまっうために postmaster が走らなく +なるでしょう。既定値では、それぞれのバッファの大きさは 8K で、バッファ数は 64 +です。 -
-
制限は以下のとおりです。 -
-データベースの最大サイズ? 制限無し (60GB のデータベースも存在します) +また、CLUSTER コマンドを使って、テーブルのデータをインデックスに合わせるために +グループ化することもできます。詳しくは、オンラインマニュアルで CLUSTER を見て下 +さい。 + +3.8) どのようなデバグ機能が使えますか? + +PostgreSQL は、デバグのために意味のある、状態情報を報告するいくつかの機能を持ち +ます。 + +まず、--enable-cassert オプションで configure を走らせます。そうしてコンパイル +することにより、沢山の assert() が、バックエンドの進捗状況を監視し、何か予期せ +ぬことが起きるとプログラムを停止するようになります。 + +postmaster と postgres の両方でいくつかのデバグ・オプションの利用ができます。ま +ず、次のように postmaster を起動するときはいつでも、標準出力とエラー出力をログ +・ファイルに送るようにしてあることを確かめて下さい。 + cd /usr/local/pgsql + ./bin/postmaster >server.log 2>&1 & + +これにより PostgreSQL の最上部のディレクトリに server.log ファイルが置かれます +。このファイルはサーバーが遭遇した問題やエラーについて有用な情報を含みます。 +Postmaster は更に詳細な情報を報告するための -d オプションを持ちます。その -d オ +プションは、デバグ・レベルを指定します。高いデバグ・レベルでは、大きなログファ +イルを生成することに注意しなくてはなりません。 + +もし、postmasterが走っていなければ、postgresバックエンドをコマンド行から走らせ +ることができ、直接SQL文をタイプすることができます。このやりかたは、デバグ目的の +ときだけお奨めします。セミコロンではなく、改行が問い合わせの終りになることに注 +意してください。もし、デバグシンボルを入れてコンパイルしていれば、デバッガを使 +って何が起きているかを見ることができます。postmaster からバックエンドを開始した +わけではないので、独立な環境で走っているのではなくロック/バックエンドとの対話 +の問題が重複することはありません。 + +もし、postmasterが走っていれば、あるウィンドウでpsqlを開始すると、psql で使われ +る postgresプロセスのPIDが見つかります。デバッガを使ってpostgresのPIDにアタッチ +(attach)します。デバッガの中からブレーク・ポイントをセットし、psqlから問い合わ +せを発行します。デバグのためにpostgresを始動する場合は、PGOPTIONS="-W n" を設定 +でき、それから、psql を開始します。これにより、n 秒開始を遅らせるはずなので、デ +バッガでアタッチして始動を順を追って見ることができます。 + +postgreSQL プログラムには、デバグと性能測定にとても役に立つ -sや -Aや -t 等のオ +プションがあります。 + +何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング( +プロフィール付き)でコンパイルすることも可能です。そのバックエンドのプロフィー +ル・ファイルは pgsql/data/base/dbname ディレクトリに格納されるでしょう。クライ +アントのプロフィールはクライアントの現行ディレクトリに置かれるでしょう。 + +3.9) 接続しようとするときに 'Sorry, too many clients' が出ます。なぜですか? + +postmasterが同時始動できるバックエンドプロセスに対する制限数を増やす必要があり +ます。 + +PostgreSQL 6.5以降では、既定の最大プロセスは32プロセスです。適切な-Nの値で +postmasterを再起動することにより増加させることができます。既定の構成では-Nは最 +大1024まで設定できます。もし、もっと必要であればinclude/config.hの中の +MAXBACKENDSを増加させ、再構築します。もし、望むならconfigureの +--with-maxbackends切替を使って、-Nの既定値を構成時に設定できます。 + +もし、-N を 32よりも大きくするのであれば、-Bも既定の64より大きい値に増加させな +くてはならないし、-B は少なくとも -N の2倍はなくてはならず、おそらく最高性能を +望むならばそれより大きい値が必要なはずです。バックエンドプロセスをたくさんにす +ると、いろいろなUnixカーネル構成パラメータも増やすことが必要になるかもしれませ +ん。共有メモリー・ブロックの最大値(SHMMAX)、セマフォの最大数(SEMMNSとSEMMNI)、 +プロセスの最大数(NPROC)、ユーザ毎の最大プロセス数(MAXUPRC)、開くファイルの最大 +数(NFILEとNINODE も確認事項に含まれます。 PostgreSQLに許されるバックエンドのプ +ロセス数が制限されているのは、システムのリソースを使い果してしまうことを避ける +ためです。 + +6.5より前のバージョンのPostgreSQLではバックエンドの最大数は64でしたが、変更する +には、include/storage/sinvaladt.hの中のMaxBackendId定数を修正した後に再構築が必 +要でした。 + +3.10) 自分のデータベース・ディレクトリにある pg_sorttemp.XXXファイルは何ですか +? + +問い合わせ実行モジュールによって生成された一時的なファイルです。例えば、もし +ORDER BY 句を満たすためにバックエンドの -S パラメータで許可した値よりも大きなス +ペースがソートの際に必要だとすると、溢れたデータを保持するために一時的なファイ +ルがいくつか生成されます。 + +一時的なファイルは自動的に消し去られるはずですが、もし、ソートの途中でバックエ +ンドが潰れてしまうとそうなりません。もし、そのときバックエンドがひとつも走って +なければ、pg_tempNNN.NNファイルを消しても安全です。 + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + 操作上の質問 + +4.1) なぜ、システムはカンマや小数点や日付フォーマットで混乱するのですか? + +ロケールの設定を確かめて下さい。PostgreSQL は postmaster プロセスを走らせたユー +ザーのロケールの設定を使います。postgres とpsql には SET コマンドがあり、データ +書式を制御できます。これらをあなたの操作環境に合わせて設定して下さい。 + +4.2) バイナリ・カーソルと通常のカーソルとの厳密な違いは何ですか? + +詳述は、オンラインマニュアルで DECLARE を見て下さい。 + +4.3) 問い合わせの最初の数行のみを SELECT するにはどうしますか? + +オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... LIMIT....を使っ +てみて下さい。 + +たとえ、欲しいのは最初の数行だけでも、すべての問い合わせを評価しなくてはならな +いかもしれません。ORDER BY を持った問い合わせを考えてみて下さい。もし、ORDER BY +に合ったインデックスがあるとすると PostgreSQLは要求された最初の数行だけで評価で +きるかもしれませんが、でなれば、PostgreSQL は意図した行が生成されるまですべての +行を評価しなければならないかもしれません。 + +4.4) テーブルやその他の情報のリストを psql で見るにはどうしますか? + +psqlのソースコードが書かれた pgsql/src/bin/psql/describe.c ファイルを読むことが +できます。そこには、psqlのバックスラッシュコマンドによる出力のためのSQLコマンド +が含まれています。 psql に -E オプションをつけて起動すれば、与えたコマンドを実 +行するための問い合わせが出力されます。 + +4.5) テーブルからの列の削除はどのようにしますか? + +ALTER TABLE DROP COLUMN はサポートしていませんが、その代わりにこうします: + SELECT ... -- 削除したい列以外の列をすべて選択します。 + INTO TABLE new_table + FROM old_table; + DROP TABLE old_table; + ALTER TABLE new_table RENAME TO old_table; +[訳注:列の追加は ALTER TABLE ADD COLUMN で行えます。] + +4.6) 行、テーブル、データベースの最大サイズは? + +制限は以下のとおりです。 +データベースの最大サイズ? 制限無し (60GB のデータベースも存在します) テーブルの最大サイズ? 16TB 行の最大サイズ? 7.1以降で制限無し フィールドの最大サイズ? 7.1以降で1GB テーブル内での最大ロウ数? 制限無し テーブル内での最大カラム数? カラムの型により250-1600 テーブル内での最大インデクス数? 制限無し --
もちろん、これらは実際は無制限ではなく、ディスク容量とメモリーやスワップスペースの大きさにより制限されます。性能はこれらの値がことのほか大きな時に煽りを受けます。 +もちろん、これらは実際は無制限ではなく、ディスク容量とメモリーやスワップスペー +スの大きさにより制限されます。性能はこれらの値がことのほか大きな時に煽りを受け +ます。 -
最大テーブルサイズの16TBはオペレーティングシステムのラージ・ファイルサポートは必要としません。ラージ・テーブルは複数の1GBのファイルのように保存されます。 +最大テーブルサイズの16TBはオペレーティングシステムのラージ・ファイルサポートは +必要としません。ラージ・テーブルは複数の1GBのファイルのように保存されます。 -
デフォルトのブロックサイズを32kにすると最大テーブルサイズと最大カラム数とが増加します。 +デフォルトのブロックサイズを32kにすると最大テーブルサイズと最大カラム数とが増加 +します。 +4.7) 一般的なテキストファイルからデータを保存するには、データベースのディスク容 +量はどのくらい必要です? -
-
-
各行に二つずつ整数を持つ 300,000行のファイルを考えてみましょう。ただのファイルでは 2.4MB です。このデータを含む PostgreSQL データベースファイルの大きさは次のように約14MBと見積もることができます: - -
+各行に二つずつ整数を持つ 300,000行のファイルを考えてみましょう。ただのファイル +では 2.4MB です。このデータを含む PostgreSQL データベースファイルの大きさは次の +ように約14MBと見積もることができます: 36 bytes: 各行のヘッダ(概算) + 8 bytes: 各4バイトの二つの整数(int)フィールド + 4 bytes: ページ上のタップルへのポインタ @@ -863,102 +849,108 @@ PostgreSQL 171 rows per page 1755 database pages * 8192 bytes per page = 14,376,960 bytes (14MB) --
-インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付けされるデータを含む以上、それなりに大きくなります。 +インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付けされる +データを含む以上、それなりに大きくなります。 -
-
psql にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示します。バックスラッシュ・コマンドの種類を見るには \? を使って下さい。 -
また、pgsql/src/tutorial/syscat.source ファイルを走らせてみて下さい。それは、沢山の SELECT 文により必要な情報をデータベースのシステム・テーブルから取り出して例示してくれます。 +psql にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示します。 +バックスラッシュ・コマンドの種類を見るには \? を使って下さい。 -
-
PostgreSQL は統計情報を自動的には保守しません。統計情報を更新するためには、VACUUM を走らせなくてはなりません。統計情報が更新された後は、オブティマイザがテーブルに何行あるかを知って、インデックスを使うべきかの決定をより良く下します。オブティマイザはテーブルが小さくて連続スキャンの方が速いであろう場合はインデックスを使わないことにご注意下さい。 +4.9) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか +? -
列特定の最適化統計のためにVACUUM ANALYZEを使います。VACUUM ANALYZEは複雑な複合結合(multi-join)問い合わせのために大切ですので、オブティマイザはそれぞれのテーブルから返される行の数を見積ることができ、特定の結合順序を選びます。バックエンドはそれ自身では列の統計を保持しないので、定期的にそれらを集めるためには VACUUM ANALYZE を走らせなくてはなりません。 +PostgreSQL は統計情報を自動的には保守しません。統計情報を更新するためには、 +VACUUM を走らせなくてはなりません。統計情報が更新された後は、オブティマイザがテ +ーブルに何行あるかを知って、インデックスを使うべきかの決定をより良く下します。 +オブティマイザはテーブルが小さくて連続スキャンの方が速いであろう場合はインデッ +クスを使わないことにご注意下さい。 -
インデックスは ORDER BY 操作のためには普通は使われません。すなわち、順次スキャンに続く明示的ソートは、ディスクアクセスがより少なくて済むので、巨大なテーブルの全件をインデックススキャンするよりも高速です。 +列特定の最適化統計のためにVACUUM ANALYZEを使います。VACUUM ANALYZEは複雑な複合 +結合(multi-join)問い合わせのために大切ですので、オブティマイザはそれぞれのテー +ブルから返される行の数を見積ることができ、特定の結合順序を選びます。バックエン +ドはそれ自身では列の統計を保持しないので、定期的にそれらを集めるためには VACUUM +ANALYZE を走らせなくてはなりません。 -
LIKE あるいは ~ のようなワイルドカード演算子(wild-card operators)を使うとき、検索の開始が文字列の始めの部分に固定されているときにのみ、インデックスが使われます。 -そういうわけで、インデックスを使うためには、LIKE 検索では%で始めないようにして、また、~(正規表現検索)は^ で始めるようにするべきです。 +インデックスは ORDER BY 操作のためには普通は使われません。すなわち、順次スキャ +ンに続く明示的ソートは、ディスクアクセスがより少なくて済むので、巨大なテーブル +の全件をインデックススキャンするよりも高速です。 -
-
オンラインマニュアルで EXPLAIN を見て下さい。 +4.10) 問い合わせオブティマイザがどのように問い合わせを評価するのかを見るにはど +うしますか? -
-
R-tree インデックスは空間的なデータにインデックスを付けるために使われます。ハッシュインデックスでは範囲の検索ができません。また、B-tree インデックスでは、1次元でしか範囲の検索ができません。R-tree インデックスであれば多次元のデータを扱えます。たとえば、もし R-tree インデックスを point 型の属性に付けることができるとするとシステムは、「長方形に囲まれた点をすべて選択する」というような問い合わせに、より効率良く答えられます。 +4.11) R-tree インデックスとは何ですか? -
R-Tree の設計の原典となる権威ある論文は: +R-tree インデックスは空間的なデータにインデックスを付けるために使われます。ハッ +シュインデックスでは範囲の検索ができません。また、B-tree インデックスでは、1次 +元でしか範囲の検索ができません。R-tree インデックスであれば多次元のデータを扱え +ます。たとえば、もし R-tree インデックスを point 型の属性に付けることができると +するとシステムは、「長方形に囲まれた点をすべて選択する」というような問い合わせ +に、より効率良く答えられます。 -
Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching." -Proc of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. +R-Tree の設計の原典となる権威ある論文は: -
この論文は、Stonebraker 教授の "Readings in Database Systems" -でも取り上げられています。 +Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching." Proc of +the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57. + +この論文は、Stonebraker 教授の "Readings in Database Systems" でも取り上げられ +ています。 -
-
[訳注:
- 奈良先端大の石川佳治さんよりR-Tree関係の文献を紹介して頂きました。
- 日本語 Postgres ML のアーカイブから "Subject: [postgres95 801] spatial data structures"
- http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html
- をご覧下さい。
+ 奈良先端大の石川佳治さんよりR-Tree関係の文献を紹介して頂きました。
+ 日本語 Postgres ML のアーカイブから "Subject: [postgres95 801] spatial data structures"
+ http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html
+ をご覧下さい。
]
-
-
組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっと高い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょっとした作業が必要でして、現在、我々はそれをどのようにするかについての文書を持っていません。 -
-
+組込みの R-Tree でポリゴンやボックスを操作できます。理論的にはR-Tree はもっと高
+い次元を操作するようにも拡張できます。実質的には、R-Tree の拡張にはちょっとした
+作業が必要でして、現在、我々はそれをどのようにするかについての文書を持っていま
+せん。
+
[訳注:
- インターウィズの片岡さんが多次元幾何オブジェクトへの拡張作業中です。詳しくは、
- http://www.interwiz.koganei.tokyo.jp/software/geometric/index.html
- をご覧ください。
+ インターウィズの片岡さんが多次元幾何オブジェクトへの拡張作業中です。詳しくは、
+ http://www.interwiz.koganei.tokyo.jp/software/geometric/index.html
+ をご覧ください。
]
-
-
-
GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で問合わせを高速化します。これにより、しらみつぶしに探索を行なわなくても、大きな結合(join queries)を扱うことができるようになります。 +GEQO モジュールは、沢山のテーブルを結合するときに、遺伝的アルゴリズム(GA)で問合 +わせを高速化します。これにより、しらみつぶしに探索を行なわなくても、大きな結合 +(join queries)を扱うことができるようになります。 -
-
-~演算子は正規表現照合を行ない、~* は大文字と小文字を区別しない(case-insensitive)正規表現照合を行います。 PostgreSQL 7.1 以降では、大文字と小文字を区別しない LIKE 演算子を ILIKE といいます。 +~演算子は正規表現照合を行ない、~* は大文字と小文字を区別しない +(case-insensitive)正規表現照合を行います。 PostgreSQL 7.1 以降では、大文字と小 +文字を区別しない LIKE 演算子を ILIKE といいます。 + WHERE lower(textfield) LIKE lower(pattern) +4.14) 問い合わせの中で、フィールドが NULL であることを検出するにはどうしますか +? -
- WHERE lower(textfield) LIKE lower(pattern) -+IS NULLのカラムを IS NOT NULL で試してみて下さい。 +4.15) 様々な文字型のそれぞれの違いは何ですか? -
-
IS NULLのカラムを IS NOT NULL で試してみて下さい。 - -
-
Type Internal Name Notes -------------------------------------------------- "char" char 1 character @@ -966,253 +958,228 @@ CHAR(#) bpchar VARCHAR(#) varchar 長さの上限の無いテキスト TEXT text 長さの制限は最大行長による BYTEA bytea 可変長のバイト配列 --
内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを受け取るときです。 +内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを +受け取るときです。 +上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイ +トがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言さ +れた大きさよりも少し大きくなります。しかし、これらのデータ型はTOASTにより圧縮さ +れたり複数行に渡って保存されたりして、ディスク上の空間は思ったより小さくなりま +す。 -
上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイトがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言された大きさよりも少し大きくなります。しかし、これらのデータ型はTOASTにより圧縮されたり複数行に渡って保存されたりして、ディスク上の空間は思ったより小さくなります。 +4.16.1) 通番(serial)/自動増分フィールドはどのようにつくりますか? -
-
PostgreSQL は SERIAL データ型をサポートします。列上に通番とインデックスを自動作成します。たとえば、 - -
- CREATE TABLE person ( - id SERIAL, - name TEXT - ); -+PostgreSQL は SERIAL データ型をサポートします。列上に通番とインデックスを自動作 +成します。たとえば、 + CREATE TABLE person ( + id SERIAL, + name TEXT + ); は自動的に次のように翻訳されます: -
- CREATE SEQUENCE person_id_seq; - CREATE TABLE person ( - id INT4 NOT NULL DEFAULT nextval('person_id_seq'), - name TEXT - ); - CREATE UNIQUE INDEX person_id_key ON person ( id ); --通番についてのもっと詳しい情報は、オンラインマニュアルで create_sequence をご覧下さい。 -
また、各行のOIDフィールドを一意値として使うこともできます。しかしながら、もしもデータベースをダンプしてりロードする必要がある場合は、OIDを温存するためにpg_dump で -oオプションを使うか、または、COPY WITH OIDSオプションを使う必要があります。
+ CREATE SEQUENCE person_id_seq;
+ CREATE TABLE person (
+ id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
+ name TEXT
+ );
+ CREATE UNIQUE INDEX person_id_key ON person ( id );
+通番についてのもっと詳しい情報は、オンラインマニュアルで create_sequence をご覧
+下さい。
- Bruce Momjian の(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering Rowsの章にありあます。
+また、各行のOIDフィールドを一意値として使うこともできます。しかしながら、もしも
+データベースをダンプしてりロードする必要がある場合は、OIDを温存するために
+pg_dump で -oオプションを使うか、または、COPY WITH OIDSオプションを使う必要があ
+ります。 Bruce Momjian の(http://www.PostgreSQL.org/docs/aw_pgsql_book)の
+Numbering Rowsの章にありあます。
+4.16.2) SERIALインサートの値はどうすれば得られますか?
-
+ひとつの方法は、nextval() 関数で挿入する前に(before) SEQUENCEオブジェクトから次
+のSERIAL値を取り出し、それから実際に挿入をすることでしょう。 4.16.1の例で使った
+テーブルを使うとすると、次のようになるでしょう。
+ $newSerialID = nextval('person_id_seq');
+ INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal');
+そうして、$newSerialID に保存した新しい値を他の問い合わせに(たとえば、person テ
+ーブルに対する外部鍵(foreign key)のように)使うとよいでしょう。自動的に作られた
+SEQUENCEオブジェクトの名前は、
-
-あるいは、与えられたSERIAL値を、それが既定値として挿入された後で(after)、 currval() 関数を使って取り出すこともできます。たとえば、
-
-
-
+4.16.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使わな
+いほうがよいのでしょうか?
ありません。バックエンドで処理されています。
+4.17) OID とは何ですか? TID とは何ですか?
-
- OID とは一意の行 ID に対する PostgreSQL の答えです。PostgreSQL の中でつくられるすべての行は一意の OID を得ます。initdb で(backend/access/transam.h から)発生される OID はすべて 16384より小さな値です。initdb 後のすべての OID (ユーザ作成)はそれ以上の値になります。既定では、これらすべての OID はテーブル内やデータベース内に留まらず、PostgreSQL のそのインストレーション全体内で一意であります。
+PostgreSQL はテーブル間の行を結びつけるために、そのシステムテーブル内に OID を
+使います。この OID は特定のユーザの行を識別するためや結合の中で使われることがで
+きます。OID の値を保存するためには OID 型を列に使うことを奨めます。より速くアク
+セスするために OID フィールドにインデックスを作ることができます。
- PostgreSQL はテーブル間の行を結びつけるために、そのシステムテーブル内に OID を使います。この OID は特定のユーザの行を識別するためや結合の中で使われることができます。OID の値を保存するためには OID 型を列に使うことを奨めます。より速くアクセスするために OID フィールドにインデックスを作ることができます。
-
- OID は、全てのデータベースから使われる中央領域から、全ての新しい行に割り当てられます。OID を他の何かに変えたい、もしくは元の OID でテーブルをコピーしたいのなら、そうできない理由はありません。
-
- OID は、4バイトの整数として保存されているので、40億を越えると溢れてしまうでしょう。誰もこれが起きたと報告してくる人はいませんでしたが、そうなる前にこの制限を取り除くことを計画しています。
-
- TID は特定の物理行をそのブロックとオフセット値で識別するために使われます。TID は行が修正されたり再ロードされると変わります。それらの TID は、物理行を指すためにインデックス記載で使われます。
-
-
- いくつかのソースコードや古い文書の中には、それぞの専門分野の中でもっと一般的に使われる専門用語が使われています。
-
- 一般的なデータベース用語のリストは:
-http://www.comptechnews.com/~reaster/dbdesign.html
-で見つけられます。
-
-
-
-システムの仮想メモリーを全て使い果たしてしまっている可能性があるか、あるいは
-カーネルがあるリソースについて低い制限値を持っている可能性があります。
-postmaster を開始する前にこれを試してみて下さい:
-
-
-シェルによって、どちらかひとつが成功するでしょうが、これはプロセスのデータセグメント制限をより高く設定し、たぶん問い合わせが完結するようになるでしょう。このコマンドは現行のプロセスと、このコマンドを走らせた後に作られる全てのサブプロセスについて適用されます。バックエンドがとても多くのデータを返すためにSQL クライアントで問題が続いているのであれば、クライアントを開始する前にこれを試してみてください。
-
-
-
-psql から select version(); をタイプします。
-
- ラージ・オブジェクト操作をするときは、前後にBEGIN WORKとCOMMITを付ける必要があります。すなわち、lo_open ... lo_closeをはさみ込みます。
+TID は特定の物理行をそのブロックとオフセット値で識別するために使われます。TID
+は行が修正されたり再ロードされると変わります。それらの TID は、物理行を指すため
+にインデックス記載で使われます。
- 現在は、PostgreSQLのトランザクションのコミット時にラージ・オブジェクト・ハンドルを閉じることにより、lo_openコマンドが完了した直後に強制的にルールを実行します。このため、最初にハンドルに対して何かをしようとすると、invalid large obj descriptor(ラージオブジェクトの記述子が不正)となります。それで、もし、トランザクションを使うのを忘れると、(少なくともほとんどの時間)働いていたコードがエラーメッセージを出すのです。
+4.18) PostgreSQL で使われるいくつかの用語の意味は何ですか?
- もし、ODBCのようなクライアントインターフェースをお使いなら、auto-commit offを設定する必要があるかもしれません。
-
+いくつかのソースコードや古い文書の中には、それぞの専門分野の中でもっと一般的に
+使われる専門用語が使われています。
+
+
+ ・ テーブル(table)、関係(relation)、クラス(class)
+ ・ 行(row)、レコード(record)、タップル(tuple)
+ ・ 列(column)、フィールド(field)、属性(attribute)
+ ・ 取得(retrieve)、選択(select)
+ ・ 置換(replace)、更新(update)
+ ・ 追加(append)、挿入(insert)
+ ・ OID, 連番(serial value)
+ ・ ポータル(portal), カーソル(cursor)
+ ・ 領域変数(range variable)、テーブル名(table name)、テーブル別名(table alias)
+一般的なデータベース用語のリストは: http://www.comptechnews.com/~reaster/
+dbdesign.html で見つけられます。
- now()を使います:
-
+システムの仮想メモリーを全て使い果たしてしまっている可能性があるか、あるいはカ
+ーネルがあるリソースについて低い制限値を持っている可能性があります。 postmaster
+を開始する前にこれを試してみて下さい:
+ ulimit -d 262144
+ limit datasize 256m
+シェルによって、どちらかひとつが成功するでしょうが、これはプロセスのデータセグ
+メント制限をより高く設定し、たぶん問い合わせが完結するようになるでしょう。この
+コマンドは現行のプロセスと、このコマンドを走らせた後に作られる全てのサブプロセ
+スについて適用されます。バックエンドがとても多くのデータを返すためにSQL クライ
+アントで問題が続いているのであれば、クライアントを開始する前にこれを試してみて
+ください。
-
-現在、外部問い合わせの各行について副問い合わせの結果を順番にスキャンすることにより、副問い合わせを外部問い合わせに結合しています。当面はINをEXISTSで置き換えることです:
-
+ SELECT *
+ FROM tab
+ WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
+とします。この制限は将来のリリースで直したいと思っています。
-
-PostgreSQL 7.1 以降ではSQL標準構文を使う外部結合(アウタージョイン)をサポートします。ここに、例題が2つあります。
+4.24) 外部結合(outer join)はどのように実現しますか?
-
-
-
- 問題は色々と考えられます。まず最初に、作成したユーザ定義関数を単独のテストプログラムにして試してみて下さい。
-
-
-
- 皆さんの行なった拡張を、pgsql-hackers メーリング・リストに送ってください。そして、ゆくゆくはそうした拡張が contrib/ サブディレクトリの中に入ることになるでしょう。
-
-
- 原理的には可能ですが、これには究極の妙技を要しますので、著者のまわりでは未だ誰もやったことがありません。
-
- いくつかの Makefile がインクルード・ファイルに対して適切な依存関係を持っていません。make clean をしてからもう一度 make を行なわなくてはなりません。もし、GCC をお使いであれば configure の --enable-depend オプションを使って、コンパイラに依存関係を自動的に調べさせることもできます。
-
-
-
+いくつかの Makefile がインクルード・ファイルに対して適切な依存関係を持っていま
+せん。make clean をしてからもう一度 make を行なわなくてはなりません。もし、GCC
+をお使いであれば configure の --enable-depend オプションを使って、コンパイラに
+依存関係を自動的に調べさせることもできます。
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+[訳注:
+]
diff --git a/doc/src/FAQ/FAQ_japanese.html b/doc/src/FAQ/FAQ_japanese.html
index 94766e0610..193731067a 100644
--- a/doc/src/FAQ/FAQ_japanese.html
+++ b/doc/src/FAQ/FAQ_japanese.html
@@ -7,8 +7,7 @@
-原文最終更新日: Tue Oct 17 00:21:20 EDT 2000
- (ファイル日付は 03/02/2001)
+原文最終更新日: Tue Mar 13 09:41:02 EST 2001
現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us)
@@ -34,39 +33,39 @@ HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us)
にアクセスしてみてください。
-日本語版については以下の通りです。
+ 日本語版の製作については以下の通りです。
-最終更新日: 2001年03月03日
-訳者: 桑村 潤 (Jun Kuwamura <juk@jp.postgresql.org>)
+ 最終更新日: 2001年03月20日
+ 翻訳者: 桑村 潤 (Jun Kuwamura <juk@jp.postgresql.org>)
- このFAQの和訳の作成に協力をしてくださった以下の方々をはじめ、
+ このFAQの和訳の作成にあたり協力をしてくださった方々(敬称は略させていただきます):
- 田仲 稔さん(Minoru Tanaka <Tanaka.Minoru@keiken.co.jp>)
- 石井 達夫さん(Tatsuo Ishii <t-ishii@sra.co.jp>)
- 齊藤 知人さん(Tomohito Saitoh <tomos@elelab.nsc.co.jp>)
- 馬場 肇さん(Hajime Baba <baba@kusastro.kyoto-u.ac.jp>)
- 岡本 一幸さん(Kazuyuki Okamoto <kokamoto@itg.hitachi.co.jp>)
- 小菅 昭一さん(Shoichi Kosuge <s-kosuge@str.hitachi.co.jp>)
- 山下 義之さん(Yoshiyuki Yamashita <dica@eurus.dti.ne.jp>)
- 境 真太郎さん(Sintaro Sakai <s_sakai@mxn.mesh.ne.jp>)
- 生越 昌己さん(Masami Ogoshi <ogochan@zetabits.com>)
- 石川 俊行さん(Toshiyuki Ishikawa <tosiyuki@gol.com>)
- 本田 茂広さん(Shigehiro Honda <fwif0083@mb.infoweb.ne.jp>)
+ 田仲 稔(Minoru Tanaka <Tanaka.Minoru@keiken.co.jp>)
+ 石井 達夫(Tatsuo Ishii <t-ishii@sra.co.jp>)
+ 齊藤 知人(Tomohito Saitoh <tomos@elelab.nsc.co.jp>)
+ 馬場 肇(Hajime Baba <baba@kusastro.kyoto-u.ac.jp>)
+ 岡本 一幸(Kazuyuki Okamoto <kokamoto@itg.hitachi.co.jp>)
+ 小菅 昭一(Shoichi Kosuge <s-kosuge@str.hitachi.co.jp>)
+ 山下 義之(Yoshiyuki Yamashita <dica@eurus.dti.ne.jp>)
+ 境 真太郎(Sintaro Sakai <s_sakai@mxn.mesh.ne.jp>)
+ 生越 昌己(Masami Ogoshi <ogochan@zetabits.com>)
+ 石川 俊行(Toshiyuki Ishikawa <tosiyuki@gol.com>)
+ 本田 茂広(Shigehiro Honda <fwif0083@mb.infoweb.ne.jp>)
+ せせ じゅん(Jun Sese <sesejun@linet.gr.jp>)
+ をはじめ、ポストグレスに関する話題豊富な日本語ポストグレス・メーリングリスト、
+ 和訳のきっかけを作ってくれた JF(Linux Japanese FAQ Mailing List)プロジェクト、その他、
+ 直接あるいは間接的にかかわっているすべてのオープンソースコミュニティーの
+ 皆さんに感謝します。
-ポストグレスに関する話題豊富な日本語ポストグレス・メーリングリスト、
-和訳のきっかけを作ってくれた JF(Linux Japanese FAQ Mailing List)プロジェクト、
-その他、直接あるいは間接的にかかわっているすべてのオープンソース
-コミュニティーの皆さんに感謝します。
-
- 日本語版のこの文書は
+ 日本語版のこの文書はhttp://www.PostgreSQL.org/users-lounge/docs/faq-japanese.htmlにあるほか,
+ 以下のサイトからもたどれます。
http://www.jp.postgresql.org/
http://www.rccm.co.jp/~juk/pgsql/
- http://www.sra.co.jp/people/t-ishii/PostgreSQL/
+ http://www.sra.co.jp/people/t-ishii/PostgreSQL/doc-jp/
http://www.linux.or.jp/JF/
-からもたどれます。
-なお、この和訳に関するご意見は(juk@jp.postgresql.org)までお寄せ下さい。
+ なお、この和訳に関するご意見は(juk@jp.postgresql.org)までお寄せ下さい。
]
@@ -570,7 +569,7 @@ PostgreSQL
たぶん彼らは、商用品質のサポートの必要な人々に売っていると思いますが、フリーウェア版はいつでも入手可能のようです。質問は、postgres95@openlink.co.ukにお願いします。
-
+
Programmer's Guide
の ODBC の章もご覧ください。
@@ -816,6 +815,9 @@ PostgreSQL
ALTER TABLE new_table RENAME TO old_table;
+[訳注:列の追加は ALTER TABLE ADD COLUMN で行えます。]
+
+
LIKE あるいは ~ のようなワイルドカード演算子(wild-card operators)を使うとき、検索の開始が文字列の始めの部分に固定されているときにのみ、インデックスが使われます。
そういうわけで、インデックスを使うためには、LIKE 検索では%で始めないようにして、また、~(正規表現検索)は^ で始めるようにするべきです。
+[訳注:強制的にインデックスを使うには
+ SET enable_seqscan = off を実行します]
+
+
いくつかの Makefile がインクルード・ファイルに対して適切な依存関係を持っていません。make clean をしてからもう一度 make を行なわなくてはなりません。もし、GCC をお使いであれば configure の --enable-depend オプションを使って、コンパイラに依存関係を自動的に調べさせることもできます。
+
+4.16.2) SERIALインサートの値はどうすれば得られますか?
-
_
- $newSerialID = nextval('person_id_seq');
- INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal');
-
-
-そうして、$newSerialID に保存した新しい値を他の問い合わせに(たとえば、person テーブルに対する外部鍵(foreign key)のように)使うとよいでしょう。自動的に作られたSEQUENCEオブジェクトの名前は、<table>_<serialcolumn>_seq のようになり、このうち、table と serialcolumn はそれぞれテーブルの名前とSERIAL列の名前です。
-
- INSERT INTO person (name) VALUES ('Blaise Pascal');
- $newID = currval('person_id_seq');
-
-
-最後に、INSERT文から返るOIDを使って、既定値をみつけることもできますが、しかし、これは最も移植性の低いやり方でしょう。PerlのDBIで Edmund Mergl の DBD::Pg モジュールを使えば、$sth->execute() の後に $sth->{pg_oid_status} を経由してその OID 値を使えるようにすることはできます。
-
-4.16.3) 他のユーザとの競合状態を避けるためには、currval() と nextval() は使わないほうがよいのでしょうか?
-
4.17) OID とは何ですか? TID とは何ですか?
-
+OID とは一意の行 ID に対する PostgreSQL の答えです。PostgreSQL の中でつくられる
+すべての行は一意の OID を得ます。initdb で(backend/access/transam.h から)発生さ
+れる OID はすべて 16384より小さな値です。initdb 後のすべての OID (ユーザ作成)は
+それ以上の値になります。既定では、これらすべての OID はテーブル内やデータベース
+内に留まらず、PostgreSQL のそのインストレーション全体内で一意であります。
-
+OID は、全てのデータベースから使われる中央領域から、全ての新しい行に割り当てら
+れます。OID を他の何かに変えたい、もしくは元の OID でテーブルをコピーしたいのな
+ら、そうできない理由はありません。
CREATE TABLE new_table(old_oid oid, mycol int);
SELECT old_oid, mycol INTO new FROM old;
COPY new TO '/tmp/pgtable';
DELETE FROM new;
COPY new WITH OIDS FROM '/tmp/pgtable';
-
-
-
-4.18) PostgreSQL で使われるいくつかの用語の意味は何ですか?
-
-
-
-
-4.19) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るのはなぜですか?
-
-
- ulimit -d 262144
- limit datasize 256m
-
-
-4.20) どのバージョンの PostgreSQL を走らせているかを調べるにはどうしますか?
-
-4.21) ラージ・オブジェクトの操作でinvalid large obj descriptor を受け取りました。なぜでしょうか?
-
+OID は、4バイトの整数として保存されているので、40億を越えると溢れてしまうでしょ
+う。誰もこれが起きたと報告してくる人はいませんでしたが、そうなる前にこの制限を
+取り除くことを計画しています。
-4.22) 現在の時刻がデフォルトとなるような列はどのようにつくりますか?
+4.19) エラーメッセージ "ERROR: Memory exhausted in AllocSetAlloc()"が出るのはな
+ぜですか?
-
- CREATE TABLE test (x int, modtime timestamp DEFAULT now() );
-
-4.23) なぜ、INを使う副問い合わせがとても遅いのですか?
-
-
- SELECT *
- FROM tab
- WHERE col1 IN (SELECT col2 FROM TAB2)
-
+4.20) どのバージョンの PostgreSQL を走らせているかを調べるにはどうしますか?
+
+psql から select version(); をタイプします。
+
+4.21) ラージ・オブジェクトの操作でinvalid large obj descriptor を受け取りました
+。なぜでしょうか?
+
+ラージ・オブジェクト操作をするときは、前後にBEGIN WORKとCOMMITを付ける必要があ
+ります。すなわち、lo_open ... lo_closeをはさみ込みます。
+
+現在は、PostgreSQLのトランザクションのコミット時にラージ・オブジェクト・ハンド
+ルを閉じることにより、lo_openコマンドが完了した直後に強制的にルールを実行します
+。このため、最初にハンドルに対して何かをしようとすると、invalid large obj
+descriptor(ラージオブジェクトの記述子が不正)となります。それで、もし、トランザ
+クションを使うのを忘れると、(少なくともほとんどの時間)働いていたコードがエラ
+ーメッセージを出すのです。
+
+もし、ODBCのようなクライアントインターフェースをお使いなら、auto-commit offを設
+定する必要があるかもしれません。
+
+4.22) 現在の時刻がデフォルトとなるような列はどのようにつくりますか?
+
+now()を使います:
+ CREATE TABLE test (x int, modtime timestamp DEFAULT now() );
+
+4.23) なぜ、INを使う副問い合わせがとても遅いのですか?
+
+現在、外部問い合わせの各行について副問い合わせの結果を順番にスキャンすることに
+より、副問い合わせを外部問い合わせに結合しています。当面はINをEXISTSで置き換え
+ることです:
+ SELECT *
+ FROM tab
+ WHERE col1 IN (SELECT col2 FROM TAB2)
を、置き換えて:
-
- SELECT *
- FROM tab
- WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
-
-とします。
-この制限は将来のリリースで直したいと思っています。
-4.24) 外部結合(outer join)はどのように実現しますか?
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+PostgreSQL 7.1 以降ではSQL標準構文を使う外部結合(アウタージョイン)をサポートし
+ます。ここに、例題が2つあります。
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
あるいは
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 USING (col);
+これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の結合されなかっ
+た行(t2 と一致しなかった行)も返しています。RIGHT 結合は t2 の結合されなかった行
+を加えるでしょう。FULL 結合は、一致した行に t1 と t2 からは結合されなかった行を
+返すでしょう。OUTER という言葉はオプションで LEFT, RIGHT, または FULL などの結
+合を仮定されています。 +These identical queries join t1.col to t2.col, and also
+return any unjoined +rows in t1 (those with no match in t2). A RIGHT join
++would add unjoined rows of t2. A FULL join would return +the matched rows plus
+all unjoined rows from t1 and t2. The word OUTER +is optional and is assumed in
+LEFT, RIGHT, +and FULL joins. Ordinary joins are called INNER +joins. 以前のリ
+リースでは外部結合(outer join)をUNION と NOT IN を使ってシミュレートできます。
+たとえば、tab1 と tab2 を結合するときは、次の問い合わせで二つのテーブルを外部結
+合します。
+ SELECT tab1.col1, tab2.col2
+ FROM tab1, tab2
+ WHERE tab1.col1 = tab2.col1
+ UNION ALL
+ SELECT tab1.col1, NULL
+ FROM tab1
+ WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
+ ORDER BY col1
-これらの象徴的な問い合わせでは t1.col を t2.col と結合して、t1 の
-結合されなかった行(t2 と一致しなかった行)も返しています。RIGHT 結合は t2 の結合されなかった行を加えるでしょう。FULL 結合は、一致した行に t1 と t2 からは結合されなかった行を返すでしょう。OUTER という言葉はオプションで LEFT, RIGHT, または FULL などの結合を仮定されています。
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+ PostgreSQLの拡張についての質問
+5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうの
+はなぜですか?
+問題は色々と考えられます。まず最初に、作成したユーザ定義関数を単独のテストプロ
+グラムにして試してみて下さい。
+5.2) PostgreSQL 用に書いた粋な新しい型や関数は、どうすれば寄贈できますか?
+皆さんの行なった拡張を、pgsql-hackers メーリング・リストに送ってください。そし
+て、ゆくゆくはそうした拡張が contrib/ サブディレクトリの中に入ることになるでし
+ょう。
+5.3) タプルを返す C言語の関数はどのように書きますか?
+原理的には可能ですが、これには究極の妙技を要しますので、著者のまわりでは未だ誰
+もやったことがありません。
+5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜ
+ですか?
-
-+These identical queries join t1.col to t2.col, and also return any unjoined
-+rows in t1 (those with no match in t2). A RIGHT join
-+would add unjoined rows of t2. A FULL join would return
-+the matched rows plus all unjoined rows from t1 and t2. The word OUTER
-+is optional and is assumed in LEFT, RIGHT,
-+and FULL joins. Ordinary joins are called INNER
-+joins.
-
-
-以前のリリースでは外部結合(outer join)をUNION と NOT IN を使ってシミュレートできます。
-たとえば、tab1 と tab2 を結合するときは、次の問い合わせで二つのテーブルを外部結合します。
-
-
- SELECT tab1.col1, tab2.col2
- FROM tab1, tab2
- WHERE tab1.col1 = tab2.col1
- UNION ALL
- SELECT tab1.col1, NULL
- FROM tab1
- WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
- ORDER BY col1
-
-
-
-
-
-5.1) 自分で書いたユーザ定義関数を psql の中で実行するとコア・ダンプしてしまうのはなぜですか?
-
-
-5.2) PostgreSQL 用に書いた粋な新しい型や関数は、どうすれば寄贈できますか?
-
-
-5.3) タプルを返す C言語の関数はどのように書きますか?
-
-
-5.4) ソース・ファイルを変更しました。再コンパイルしても変化が見られないのはなぜですか?
-
-
-
PostgreSQL(ポストグレス・キュー・エル)についてよくある質問(FAQ)
4.6) 行、テーブル、データベースの最大サイズは?
@@ -888,6 +890,10 @@ PostgreSQL
4.10) 問い合わせオブティマイザがどのように問い合わせを評価するのかを見るにはどうしますか?
@@ -1214,5 +1220,13 @@ PostgreSQL 7.1
+
+
+[訳注:
+]
+
+