diff --git a/doc/FAQ_japanese b/doc/FAQ_japanese index 12fb7cbdd0..0d989f2f49 100644 --- a/doc/FAQ_japanese +++ b/doc/FAQ_japanese @@ -1,6 +1,6 @@ PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ) -原文最終更新日: Mon Mar 18 14:34:57 EST 2002 +原文最終更新日: Fri Apr 26 23:03:46 EDT 2002 現在の維持管理者: Bruce Momjian (pgman@candle.pha.pa.us) Maintainer of Japanese Translation: Jun Kuwamura (juk@postgresql.jp) @@ -73,14 +73,14 @@ docs/faq.html 操作上の質問 4.1) バイナリ・カーソルと通常カーソルとの違いは何ですか? -4.2) 最初の数行のみを select するにはどうしますか? +4.2) 最初の数ロウのみを select するにはどうしますか? 4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか? -4.4) テーブルから列の削除はどのようにしますか? -4.5) 行、テーブル、データベースの最大サイズは? +4.4) テーブルからカラムの削除はどのようにしますか? +4.5) ロウ、テーブル、データベースの最大サイズは? 4.6) 一般的なテキストファイルからデータを保存するには、データベースのディスク容 量はどのくらい必要ですか? -4.7) データベース内に定義されたテーブルやインデックスをどのようにして見つけ出し -ますか? +4.7) 定義されたテーブル、インデックス、データベース、および、ユーザをどのように +して見つけ出しますか? 4.8) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか ? 4.9) 問い合わせオブティマイザがどのように問い合わせを評価するかを見るにはどうし @@ -106,10 +106,11 @@ docs/faq.html 4.19) どのバージョンの PostgreSQL を走らせているのかを調べるにはどうしますか? 4.20) ラージオブジェクトの操作で、invalid large obj descriptorと出るのはなぜで すか? -4.21) 現在の時刻がデフォルトとなるような列はどのようにつくりますか? +4.21) 現在の時刻がデフォルトとなるようなカラムはどのようにつくりますか? 4.22) なぜ、INを使う副問い合わせがとても遅いのですか? 4.23) 外部結合(outer join)はどのように実現しますか? 4.24) 複数のデータベースを使う問い合わせはどのようにすればできますか? +4.25) 関数で複数のロウまたはカラムを返すにはどうしますか? PostgreSQLの拡張についての質問 @@ -750,7 +751,9 @@ postgreSQL 何という関数がどのくらい実行時間を食っているかを見るために、プロファイリング( プロフィール付き)でコンパイルすることも可能です。そのバックエンドのプロフィー ル・ファイルは pgsql/data/base/dbname ディレクトリに格納されるでしょう。クライ -アントのプロフィールはクライアントの現行ディレクトリに置かれるでしょう。 +アントのプロフィールはクライアントの現行ディレクトリに置かれるでしょう。Linux +でまともなプロファイリングを行うには -DLINUX_PROFILE でコンパイルする必要があり +ます。 3.8) 接続しようとするときに 'Sorry, too many clients' が出るのはなぜですか? @@ -805,16 +808,16 @@ ORDER BY 詳述は、オンラインマニュアルで DECLARE を見て下さい。 -4.2) 最初の数行のみを SELECT するにはどうしますか? +4.2) 最初の数ロウのみを SELECT するにはどうしますか? オンラインマニュアルでFETCHを見てください。あるいは、SELECT ... LIMIT....を使っ てみて下さい。 -たとえ、欲しいのは最初の数行だけでも、すべての問い合わせを評価しなくてはならな -いかもしれません。ORDER BY を持った問い合わせを考えてみて下さい。もし、ORDER BY -に合ったインデックスがあるとすると PostgreSQLは要求された最初の数行だけで評価で -きるかもしれませんが、でなれば、PostgreSQL は意図した行が生成されるまですべての -行を評価しなければならないかもしれません。 +たとえ、欲しいのは最初の数ロウだけでも、すべての問い合わせを評価しなくてはなら +ないかもしれません。ORDER BY を持った問い合わせを考えてみて下さい。もし、ORDER +BYに合ったインデックスがあるとすると PostgreSQLは要求された最初の数ロウだけで評 +価できるかもしれませんが、でなれば、PostgreSQL は意図したロウが生成されるまです +べてのロウを評価しなければならないかもしれません。 4.3) テーブルやその他の情報のリストを psql で見るにはどうしますか? @@ -823,22 +826,25 @@ psql コマンドが含まれています。 psql に -E オプションをつけて起動すれば、与えたコマ ンドを実行するための問い合わせが出力されます。 -4.4) テーブルから列の削除はどのようにしますか? +4.4) テーブルからカラムの削除はどのようにしますか? ALTER TABLE DROP COLUMN はサポートしていませんが、その代わりにこうします: - SELECT ... -- 削除したい列以外の列をすべて選択します。 + BEGIN; + LOCK TABLE old_table; + SELECT ... -- 削除したいカラム以外のカラムをすべて選択します。 INTO TABLE new_table FROM old_table; DROP TABLE old_table; ALTER TABLE new_table RENAME TO old_table; -[訳注:列の追加は ALTER TABLE ADD COLUMN で行えます。] + COMMIT; +[訳注:カラムの追加は ALTER TABLE ADD COLUMN で行えます。] -4.5) 行、テーブル、データベースの最大サイズは? +4.5) ロウ、テーブル、データベースの最大サイズは? 制限は以下のとおりです。 データベースの最大サイズ? 制限無し (500GB のデータベースも存在します) テーブルの最大サイズ? 16TB -行の最大サイズ? 7.1以降で制限無し +ロウの最大サイズ? 7.1以降で制限無し フィールドの最大サイズ? 7.1以降で1GB テーブル内での最大ロウ数? 制限無し テーブル内での最大カラム数? カラムの型により250-1600 @@ -865,7 +871,7 @@ ALTER TABLE DROP COLUMN う。テキストの文字列の平均長さを20バイトと仮定すると、フラットファイルの大きさ は約2.8MB です。このデータを含む PostgreSQL データベースファイルの大きさは次の ように約6.4MBと見積もることができます: - 36 bytes: 各行のヘッダ(概算) + 36 bytes: 各ロウのヘッダ(概算) 24 bytes: 整数(int)フィールドとテキスト(text)フィールド + 4 bytes: ページ上のタップルへのポインタ ---------------------------------------- @@ -886,29 +892,30 @@ ALTER TABLE DROP COLUMN インデックスは、これほどのオーバヘッドは要求しませんが、インデックス付けされる データを含む以上、それなりに大きくなります。 -4.7) データベース内に定義されたテーブルやインデックスをどのようにして見つけ出し -ますか? +4.7) 定義されたテーブル、インデックス、データベース、および、ユーザをどのように +して見つけ出しますか? psql にはいろいろなバックスラッシュ・コマンドがあり、こうした情報を表示します。 バックスラッシュ・コマンドの種類を見るには \? を使って下さい。 また、pgsql/src/tutorial/syscat.source ファイルを走らせてみて下さい。それは、沢 山の SELECT 文により必要な情報をデータベースのシステム・テーブルから取り出して -例示してくれます。 +例示してくれます。また、pg_ で始まるシステムテーブルにも記述されています。さら +に、psql -l はすべてのデータベースをリスト表示します。 4.8) 問い合わせが遅いうえ、インデックスを使っている様子がありません。なぜですか ? インデックスは自動的にすべての問い合わせで使われるわけではありません。テーブル -が最小サイズより大きく、問い合わせでそのわずかなパーセンテージの行を選択する時 -だけ、インデックスは使われます。これはインデックススキャンにより起こされるラン -ダムなディスクアクセスは、テーブルをストレートに読む順次走査よりも遅くなること -がときどきあるからです。 +が最小サイズより大きく、問い合わせでそのわずかなパーセンテージのロウを選択する +時だけ、インデックスは使われます。これはインデックススキャンにより起こされるラ +ンダムなディスクアクセスは、テーブルをストレートに読む順次走査よりも遅くなるこ +とがときどきあるからです。 インデックスを使うかを決定するために、PostgreSQL はテーブルについての統計情報を 持たなければなりません。この統計情報は、VACUUM ANALYZEまたは、単に ANALYZE を使 -って収集することができます。統計情報を使ってオブティマイザはテーブルの中に何行 -あるかを知り、インデックスを使うべきかのの決定をより正しくできます。統計情報は +って収集することができます。統計情報を使ってオブティマイザはテーブルの中にある +ロウ数を知り、インデックスを使うべきかのの決定をより正しくできます。統計情報は 最適な結合順や結合方法を決める上でも貴重なものもあります。統計情報の収集は、テ ーブルの内容がかわると毎に繰返しなされるべきです。 @@ -1003,7 +1010,7 @@ Type Internal Name Notes "char" char 1 character CHAR(#) bpchar 指定された固定長となるように空白が詰められる VARCHAR(#) varchar 長さの上限の無いテキスト -TEXT text 長さの制限は最大行長による +TEXT text 長さの制限は最大ロウ長による BYTEA bytea 可変長のバイト配列(null-byte safe) 内部名にお目にかかるのは、システム・カタログを調べるときや、エラーメッセージを @@ -1012,8 +1019,8 @@ BYTEA bytea 上記の型のうち後の4つの型は "varlena" 型です(すなわち、ディスクの最初の4バイ トがデータ長で、それの後に実際のデータが続きます)。このように実際の空間は宣言さ れた大きさよりも少し大きくなります。しかし、これらのデータ型はTOASTにより圧縮さ -れたり複数行に渡って保存されたりして、ディスク上の空間は思ったより小さくなりま -す。 +れたり複数ロウに渡って保存されたりして、ディスク上の空間は思ったより小さくなり +ます。 CHAR()はいつも長さが同じ文字列を保存するのに最適です。VARCHAR() は可変長の文字 列を保存するのに最適ですが、保存できる文字列の長さに制限があります。TEXT は長さ @@ -1022,8 +1029,8 @@ NULL 4.15.1) 通番(serial)/自動増分フィールドはどのようにつくりますか? -PostgreSQL は SERIAL データ型をサポートします。列上に通番とインデックスを自動作 -成します。たとえば、 +PostgreSQL は SERIAL データ型をサポートします。カラム上に通番とインデックスを自 +動作成します。たとえば、 CREATE TABLE person ( id SERIAL, name TEXT @@ -1038,8 +1045,8 @@ PostgreSQL 通番についてのもっと詳しい情報は、オンラインマニュアルで create_sequence をご覧 下さい。 -また、各行のOIDフィールドを一意値として使うこともできます。しかしながら、もしも -データベースをダンプしてりロードする必要がある場合は、OIDを温存するために +また、各ロウのOIDフィールドを一意値として使うこともできます。しかしながら、もし +もデータベースをダンプしてりロードする必要がある場合は、OIDを温存するために pg_dump で -oオプションを使うか、または、COPY WITH OIDSオプションを使う必要があ ります。 Bruce Momjian の(http://www.PostgreSQL.org/docs/aw_pgsql_book)の Numbering Rowsの章にありあます。 @@ -1054,7 +1061,7 @@ Numbering Rows そうして、new_id に保存した新しい値を他の問い合わせに(たとえば、person テーブル に対する外部キー(foreign key)のように)使うとよいでしょう。自動的に作られた SEQUENCEオブジェクトの名前は、