mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			989 lines
		
	
	
		
			45 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			989 lines
		
	
	
		
			45 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
               Otvety na chasto zadavaemye voprosy po PostgreSQL
 | 
						|
                                       
 | 
						|
   Data poslednego obnovleniya: Sreda 25 iyunya 23:54:14 EDT 2008
 | 
						|
   
 | 
						|
   Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian)
 | 
						|
   (bruce@monjian.us)
 | 
						|
   
 | 
						|
   Pereviol na russkij: Viktor Vislobokov (admin@postgresql.ru.net)
 | 
						|
   
 | 
						|
   Samuyu svezhuyu anglijskuyu versiyu dokumenta mozhno najti na
 | 
						|
   http://www.postgresql.org/files/documentation/faqs/FAQ.html.
 | 
						|
   
 | 
						|
   Samuyu svezhuyu russkuyu versiyu dokumenta mozhno najti na
 | 
						|
   http://postgresql.ru.net/docs/FAQ_russian.html.
 | 
						|
   
 | 
						|
   Otvety na voprosy specifichnye dlya konkretnyh platform mozhno najti
 | 
						|
   na http://www.postgresql.org/docs/faq/.
 | 
						|
     _________________________________________________________________
 | 
						|
   
 | 
						|
                              Obschie voprosy
 | 
						|
                                      
 | 
						|
   1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie? CHto
 | 
						|
   takoe Postgres?
 | 
						|
   1.2) Kto upravlyaet PostgreSQL?
 | 
						|
   1.3) Kakovy avtorskie prava na PostgreSQL?
 | 
						|
   1.4) Na kakih platformah rabotaet PostgreSQL?
 | 
						|
   1.5) Gde mozhno vzyat' PostgreSQL?
 | 
						|
   1.6) Kakaya versiya naibolee svezhaya?
 | 
						|
   1.7) Gde poluchit' podderzhku?
 | 
						|
   1.8) Kak mne soobschit' ob oshibke?
 | 
						|
   1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
 | 
						|
   vozmozhnostyah?
 | 
						|
   1.10) Kakaya dokumentaciya imeetsya v nalichii?
 | 
						|
   1.11) Kak nauchit'sya SQL?
 | 
						|
   1.12) Kak mne otpravit' ispravlenie ili prisoedinitsya k komande
 | 
						|
   razrabotchikov?
 | 
						|
   1.13) Kak sravnit' PostgreSQL s drugimi SUBD? Mozhet li PostgreSQL
 | 
						|
   byt' vstroennoj?
 | 
						|
   1.14) Budet li PostgreSQL rabotat' s poslednimi izmeneniyami, v raznyh
 | 
						|
   stranyh, kasayuschimisya dnevnogo vremeni?
 | 
						|
   1.15) Kak mne otpisat'sya ot spiskov rassylki PostgreSQL? Kak
 | 
						|
   izbezhat' polucheniya dubliruyuschihsya soobschenij?
 | 
						|
   
 | 
						|
                 Voprosy pol'zovatelej po klientskoj chasti
 | 
						|
                                      
 | 
						|
   2.1) Kakie interfejsy est' dlya PostgreSQL?
 | 
						|
   2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL
 | 
						|
   cherez Web?
 | 
						|
   2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
 | 
						|
   
 | 
						|
                         Voprosy administrirovaniya
 | 
						|
                                      
 | 
						|
   3.1) Kak mne ustanovit' PostgreSQL v mesto otlichnoe ot
 | 
						|
   /usr/local/pgsql?
 | 
						|
   3.2) Kak mne upravlyat' soedineniyami ot drugih komp'yuterov?
 | 
						|
   3.3) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya
 | 
						|
   proizvoditel'nosti?
 | 
						|
   3.4) Kakie vozmozhnosti dlya otladki est' v nalichii?
 | 
						|
   3.5) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
 | 
						|
   pytayus' podklyuchit'sya k baze?
 | 
						|
   3.6) Kak vypolnit' obnovlenie PostgreSQL?
 | 
						|
   3.7) Kakoe komp'yuternoe "zhelezo" ya dolzhen ispol'zovat'?
 | 
						|
   
 | 
						|
                           Voprosy `ekspluatacii
 | 
						|
                                      
 | 
						|
   4.1) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek
 | 
						|
   zaprosa? Dlya proizvol'noj stroki?
 | 
						|
   4.2) Kak mne najti kakie tablicy, indeksy, bazy dannyh i pol'zovateli
 | 
						|
   suschestvuyut? Kak mne uvidet' zaprosy, kotorye ispol'zuet psql dlya
 | 
						|
   polucheniya `etoj informacii?
 | 
						|
   4.3) Kak izmenit' tip dannyh kolonki?
 | 
						|
   4.4) Kakovy maksimal'nye razmery dlya strok v tablice, tablic i bazy
 | 
						|
   dannyh?
 | 
						|
   4.5) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya
 | 
						|
   sohraneniya dannyh iz obychnogo tekstovogo fajla?
 | 
						|
   4.6) Pochemu moi zaprosy rabotayut medleno? Pochemu oni ne ispol'zuyut
 | 
						|
   moi indeksy?
 | 
						|
   4.7) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
 | 
						|
   4.8) Kak mne vypolnit' poisk regulyarnogo vyrazheniya i poisk
 | 
						|
   nezavisimyj ot registra bukv poisk regulyarnogo vyrazheniya? Kak mne
 | 
						|
   ispol'zovat' indeks dlya poiska nezavisimogo ot registra bukv?
 | 
						|
   4.9) Kak mne opredelit', chto znachenie polya v kakom-libo zaprose
 | 
						|
   ravno NULL? Kak mne soedinit' vozmozhnye NULL? Mogu ya sortirovat'
 | 
						|
   polya NULL ili net?
 | 
						|
   4.10) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
 | 
						|
   4.11.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
 | 
						|
   4.11.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
 | 
						|
   4.11.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
 | 
						|
   nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
 | 
						|
   4.11.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya
 | 
						|
   snova pri otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii
 | 
						|
   v kolonke, gde ya ispol'zuyu posledovatel'nost'/SERIAL?
 | 
						|
   4.12) CHto takoe OID? CHto takoe CTID?
 | 
						|
   4.13) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
 | 
						|
   AllocSetAlloc()"?
 | 
						|
   4.14) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
 | 
						|
   4.15) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
 | 
						|
   tekuschee vremya?
 | 
						|
   4.16) Kak vypolnit' vneshnee svyazyvanie?
 | 
						|
   4.17) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
 | 
						|
   4.18) Kak mne vernut' iz funkcii neskol'ko strok tablicy?
 | 
						|
   4.19) Pochemu ya poluchayu oshibku "relation with OID #### ne
 | 
						|
   suschestvuet", kogda obraschayuts' k vremennym tablicam v funkciyah
 | 
						|
   PL/PgSQL?
 | 
						|
   4.20) Kakie est' resheniya dlya replikacii?
 | 
						|
   4.21) Pochemu imena tablicy i kolonok ne raspoznayutsya v v moiom
 | 
						|
   zaprose? Pochemu ne sohranyayutsya zaglavnye bukvy?
 | 
						|
     _________________________________________________________________
 | 
						|
   
 | 
						|
                              Obschie voprosy
 | 
						|
                                      
 | 
						|
  1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie? CHto takoe
 | 
						|
  Postgres?
 | 
						|
  
 | 
						|
   PostgreSQL proiznositsya Post-Gres-Q-L (Post-Gres-K'yu-`El). (Dlya
 | 
						|
   osobo lyubopytstvuyuschih kak proiznosit' "PostgreSQL", suschestvuet
 | 
						|
   audio-fajl).
 | 
						|
   
 | 
						|
   PostgreSQL - `eto ob"ektno-relyacionnaya sistema upravleniya bazami
 | 
						|
   dannyh (SUBD), kotoraya imeet tradicionnye vozmozhnosti kommercheskih
 | 
						|
   SUBD s rasshireniyami, kotorye est' v SUBD novogo pokoleniya.
 | 
						|
   PostgreSQL - `eto svobodnoe i polnost'yu otkrytoe programmnoe
 | 
						|
   obespechenie.
 | 
						|
   
 | 
						|
   Razrabotku PostgreSQL vypolnyaet komanda razrabotchikov, razbrosannaya
 | 
						|
   po vsemu miru i svyazannaya cherez Internet. Razrabotka yavlyaetsya
 | 
						|
   obschestvennym proektom i ne upravlyaetsya kakoj-libo kompaniej.
 | 
						|
   Podrobnosti smotrite v FAQ dlya razrabotchikov,
 | 
						|
   http://www.postgresql.org/docs/faqs.FAQ_DEV.html
 | 
						|
   
 | 
						|
   Postgres -- `eto shiroko ispol'zuemoe sokraschenie dlya PostgreSQL.
 | 
						|
   Pervonachal'nym imenem proekta v Berkli bylo Postgres i `etot nik
 | 
						|
   teper' naibolee populyaren v razgovorah o PostgreSQL po sravneniyu s
 | 
						|
   drugimi. Esli vam trudno polnost'yu progovarivat' 'PostgreSQL', mozhno
 | 
						|
   prosto govorit' 'Postgres'.
 | 
						|
   
 | 
						|
  1.2) Kto upravlyaet PostgreSQL?
 | 
						|
  
 | 
						|
   Esli vy ischite kakogo-to osobennogo cheloveka, central'nyj komitet
 | 
						|
   ili upravlyayuschuyu kompaniyu, to naprasno --- ih net. U nas est'
 | 
						|
   yadro komiteta i razrabotchikov, rabotayuschih s CVS, no `eti gruppy
 | 
						|
   sluzhat bol'she dlya administrativnyh celej, chem dlya upravleniya.
 | 
						|
   Proekt napryamuyu funkcioniruet s pomosch'yu soobschestva
 | 
						|
   razrabotchikov i pol'zovatelej, k kotoromu mozhet prisoedinitsya
 | 
						|
   kazhdyj. Vsio chto nuzhno -- `eto podpisat'sya na spiski rassylki i
 | 
						|
   uchastvovat' v diskussiyah. (Podrobnosti o tom kak vklyuchit'sya v
 | 
						|
   razrabotku PostgreSQL smotrite v FAQ dlya razrabotchikov.)
 | 
						|
   
 | 
						|
  1.3) Kakovy avtorskie prava na PostgreSQL?
 | 
						|
  
 | 
						|
   PostgreSQL rasprostranyaetsya po klassicheskoj licenzii BSD. `Eta
 | 
						|
   licenziya ne soderzhit ogranichenij na to, kak budet ispol'zovat'sya
 | 
						|
   ishodnyj kod. Nam nravitsya `eta licenziya i u nas net namerenij eio
 | 
						|
   menyat'. Vot `eta licenziya BSD, kotoruyu my ispol'zuem:
 | 
						|
   
 | 
						|
   Sistema Upravleniya Bazami Dannyh PostgreSQL
 | 
						|
   
 | 
						|
   Portions copyright (c) 1996-2008, PostgreSQL Global Development Group
 | 
						|
   Portions Copyright (c) 1994-1996 Regents of the University of
 | 
						|
   California
 | 
						|
   
 | 
						|
   Predostavlyayutsya prava na ispol'zovanie, kopirovanie, izmenenie i
 | 
						|
   rasprostranenie dannogo programmnogo obespecheniya i ego dokumentacii
 | 
						|
   dlya lyubyh celej, besplatno i bez podpisaniya kakogo-libo
 | 
						|
   soglasheniya, pri uslovii chto dlya kazhdoj kopii budut predostavleny
 | 
						|
   dannoe vyshe zamechanie ob avtorskih pravah, tekuschij paragraf i dva
 | 
						|
   sleduyuschih paragrafa.
 | 
						|
   
 | 
						|
   KALIFORNIJSKIJ UNIVERSITET NE NESET NIKAKOJ OTVETSTVENNOSTI ZA LYUBYE
 | 
						|
   POVREZHDENIYA, VKLYUCHAYA POTERYU DOHODA, NANESENNYE PRYAMYM ILI
 | 
						|
   NEPRYAMYM, SPECIAL'NYM ILI SLUCHAJNYM ISPOL'ZOVANIEM DANNOGO
 | 
						|
   PROGRAMMNOGO OBESPECHENIYA ILI EGO DOKUMENTACII, DAZHE ESLI
 | 
						|
   KALIFORNIJSKIJ UNIVERSITET BYL IZVESCHEN O VOZMOZHNOSTI TAKIH
 | 
						|
   POVREZHDENIJ.
 | 
						|
   
 | 
						|
   KALIFORNIJSKIJ UNIVERSITET SPECIAL'NO OTKAZYVAZYVAETSYA PREDOSTAVLYAT'
 | 
						|
   LYUBYE GARANTII, VKLYUCHAYA, NO NE OGRANICHIVAYAS' TOL'KO `ETIMI
 | 
						|
   GARANTIYAMI: NEYAVNYE GARANTII PRIGODNOSTI TOVARA ILI PRIGODNOSTI DLYA
 | 
						|
   OTDEL'NOJ CELI. DANNOE PROGRAMMNOE OBESPECHENIE PREDOSTAVLYAETSYA NA
 | 
						|
   OSNOVE PRICIPA "KAK EST'" I KALIFORNIJSKIJ UNIVERSITET NE OBYAZAN
 | 
						|
   PREDOSTAVLYAT' SOPROVOZHDENIE, PODDERZHKU, OBNOVLENIYA, RASSHIRENIYA
 | 
						|
   ILI IZMENENIYA.
 | 
						|
   
 | 
						|
  1.4) Na kakih platformah rabotaet PostgreSQL?
 | 
						|
  
 | 
						|
   Obychno, PostgreSQL mozhet rabotat' na lyuboj sovremennoj platforme
 | 
						|
   sovmestimoj s Unix. V instrukcii po ustanovke, vy najdete spisok teh
 | 
						|
   platform, na kotoryh byli provedeny testovye zapuski PostgreSQL k
 | 
						|
   momentu vyhoda dannoj versii.
 | 
						|
   
 | 
						|
   PostgreSQL takzhe rabotaet na operacionnyh sistemah Microsoft Windows,
 | 
						|
   osnovannyh na NT, takih kak Win2000 SP4, WinXP i Win2003. Paket
 | 
						|
   installyatora dostupen po adresu
 | 
						|
   http://www.postgresql.org/download/windows. Versii Windows, osnovannye
 | 
						|
   na MS-DOS (Win95, Win98, WinMe) mogut zapuskat' PostgreSQL s
 | 
						|
   pomosch'yu Cygwin.
 | 
						|
   
 | 
						|
   Takzhe suschestvuet versiya sportirovannaya pod Novell Netware 6 na
 | 
						|
   http://developer.novell.com/wiki/index.php/Postgresql, i versiya dlya
 | 
						|
   OS/2 (eComStation) na
 | 
						|
   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
 | 
						|
   SQL&stype=all&sort=type&dir=%2F.
 | 
						|
   
 | 
						|
  1.5) Gde mozhno vzyat' PostgreSQL?
 | 
						|
  
 | 
						|
   CHerez brauzer, ispol'zuya http://www.postgresql.org/ftp/ i cherez
 | 
						|
   ftp, ispol'zuya ftp://ftp.postgresql.org/pub/.
 | 
						|
   
 | 
						|
  1.6) Kakaya versiya naibolee svezhaya?
 | 
						|
  
 | 
						|
   Poslednij vypusk PostgreSQL - `eto versiya 8.3.3
 | 
						|
   
 | 
						|
   My planiruem vypuskat' novye starshie versii kazhdyj god, a mladshie
 | 
						|
   versii kazhdye neskol'ko mesyacev.
 | 
						|
   
 | 
						|
  1.7) Gde poluchit' podderzhku?
 | 
						|
  
 | 
						|
   Soobschestvo PostgreSQL predostavlyaet pomosch' mnozhestvu
 | 
						|
   pol'zovatelej cherez E-mail. Osnovnoj web-sajt dlya podpiski na spiski
 | 
						|
   rassylki po E-mail `eto: http://www.postgresql.org/community/lists/.
 | 
						|
   Horoshim mestom dlya togo, chtoby nachat' zadavat' voprosy
 | 
						|
   yavlyayutsya spiski general (obschie voprosy) ili bugs (oshibki).
 | 
						|
   
 | 
						|
   Glavnym IRC kanalom yavlyaetsya #postgreql, raspolozhennyj na servere
 | 
						|
   Freenode (irc.freenode.net). CHtoby podklyuchit'sya, vy mozhete
 | 
						|
   ispol'zovat' v Unix vyzov programmy irc -c '#postgresql' "$USER"
 | 
						|
   irc.freenode.net ili lyuboj drugoj IRC klient. Na `etom zhe servere
 | 
						|
   suschestvuyut kanaly na ispanskom (#postgresql-es), francuzskom
 | 
						|
   (#postgresqlfr) i brazil'skom (#postgresql-br) yazykah. Takzhe
 | 
						|
   suschestvuet kanal po PostgreSQL na servere EFNet.
 | 
						|
   
 | 
						|
   Spisok kommercheskoj podderzhki kompanij dostupen na
 | 
						|
   http://www.postgresql.org/support/professional_support.
 | 
						|
   
 | 
						|
  1.8) Kak mne soobschit' ob oshibke?
 | 
						|
  
 | 
						|
   Posetite stranichku so special'noj formoj otchiota ob oshibke v
 | 
						|
   PostgreSQL po adresu: http://www.postgresql.org/support/submitbug.
 | 
						|
   Takzhe prover'te nalichie bolee svezhej versii PostgreSQL na nashem
 | 
						|
   FTP sajte ftp://ftp.postgresql.org/pub/.
 | 
						|
   
 | 
						|
   Na oshibki, uvedomlenie o kotoryh byli sdelany cherez special'nuyu
 | 
						|
   formu ili otpravlennye v kakoj-libo spisok rassylki PostgreSQL,
 | 
						|
   obychno generiruetsya odin iz sleduyuschih otvetov:
 | 
						|
     * `Eto ne oshibka i pochemu
 | 
						|
     * `Eto izvestnaya oshibka i ona uzhe est' v spiske TODO
 | 
						|
     * Dannaya oshibka byla ispravlena v tekuschem vypuske
 | 
						|
     * Dannaya oshibka byla ispravlena, no ispravlenie poka ne popalo v
 | 
						|
       oficial'nyj vypusk
 | 
						|
     * Zaprashivaetsya bolee detal'naya informaciya:
 | 
						|
          + Operacionnaya sistema
 | 
						|
          + Versiya PostgreSQL
 | 
						|
          + Test, vosproizvodyaschij oshibku
 | 
						|
          + Otladochnaya informaciya
 | 
						|
          + Vyvod backtrace otladchika
 | 
						|
     * `Eto novaya oshibka. Mozhet proizojti sleduyuschee:
 | 
						|
          + Budet sozdano ispravlenie, kotoroe budet vklyucheno v
 | 
						|
            sleduyuschij vypusk
 | 
						|
          + Oshibka ne mozhet byt' ispravlena nemedlenno i budet
 | 
						|
            dobavlena v spisok TODO
 | 
						|
       
 | 
						|
  1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
 | 
						|
  vozmozhnostyah?
 | 
						|
  
 | 
						|
   PostgreSQL podderzhivaet rasshirennyj podklass SQL:2003. Smotrite nash
 | 
						|
   spisok TODO na predmet izvestnyh oshibok, otsutstvuyuschih
 | 
						|
   vozmozhnostej i buduschih planov.
 | 
						|
   
 | 
						|
   Na zapros kakoj-libo vozmozhnosti obychno prihodyat sleduyuschie
 | 
						|
   otvety:
 | 
						|
     * Dannaya vozmozhnost' uzhe est' v spiske TODO
 | 
						|
     * Dannaya vozmozhnost' nezhelatel'na potomu chto:
 | 
						|
          + Ona dubliruet suschestvuyuschuyu funkcional'nost', kotoraya
 | 
						|
            sleduet standartu SQL
 | 
						|
          + Dannaya vozmozhnost' sil'no uslozhnila by kod, no dala by
 | 
						|
            malen'kuyu vygodu
 | 
						|
          + Dannaya vozmozhnost' nebezopasna ili nenadiozhna
 | 
						|
     * Dannaya novaya vozmozhnost' dobavlena v spisok TODO
 | 
						|
       
 | 
						|
   PostgreSQL ne ispol'zuet kakuyu-libo sistemu otslezhivaniya oshibok,
 | 
						|
   potomu chto my obnaruzhili, chto ispol'zovanie pryamogo obrascheniya
 | 
						|
   po `elektronnoj pochte i obnovlyaemogo spiska TODO yavlyaetsya bolee
 | 
						|
   `effektivnym. Na praktike, oshibki v programmnom obespechenii
 | 
						|
   sohranyayutsya ochen' nedolgo, a oshibki, kotorye vazhny bol'shomu
 | 
						|
   kolichestvu pol'zovatelej ispravlyayutsya momental'no. Est' tol'ko
 | 
						|
   odno mesto, gde mozhno najti vse izmeneniya, uluchsheniya i
 | 
						|
   ispravleniya, sdelannye v vypuske PostgreSQL - `eto zhurnaly
 | 
						|
   soobschenij sistemy kontrolya versij CVS. Dazhe zamechaniya k vypuskam
 | 
						|
   ne soderzhat vse izmeneniya, sdelannye v programmnom obespechenii.
 | 
						|
   
 | 
						|
  1.10) Kakaya dokumentaciya imeetsya v nalichii?
 | 
						|
  
 | 
						|
   PostgreSQL soderzhit mnogo dokumentacii, vklyuchaya bol'shoe
 | 
						|
   rukovodstvo, stranicy `elektronnogo rukovodstva man i nekotorye
 | 
						|
   malen'kie testovye primery. Smotrite v katalog /doc. Vy takzhe mozhete
 | 
						|
   prosmatrivat' dokumentaciyu v Internet po adresu
 | 
						|
   http://www.postgresql.org/docs.
 | 
						|
   
 | 
						|
   Suschestvuet dve knigi po PostgreSQL dostupnye po adresam
 | 
						|
   http://www.PostgreSQL.org/docs/books/awbook.html i
 | 
						|
   http://www.commandprompt.com/ppbook/. Est' neskol'ko knig po
 | 
						|
   PostgreSQL, kotorye mozhno kupit'. Odnu iz naibolee populyarnyh
 | 
						|
   napisal Korri Duglas (Korry Douglas). Spisok obzorov po `etim knigam
 | 
						|
   dostupen po adresu http://www.postgresql.org/docs/books/. Krome togo,
 | 
						|
   po adresu
 | 
						|
   http://wiki.postgresql.org/wiki/Community_Generated_Articles%2C_Guides
 | 
						|
   %2C_and_Documentation vy mozhete najti kollekciyu tehnicheskih statej,
 | 
						|
   posveschennyh PostgreSQL.
 | 
						|
   
 | 
						|
   Klient komandnoj stroki psql imeet neskol'ko komand \d dlya
 | 
						|
   otobrazheniya informacii po tipam, operatoram, funkciyam, agregatam i
 | 
						|
   t.d. - ispol'zujte \? dlya polucheniya spiska dostupnyh komand.
 | 
						|
   
 | 
						|
   Nash sajt soderzhit esche bol'she informacii.
 | 
						|
   
 | 
						|
  1.11) Kak mne nauchit'sya SQL?
 | 
						|
  
 | 
						|
   Vo-pervyh, voz'mite odnu iz knig po PostgreSQL, o kotoryh govorilos'
 | 
						|
   vyshe. Mnogim iz nashih pol'zovatelej takzhe nravitsya kniga The
 | 
						|
   Practical SQL Handbook, Bowman, Judith S., et al., Addison-Wesley.
 | 
						|
   Drugim nravitsya The Complete Reference SQL, Groff et al.,
 | 
						|
   McGraw-Hill.
 | 
						|
   
 | 
						|
   Suschestvuet takzhe mnozhestvo prekrasnyh uchebnikov dostupnyh v
 | 
						|
   online:
 | 
						|
     * http://www.intermedia.net/support/sql/sqltut.shtm,
 | 
						|
     * http://sqlcourse.com.
 | 
						|
     * http://www.w3school.com/sql/default.asp
 | 
						|
     * http://mysite.verizon.net/Graeme_Birchall/id1.html
 | 
						|
       
 | 
						|
  1.12) Kak mne prislat' ispravlenie ili prisoedinitsya k komande
 | 
						|
  razrabotchikov?
 | 
						|
  
 | 
						|
   Smotrite FAQ dlya razrabotchikov.
 | 
						|
   
 | 
						|
  1.13) Kak sravnit' PostgreSQL s drugimi SUBD? Mozhet li PostgreSQL byt'
 | 
						|
  vstroennym?
 | 
						|
  
 | 
						|
   Suschestvuet neskol'ko metodov sravneniya programmnogo obespecheniya:
 | 
						|
   vozmozhnosti, proizvoditel'nost', nadezhnost', podderzhka i cena.
 | 
						|
   
 | 
						|
   Vozmozhnosti
 | 
						|
          PostgreSQL imeet bol'shinstvo vozmozhnostej predstavlennyh v
 | 
						|
          bol'shih kommercheskih SUBD, takie kak: tranzakcii, podzaprosy,
 | 
						|
          triggery, predstavleniya, ssylochnoj celostnosti vtorichnogo
 | 
						|
          klyucha i raznye blokirovki. U nas est' nekotorye vozmozhnosti,
 | 
						|
          kotoryh net u nih: tipy, opredelyaemye pol'zovatelem, mehanizm
 | 
						|
          nasledovaniya, pravila i konkuretnoe mnogoversionnoe upravlenie
 | 
						|
          dlya raboty s soderzhimym blokirovok.
 | 
						|
          
 | 
						|
   Proizvoditel'nost'
 | 
						|
          Proizvoditel'nost' PostgreSQL shodna s drugimi kommercheskimi
 | 
						|
          SUBD i s SUBD s otkrytym ishodnym kodom. V kakih-to veschah my
 | 
						|
          bystree, v kakih-to medlennee. Nasha proizvoditel'nosti obychno
 | 
						|
          +/-10% po sravneniyu s drugimi SUBD.
 | 
						|
          
 | 
						|
   Nadezhnost'
 | 
						|
          My ponimali, chto nasha SUBD dolzhna byt' nadezhnoj ili ona
 | 
						|
          nichego ne budet stoit'. My staraemsya vypuskat' horosho
 | 
						|
          proverennyj, stabil'nyj kod, kotoryj soderzhit minimum oshibok.
 | 
						|
          Kazhdyj vypusk prohodit stadiyu beta-testirovaniya po krajnej
 | 
						|
          mere v techenii odnogo mesyaca i nasha istoriya vypuskov
 | 
						|
          pokazyvaet chto my mozhem predostavlyat' stabil'nye, monolitnye
 | 
						|
          vypuski, kotorye gotovy k produktivnomu ispol'zovaniyu. My
 | 
						|
          verim, chto my proizvodim proverku ne huzhe, chem u drugih
 | 
						|
          SUBD.
 | 
						|
          
 | 
						|
   Podderzhka
 | 
						|
          Nash spisok rassylki predostavlyaet vozmozhmozhnost' obscheniya
 | 
						|
          s bol'shoj gruppoj razrabotchikov i pol'zovatelej, kotorye
 | 
						|
          mogut pomoch' reshit' lyubye voznikshie problemy. V to zhe
 | 
						|
          vremya, my ne garantiruem kakie-libo ispravleniya, no i
 | 
						|
          razrabotchiki kommercheskih SUBD ne vsegda delayut
 | 
						|
          ispravleniya. Pryamoj dostup k razrabotchikam, soobschestvu
 | 
						|
          pol'zovatelej, rukovodstvam i ishodnym tekstam chasto delayut
 | 
						|
          podderzhku PostgreSQL prevoshodyaschej drugie SUBD.
 | 
						|
          Suschestvuet kommercheskaya podderzhka po rezul'tam voznikshih
 | 
						|
          incidentov, kotoraya dostupna dlya teh komu ona nuzhna.
 | 
						|
          (Smotrite Sekciyu 1.7.)
 | 
						|
          
 | 
						|
   Cena
 | 
						|
          Nash produkt besplaten kak dlya kommercheskogo tak, i ne dlya
 | 
						|
          kommercheskogo ispol'zovaniya. Vy mozhete dobavlyat' svoj kod v
 | 
						|
          nash produkt bez ogranichenij, za isklyucheniem teh, chto
 | 
						|
          opisyvayutsya v nashej licenzii stilya BSD, kotoraya privedena
 | 
						|
          vyshe.
 | 
						|
          
 | 
						|
   PostgreSQL razrabatyvaetsya po arhitekture klient/server, kotoraya
 | 
						|
   trebuet otdel'nyh processov dlya kazhdogo klienta i servera, a takzhe
 | 
						|
   neskol'ko vspomogatel'nyh processov. Mnogie vstraivaemye arhitektury
 | 
						|
   mogut sootvetstvovat' takim trebovaniyam. Odnako, esli vasha
 | 
						|
   vstraivaemaya arhitektura trebuet server baz dannyh dlya zapuska
 | 
						|
   vnutri prikladnogo processa, vy ne mozhete ispol'zovat' Postgres i vam
 | 
						|
   luchshe by vybrat' dlya bazy dannyh kakoe-libo drugoe oblegchennoe
 | 
						|
   reshenie.
 | 
						|
   
 | 
						|
  1.14) Budet li PostgreSQL rabotat' s poslednimi izmeneniyami, v raznyh
 | 
						|
  stranyh, kasayuschimisya dnevnogo vremeni?
 | 
						|
  
 | 
						|
   Izmeneniya v sohranenii dnevnogo vremeni v SSHA vklyucheny v
 | 
						|
   PostgreSQL versii 8.0.[4+] i vo vse sleduyuschie vypuski, naprimer v
 | 
						|
   8.1. Izmeneniya po Kanade i Zapadnoj Avstralii vklyucheny v 8.0.[10+],
 | 
						|
   8.1.[6+] i vse sleduyuschie vypuski. Vypuski PostgreSQL do 8.0
 | 
						|
   ispol'zuyut informaciyu o sohranenii dnevnogo vremeni iz bazy dannyh
 | 
						|
   vremennyh zon v operacionnoj sisteme.
 | 
						|
     _________________________________________________________________
 | 
						|
   
 | 
						|
  1.15) Kak mne otpisat'sya ot spiskov rassylki PostgreSQL? Kak izbezhat'
 | 
						|
  polucheniya dubliruyuschih soobschenij?
 | 
						|
  
 | 
						|
   Stranica Majordomo na sajte PostgreSQL pozvolyaet podpisat'sya ili
 | 
						|
   otpisat'sya ot lyubogo iz spiskov rassylki PostgreSQL. (Vam mozhet
 | 
						|
   ponadobitsya vash parol' dlya Majordomo, kotoryj otpravlyaetsya na
 | 
						|
   vash E-mail, chtoby vojti v upravlenie vashimi podpiskami.)
 | 
						|
   
 | 
						|
   Vse spiski rassylki PostgreSQL nastarivayutsya tak, chtoby gruppovoj
 | 
						|
   otvet uhodil na adres spiska i na adres avtora soobscheniya. Tak
 | 
						|
   sdelano, chtoby pol'zovateli poluchali otvety na E-mail kak mozhno
 | 
						|
   bystree. Esli vy ne hotite poluchat' dubliruyuschie E-mail
 | 
						|
   soobscheniya iz spiska, v sluchayah kogda vy uzhe poluchili `eti
 | 
						|
   soobscheniya napryamuyu, ustanovite flazhok eliminatecc na stranice
 | 
						|
   Change Settings v Majordomo. Vy takzhe mozhete izbezhat' polucheniya
 | 
						|
   kopij svoih soobschenij dlya samogo sebya, esli snimite flazhok
 | 
						|
   selfcopy.
 | 
						|
     _________________________________________________________________
 | 
						|
   
 | 
						|
                 Voprosy pol'zovatelej po klientskoj chasti
 | 
						|
                                      
 | 
						|
  2.1) Kakie interfejsy est' dlya PostgreSQL?
 | 
						|
  
 | 
						|
   Ustanovka PostgreSQL vklyuchaet tol'ko C i vstroennyj (embedded) C
 | 
						|
   interfejsy. Vse drugie interfejsy yavlyayutsya nezavisimymi proektami
 | 
						|
   i zagruzhayutsya otdel'no; samostoyatel'nost' proektov pozvolyaet im
 | 
						|
   organizovat' sobstvennoe raspisanie vypuskov novyh versij i imet'
 | 
						|
   sobstvennuyu komandu razrabotchikov.
 | 
						|
   
 | 
						|
   Nekotorye yazyki programmirovaniya, takie kak PHP vklyuchayut v sebya
 | 
						|
   interfejs k PostgreSQL. Interfejsy dlya takih yazykov kak Perl, TCL,
 | 
						|
   Python i mnogih drugih, dostupny na http://pgfoundry.org.
 | 
						|
   
 | 
						|
  2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL cherez
 | 
						|
  Web?
 | 
						|
  
 | 
						|
   Prekrasnoe vvedenie vo vzaimodejstvie baz dannyh i Web mozhno najti
 | 
						|
   na: http://www.webreview.com
 | 
						|
   
 | 
						|
   Dlya integracii s Web, PHP http://www.php.net yavlyaetsya neplohim
 | 
						|
   interfejsom.
 | 
						|
   
 | 
						|
   V slozhnyh sluchayah, mnogie pol'zuyutsya Perl i DBD::Pg s CGI.pm ili
 | 
						|
   mod_perl.
 | 
						|
   
 | 
						|
  2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
 | 
						|
  
 | 
						|
   Dlya PostgreSQL suschestvuet bol'shoe kolichestvo instrumentov s
 | 
						|
   graficheskim interfejsom kak kommercheskih, tak i otkrytyh.
 | 
						|
   Podrobnosti mozhno najti v Dokumentacii soobschestva dlya GUI
 | 
						|
   istrumentov PostgreSQL
 | 
						|
     _________________________________________________________________
 | 
						|
   
 | 
						|
                         Voprosy administrirovaniya
 | 
						|
                                      
 | 
						|
  3.1) Kak mne ustanovit' PostgreSQL v mesto otlichnoe ot /usr/local/pgsql?
 | 
						|
  
 | 
						|
   Zadajte opciyu --prefix kogda zapuskaete configure.
 | 
						|
   
 | 
						|
  3.2) Kak mne upravlyat' soedineniyami ot drugih komp'yuterov?
 | 
						|
  
 | 
						|
   Po umolchaniyu, PostgreSQL razreshaet tol'ko soedineniya na lokal'noj
 | 
						|
   mashine cherez sokety domena Unix ili TCP/IP soedineniya. Dlya togo,
 | 
						|
   chtoby drugie mashiny smogli podklyuchit'sya k baze vy dolzhny
 | 
						|
   izmenit' listen_addresses v postgresql.conf, razreshit'
 | 
						|
   host-avtorizaciya v fajle $PGDATA/pg_hba.conf i perestartovat' server
 | 
						|
   SUBD.
 | 
						|
   
 | 
						|
  3.3) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya proizvoditel'nosti?
 | 
						|
  
 | 
						|
   Suschestvuet tri glavnyh oblasti, kotorye potencial'no mogut
 | 
						|
   uvelichit' proizvoditel'nost':
 | 
						|
   
 | 
						|
   Izmenenie zaprosa
 | 
						|
          `Eto oznachaet modifikaciyu zaprosov dlya polucheniya luchshej
 | 
						|
          proizvoditel'nosti:
 | 
						|
          
 | 
						|
          + Sozdanie indeksov, vklyuchaya indeksy vyrazhenij i
 | 
						|
            chastichnye indeksy
 | 
						|
          + Ispol'zovanie COPY vmesto mnozhestva INSERT
 | 
						|
          + Gruppirovka neskol'kih operatorov v edinuyu tranzakciyu dlya
 | 
						|
            umen'sheniya nagruzki pri vypolnenii zaversheniya tranzakcii
 | 
						|
          + Ispol'zovanie CLUSTER, kogda iz indeksa beriotsya mnozhestvo
 | 
						|
            strok
 | 
						|
          + Ispol'zovanie LIMIT dlya togo, chtoby vozvraschalas' tol'ko
 | 
						|
            chast' vyvoda ot zaprosa
 | 
						|
          + Ispol'zovanie Podgotovlennyh (Prepared) zaprosov
 | 
						|
          + Ispol'zovanie ANALYZE dlya obsluzhivaniya statistiki
 | 
						|
            optimizatora
 | 
						|
          + Regulyarnoe ispol'zovanie VACUUM ili pg_autovacuum
 | 
						|
          + Udalenie indeksov vo vremya bol'shih izmenenij dannyh
 | 
						|
            
 | 
						|
   Nastrojka servera
 | 
						|
          Nekotorye ustanovki v postgresql.conf vliyayut na
 | 
						|
          proizvoditel'nost'. Podrobnyj polnyj spisok ustanovok sm. v
 | 
						|
          Administration Guide/Server Run-time Environment/Run-time
 | 
						|
          Configuration, a kommentarii sm. v
 | 
						|
          http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
 | 
						|
          nf_e.html i
 | 
						|
          http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
 | 
						|
          
 | 
						|
   Vybor "zheleza" - apparatnogo obespecheniya
 | 
						|
          Vliyanie "zheleza" na proizvoditel'nost' podrobno opisano v
 | 
						|
          http://www.powerpostgresql.com/PerfList/ i
 | 
						|
          http://momjian.us/main/writings/pgsql/hw_performance/index.html
 | 
						|
          .
 | 
						|
          
 | 
						|
  3.4) Kakie vozmozhnosti dlya otladki est' v nalichii?
 | 
						|
  
 | 
						|
   Est' mnozhestvo ustanovok v nastrojkah servera, nachinayuschihsya na
 | 
						|
   log_* na
 | 
						|
   http://www.postgresql.org/docs/current/interactive/runtime-config-logg
 | 
						|
   ing.html, pozvolyayuschih protokolirovat' zaprosy i statistiku raboty
 | 
						|
   processa, kotoraya ochen' polezna dlya otladki i izmereniya
 | 
						|
   proizvoditel'nosti.
 | 
						|
   
 | 
						|
  3.5) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
 | 
						|
  pytayus' podklyuchit'sya k baze?
 | 
						|
  
 | 
						|
   Vy dostigli ustanovlennogo po umolchaniyu ogranicheniya v 100 sessij
 | 
						|
   podklyucheniya k baze dannyh. Vam neobhodimo uvelichit' limit na
 | 
						|
   kolichestvo konkurentnyh backend processov dlya vashego servera BD,
 | 
						|
   izmeniv znachenie max_connections v fajle postgresql.conf i
 | 
						|
   perestartovat' server BD.
 | 
						|
   
 | 
						|
  3.6) Kak vypolnit' obnovlenie PostgreSQL?
 | 
						|
  
 | 
						|
   Sm. informaciyu ob obnovlenii v
 | 
						|
   http://www.postgresql.org/support/versioning i special'nye instrukcii
 | 
						|
   v
 | 
						|
   http://www.postgresql.org/docs/current/static/install-upgrading.html.
 | 
						|
   
 | 
						|
  3.7) Kakoe komp'yuternoe "zhelezo" ya dolzhen ispol'zovat'?
 | 
						|
  
 | 
						|
   Poskol'ku "zhelezo" personal'nyh komp'yuterov yavlyaetsya naibolee
 | 
						|
   sovmestimym, lyudi sklonny verit', chto takoe "zhelezo" imeet
 | 
						|
   odinakovoe kachestvo. `Eto ne tak. Pamyat' ECC, SCSI i kachestvennye
 | 
						|
   materinskie platy yavlyayutsya bolee nadiozhnymi i imeyut bolee
 | 
						|
   luchshuyu proizvoditel'nost', chem menee dorogoe "zhelezo". PostgreSQL
 | 
						|
   budet rabotat' na lyubom "zheleze", no esli dlya vas vazhny
 | 
						|
   nadiozhnost' i proizvoditel'nost', to s vashej storony budet mudro
 | 
						|
   postavit' sootvetstvuyuschee "zhelezo". Obsudit' raznoe "zhelezo"
 | 
						|
   mozhno v nashih spiskah rassylki.
 | 
						|
     _________________________________________________________________
 | 
						|
   
 | 
						|
                           Voprosy `ekspluatacii
 | 
						|
                                      
 | 
						|
  4.1) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek zaprosa?
 | 
						|
  Proizvol'noj stroki?
 | 
						|
  
 | 
						|
   Dlya polucheniya tol'ko neskol'kih strok, esli vy znaete ih
 | 
						|
   kolichestvo na moment vypolneniya SELECT ispol'zujte LIMIT.
 | 
						|
   Esli est' kakoj-libo indeks, kotoryj sovpadaet s ORDER BY, to
 | 
						|
   vozmozhno, chto ves' zapros vypolnen i ne budet. Esli vy ne znaete
 | 
						|
   kolichestva neobhodimyh strok na moment vypolneniya SELECT,
 | 
						|
   ispol'zujte kursor i FETCH.
 | 
						|
   
 | 
						|
   To SELECT a random row, use:
 | 
						|
    SELECT col
 | 
						|
    FROM tab
 | 
						|
    ORDER BY random()
 | 
						|
    LIMIT 1;
 | 
						|
 | 
						|
  4.2) Kak mne najti kakie tablicy, indeksy, bazy dannyh i pol'zovateli
 | 
						|
  suschestvuyut? Kak mne uvidet' zaprosy, kotorye ispol'zuet psql dlya
 | 
						|
  polucheniya `etoj informacii?
 | 
						|
  
 | 
						|
   CHtoby prosmatrivat' tablicy v psql, ispol'zujte komandu \dt. Polnyj
 | 
						|
   spisok komand v psql vy mozhete poluchit', ispol'zuya \?. Krome togo,
 | 
						|
   vy mozhete posmotret' ishodnyj kod psql v fajle
 | 
						|
   pgsql/src/bin/psql/describe.c. On soderzhit komandy SQL kotorye
 | 
						|
   generiruyutsya pri vvode v psql komand, nachinayuschihsya s obratnoj
 | 
						|
   kosoj cherty. Vy takzhe mozhete zapustit' psql s opciej -E tak, chtoby
 | 
						|
   `eta programma vydavala zaprosy, kotorye ona ispol'zuet dlya
 | 
						|
   vypolneniya zadannyh vami komand. PostgreSQL takzhe predostavlyaet SQL
 | 
						|
   sovmestimyj s INFORMATION SCHEMA interfejs, s pomosch'yu kotorogo, vy
 | 
						|
   mozhete sformirovat' zapros na poluchenie informacii o baze dannyh.
 | 
						|
   
 | 
						|
   Takzhe suschestvuyut sistemnye tablicy, nachinayuschiesya s pg_.
 | 
						|
   
 | 
						|
   Ispol'zujte psql -l dlya polucheniya spiska vseh baz dannyh.
 | 
						|
   
 | 
						|
   Takzhe posmotrite fajl pgsql/src/tutorial/syscat.source. On pokazyvaet
 | 
						|
   mnogie iz operatorov SELECT neobhodimyh dlya polucheniya informacii iz
 | 
						|
   sistemnyh tablic bazy dannyh.
 | 
						|
   
 | 
						|
  4.3) Kak izmenit' tip dannyh kolonki?
 | 
						|
  
 | 
						|
   V 8.0 i bolee pozdnih versiyah, izmenenie tipa kolonki vypolnyaetsya
 | 
						|
   ochen' legko cherez ALTER TABLE ALTER COLUMN TYPE.
 | 
						|
   
 | 
						|
   V bolee rannih versiyah sdelajte tak:
 | 
						|
    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;
 | 
						|
 | 
						|
  4.4) Kakovy maksimal'nye razmery dlya strok v tablice, tablic i bazy dannyh?
 | 
						|
  
 | 
						|
   Suschestvuyut sleduyuschie ogranicheniya:
 | 
						|
   
 | 
						|
   Maksimal'nyj razmer bazy? neogranichen (suschestvuyut bazy na 32 TB)
 | 
						|
   Maksimal'nyj razmer tablicy? 32 TB
 | 
						|
   Maksimal'nyj razmer stroki? 400 Gb
 | 
						|
   Maksimal'nyj razmer polya? 1 GB
 | 
						|
   Maksimal'noe kolichestvo strok v tablice? neogranicheno
 | 
						|
   Maksimal'noe kolichestvo kolonok v tablice? 250-1600 v zavisimosti ot
 | 
						|
   tipa
 | 
						|
   Maksimal'noe kolichestvo indeksov v tablice? neogranicheno
 | 
						|
   
 | 
						|
   Razumeetsya, ponyatie "neogranicheno" na samom dele ogranichivaetsya
 | 
						|
   dostupnym diskovym prostranistvom i razmerami pamyati/svoppinga. Kogda
 | 
						|
   znacheniya perechislennye vyshe neopravdano bol'shie, mozhet
 | 
						|
   postradat' proizvoditel'nost'.
 | 
						|
   
 | 
						|
   Maksimal'nyj razmer tablicy v 32 TB ne trebuet chtoby operacionnaya
 | 
						|
   sistema podderzhivala fajly bol'shih razmerov. Bol'shie tablicy
 | 
						|
   hranyatsya kak mnozhestvo fajlov razmerom v 1 GB, tak chto
 | 
						|
   ogranicheniya, kotorye nakladyvaet fajlovaya sistema ne vazhny.
 | 
						|
   
 | 
						|
   Maksimal'nyj razmer tablicy i maksimal'noe kolichestvo kolonok mogut
 | 
						|
   byt' uvelicheny v chetyre raza, esli razmer bloka po umolchaniyu budet
 | 
						|
   uvelichen do 32k.
 | 
						|
   
 | 
						|
   Suschestvuet ogranichenie, po kotoromu indeksy ne mogut sozdavat'sya
 | 
						|
   dlya kolonok dlinnee chem 2,000 simvolov. K schast'yu takie indeksy
 | 
						|
   vryad li dejstvitel'no komu-to nuzhny. Unikal'nost' garantiruetsya
 | 
						|
   nailuchim obrazom, s pomosch'yu funkcional'nogo indeksa iz h`esha MD5
 | 
						|
   dlinnoj kolonki, a polnotekstovoe indeksirovanie pozvolyaet iskat'
 | 
						|
   slova vnutri kolonki.
 | 
						|
   
 | 
						|
  4.5) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya sohraneniya
 | 
						|
  dannyh iz obychnogo tekstovogo fajla?
 | 
						|
  
 | 
						|
   SUBD PostgreSQL mozhet potrebovat'sya diskovogo prostranstva do 5 raz
 | 
						|
   bol'she dlya sohraneniya dannyh iz prostogo tekstovogo fajla.
 | 
						|
   
 | 
						|
   V kachestve primera, rassmotrim fajl v 100,000 strok v kazhdoj, iz
 | 
						|
   kotoryh celoe chislo i tekstovoe opisanie. Pri `etom dlina teksta, v
 | 
						|
   srednem, sostavlyaet 20 bajt. Razmer prostogo fajla sostavit 2.8 MB.
 | 
						|
   Razmer bazy PostgreSQL, soderzhaschej `eti zhe dannye sostavit
 | 
						|
   priblizitel'no 5.2 MB iz kotoryh:
 | 
						|
    24 bajt: na kazhdyj zagolovok stroki v tablice (priblizitel'no)
 | 
						|
  + 24 bajta: odno pole s celochislennym tipom i odno tekstovoe pole
 | 
						|
  +  4 bajta: ukazatel' na stranice dlya vsej tablichnoj stroki
 | 
						|
   ----------------------------------------
 | 
						|
    56 bajt na stroku v tablice
 | 
						|
 | 
						|
   Razmer stranicy dannyh v PostgreSQL sostavlyaet 8192 bajt (8 KB), tak chto:
 | 
						|
 | 
						|
   8192 bajt na stranicu
 | 
						|
   ---------------------   =  158 strok v tablice na stranicu BD (okruglionno)
 | 
						|
     52 bajt na stroku v tablice
 | 
						|
 | 
						|
     100000 strok dannyh
 | 
						|
   ----------------------- =  633 stranic v BD (okruglionno)
 | 
						|
   158 strok v tablice na stranicu
 | 
						|
 | 
						|
   633 stranic BD * 8192 bajt na stranicu = 5,185,536 bajt (5.2 MB)
 | 
						|
 | 
						|
   Indeksy ne trebuyut tak mnogo, no poskol'ku oni sozdayutsya dlya
 | 
						|
   bol'shogo kolichestva dannyh, oni takzhe mogut byt' veliki.
 | 
						|
   
 | 
						|
   Znacheniya NULL hranyatsya kak bitovye karty i po`etomu oni zanimayut
 | 
						|
   ochen' malo mesta.
 | 
						|
   
 | 
						|
  4.6) Pochemu moi zaprosy rabotayut medleno? Pochemu oni ne ispol'zuyut moi
 | 
						|
  indeksy?
 | 
						|
  
 | 
						|
   Indeksy ne ispol'zuyutsya dlya kazhdogo zaprosa. Oni ispol'zuyutsya
 | 
						|
   tol'ko esli tablica bol'she minimal'nogo razmera i zapros vybiraet
 | 
						|
   tol'ko malen'kij procent strok v tablice. Tak ustroeno, potomu chto
 | 
						|
   dostup k disku s primeneniem randomizacii pri skanirovanii indeksov
 | 
						|
   mozhet byt' medlennee, chem prostoe chtenie tablicy ili ee
 | 
						|
   posledovatel'noe skanirovanie.
 | 
						|
   
 | 
						|
   CHtoby opredelit' neobhodimost' ispol'zovaniya indeksa dlya kakoj-libo
 | 
						|
   tablicy, PostgreSQL dolzhen imet' statistiku po `etoj tablice. `Eta
 | 
						|
   statistika sobiraetsya pri ispol'zovanii VACUUM ANALYZE ili prosto
 | 
						|
   ANALYZE. Ispol'zuya statistiku, optimizator uznaet o tom kak mnogo
 | 
						|
   strok v tablice i esli on dolzhen ispol'zovat' indeksy, to on mozhet
 | 
						|
   prinimat' luchshie resheniya. Statistika takzhe vliyaet na opredelenie
 | 
						|
   optimal'nogo poryadka svyazyvaniya i metoda svyazyvaniya. Pri
 | 
						|
   izmenenii soderzhimogo tablicy dolzhen periodicheski vypolnyatsya sbor
 | 
						|
   statistiki.
 | 
						|
   
 | 
						|
   Obychno indeksy ne ispol'zuyutsya dlya ORDER BY ili dlya vypolneniya
 | 
						|
   svyazyvanij. Posledovatel'nyj perebor sleduyuschij za yavnoj
 | 
						|
   sortirovkoj obychno bystree, chem poisk po indeksam v bol'shoj
 | 
						|
   tablice. Odnako, ORDER BY chasto kombiniruetsya s LIMIT i v `etom
 | 
						|
   sluchae indeks budet ispol'zovat'sya, poskol'ku pri vypolnenii budet
 | 
						|
   vozvraschat'sya nebol'shaya chast' tablicy.
 | 
						|
   
 | 
						|
   Esli vam kazhetsya, chto optimizator nekorrektno vybiraet
 | 
						|
   posledovatel'nyj perebor, ispol'zujte SET enable_seqscan TO 'off' i
 | 
						|
   zapustite zapros snova, chtoby uvidet', dejstvitel'no li skanirovanie
 | 
						|
   indeksov bystree.
 | 
						|
   
 | 
						|
   Kogda ispol'zuyutsya operacii s shablonami, naprimer LIKE ili ~,
 | 
						|
   indeksy mogut byt' ispol'zovany v sleduyuschih sluchayah:
 | 
						|
     * Nachalo stroki poiska dolzhno sovpadat' s nachalom iskomoj stroki,
 | 
						|
       t.e.:
 | 
						|
          + LIKE shablony ne dolzhny nachinat'sya s %..
 | 
						|
          + ~ shablony regulyarnyh vyrazhenij dolzhna nachinat'sya na ^.
 | 
						|
     * Stroka poiska ne dolzhna nachinat'sya s simvola klassa, t.e.
 | 
						|
       [a-e].
 | 
						|
     * Poisk nezavisimyj ot registra, takoj kak ILIKE i ~* ne ispol'zuet
 | 
						|
       indeksy. Vmesto nego, ispol'zujte indeksy vyrazhenij, kotorye
 | 
						|
       opisyvayutsya v sekcii 4.8.
 | 
						|
     * Vo vremya initdb dolzhna ispol'zovat'sya lokal' po umolchaniyu C,
 | 
						|
       potomu chto ne suschestvuet vozmozhnosti uznat' sleduyuschij
 | 
						|
       naibol'shij simvol dlya ne-C lokali. Vy mozhete dlya takih
 | 
						|
       sluchaev sozdat' special'nyj indeks text_pattern_ops kotoryj
 | 
						|
       rabotaet tol'ko dlya LIKE indeksirovaniya. Dlya poiska slov takzhe
 | 
						|
       mozhno ispol'zovat' polnotekstovyj indeks.
 | 
						|
       
 | 
						|
  4.7) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
 | 
						|
  
 | 
						|
   Smotrite stranicu rukovodstva posvyaschennuyu EXPLAIN.
 | 
						|
   
 | 
						|
  4.8) Kak mne vypolnit' poisk regulyarnogo vyrazheniya i poisk nezavisimyj ot
 | 
						|
  registra bukv poisk regulyarnogo vyrazheniya? Kak mne ispol'zovat' indeks
 | 
						|
  dlya poiska nezavisimogo ot registra bukv?
 | 
						|
  
 | 
						|
   Operator ~ proizvodit poisk regulyarnogo vyrazheniya, a operator ~*
 | 
						|
   proizvodit nezavisimyj ot registra bukv poisk regulyarnogo
 | 
						|
   vyrazheniya. Nezavisimyj ot registra variant LIKE nazyvaetsya ILIKE.
 | 
						|
   
 | 
						|
   Nezavisimoe ot registra sravnenie obychno vyrazhaetsya tak:
 | 
						|
    SELECT *
 | 
						|
    FROM tab
 | 
						|
    WHERE lower(col) = 'abc';
 | 
						|
 | 
						|
   `Eta konstrukciya ne budet ispol'zovat' standartnyj indeks. Odnako,
 | 
						|
   esli vy sozdadite indeks vyrazheniya, on budet ispol'zovan:
 | 
						|
    CREATE INDEX tabindex ON tab (lower(col));
 | 
						|
 | 
						|
   Esli vysheukazannyj indeks sozdaiotsya kak UNIQUE, to kolonka, dlya
 | 
						|
   kotoroj on sozdaiotsya mozhet hranit' simvoly i v verhnem, i v nizhnem
 | 
						|
   registre, indes ne mozhet imet' identichnyh znachenij, kotorye
 | 
						|
   otlichayutsya tol'ko registrom. CHtoby v kolonke mozhno bylo hranit'
 | 
						|
   simvoly tol'ko v opredelionnom registre, ispol'zujte ogranichenie
 | 
						|
   CHECK ili proverku cherez trigger.
 | 
						|
   
 | 
						|
  4.9) Kak mne opredelit', chto znachenie polya v kakom-libo zaprose ravno
 | 
						|
  NULL? Kak mne soedinit' vozmozhnye NULL? Mogu ya sortirovat' polya NULL ili
 | 
						|
  net?
 | 
						|
  
 | 
						|
   Vy prosto sravnivaete znachenie s IS NULL i IS NOT NULL, kak zdes':
 | 
						|
   SELECT *
 | 
						|
   FROM tab
 | 
						|
   WHERE col IS NULL;
 | 
						|
 | 
						|
   CHtoby soedinit' s vozmozhnymi znacheniyami NULL, ispol'zujte
 | 
						|
   COALESCE() kak zdes':
 | 
						|
   SELECT COALESCE(col1, '') || COALESCE(col2, '')
 | 
						|
   FROM tab
 | 
						|
 | 
						|
   CHtoby otsortirovat' dannye po znacheniyu ispol'zujte modifikatory IS
 | 
						|
   NULL i IS NOT NULL v vyrazhenii ORDER BY. Kogda oni budut generirovat'
 | 
						|
   znacheniya istina, to pri sortirovke oni budut vyshe, chem znacheniya
 | 
						|
   lozh', tak chto zapisi s NULL budut v otsortirovannom spiske sverhu:
 | 
						|
   SELECT *
 | 
						|
   FROM tab
 | 
						|
   ORDER BY (col IS NOT NULL);
 | 
						|
 | 
						|
  4.10) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
 | 
						|
  
 | 
						|
   Tip Vnutrennee imya Zamechaniya
 | 
						|
   VARCHAR(n) varchar razmer zadaet maksimal'nuyu dlinu, net zapolneniya
 | 
						|
   CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny
 | 
						|
   TEXT text net zadavaemogo verhnego ogranicheniya ili dliny
 | 
						|
   BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zovat'
 | 
						|
   null-bajt bez opaski)
 | 
						|
   "char" char odin simvol
 | 
						|
   
 | 
						|
   Vnutrennee imya vy mozhete uvidet', kogda smotrite sistemnye katalogi
 | 
						|
   i v nekotoryh soobscheniyah ob oshibkah.
 | 
						|
   
 | 
						|
   Pervye chetyre tipa yavlyayutsya "varlena" tipami (t.e., pervye
 | 
						|
   chetyre bajta na diske yavlyayutsya dlinnoj, za kotoroj sleduyut
 | 
						|
   dannye). Takim obrazom, fakticheski ispol'zuemoe prostranstvo bol'she,
 | 
						|
   chem oboznachennyj razmer. Odnako, dlinnye znacheniya takzhe
 | 
						|
   szhimayutsya, tak chto zanimaemoe diskovoe prostranstvo mozhet takzhe
 | 
						|
   byt' i men'she, chem ozhidalos'.
 | 
						|
   VARCHAR(n) - `eto luchshee reshenie, kogda nuzhno hranit' stroki
 | 
						|
   peremennoj dliny, ne prevyshayuschie opredelennogo razmera. TEXT -
 | 
						|
   `eto luchshee reshenie dlya strok neogranichennoj dliny, s maksimal'no
 | 
						|
   dopustimoj dlinoj v 1 gigabajt.
 | 
						|
   
 | 
						|
   CHAR(n) - `eto luchshee reshenie dlya hraneniya strok, kotorye obychno
 | 
						|
   imeyut odinakovuyu dlinu. CHAR(n) zapolnyaetsya pustotoj do zadannoj
 | 
						|
   dliny, v to vremya kak VARCHAR(n) hranit tol'ko simvoly, iz kotoryh
 | 
						|
   sostoit stroka. BYTEA ispol'zuetsya dlya hraneniya binarnyh dannyh,
 | 
						|
   znacheniya kotoryh mogut vklyuchat' NULL bajty. Vse tipy opisannye
 | 
						|
   zdes', imeyut shodnye harakteristiki proizvoditel'nosti.
 | 
						|
   
 | 
						|
  4.11.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
 | 
						|
  
 | 
						|
   PostgreSQL podderzhivaet tip dannyh SERIAL. On avtomaticheski sozdaet
 | 
						|
   posledovatel'nost'. Naprimer:
 | 
						|
    CREATE TABLE person (
 | 
						|
        id   SERIAL,
 | 
						|
        name TEXT
 | 
						|
    );
 | 
						|
 | 
						|
   avtomaticheski transliruetsya v:
 | 
						|
    CREATE SEQUENCE person_id_seq;
 | 
						|
    CREATE TABLE person (
 | 
						|
        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
 | 
						|
        name TEXT
 | 
						|
    );
 | 
						|
 | 
						|
   Avtomaticheski sozdannaya posledovatel'nost' imeet imya vida
 | 
						|
   <tablica>_<kolonka_serial>_seq, gde tablica i kolonka_serial - `eto
 | 
						|
   sootvetstvenno imena tablicy i kolonki s tipom SERIAL. Smotrite
 | 
						|
   podrobnosti o posledovatel'nostyah na stranice rukovodstva
 | 
						|
   posvyaschennoj create_sequence.
 | 
						|
   
 | 
						|
  4.11.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
 | 
						|
  
 | 
						|
   Prostejshij sposob poluchit' naznachennoe znachenie SERIAL `eto
 | 
						|
   ispol'zovat' RETURNING. Ispol'zuya dlya primera tablicu v 4.11.1, `eto
 | 
						|
   mozhet vyglyadet' tak:
 | 
						|
    INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
 | 
						|
 | 
						|
   Vy takzhe mozhete vyzvat' nextval() i ispol'zovat' `eto znachenie v
 | 
						|
   INSERT ili vyzvat' currval() posle INSERT.
 | 
						|
   
 | 
						|
  4.11.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
 | 
						|
  nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
 | 
						|
  
 | 
						|
   Net. currval() vozvraschaet tekuschee znachenie, naznachennoe vashej
 | 
						|
   sessiej, a ne drugimi sessiyami.
 | 
						|
   
 | 
						|
  4.11.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya snova pri
 | 
						|
  otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii v kolonke, gde
 | 
						|
  ya ispol'zuyu posledovatel'nost'/SERIAL?
 | 
						|
  
 | 
						|
   Dlya realizacii konkuretnosti, znacheniya posledovatel'nostej, pri
 | 
						|
   neobhodimosti vydayutsya vo vremya zapuska tranzakcij i ne
 | 
						|
   blokiruyutsya do polnogo vypolneniya tranzakcij. `Eto mozhet vyzyvat'
 | 
						|
   razryvy v numeracii pri otmene tranzakcij.
 | 
						|
   
 | 
						|
  4.12) CHto takoe OID? CHto takoe CTID?
 | 
						|
  
 | 
						|
   Esli tablica sozdana s WITH OIDS, to kazhdaya stroka poluchaet
 | 
						|
   unikal'nyj indentifikator OID. OID - `eto avtomaticheski naznachaemoe
 | 
						|
   unikal'noe 4-h bajtovoe celoe chislo, kotoroe unikal'no dlya vsej
 | 
						|
   ustanovlennoj SUBD. Odnako, posle togo kak ego znachenie prevysit 4
 | 
						|
   milliarda, znacheniya OID nachinayut dublirovat'sya. PostgreSQL
 | 
						|
   ispol'zuet OID dlya svyazyvaniya svoih vnutrennih tablic.
 | 
						|
   
 | 
						|
   Dlya unikal'nogo znacheniya v strokah tablicy pol'zovatelya, luchshim
 | 
						|
   sposobom yavlyaetsya ispol'zovanie SERIAL vmesto OID, potomu chto
 | 
						|
   posledovatel'nosti SERIAL unikal'ny tol'ko vnutri tablicy i takim
 | 
						|
   obrazom men'she podverzheny perepolneniyu. Dlya hraneniya znachenij
 | 
						|
   8-mi bajtnoj posledovatel'nosti dostupen tip SERIAL8.
 | 
						|
   
 | 
						|
   CTID ispol'zuetsya dlya identifikacii special'nyh fizicheskih zapisej
 | 
						|
   s blochnymi i offset znacheniyami. CTID izmenyaetsya posle togo kak
 | 
						|
   stroki v tablice byli izmeneny ili peregruzheny.
 | 
						|
   
 | 
						|
   TID ispol'zuetsya indeksnymi zapisyami v kachestve ukazatelya na
 | 
						|
   fizicheskie zapisi.
 | 
						|
   
 | 
						|
  4.13) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
 | 
						|
  AllocSetAlloc()"?
 | 
						|
  
 | 
						|
   Predpolozhitel'no u vas zakonchilas' virtual'naya pamyat' ili chto
 | 
						|
   vashe yadro imeet malen'kij limit na opredelennye resursy. Popytajtes'
 | 
						|
   pered zapuskom servera BD vypolnit' sleduyuschie komandy:
 | 
						|
    ulimit -d 262144
 | 
						|
    limit datasize 256m
 | 
						|
 | 
						|
   V zavisimosti ot komandnogo interpretatora shell, tol'ko odna iz
 | 
						|
   dannyh komand vypolnitsya uspeshno, no ona pozvolit vam ustanovit'
 | 
						|
   bol'shij segment dannyh processa i vozmozhno reshit problemu. `Eta
 | 
						|
   komanda izmenyaet parametry tekuschego processa i vseh ego potomkov,
 | 
						|
   sozdannyh posle eio zapuska. Esli u vas voznikla problema s SQL
 | 
						|
   klientom, potomu chto backend vozvraschaet slishkom bol'shoj ob"em
 | 
						|
   dannyh, popytajtes' vypolnit' `etu komandu pered zapuskom klienta.
 | 
						|
   
 | 
						|
  4.14) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
 | 
						|
  
 | 
						|
   Iz psql, naberite SELECT version();
 | 
						|
   
 | 
						|
  4.15) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
 | 
						|
  tekuschee vremya?
 | 
						|
  
 | 
						|
   Ispol'zujte CURRENT_TIMESTAMP:
 | 
						|
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
 | 
						|
 | 
						|
  4.16) Kak mne vypolnit' vneshnee svyazyvanie?
 | 
						|
  
 | 
						|
   PostgreSQL podderzhivaet vneshnee svyazyvanie, ispol'zuya standartnyj
 | 
						|
   sintaksis SQL. Vot dva primera:
 | 
						|
    SELECT *
 | 
						|
    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
 | 
						|
 | 
						|
   ili
 | 
						|
    SELECT *
 | 
						|
    FROM t1 LEFT OUTER JOIN t2 USING (col);
 | 
						|
 | 
						|
   `Eto identichnye zaprosy svyazyvaniya t1.col i t2.col, takzhe
 | 
						|
   vozvraschayut lyubye nesvyazannye stroki v t1 (kotorye ne sovpadayut s
 | 
						|
   t2). RIGHT svyazyvanie dolzhno dobavit' nesvyazannye stroki t2. FULL
 | 
						|
   svyazyvanie dolzhno vozvratit' sovpavshie stroki plyus vse
 | 
						|
   nesvyazannye stroki iz t1 i t2. Slovo OUTER yavlyaetsya
 | 
						|
   neobyazatel'nym i naznachaetsya v LEFT, RIGHT i FULL svyazyvaniyah.
 | 
						|
   Obychnye svyazyvaniya nazyvayutsya INNER svyazyvaniya.
 | 
						|
   
 | 
						|
  4.17) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
 | 
						|
  
 | 
						|
   Ne suschestvuet sposoba sozdat' zapros k bazam dannyh otlichnym ot
 | 
						|
   tekuschej. Poskol'ku PostgreSQL zagruzhaet sistemnye katalogi
 | 
						|
   specifichnye dlya bazy dannyh, neponyatno dazhe, kak dolzhen sebya
 | 
						|
   vesti takoj mezhbazovyj zapros.
 | 
						|
   
 | 
						|
   contrib/dblink pozvolyaet zaprosy mezhdu bazami, ispol'zuya vyzovy
 | 
						|
   funkcij. Razumeetsya, klient mozhet odnovremenno takzhe ustanavlivat'
 | 
						|
   soedieneniya s razlichnymi bazami dannyh i takih obrazom ob"edinyat'
 | 
						|
   informaciyu iz nih.
 | 
						|
   
 | 
						|
  4.18) Kak mne vernut' iz funkcii neskol'ko strok tablicy?
 | 
						|
  
 | 
						|
   Vy mozhete legko ispol'zovat' funkcii, vozvraschayuschie spisok,
 | 
						|
   http://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_
 | 
						|
   PL/pgSQL_functions.
 | 
						|
   
 | 
						|
  4.19) Pochemu ya poluchayu oshibku "relation with OID #### ne suschestvuet",
 | 
						|
  kogda obraschayuts' k vremennym tablicam v funkciyah PL/PgSQL?
 | 
						|
  
 | 
						|
   V PostgreSQL do versii 8.3, PL/PgSQL k`eshiruet scenarii funkcii i
 | 
						|
   odin iz negativnyh `effektov `etogo sostoit v tom, chto esli funkciya
 | 
						|
   PL/PgSQL obraschaetsya k vremennoj tablice i `eta tablica pozdnee
 | 
						|
   udalyaetsya i peresozdaetsya, a funkciya zatem vyzyvaetsya snova, to
 | 
						|
   ee vyzov privedet k oshibke, potomu chto sk`eshirovannoe soderzhimoe
 | 
						|
   funkcii soderzhit ukazatel' na staruyu vremennuyu tablicu. CHtoby
 | 
						|
   reshit' `etu problemu, ispol'zujte EXECUTE dlya dostupa k vremennym
 | 
						|
   tablicam v PL/PgSQL. Ispol'zovanie `etogo operatora zastavit zapros
 | 
						|
   peregenerirovat'sya kazhdyj raz.
 | 
						|
   
 | 
						|
   V PostgreSQL 8.3 i pozdnee, `etoj problemy net.
 | 
						|
   
 | 
						|
  4.20) Kakie est' resheniya dlya replikacii?
 | 
						|
  
 | 
						|
   Hotya "replikaciya" -- `eto edinyj termin, est' neskol'ko raznyh
 | 
						|
   tehnologij dlya vypolneniya replikacij s raznymi osobennostyami dlya
 | 
						|
   kazhdoj.
 | 
						|
   
 | 
						|
   Replikaciya Master/slave pozvolyaet imet' odin glavnyj (master) server
 | 
						|
   dlya vypolneniya zaprosov chteniya/zapisi, v to vremya kak
 | 
						|
   podchinionnye (slave) servera mogut proizvodit' tol'ko zaprosy
 | 
						|
   chteniya/SELECT. Naibolee populyarnym resheniem dlya replikacii
 | 
						|
   master-slave v PostgreSQL yavlyaetsya Slony-I.
 | 
						|
   
 | 
						|
   Replikaciya Multi-master pozvolyaet vypolnyat' zaprosy chteniya/zapisi
 | 
						|
   na neskol'kih, repliciruemyh drug s drugom komp'yuetrah. `Eta
 | 
						|
   osobennost' takzhe privodit k potere proizvoditel'nosti, potomu chto
 | 
						|
   neobhodima sinhronizaciya izmenenij mezhdu neskol'kimi serverami.
 | 
						|
   Naibolee populyarnym resheniem dlya takoj replikacii v PostgreSQL
 | 
						|
   yavlyaetsya PGcluster.
 | 
						|
   
 | 
						|
  4.21) Pochemu imena tablicy i kolonok ne raspoznayutsya v v moiom zaprose?
 | 
						|
  Pochemu ne sohranyayutsya zaglavnye bukvy?
 | 
						|
  
 | 
						|
   Naibolee chasto imena neraspoznayutsya iz-za ispol'zovaniya dvojnyh
 | 
						|
   kavychek v imeni tablicy ili kolonki pri sozdanii tablicy. Pri
 | 
						|
   ispol'zovanii dvojnyh kavychek, imya tablicy i kolonki (kotorye
 | 
						|
   nazyvayut identifikatorami) sohranyayutsya v registro-zavisimom vide;
 | 
						|
   `eto oznachaet, chto vy dolzhny ispol'zovat' dvojnye kavychki, kogda
 | 
						|
   ukazyvaete `eti imena v zaprose. Nekotorye interfejsy, takie kak
 | 
						|
   pgAdmin, vo vremya sozdaniya tablicy dobavlyayut dvojnye kavychki
 | 
						|
   avtomaticheski. Takim obrazom, chtoby identifikatory raspoznavalis' vy
 | 
						|
   dolzhny sledovat' odnomu iz sleduyuschih pravil:
 | 
						|
     * Izbegat' ispol'zovaniya dvojnyh kavychek pri sozdanii tablic
 | 
						|
     * Ispol'zovat' v identifikatorah tol'ko simvoly nizhnego registra
 | 
						|
     * Ispol'zovat' dvojnye kavychki dlya identifikatorov v zaprosah
 |