PostgreSQL(ݥȥ쥹塼)ˤĤƤ褯Ȥβ(FAQ)

ʸǽ: 30 April 2010

Contents

  1 Ūʼ
      1.1 1.1) PostgreSQLȤϲǤθƤϡ PostgresȤϡ
      1.2 1.2) ï PostgreSQL 򥳥ȥ뤷Ƥޤ
      1.3 1.3) PostgreSQL Υ饤󥹤ϤɤʤäƤޤ
      1.4 1.4) PostgreSQL򥵥ݡȤץåȥۡϡ
      1.5 1.5) PostgreSQL ϤɤǤޤ
      1.6 1.6) ǿΥ꡼ϤɤǤ
      1.7 1.7) ݡȤϤɤǼޤ
      1.8 1.8) ХݡȤϤɤΤ褦ȯޤ
      1.9 1.9) ΤΥХ̵̤ǽϤɤäƸĤޤ
      1.10 1.10) ɤΤ褦ʸ񤬤ޤ
      1.11 1.11) SQL Ϥɤгؤ٤ޤ
      1.12 1.12) ѥå󶡤ꡢȯ໲äˤϤɤФ褤Ǥ
        
      1.13 1.13) ¾DBMSPostgreSQLϤɤʤΤǤ
          1.13.1 ǽ(Features)
          1.13.2 ǽ(Performance)
          1.13.3 (Reliability)
          1.13.4 ݡ(Support)
          1.13.5 (Price)
      1.14 1.14) PostgreSQLȤ߹ߤ˻Ȥޤ
      1.15 1.15) PostgreSQLΥ᡼󥰥ꥹȤιɤˤϤɤФ褤
        ǤޤŻҥ᡼ʣƼʤ褦ˤˤϤɤޤ
        
  2 桼饤Ȥμ
      2.1 2.1) PostgreSQL ˤϤɤʥ󥿡եȤޤ
      2.2 2.2) PostgreSQL  Web ڡϢȤˤϤɤʥġ뤬ޤ
        
      2.3 2.3) PostgreSQL ˥ե롦桼󥿡եϤޤ
        
  3 μ
      3.1 3.1) ɤΤ褦ˤ /usr/local/pgsql ʳξ˥󥹥ȡǤ
        ޤ
      3.2 3.2) ¾ΥۥȤ³ϤɤΤ褦椷ޤ
      3.3 3.3) ɤǽ뤿ˤϡǡ١󥸥ɤΤ褦
        Ĵޤ
          3.3.1 ѹ
          3.3.2 й
          3.3.3 ϡɥ
      3.4 3.4) ɤΤ褦ʥǥХǽȤޤ
      3.5 3.5) ³褦ȤȤ 'Sorry, too many clients' ФΤϤ
        Ǥ
      3.6 3.6) PostgreSQLΥåץ졼ɤμϤɤʤޤ
      3.7 3.7) PostgreSQLϹ˺ǿβƻ֤ѹ򰷤ޤ
      3.8 3.8) ϡɥˤϤɤΤ褦ʥԥ塼ȤФ褤Ǥ
      3.9 3.9) PostgreSQLCPUΥ꥽ɤΤ褦˻Ȥޤ
  4 μ
      4.1 4.1) ǽοΤߤ SELECTˤϤɤޤʥ
        
      4.2 4.2) 줿ơ֥롢ǥåǡ١ӡ桼
        ɤΤ褦ˤƸĤФޤpsqlǻȤƤ륯ɽ
        Ϥɤޤ
      4.3 4.3) ΥǡѹˤϤɤޤ
      4.4 4.4) ơ֥롢ǡ١κ祵ϡ
      4.5 4.5) ŪʥƥȥեΥǡ¸ˤϡǡ١
        ǥ̤ϤɤΤ餤ɬפǤ
      4.6 4.6) ꤬٤ΤϤʤǤ礦ʤǥåȤʤ
        Ǥ礦
      4.7 4.7) 䤤碌ץƥޥɤΤ褦䤤碌ɾΤ
        ˤϤɤޤ
      4.8 4.8) ƥȷ¤ؤѹˤϤɤޤ
      4.9 4.9) ɽǤθʸȾʸȤ̤ʤɽϤ
        Τ褦˼¸ޤʸȾʸȤ̤ʤΤΥǥ
        ϤɤΤ褦˻Ȥޤ
      4.10 4.10) ǡեɤNULL Ǥ뤳Ȥ򸡽ФˤϤɤ
        ޤ NULLǤ뤳Ȥ򸡽ФˤϤɤޤեɤNULL
        ɤǤɤΤ褦˥ȤǤޤ
      4.11 4.11) ʸΤ줾ΰ㤤ϲǤ
      4.12 4.12) (serial)ưʬեɤϤɤΤ褦ˤĤޤ
      4.13 4.13) SERIALǡͤϡɤޤ
      4.14 4.14) currval() ˤä¾Υ桼ȶ֤˴٤뤳ȤϤʤǤ
        
      4.15 4.15) 󥹡SERIALؤγֹ˥åפΤ
        ʤǤȥ󥶥ǤȤˤ⤦ɥֹ椬
        ȤʤΤϤʤǤ
      4.16 4.16) OID ȤϲǤ
      4.17 4.17) CTID ȤϲǤ
      4.18 4.18) 顼å "ERROR: Memory exhausted in AllocSetAlloc()
        "ФΤϤʤǤ
      4.19 4.19) ɤΥС PostgreSQL 餻Ƥ뤫Ĵ٤ˤϤɤ
        ޤ
      4.20 4.20 ǡ١δƺפĤˡϤޤ?
      4.21 4.21) ߤλ郎ǥեȤȤʤ褦ʥϤɤΤ褦ˤĤ
        
      4.22 4.22) (outer join)ϤɤΤ褦˼¸ޤ?
      4.23 4.23) ʣΥǡ١Ȥ䤤碌ϤɤΤ褦ˤФǤޤ
        
      4.24 4.24) ؿʣΥޤϥ֤ˤϤɤޤ
      4.25 4.25) PL/PgSQL δؿǰơ֥˥Ȥɤ
         "relation with OID ##### does not exist" Ȥ顼Τ
        礦
      4.26 4.26) ɤΤ褦ʥץꥱΥ塼󤬤ޤ
      4.27 4.27)ơ֥ȥ̾꡼ǧʤΤϤʤ
        ʤԥ饤(ñƬʸ)ݻʤΤǤ?
      4.28 4.28)ǡ١Υѥɤ˺Ƥޤޤ᤹ˤϤ
        ޤ
      4.29 4.29)PostgreSQL˥ȥɥץϤޤ
      4.30 4.30) "SELECT count(*) FROM bigtable;"ϡʤ٤ΤǤ?
  5 ܸ˴ؤ
      5.1 5.1)ܸ줬ޤʤΤϤʤǤ
      5.2 5.2) psql Windows饢Ȥˡܸ줬ʸΤ
        
      5.3 5.3) PostgreSQLܸʸϤǤޤ
      5.4 ܸǤˤĤơ

Ūʼ

1.1) PostgreSQLȤϲǤθƤϡ PostgresȤϡ

PostgreSQLPost-Gres-Q-L(ݥȡ쥹塼) ȯޤä
ǤñPostgresʥݥȥ쥹ˤȸƤФ뤳Ȥ⤢ޤ"PostgreSQL"
ɤȯ뤫ˤʤͤΤˡեѰդƤޤ

PostgreSQL ϡ֥-졼ʥǡ١ƥǡŪʾ
ǡ١ƥˡDBMSƥ˸褦ʲɤܤ줿ħ
ͭޤPostgreSQLϡͳ˴ʷǤΥɤ뤳ȤǤ
ޤ

PostgreSQL γȯϡۤȤɤˤҤäܥƥγȯԤˤä
󥿡ͥåȤ̤ߥ˥ˤäƹԤƤޤߥ˥ƥ
ˤץȤǤ뤿ᡢɤδȤ⤦ޤ󡣳ȯ˻ä
ȯԸFAQ 򸫤Ƥ

PostgresϡȤƤPostgreSQLΰΤǤޤ̾ϡС졼
ǤΥץȤǸȤƤ̾ǡۤΤΰΤ٤Ƥڤ˹
ޤΤǤ'PostgreSQL' ȯ񤷤Ȼפʤ顢Τ
'Postgres' ȸƤ֤褦ˤޤ礦


1.2) ï PostgreSQL 򥳥ȥ뤷Ƥޤ

PostgreSQL֡Ѱ񡢤뤤ϡȥ򤹤ҤõȤƤ
ᤶ򤨤 ---- ¸ߤʤΤǤ桹ϡ濴Ȥʤ륳ߥåƥCVSߥ
ޤΥ롼פϥȥ뤹뤿Ȥ⡢Τ
ΤǤǤϡץȤϡǤ⻲äǤ볫ȯԤȥ桼Υߥ
ƥˤդޤɼԤʤФʤʤȤϡ᡼󥰥ꥹ
򥵥֥饤֤ơ˻ä뤳ȤǤʳȯԸFAQˤϡPostgreSQL
γȯؤβäˤĤƤξ󤬤ޤ


1.3) PostgreSQL Υ饤󥹤ϤɤʤäƤޤ

PostgreSQL ϲΥ饤󥻥󥹤˽ޤ

PostgreSQLBSDMIT˻饤󥹤βۤƤޤϴŪˤϡ
ѼԤΥɤ򹥤Ѥ뤳ȤƤޤ¤Ȥ
ΥեȥȼʤˤƤˡŪǤ桹碌뤳Ȥ
ǤʤȤȤǤޤɽΥեȥΤ٤Ƥʣ
ɽ뤳ȤɬפǤʲˡ桹ȤäƤ饤󥹡ʻѵˤ򼨤
ޤ

   [
       ʸϱѸǤͤȤơʸʻǺܤޤ
   ]


PostgreSQL Data Base Management System

Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group Portions
Copyright (c) 1994-1996 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.

       POSTGRESQL ǡ١ƥ

       ʬŪ (c) 1996-2010, PostgreSQLݳȯ롼
       ʬŪ (c) 1994-1996 ե˥ܹ


         ܥեȥӤʸ켰Ͼ嵭ɽȡʸ
       Ӥ³ĤƤʣźդƤ¤ˤ
       ơѡʣդεĤ򡢤ʤŪǤäƤ⡢
       ̵ǤƱս̵˹Ԥʤ뤳Ȥ򤳤ǧޤ

         ե˥ؤϡʤԤˤƤ⡢פβ
       ޤࡢľŪŪ̡뤤ɬŪˤ餺
       »ˤĤơȤե˥ؤ»ˤĤ
       ƤȤƤ⡢ڤǤ餤ޤ

         ե˥ؤϡŪˤۤݾڤȡŪ
       Ŭ˴ؤƤϤȤꡢ˸¤餺ʤݾڤ
       뤳ȤޤʲѰդ줿եȥϡ֤Τޤޡפ
       ܸȤե˥ؤϤݻٱ硢ɤ
       뤤Ͻ̳餤ޤ

   [
       ˴ؤʸϾ嵭αѸˤɽǤܸϤޤ
       ٤ȤƤ
   ]

1.4) PostgreSQL򥵥ݡȤץåȥۡϡ

ŪˡǶUnixߴץåȥۡǤPostgreSQLƯϤ
Ƕᡢºݤ˥ƥȤԤʤäȤ𤬤ʤ줿ץåȥۡˤĤƤϡ
ӥɥեǸ뤳ȤǤޤݡȡץåȥۡˤĤƤ˾ܤ
Ȥϡhttp://www.postgresql.org/docs/current/static/
supported-platforms.html ʸˤޤ

PostgreSQL ϡWin2000 SP4, WinXP, ơWin2003 ʤ Microsoft Windows NT
Υڥ졼ƥ󥰥ƥǡͥƥ֤ޤ餫ѥå
줿󥹥ȡ餬 http://www.postgresql.org/download/windows 
ɤǤޤ MSDOS١WindowsΥС(Win95, Win98, WinMe)ǤϡCygwin
Ȥä PostgreSQL 餻뤳ȤǤޤ

   [
       ܸǤξϡ WindowsǤ˴ؤFAQ򤴤󤯤
        Running & Installing PostgreSQL On Native Windows/ja
   ]

1.5) PostgreSQL ϤɤǤޤ

ĤΥڥ졼ƥ󥰥ƥȥץåȥۡ˥Хʥۤޤ
 our download area ɤϡWeb֥饦ͳޤϡ
ftpͳǼǤޤ

1.6) ǿΥ꡼ϤɤǤ

PostgreSQL κǿ꡼Ǥϡ桹WebȤǸ뤳ȤǤޤ桹ϡ1
ǯ˥᥸㡼꡼򡢿ȤΥޥʡ꡼ԤʤȤ§Ȥ
ޤ̾ޥʡ꡼ϡ٤ƤΥ᥸㡼꡼Υ֥ˤĤƱ
˹Ԥޤ᥸㡼꡼ȥޥʡ꡼ˤĤƾܤϡhttp://
www.postgresql.org/support/versioning 

   [
       Сֹ x.y.z κǽ x.y ᥸㡼꡼ֹ
       Ǹ z ޥʡ꡼ֹˤʤޤ᥸㡼꡼
       ֹ椬ƱǤСǡ١饹˸ߴޤ
   ]

1.7) ݡȤϤɤǼޤ

PostgreSQL ߥ˥ƥ¿Υ桼ΤˡŻҥ᡼ͳλٱ󶡤Ƥ
ޤŻҥ᡼ꥹȤ򥵥֥饤֤뤿ΥᥤȤʤ륦֥Ȥ
http://www.postgresql.org/community/lists/ Ǥ줫顢ϤΤǤ
general ޤϡbugs ȤäꥹȤ褤Ǥ礦

᥸㡼IRC ͥϡFreenode (irc.freenode.net) #postgresql Ȥ
ͥǤƱͥåȥˡڥΥͥ (#postgresql-es)ե
󥹸Υͥ(#postgresqlfr)֥饸ͥ (#postgresql-br) ⤢
ޤޤEFNetˤPostgreSQLͥ뤬ޤ

   [:
         1999ǯ723ܥݥȥ쥹桼άJPUGΩޤ
       JPUG ȿǡPostgreSQLѤã߶ϤξȤʤäƤޤ
       (2006ǯ ư(NPO)ˡPostgreSQL桼ˤʤޤ
       Webβ̵ǤβȲι׸
         ϱĤƤޤ)
       ܤϡJPUG Web :
               http://www.postgresql.jp/
       򤴤󤯤

       ܸIRCͥ '#PostgreSQL:*.jp' ¸ߤޤ
   ]


ѤǥݡȤԤҤΥꥹȤϡ http://www.postgresql.org/support/
professional_support ˤޤ

1.8) ХݡȤϤɤΤ褦ȯޤ

http://www.postgresql.org/support/submitbug PostgreSQL ХեˬƤ
ХݡȤФˤĤƤμȻؿˤޤ

Ʊ ftp  ftp://ftp.postgresql.org/pub/ ǡǿС
PostgreSQL õƤߤƤ

ХեȤäꡢ뤤Ϥ줫PostgreSQL᡼󥰥ꥹȤƤ
ꤹȡŪ˰ʲιܤΤɤ줫ƤȤʤޤ

  ХǤϤʤͳ
  ΤΥХǡTODOꥹȤ˺ܤäƤ
  ԤΥ꡼ǥХľäƤ
  ХľäƤ뤬꡼ˤϤޤѥåƤʤ
  ˾ܺ٤ʾ׵:
      ڥ졼ƥ󥰥ƥ
      PostgreSQLΥС
      ȯǤƥȥ
      ǥХå
      ǥХåǤΥХåȥ졼ν
  ʥХΤ褦ʤȤ뤫:
      ѥåƤơΥ᥸㡼뤤ϥޥʡ꡼˼
        ޤͽ
      ХϤˤϽǤʤơTODOꥹȤɲä

1.9) ΤΥХ̵̤ǽϤɤäƸĤޤ

PostgreSQLϳĥ줿SQL:2003Υ֥åȤ򥵥ݡȤޤ桹Υڡ TODO
ꥹȤˡΤΥХǽ侭ײˤĤƤεҤޤ

ħ׵̼Τ줫βˤޤ

  ˤˤ뵡ǽϡ TODO ꥹȤǤ
  Τ褦ʵǽޤƤޤ󡣤ϡ
      SQLʤ˽ऺ¸εǽȽʣ
      ɤʣФơΤʤǽ
      Τʤǽ
  ǽϡ TODO ΥꥹȤ˲äޤ

桹ϡPostgreSQL ˴ؤơŻҥ᡼ľб TODO ꥹȤǿ˹
Ƥ椯ۤŪǤ뤳ȤΤäƤޤΤǡХץƥϻȤޤ
󡣸¤ˡΥեȥǥХϤۤĹϤ³ޤ󤷡¿Υ
˱ƶХޤ˽ޤ PostgreSQLΥ꡼ǡ٤Ƥѹ
ơΤꤿС CVS Υå򸫤Ƥ
꡼ΡȤˤΥեȥ˲ä줿٤Ƥѹ夵Ƥ


1.10) ɤΤ褦ʸ񤬤ޤ

դˡĤΥޥ˥奢ȥ饤󡦥ޥ˥奢(ޥ˥奢롦ڡ)
ӤĤξʥƥ꤬ޤޤޤ /docǥ쥯ȥ򤴤󤯤
ޤޥ˥奢ϡ http://www.postgresql.org/docs/ ǥ饤ǤǤ


   [:
       JPUG ʸ񡦽ҴϢʬʲ줿ޥ˥奢⤢ޤ
       http://www.postgresql.jp/document/current/



       ץ쥹顢ʤŤʤޤ
       PostgreSQLեޥ˥奢ǤƤޤ
   ]


PostgreSQL ˤĤƤܤޤΤ2ϥ饤ǻȤǤ
 http://www.postgresql.org/docs/books/awbook.html

   [:
       ܤϡJPUGPostgreSQL Bookʬʲפ졢
       ԥ󤫤֤ϤƤPostgreSQLפȤƽǤޤ
   ]

ӡ http://www.commandprompt.com/ppbook/Ǥ

   [:
       ˮϡּ PostgreSQLפȤƥ饤꡼ѥ󤫤Ǥޤ
   ]

ǽʽҤϿϡhttp://www.postgresql.org/docs/books/ ˤޤ
Ǥ͵ΤΤϡKorry & Susan Douglas ˤܤǤ PostgreSQLεѾ
ε⡢ wiki ˤޤ

   [:
       ܸνˤĤƤϡPostgreSQL桼Ρ
         http://www.postgresql.jp/wg/jpugdoc/ 
         http://www.postgresql.jp/PostgreSQL/references.html 
         http://www.postgresql.jp/wg/psqltrans/
       ⤴󤯤
   ]

ޥɥ饤Υ饤ȥץpsql ˤ⡢黻ҡؿ󡢤¾
ξĴ٤뤿ˡ餷 \d ޥɤĤޤ \? Ϥ
Ѳǽʥޥɤɽޤ

   [:
       2008ǯ1118PostgreSQLڤΤ˰̸ξ򰷤
       Let's PostgresפȤݡ륵Ȥץ󤷤ޤ
          http://lets.postgresql.jp/
   ]

1.11) SQL Ϥɤгؤ٤ޤ

ޤ嵭ǽҤ٤ PostgreSQL ˤĤƤܤɤळȤƤƤ The
Practical SQL Handbook, Bowman Judith S. et al., Addison-Wesley ¿Υ桼
˹ɾǤۤǤϡThe Complete Reference SQL, Groff et al., McGraw-Hill 
ɾǤ

餷ϡ

http://www.intermedia.net/support/sql/sqltut.shtm http://sqlcourse.com http://
www.w3schools.com/sql/default.asp http://mysite.verizon.net/Graeme_Birchall/
id1.html http://sqlzoo.net

ˤޤ

   [:
        PostgreSQL桼ܸλʸξҲڡ

http://www.postgresql.jp/PostgreSQL/references.html

       ޤ
        ѱѻΡPostgreSQLܸޥ˥奢
               http://www.net-newbie.com/
       Ǥϥ饤ޥ˥奢θǤޤ
        ݻ׻UNIX ǡ١
               http://www.wakhok.ac.jp/DB/DB.html
       ⥪饤ɤळȤǤޤ
        Nikkei BP IT Pro ˤаã׻ PostgreSQL å
       Ǥ󿷤ȤꤢƤޤ
   ]


1.12) ѥå󶡤ꡢȯ໲äˤϤɤФ褤Ǥ

ȯԸFAQ򤴤󤯤

1.13) ¾DBMSPostgreSQLϤɤʤΤǤ

եȥɾˡˤϤĤޤǽǽȿȥݡȤ
ʤǤ

ǽ(Features)

PostgreSQLϡȥ󥶥󡢥֥ꡢȥꥬӥ塼
ȡӡ줿åʤɡ絬Ͼ DBMSĵǽۤȤɻä
ޤ PostgreSQLϡ桼Ѿ롼롢줫顢å
̾ޥСƱʤɡDBMS碌ʤ褦ʵǽ
Ĥ碌Ƥޤ

ǽ(Performance)

   PostgreSQL¾ξѤ뤤ϥץ󥽡Υǡ١ȸ߳Ѥǽ
   ޤ̤ǤϤᤫäꡢ̤ۤǤϤ٤äꤷޤ¾Υǡ
   ١٤ǽϡդĤ +/-10% 餤Ǥ礦

(Reliability)

桹ϡDBMSο⤯ʤƤϤβ̵ͤȤ򤷤Ƥޤʬƥ
ơꤷɤХǾˤƤ꡼褦ؤƤޤ줾
Υ꡼ϾʤȤ1 ʾΥ١ƥȤԤʤޤǤΥ꡼
򤬡ǤȤưꤷǤʥ꡼Ǥ뤳ȤʪäƤޤʬ
Ǥϡ¾Υǡ١٤Ƥ½ʤȤ˼äƤޤ

ݡ(Support)

桹Υ᡼󥰥ꥹȤϡ뤤ʤˤĤƤؤμ򤷤Ƥ
롢ȯԤ桼礭ʽޤؤ󶡤Ƥޤ桹β
ݾڤ뤳ȤϤǤޤ󤬡ѥǡ١ǤäƤ˲褵櫓ǤϤ
ޤ󡣳ȯԤ䡢桼ߥ˥ƥޥ˥奢ࡢˡɤ
ɤľܥǤ뤳ȤˤäơPostgreSQLΥݡȤϡ¾DBMS ݡȤ
ͥ줿ΤȤʤäƤޤ˾ơξѥݡȤʤɤ⤢
FAQ1.7򤴤󤯤ˡ

(Price)

PostgreSQLѤϡѤǤ⥪ץ󥽡Ǥ⤹٤̵Ǥ嵭˼Ƥ
BSDλѵ˳ʤ¤ꡢPostgreSQLΥɤ̵ʤ˼
ȤǤޤ


1.14) PostgreSQLȤ߹ߤ˻Ȥޤ

PostgreSQLϥ饤ȡСƥ߷פƤơ饤
ȥФӤ뤤ʥץ̡뤳Ȥ׵ᤵޤ
¿Ȥ߹ߥƥϤΤ褦׵򥵥ݡȲǽǤȤ
ˤʤäƤȤ߹ߥƥˤäƤϡǡ١Фץꥱ
󡦥ץ뤳Ȥ׵ᤵ礬ꡢPostgresȤȤϤǤ
Τǡ̤Υǡ١塼򤹤٤Ǥ

1.15) PostgreSQLΥ᡼󥰥ꥹȤιɤˤϤɤФ褤Ǥޤ
Żҥ᡼ʣƼʤ褦ˤˤϤɤޤ

PostgreSQLMajordomo ڡ顢PostgreSQL˴ؤʣΥ᡼󥰥ꥹȤι
ɤγϤߤǤ褦ˤʤäƤޤʥ󤹤뤿ˤMajaordomo
ܿͤΥѥɤɬפˤʤޤ

PostgreSQLno٤ƤΥ᡼󥰥ꥹȤǤϡֿϥ᡼󥰥ꥹȤȤĸΥ᡼
ƼԤ褦˹ƤޤˤѼԤϡäȤ®˥
ؤֿ褦ˤʤäƤޤľܼäƤ᡼򡢥
ȤʣƼꤿʤϡMajordomo Change Settingsڡ顢
eliminateccåޤޤselfcopyΥåϤȤǡʬ
᡼Υԡʤ褦ˤǤޤ

桼饤Ȥμ

2.1) PostgreSQL ˤϤɤʥ󥿡եȤޤ

PostgreSQL Υ󥹥ȡ˴ޤޤʪCȹ CΥ󥿡եǤ
¾Υ󥿡եΩץȤǡ̡˥ɤޤ
ʬ뤳Ȥǡ줾γȯबȼΥ꡼塼ĤȤ
ޤ

PHP Τ褦ʤĤΥץߥ󥰸ϡ PostgreSQLΥ󥿡եޤ
ǤޤPerl, TCL, Python, ơΤۤѲǽʸΥ󥿡ե
ϡhttp://pgfoundry.org  Drivers/Interfaces ȥ󥿡ͥåȤθ
ߤĤޤ

2.2) PostgreSQL  Web ڡϢȤˤϤɤʥġ뤬ޤ

ǡ١΢˻ Web ڡˤĤƤ餷Ҳ𤬡 http://
www.webreview.comˤޤ

Web ؤγĥΤˤϡPHP(http://www.php.net/) ۤ󥿡եȤ
äƤޤ

   [:
         PHP˴ؤܸξϡ2000ǯ419ȯ­PHP桼Υ
               http://www.php.gr.jp/
       뤤ϡע वΥ
               http://www.geocities.jp/rui_hirokawa/php/
       ˤʤޤȤƤޤ
   ]


ʣʾ硢¿οͤ Perl 󥿡ե CGI.pm  mod_perl Ȥ
ޤ

2.3) PostgreSQL ˥ե롦桼󥿡եϤޤ

Ѥȥץ󥽡ȯԤˤξǡPostgreSQLˤ¿GUIġ뤬
ǽǡܺ٤ʥꥹȤϡ PostgreSQL GUI ġˤĤƤΥߥ˥ƥɤˤ
󤯤

   [:
       pgAdmin3 PostgreSQLɸGUIġǡWindows(PostgreSQL
       for Windows) ƱƤޤܤϡ
       http://www.pgadmin.org/ ˤޤ
   ]


???????????????????????????????????????

μ

3.1) ɤΤ褦ˤ /usr/local/pgsql ʳξ˥󥹥ȡǤޤ

ñˡϡ configure 餻Ȥ --prefix ץꤹ뤳ȤǤ


3.2) ¾ΥۥȤ³ϤɤΤ褦椷ޤ

ͤǤϡPostgreSQL  Unix ɥᥤ󥽥åȡޤϡTCP/IP³Υ
󤫤³ޤpostgresql.conf  listen_addresses 
ġ$PGDATA/pg_hba.conf եŬڤľǡ١ФƵư
ơۥȥ١ǧڤͭˤʤϡ¾Υޥ󤫤³ǤʤǤ
礦

3.3) ɤǽ뤿ˤϡǡ١󥸥ɤΤ褦Ĵޤ

ǽβǽΤꤽʼΰ褬3Ĥޤ

ѹ

Ƥɤǽ뤳Ȥޤߤޤ

  ʬǥåޤࡢǥå
  ʣINSERTΤCOPY
  ʣʸ򥰥롼ײ1ĤΥȥ󥶥ˤƥߥåȤΥХإåɤ
    ︺
  ǥå餫ΥФȤCLUSTER
  νϤΥ֥åȤ֤LIMIT
  Ƥ륯
  ץƥޥΤפݻ뤿ANALYZE
  VACUUM ޤ pg_autovacuum ξ
  礭ʥǡѹΤȤϥǥå

й

postgresql.confΤĤǽ˱ƶޤܤϡAdministration
Guide/Server Run-time Environment/Run-time Configuration 򤴤󤯤(JPUG
ȤܸǤǤϡ http://www.postgresql.jp/document/current/html/
runtime-config.html)

ϡɥ

ǽˤϡɥαƶ http://www.powerpostgresql.com/PerfList/ 
ӡ http://momjian.us/main/writings/pgsql/hw_performance/index.html (JPUG
Ȥܸ: http://www.postgresql.jp/wg/psqltrans/hw_performance_j.pdf) ˽
٤Ƥޤ


   [:
     JPUGĹҲ͵ˤ롢ֺǤPostgreSQL塼˥󥰡
     Ȥʡ ThinkIT ȤˤꡢºȤλͤˤʤޤ
       http://www.thinkit.co.jp/free/tech/10/1/1.html
   ]

3.4) ɤΤ褦ʥǥХǽȤޤ

йѿˤϡ http://www.postgresql.org/docs/current/interactive/
runtime-config-logging.html ˼褦ˡ¿ log_*  (JPUGȤ
 http://www.postgresql.jp/document/current/html/
runtime-config-logging.html )ȥץ׾Ϥ뤳ȤǤ
ǥХǽ¬ˤϤȤƤǤ

3.5) ³褦ȤȤ 'Sorry, too many clients' ФΤϤʤǤ

Ǥ¤Ǥ 100 Υǡ١åãƤޤäƤޤС
Ʊ³ǤХåɥץͤ䤹ɬפޤ
postgresql.conf max_connections ͤѹƥФƵư뤳Ȥǲ
ǽˤʤޤ

3.6) PostgreSQLΥåץ졼ɤμϤɤʤޤ

СֹդˤˤĤơ̤ˤĤƤβ http://
www.postgresql.org/support/versioning 򡢤ơåץ졼ɤˤĤƤΰ
Ū http://www.postgresql.org/docs/current/static/install-upgrading.html


[
  åץ졼ɤˤĤƤǤϲˤޤ
 http://www.postgresql.jp/document/current/html/install-upgrading.html
]

[
  ʸǤϡƤΩڡ˰ܤ졢Ƥޤ

ǽPostgreSQLΥ᥸㡼꡼Ϥǯ1ٹԤʤޤ
᥸㡼꡼ϡȤС8.18.2ؤΤ褦ˡСֹ1ܤ2
ܤʬ䤷Ƥ椭ޤ

PostgreSQLΥ᥸㡼꡼̾ƥơ֥ȥǡեޥå
ѹޤѹϤƤʣʤΤǤǡǡեθߴ
ݻϤޤ󡣥᥸㡼åץ졼ɤΤˤϡǡ١Υ/
ɤɬפˤʤޤ

ޥʡ꡼ϡȤС8.1.5 8.1.6ؤΤ褦ˡСֹ3
ͤ䤷ޤPostgreSQLϡޥʡ꡼ФƤϡХե
Ԥʤޤ󡣤٤ƤΥ桼ϡǤǿΥޥʡ꡼˹
Ǥåץ졼ɤˤϡ˥ꥹĤΤǤ顢PostgreSQLΥޥʡ
꡼Ǥϡˤȯꡢƥ˴طꡢǡĤ֤
Хåץ졼ɤΥꥹǾ¤ˤȤɤޤ桹Υߥ˥ƥ
Ǥϡåץ졼ɤꥹ⡢åץ졼ɤʤꥹΤۤ⤤
ͤƤޤ

ޥʡ꡼Υåץ졼ɤˤϥפȥꥹȥɬפϤʤǡ١
ФߤơåץǡȤ줿Хʥ򥤥󥹥ȡ뤷Фꥹ
Ȥޤ
]

3.7) PostgreSQLϹ˺ǿβƻ֤ѹ򰷤ޤ

PostgreSQLΥ꡼8.0(8.0.4)ʹߤβƻ־ (daylight savings information)
ϡȤƤ tzdata ǡ١zoneinfo ǡ١ޤϡ Olson
timezone ǡ١ȤƤФˤ˰¸ޤ DSTˡѹαƶб
ˤϡ tzdata ե륻åȤ򥤥󥹥ȡ뤷ơФꥹȤ
ޤ

٤ƤPostgreSQL åץǡȥ꡼ˤϡǿǤtzdata ե뤬ޤޤ
ޤΤǡȤˤʤäƤ᥸㡼СΥޥʡ꡼Υåץǡ
Ȥ³Ƥ̾ϽʬбǤޤ

桹Υץåȥۡϡtzdata եޤɸΥեȥåץǡȤ
ޤƥˤ tzdata եΥԡۤǤ
ۤȤɤLinuxǥȥӥ塼ǤϡӥȺѤߤPostgreSQLΥС
Υץ򤵤Ƥޤ

8.0PostgreSQL꡼Ǥϡڥ졼ƥ󥰥ƥtimezone
Ƥޤ


3.8) ϡɥˤϤɤΤ褦ʥԥ塼ȤФ褤Ǥ

PCϡɥϤۤȤɸߴޤΤǡۤȤɤοͤϡ٤ƤPCϡ
ƱʼȻפ෹ޤϴְ㤤ǤECC RAM
SCSIӡʼޥܡɤϡ¤ϡɥ٤ȡ꿮
ǽɤΤǤ PostgreSQL ϤۤȤɤΥϡɥǲƯޤ
ǽפʾϡΥϡɥΥץˤĤĴ뤳
ȤǤ¾¿ΥץꥱȰۤʤꡢǡ١Сϡ
̾ I/O꡼˹«ޤäơޤI/O֥ƥ˾
뤳Ȥ̿Ǥ줫顢꡼̡ơǽŪCPUθޤ
ȤСХåƥ꡼ХååդΥåĥǥȥ
ǡ١ǽξǤϡˤƺǤ¤ƺǤñˡȤʤޤ
桹Υ᡼󥰥ꥹȾǤϡɥץΥȥ졼ɥդˤĤƵ
뤳ȤǤޤ


3.9) PostgreSQLCPUΥ꥽ɤΤ褦˻Ȥޤ

PostgreSQLФϥץ١ʥåɤǤϤʤˤǡǡ١å
ˣĤΥڥ졼ƥ󥰥ƥΥץȤޤǡ١å
ϡ1Ĥ¿CPUѤ뤳ȤϤǤޤ󡣤ʣΥå
ϡڥ졼ƥ󥰥ƥˤäơưŪѲǽCPUΤ٤ƤʬƳȻ
ޤ饤ȥץꥱǤϡñ˥åɤȤȤǤ
줾ΥåɤʣΥǡ١³ԤȤǽǤ

μ

4.1) ǽοΤߤ SELECTˤϤɤޤʥ

ۤοԤǡSELECT μ¹Ի˼οʬäƤ
LIMIT Ȥޤ礦ǥå ORDER BY ȥޥåСΤ(ݤ
)¹ԤʤƤѤ⤢ޤSELECT ǥοʤ顢
Ȥä FETCH ޤ礦

˥SELECTˤϡʸȤޤ

   SELECT col
   FROM tab
   ORDER BY random()
   LIMIT 1;

ΡAndrew Gierthˤ֥ȥꤴˤʤСǤΥȥԥåˤ
Ƥ˾ܤФƤޤ

4.2) 줿ơ֥롢ǥåǡ١ӡ桼ɤΤ褦
ƸĤФޤpsqlǻȤƤ륯ɽˤϤɤޤ

psql  \dtޥɤȤäƥơ֥򸫤뤳ȤǤޤpsql \? 
äơޥɤꥹȤĴ٤뤳ȤǤޤǡpsql Υɤǡ
Хåå女ޥɤϤ pgsql/src/bin/psql/describe.c եɤ
ȤǤޤˤϡ SQL ޥɤʬޤޤޤޤ -E
ץդ psql 򳫻ϤȡϤ줿ޥɤ¹Ԥ뤿Υ
Ϥ褦ˤʤޤ PostgreSQL SQL  INFORMATION SCHEMA 
ե󶡤ޤΤǡǡ١ˤĤƤξ䤤碌뤳Ȥ
ޤ

pg_ ǻϤޤ륷ƥơ֥Ǥ⤳򵭽Ҥ뤳ȤǤޤ

psql -lȤƤΥǡ١ꥹȤޤ

ȡpgsql/src/tutorial/syscat.source ƤߤƤˤϡǡ
١Υƥơ֥뤫뤿ɬפ SELECT ʸޤ

4.3) ΥǡѹˤϤɤޤ

Υǡѹ 8.0 ʹߤǤϡ ALTER TABLE ALTER COLUMN TYPE Ȥ
Ȥˤñˤʤޤ

ΥСǤϡʲΤ褦ˤޤ:

   BEGIN;
   ALTER TABLE tab ADD COLUMN new_col new_data_type;
   UPDATE tab SET new_col = CAST(old_col AS new_data_type);
   ALTER TABLE tab DROP COLUMN old_col;
   COMMIT;

ԤʤäȤϡä줿ԤȤäƤǥ֤뤿
VACUUM FULL tab򤷤ۤɤ⤷ޤ

4.4) ơ֥롢ǡ١κ祵ϡ

¤ϰʲΤȤǤ:

   ǡ١κ祵?        ̵ (32 TB Υǡ١¸ߤ
                                    )
   ơ֥κ祵?            32 TB
   κ祵?                400 GB
   եɤκ祵?          1 GB
   ơ֥Ǥκ?        ̵
   ơ֥Ǥκ祫?      ηˤä 250-1600
   ơ֥Ǥκ祤ǥå   ̵
   ?

󡢤ϼºݤ̵¤ǤϤʤǥ̤ȥ꡼䥹åץڡ
礭ˤ¤ޤǽϤͤȤΤۤ礭ʻ
ޤ

ơ֥륵32TBϥڥ졼ƥ󥰥ƥˤեΥݡ
ɬפȤޤ󡣵ʥơ֥ʣ1GBΥեʬ¸ޤΤǡ
ե륷ƥ¤ϽפǤϤޤ

ǥեȤΥ֥å32kä뤳Ȥǡơ֥륵ȹԥ
祫Ȥ4ܤˤ뤳ȤǤޤޤơ֥륵ϥơ֥ѡ
ƥȤä䤹ȤǤޤ

ҤȤĤ¤ϡ2,000ʸʾĹΥ˥ǥåդ뤳ȤǤ
ȤǤˤ⡢Τ褦ʥǥåϼºݤɬפޤĹ
MD5ϥåδؿǥåϰʤˤݸǡޤեƥȤ
ǥåǤϥñ򸡺뤳ȤǤޤ

4.5) ŪʥƥȥեΥǡ¸ˤϡǡ١Υǥ
ϤɤΤ餤ɬפǤ

̤Υƥȥե PostgreSQL Υǡ١¸ˤϡ5ܤ
ǥ̤ɬפȤޤ

ȤơƹԤȥƥȵҤ 100,000ԤΥեͤƤߤޤ
ƥȤʸʿĹ20ХȤȲꤹȡեåȥե礭
2.8MB ǤΥǡޤ PostgreSQL ǡ١ե礭ϼ
褦5.2MBȸѤ뤳ȤǤޤ

   24 bytes: ƥΥإå()
   24 bytes: (int)եɤȥƥ(text)ե
  + 4 bytes: ڡΥåץؤΥݥ
  ----------------------------------------
   52 bytes per row

   PostgreSQL Υǡڡ 8192Х(8KB)ʤΤ:

  8192 bytes per page
  -------------------   =  146 rows per database page (ڤΤ)
    52 bytes per row

  100000 data rows
  --------------------  =  633 database pages (ڤ夲)
     158 rows per page

 633 database pages * 8192 bytes per page  =  5,185,536 bytes (5.2 MB)

ǥåϡۤɤΥХإåɤ׵ᤷޤ󤬡ǥåդ
ǡޤʾ塢ʤ礭ʤޤ

NULLϥӥåȥޥåפȤ¸Ƥơ餬鷺˥ڡȤޤ

longͤƩŪ˰̤뤫⤷ʤȤդޤ

ȥԥå˴ؤơΥץ쥼ơ⤴Image:How Long Is a
String.pdf

4.6) ꤬٤ΤϤʤǤ礦ʤǥåȤʤΤǤ礦

ǥåϡ٤ƤΥǻȤ櫓ǤϤޤ󡣥ơ֥뤬Ǿ
礭ǤΤ鷺ʥѡơΥ򤹤
åϻȤޤϥǥåˤ굯ʥǥ
ϡơ֥򥹥ȥ졼Ȥɤॷ󥷥륹٤ʤ뤳
Ȥ뤫Ǥ

ǥåȤꤹ뤿ˡPostgreSQL ϥơ֥ˤĤƤ׾
ʤФʤޤ󡣤׾ϡ VACUUM ANALYZEޤϡñ ANALYZE 
ȤäƼ뤳ȤǤޤ׾Ȥäƥץƥޥϥơ֥ˤ
ΤꡢǥåȤ٤ηǤޤ׾
ŬʷˡǤ⵮ŤʤΤ⤢ޤ׾μϡ
֥ƤѤ˷֤ʤ٤Ǥ

ǥåϡ̾ ORDER BY ԤʤˤϻȤޤ󡣥󥷥
륹³ŪȤϡʥơ֥Υǥå
Ϲ®Ǥ

ORDER BYȤ߹蘆줿LIMIT ϡơ֥ξʬ֤ˤ
ӥǥåȤǤ礦

⤷ץƥޥְäƥ󥷥륹򤷤Ȥ˵ʤ
СSET enable_seqscan TO 'off'ꤷơ⤦ټ¹Ԥǥå
󤬤ޤʤ®ʤäƤ뤫ɤߤƤ

LIKE 뤤 ~ Τ褦ʥ磻ɥɱ黻Ҥ̤ʴĶǤȤޤ

  ʸʸκǽˤޤȤС
      LIKE ѥ %뤤ϡ_ ǻϤޤʤ
      ~ (ɽ) ѥ ^ ǻϤޤʤФʤʤ

  ʸʸ饹Ϥ뤳ȤϤǤޤ󡣤ȤС[a-e]

  ILIKE  ~* Τ褦ʸȾʸ̤ʤϻȤޤ󡣤Τ
    FAQ 4.8뼰ǥåȤޤ

  initdb ˤƤϡǥեȤ C ȤʤƤϤʤޤ󡣤
    ͳϡC ʳǤϡLIKE ο񤤤˹פʤȤ¿뤫Ǥ
    Τ褦ʾƯ褦ʡ̤ text_pattern_ops ǥǥå
    뤳ȤǤޤϡLIKE ǥåˤΩޤ
    

եƥȡǥ󥰤ñ측˻ȤȤǽǤ

4.7) 䤤碌ץƥޥɤΤ褦䤤碌ɾΤ򸫤ˤϤɤ
ޤ

EXPLAINޥɤǤ򤹤ˤϡUsing EXPLAIN 򸫤Ƥ


4.8) ƥȷ¤ؤѹˤϤɤޤ

PostgreSQLϥƥȷǡ¤ؤinitdbκݤ򤷤ԤΥ
ˤƤ֤ˤäƹԤޤ (8.4ʹߤǤϡǡ١
Ȥ˥֤ȤǤ褦ˤʤޤ¤ؤǤʤ
С¾ΥȤɬפޤˡ"C" ʳΥǤϡν
ˤä¤ؤԤ졢̵뤵ޤ⤷ʤ
С "C" ɬפޤ

4.9) ɽǤθʸȾʸȤ̤ʤɽϤɤΤ褦˼¸
ޤʸȾʸȤ̤ʤΤΥǥåϤɤΤ褦˻Ȥ
ޤ

~黻ҤɽȹԤʤ~* ʸȾʸ̤ʤ
(case-insensitive)ɽȹԤޤʸȾʸ̤ʤ LIKE 黻
Ҥ ILIKE Ȥޤ

ʸȾʸ̤ʤӤϼΤ褦ɽǤ롧

   SELECT *
   FROM tab
   WHERE lower(col) = 'abc';

Ǥϡ"con"ĥ줿ɸ।ǥåϻȤޤ󤬡⤷"lower(col)"
ǥåС줬Ȥޤ

   CREATE INDEX tabindex ON tab (lower(col));

嵭ΥǥåUNIQUEǺ줿硢ʸȾʸǼǤ
ΰ㤤ʸȾʸΰ㤤ǤäƤƱˤϤʤޤ󡣤
ʸ򥫥˳Ǽˤ CHECK󤫡ȥꥬȤäƤ

PostgreSQL 8.4 ʹߤǤϡ׸ˤ CITEXT ǡȤȤǤ
"lower()" ƤӽФƤޤΤǡޤäʸʸ̤ʤǤ
Ū˰ȤǤޤ CITEXT 8.3ѤˤѲǽǤꡢpgFoundryˤ
ΥСǤϡ8.2 ǤASCIIʸΤߤǤСʸʸ̤ʤ
谷Ǥޤ

4.10) ǡեɤNULL Ǥ뤳Ȥ򸡽ФˤϤɤޤ
NULLǤ뤳Ȥ򸡽ФˤϤɤޤեɤNULLɤǤɤΤ褦
ȤǤޤ

ʲΤ褦ˡIS NULL  IS NOT NULLǡͤƥȤǤޤ

SELECT *
FROM tab
WHERE col IS NULL;

NULL򤽤¾ΤΤϢ뤹NULLˤʤޤʤСCOALESCE()
Τ褦˻ȤNULL֤ޤ

SELECT COALESCE(col1, '') || COALESCE(col2, '')
FROM tab;

NULL֤ǥȤˤϡIS NULL  IS NOT NULL νҤ ORDER BY ǻ
ޤtrue ΤΤ false ΤΤ⤤ͤȤ¤٤ޤΤǡ
 NULL εܤϤ֤ޤ

SELECT *
FROM tab
ORDER BY (col IS NOT NULL), col;

PostgreSQL 8.3 ʹߤǤϡNULL¤ؤ֤򡢺Ƕᵬʲ줿 NULLS FIRST/
NULLS LAST ҤȤäơΤ褦Ǥޤ

SELECT *
FROM tab
ORDER BY col NULLS FIRST;

4.11) ʸΤ줾ΰ㤤ϲǤ


                   ̾                                       

VARCHAR(n)          varchar ĹΥꤹ롢ͤʪ̵      

CHAR(n)             bpchar  ꤵ줿ĹȤʤ褦˶򤬵ͤ쨢
                                                                    

TEXT                text    Ĺ̤ʾ¤̵                    

BYTEA               bytea   ĹΥХ(nullХȲ)          

"char" (  char    1Х                                   
)                                                                   


̾ˤܤˤΤϡƥࡦĴ٤Ȥ䡢顼å
ȤǤ

嵭ηΤǽΣĤη "varlena" Ǥ(ʤեĹŪ
˥ǥ¸졢θ˼ºݤΥǡ³ޤ)Τ褦˼ºݤζ֤
Ԥ줿礭⾯礭ʤޤĹͤϰ̤Τǡǥ
ζ֤ϻפä⾮ʤޤ


ʸĹξͤΥץꥱˤ׵ᤵϡVARCHAR(n) 
Ĺʸ¸Τ˺ŬǤ TEXT  "̵¤"ĹʸΤΤ
ΤǤPostgreSQL ǤϤ٤ƤΥեɤ̤ơͤĹ1Х
¤Ƥޤˡ

CHAR(n)ϡVARCHAR(n)Ϳ줿ʸ¸ΤФ֥󥯤ͤ
ǤĤƱĹʸ¸Τ˺ŬǤBYTEAϡХʥǡ¸
̤0ХȤͤޤޤΣĤηϡCHAR(n)ˤ֥󥯥ѥǥ
󥰤ɲäΥȥ졼;פʥ󥿥׵᤹뤳ȤСƱ褦ǽ
ޤ

"char" CHAR(n)ȼ̤뤿˥ȤɬסˤϡΤ1ХȤΤߤǼ
ǡΤѰդޤϡƥ५˸뤳ȤǤ
ޤ桼ơ֥ǻѤ뤳ȤϤᤷޤ

4.12) (serial)ưʬեɤϤɤΤ褦ˤĤޤ

PostgreSQL  SERIAL ǡ򥵥ݡȤޤ¤ˤϡϼºݤηǤϤ
ޤ󡣤ϡϢ֤򿩤碌άǤȤС

CREATE TABLE person (
    id   SERIAL,
    name TEXT
);

ϼưŪ˼Τ褦ޤ:

CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
    id   INTEGER NOT NULL DEFAULT nextval('person_id_seq'),
    name TEXT
);

   [
       CREATE UNIQUE INDEX person_id_key ON person ( id );
       ϡ 7.3 ʹߤϼưŪˤϹԤʤʤʤޤ
   ]


ưŪˤĤ֤ϡ table_serialcolumn_seq ̾դƤơtable 
serialcolumn ϡ줾ơ֥ SERIAL ̾Ǥ֤ˤĤƤϡ
饤ޥ˥奢CREATE SEQUENCE 򤴤󤯤

BIGSERIALȤΤ⤢ꡢSERIALΤ褦ǡ̤Ȥƥη INTEGER Τ
 BIGINT ˤʤޤơ֥ȤĤŤǡ20ʾ֤ɬפȻפ
ˤϡηȤޤ

4.13) SERIALǡͤϡɤޤ

ǤñˡϡƤ줿SERIALͤ RETURNINGȤƼ뤳ȤǤ
Ȥơ֥ȤȼΤ褦ˤʤޤ

INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;

nextval()ƤӽФơͤINSERTǻȤINSERTθ curval()ƤӽФ
Ƥ⤫ޤޤ

4.14) currval() ˤä¾Υ桼ȶ֤˴٤뤳ȤϤʤǤ

Ϥޤcurrval() ϡ¾Υ桼ΥåǵƤ뤳ȤȤΩ
ˡΥ桼ΥåͿ줿ǿϢ֤ͤޤ

4.15) 󥹡SERIALؤγֹ˥åפΤϤʤǤ
ȥ󥶥ǤȤˤ⤦ɥֹ椬ȤʤΤϤʤ


Ʊ³뤿ˡɬפ˱ƥȥ󥶥Ϣ֡ʥ͡
ͿƤޤ¹Υȥ󥶥󤬽λޤǥ󥹤оݤå
³ʤ褦ˡ¾Υȥ󥶥Ǥ¾Υ󥹤ľ˳
褦ˤƤޤΤᡢȥ󥶥Ǥ줿Ȥˤϳ
ֹӡʥåסˤȯޤ

4.16) OID ȤϲǤ

ơ֥뤬WITH OIDSǤĤ줿ϡ줾ΥϡINSERTκݤ˼ưŪ˵
ޤ롢OIDޤߤޤ OIDϽ֤Ϳ줿4ХȤǤǽ
ϡ󥹥ȥ졼̤ưդͤǤOID40ǰ䤷
塢OIDϽʣޤ

OID˰դΡʥˡ˥ǥå뤳ȤǡĤΥơ֥ǤOID
νʣ򤱤뤳ȤǤޤʤWITH OIDǤϤ줬ǤʤȤդ
ޤ礦ˡƥϥǥååOID󶡤
ƤϡOID򷫤֤ޤOIDޤơ֥뤬褽40
ۤʤϡǤޤ椭ޤ

PostgreSQLϥƥ५ǥ֥Ȥμ̻ҤOIDȤޤ礭
¤ˤʤΤϻޤ

桼Υơ֥Υ˰դȤʤ褦ֹդ򤹤뤿ˤϡ OID ǤϤ
 SERIAL 򡢤뤤ϡơ֥뤬20Ԥۤ뤳Ȥͽۤ
BIGSERIAL ȤΤǤ


4.17) CTID ȤϲǤ

CTID ϡơ֥ǡʪ֥åȥեåȤͤǼ̤뤿
Ȥޤ CTIDϡʪؤΥǥåεܤ˻Ȥޤ
ˤäơ礹빹ͽʤȤϡȥ󥶥ǥ
̤뤿ˤΩޤ

4.18) 顼å "ERROR: Memory exhausted in AllocSetAlloc()"ФΤϤ
Ǥ

餯ƥβۥ꡼ƻȤ̤ƤޤäƤǽ뤫
ͥ뤬꥽ˤĤƤͤ㤹ǽޤФ
ưˤƤߤƤ

   ulimit -d 262144
   limit datasize 256m

ˤäơɤ餫ҤȤĤǤ礦ϥץΥǡ
¤⤯ꤷ֤󥯥꤬뤹褦ˤʤǤ礦Υ
ɤϸԤΥץȡΥޥɤ餻˺ƤΥ֥ץ
ĤŬѤޤХåɤȤƤ¿Υǡ֤SQL 饤
Ȥ꤬³ƤΤǤС饤Ȥ򳫻ϤˤƤߤƤ


4.19) ɤΥС PostgreSQL 餻Ƥ뤫Ĵ٤ˤϤɤޤ

SELECT version(); 餻ޤ


4.20 ǡ١δƺפĤˡϤޤ?

Ȥ߹ޤƤޤ󤬡ǽȤΩƤ뤳ȤȤƤ񤷤櫓Ǥ
ޤ

ñϸʸˤ⤢ޤ http://www.postgresql.jp/document/current/html
/plpgsql-trigger.html#PLPGSQL-TRIGGER-AUDIT-EXAMPLE

εǽɸŪȤץȡ http://pgfoundry.org/projects/tablelog/

طʤȤʤμ䤽¾μ http://it.toolbox.com/blogs/database-soup/
simple-data-auditing-19014 http://www.go4expert.com/forums/showthread.php?t=
7252 http://www.alberton.info/postgresql_table_audit.html

4.21) ߤλ郎ǥեȤȤʤ褦ʥϤɤΤ褦ˤĤޤ

CURRENT_TIMESTAMPȤޤ:

   CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

4.22) (outer join)ϤɤΤ褦˼¸ޤ?

PostgreSQL  SQL ɸ๽ʸȤ(祤)򥵥ݡȤޤ
 2Ĥ꤬ޤ

   SELECT *
   FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.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 
ɤηꤵƤޤ̾INNERȸƤФޤ

4.23) ʣΥǡ١Ȥ䤤碌ϤɤΤ褦ˤФǤޤ

ԤΥǡ١ʳؤ䤤碌ˡϤޤ󡣤ȤΤPostgreSQL
ǡ١ͤΥƥ५ɤ߹िǡˤϡȤΤդ
ˤǡ١ۤ䤤碌򤹤뤹٤ޤ

contrib/dblink ϥǡ١(cross-database)䤤碌ؿƽФˤ
ޤ󡢥饤ȤƱ³̤Υǡ١ؤĥʤƤϤ
餺̤򥯥饤¦ǥޡʤƤϤʤޤ

4.24) ؿʣΥޤϥ֤ˤϤɤޤ

֤ؿ(Set Returning Functions): Return more than one row of data from
PL/pgSQL functions ȤȴñǤ

4.25) PL/PgSQL δؿǰơ֥˥Ȥɤ "relation
with OID ##### does not exist" Ȥ顼ΤǤ礦

С8.3 PostgreSQL ǤϡPL/PgSQL ϴؿץȤ򥭥å夷
ᡢѤޤPL/PgSQL ؿơ֥˥
ǤΥơ֥äƺꤷˡؿ⤦ٸƤӽФ줿Ȥϡ
ؿΥå夷ƤƤޤŤơ֥ؤޤޤä
ΡȤơPL/PgSQL EXECUTE ơ֥ؤΥΤ
˻Ȥޤȡѡľ褦ˤʤޤ

ϡ PostgreSQL С8.3 ʹߤǤϵޤ

4.26) ɤΤ褦ʥץꥱΥ塼󤬤ޤ

֥ץꥱפȰǤޤץꥱ򤹤뤿εѤϤ
Ĥ⤢ꡢ줾졢ȷޤΥȥԥåˤĤơ桹ʸΤ
ˤɤҲ𤬴ޤޤƤޤ http://www.postgresql.jp/document/current/html
/high-availability.html ޤץꥱ󥽥եȥȤεǽˤĤ
ʻҾˤޤȤ᤿Τˤޤ Replication, Clustering, and Connection
Pooling 

ޥ졼֤Υץꥱϡɤߡ񤭤Υ륷󥰥ޥ
ǽǡ졼֤ǤɤߡSELECT䤤碌դ뤳ȤǤޤ
Ǥ͵롢ե꡼ѤǤ롢ޥ-졼֤PostgreSQLץꥱ
󥽥塼ϡ Slony-I Ǥ

ޥ-ޥΥץꥱϡɤߡ񤭤ΥȤꡢʣΥץꥱ
Ȥ륳ԥ塼뤳ȤǤޤεǽϡд֤ѹƱ
ɬפʤᡢǽ˽ʾ׷Ϳޤ PGCluster ϡΤ褦ʥ塼
ȤPostgreSQLΤ˥ե꡼ѤǤΤȤơǤ͵ޤ

¾ˤ⡢Ѥϡɥ١Υץꥱ󡦥塼Ѳ
ǽǡʥץꥱΥǥ򥵥ݡȤƤޤ

4.27)ơ֥ȥ̾꡼ǧʤΤϤʤǤʤ
ԥ饤(ñƬʸ)ݻʤΤǤ?

̾ǧʤǤŪʸϡơ֥ݤˡơ֥䥫
ϤŰλѤǤŰȤȡơ֥ȥ̾ʼ̻
ȤޤˤʸȾʸζ̤򤷤ƳǼޤäơpgAdminΤ褦
˥ơ֥ΤȤ˼ưŪŰȤΤϥǤ̾
ȤȤŰդʤƤϤʤʤȤ̣ޤΤᡢ̻Ҥ
ǧ뤿ˤϰʲΤ줫򿴤ޤ

  ơ֥ȤŰǼ̻ҤϤȤ򤱤
  ̻ҤˤϾʸȤ
  ǻȤȤŰǼ̻ҤϤ


4.28)ǡ١Υѥɤ˺Ƥޤޤ᤹ˤϤɤޤ

Ǥޤ󡣤ľꤹ뤳ȤϤǤޤ򤹤ˤϡ

  pg_hba.conf ԽơŪ trust ǧĤޤ
  եɤޤ (pg_ctl reload)
  ³ ALTER ROLE / PASSWORD 򿷤ѥɤꤹ뤿ȯԤޤ
  pg_hba.conf ƤԽᤷޤ
  եƤӥɤޤ


4.29)PostgreSQL˥ȥɥץϤޤ

PostgreSQL˥ȥɥץϤޤ󤬡ȤƤ⶯ϤʴؿäƤơ
桼ؿεǽĤäơ¾DBMSΥȥɥ롼(ץ
)ǤǤ褦ǽϤϻäƤޤ¿ξϤʾΤȤǤޤ


δؿϡ㤦ǤäƤ⡢ĤΥץߥ󥰸Ǽ뤳Ȥ
Ǥޤ (ܤϼʸ򻲾Ȥ User-Defined Functions)

PostgreSQL δؿϤˡǸƤӽФޤ¾RDBMSΥȥɥץ
ƤӽФ褦˴ؿƤӽФ(Ū˴ؿѤޤ
η̤ˤĤƤϵˤʤ褦ˤˤϡȤСvoidˤ뤳
)ҤȤĤΥץȤƤϡץ PL/pgSQL ǽ񤤤 PERFORM
ޥɤȤȤǤȤСΤȤǤ

:

SELECT theNameOfTheFunction(arg1, arg2);

ˡ

PERFORM theNameOfTheFunction(arg1, arg2);

ȤСؿvoid֤ȤƤ(η̤voidͤޤ1쥳ɤȤʤޤ)
̤ޤ

PERFORM ϡΤ褦˻ȤȤǤ̵Ѥʷ̤˴뤳ȤǤޤ


4.30) "SELECT count(*) FROM bigtable;"ϡʤ٤ΤǤ?

Υ꡼ϥǥåľ֤ȤǤޤPostgreSQLϡ
쥳ɤˤĤƲĻǧ뤿ᡢޤ뤴ȥơ֥༡ܺޤ
ȻפСȥꥬȤäƹԿϿ³뤳ȤǤޤΥơ֥ؤ
񤭹ߥ٤ʤޤѤ뤳ȤϲǽǤ

pg_class  reltuples ˤϡơ֥Ǹ ANALYZE Ȥξ󤬴ޤ
Ƥޤ礭ʥơ֥ǤϡƤϿʬ1ѡȤθ˼ޤꡢ¿
ŪΤˤϽʬΤȤޤ

ȤΤʡcountθ⤺äΤǤȤ櫓ǤϤޤ
MVCC ζˤꡢcountSELECT count(*) ꡼(뤤ϡ긷ʤʥȥ
󥢥졼٥ǤϡΥȥ󥶥)ֳϤ׽ִ֤
ΤǡΥ꡼äȤˤϾ̣ڤˤʤäƤ뤳ȤϤ褯
Υȥ󥶥󤬳ϤȤ饳ߥåȤ֤ˡȥ󥶥
ǡäƥơ֥뤬ơդĤ count(*) μ¹ԤƱִ֤˰
ͤĤȤޤ

ˡܤ Slow Counting 

ܸ˴ؤ

5.1)ܸ줬ޤʤΤϤʤǤ

createdb -Eޥɥץ UTF8 뤤 EUC_JP Υ󥳡ǥ󥰤ꤷ
ƥǡ١뤫Τ褦˥󥳡ǥ󥰤ꤷƥǡ١
Ƥ

       CREATE DATABASE dbname WITH ENCODING 'UTF8';

⤷ϡ

       CREATE DATABASE dbname WITH ENCODING 'EUC_JP';

5.2) psql Windows饢Ȥˡܸ줬ʸΤǤ

psqlǥ饤ȤΥ󥳡ǥ󥰤ꤷƤ

       SET client_encoding TO 'SJIS'

PostgreSQLǡ١Υ󥳡ǥ󥰤˻Ȥܸʸɤ EUC_JP 
UTF-8(UNICODE) Ǥ뤿ᡢShift-JISɽΥޥɥץץȤϡ
client_encodingꤷƤʤȡܸɽݤʸޤ

5.3) PostgreSQLܸʸϤǤޤ

С8.3ǤϡTSearch2ʸǽΤȤ߹ޤޤΤޤޤǤ
ܸΥǥå񤷤Ǥ褹뤿ˡTakahiro
ItagakiˤäơMecabȤǲϥץѤܸʸ⥸
塼 (textsearch-ja) ܸбǤޤǿ mediawiki ʤɤǤϡ
postgresql.conf 

default_text_search_config = 'pg_catalog.japanese'

ꤷƻȤȤǤޤ Drupal CMSե졼Ѥˤϡȯ
drupal-tsearch ⥸塼뤬 github.com ˤޤ

ܸǤˤĤơ

[
 ܸǤˤĤƤϰʲ̤Ǥ
 ǽ:   2010ǯ320
 :       ¼  (Jun KUWAMURA <juk at postgresql.jp>)
 FAQκˤ궨Ϥ򤷤Ƥä(ɾΤάƤޤ):

                ̭                а ã               ƣ ο
               Ͼ  ȥ                칬                
                Ƿ               Ϻ                
                ӹ               й                
               ë ѹ                                 
               ˧               ĳ ͵

 Ϥᡢݥȥ쥹˴ؤ˭٤ܸPostgreSQL᡼󥰥ꥹȡ
 ΤääƤ줿ꡢĤå򤷤Ƥ
  JF(Linux Japanese FAQ)ץȡFreeBSD ɥơץ
 줫顢ľܤ뤤ϴŪˤäƤ뤹٤ƤΥץ󥽡
 ߥ˥ƥΤߤʤޤ˴դޤ

 ʸ ܲWiki-(http://wiki.postgresql.org/wiki/Japanese) Υڡ
 ܸȥԥåΤȤ "FAQ/ja" ȤܤǤޤ

 ޤʲΥȤˤ⤢ޤ
       http://www.postgresql.jp/wg/jpugdoc/ JPUGʸ񡦽ҴϢʬʲ
       http://www.linux.or.jp/JF/JFdocs/INDEX-database.html Linux JFץȡ
       http://www.linet.gr.jp/~juk/pgsql/ PostgreSQL Notes for Japaneseסԥڡ
]

