Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
49c320b1
Commit
49c320b1
authored
Feb 11, 2005
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update to Russian FAQ, HEAD and 8.0.X.
parent
341251f2
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
712 additions
and
1412 deletions
+712
-1412
doc/FAQ_russian
doc/FAQ_russian
+323
-674
doc/src/FAQ/FAQ_russian.html
doc/src/FAQ/FAQ_russian.html
+389
-738
No files found.
doc/FAQ_russian
View file @
49c320b1
Otvety na chasto zadavaemye voprosy po PostgreSQL
Otvety na chasto zadavaemye voprosy po PostgreSQL
Data poslednego obnovleniya: Sreda
15 dekabrya 20:06:34 EST 2004
Data poslednego obnovleniya: Sreda
2 fevralya 12:44:03 EST 2005
Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian)
Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian)
(pgman@candle.pha.pa.us)
(pgman@candle.pha.pa.us)
...
@@ -9,107 +9,91 @@
...
@@ -9,107 +9,91 @@
Perevel na russkij: Viktor Vislobokov (corochoone@perm.ru)
Perevel na russkij: Viktor Vislobokov (corochoone@perm.ru)
Samuyu svezhuyu anglijskuyu versiyu dokumenta mozhno najti na
Samuyu svezhuyu anglijskuyu versiyu dokumenta mozhno najti na
http://www.PostgreSQL.org/
docs
/faqs/FAQ.html.
http://www.PostgreSQL.org/
files/documentation
/faqs/FAQ.html.
Otvety na voprosy specifichnye dlya konkretnyh platform mozhno najti
Otvety na voprosy specifichnye dlya konkretnyh platform mozhno najti
na http://www.PostgreSQL.org/docs/
index.html
.
na http://www.PostgreSQL.org/docs/
faq/
.
_________________________________________________________________
_________________________________________________________________
Obschie voprosy
Obschie voprosy
1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie?
1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie?
1.2) Kakovy avtorskie prava na PostgreSQL?
1.2) Kakovy avtorskie prava na PostgreSQL?
1.3) Na kakih
Unix
platformah rabotaet PostgreSQL?
1.3) Na kakih platformah rabotaet PostgreSQL?
1.4)
Suschestvuyut li versii portirovannye ne na Unix sistemy
?
1.4)
Gde mozhno vzyat' PostgreSQL
?
1.5) Gde
mozhno vzyat' PostgreSQL
?
1.5) Gde
poluchit' podderzhku
?
1.6)
Gde poluchit' podderzhku
?
1.6)
Kak mne soobschit' ob oshibke
?
1.7) Kakaya versiya poslednyaya?
1.7) Kakaya versiya poslednyaya?
1.8) Kakaya dokumentaciya imeetsya v nalichii?
1.8) Kakaya dokumentaciya imeetsya v nalichii?
1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
vozmozhnostyah?
vozmozhnostyah?
1.10) Kak nauchit'sya SQL?
1.10) Kak nauchit'sya SQL?
1.11) Reshena li v PostgreSQL problema 2000-go goda (Y2K)?
1.11) Kak prisoedinitsya k komande razrabotchikov?
1.12) Kak prisoedinitsya k komande razrabotchikov?
1.12) Kak sravnivat' PostgreSQL s drugimi SUBD?
1.13) Kak otpravit' soobschenie ob oshibke?
1.14) Kak sravnivat' PostgreSQL s drugimi SUBD?
1.15) Kak okazat' finansovuyu pomosch' PostgreSQL?
Voprosy pol'zovatelej po klientskoj chasti
Voprosy pol'zovatelej po klientskoj chasti
2.1)
Suschestvuyut li ODBC drajvera
dlya PostgreSQL?
2.1)
Kakie interfejsy est'
dlya PostgreSQL?
2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL
2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL
cherez Web?
cherez Web?
2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
2.4) Kakie yazyki mogut vzaimodejstvovat' s PostgreSQL?
Voprosy administrirovaniya
Voprosy administrirovaniya
3.1) Kak mne ustanovit' PostgreSQL v mesto otlichnoe ot
3.1) Kak mne ustanovit' PostgreSQL v mesto otlichnoe ot
/usr/local/pgsql?
/usr/local/pgsql?
3.2) Kogda ya zapuskayu postmaster, ya poluchayu soobschenie Bad
3.2) Kak mne upravlyat' soedineniyami s drugih komp'yuterov?
System Call ili soobschenie core dumped. Pochemu?
3.3) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya
3.3) Kogda ya pytayus' zapustit' postmaster, ya poluchayu oshibki
IpcMemoryCreate. Pochemu?
3.4) Kogda ya pytayus' zapustit' postmaster, ya poluchayu oshibki
IpcSemaphoreCreate. Pochemu?
3.5) Kak mne upravlyat' soedineniyami s drugih komp'yuterov?
3.6) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya
proizvoditel'nosti?
proizvoditel'nosti?
3.
7
) Kakie vozmozhnosti dlya otladki est' v nalichii?
3.
4
) Kakie vozmozhnosti dlya otladki est' v nalichii?
3.
8
) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
3.
5
) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
pytayus' podklyuchit'sya k baze?
pytayus' podklyuchit'sya k baze?
3.9) CHto nahoditsya v kataloge pgsql_tmp?
3.6) Pochemu neobhodimo delat' dump i restore pri obnovlenii vypuskov
3.10) Pochemu neobhodimo delat' dump i restore pri obnovlenii vypuskov
PostgreSQL?
PostgreSQL?
3.
11
) Kakoe komp'yuternoe "zhelezo" ya dolzhen ispol'zovat'?
3.
7
) Kakoe komp'yuternoe "zhelezo" ya dolzhen ispol'zovat'?
Voprosy `ekspluatacii
Voprosy `ekspluatacii
4.1) V chem otlichie mezhdu binarnym i normal'nym kursorom?
4.1) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek
4.2) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek
zaprosa? Dlya proizvol'noj stroki?
zaprosa? Dlya proizvol'noj stroki?
4.3) Kak poluchit' spisok tablic ili drugih komponentov v psql?
4.2) Kak mne najti kakie tablicy, indeksy, bazy dannyh i pol'zovateli
4.4) Kak udalit' kolonku iz tablicy ili izmenit' eio tip dannyh?
suschestvuyut? Kak mne uvidet' zaprosy, kotorye ispol'zuet psql dlya
4.5) Kakovy maksimal'nye razmery dlya zapisej, tablic i bazy dannyh?
polucheniya `etoj informacii?
4.6) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya
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?
sohraneniya dannyh iz obychnogo tekstovogo fajla?
4.7) Kak mne ubedit'sya, chto suschestvuyut nuzhnye mne tablicy,
4.6) Pochemu moi zaprosy rabotayut medleno? Pochemu oni ne ispol'zuyut
indeksy, bazy dannyh i pol'zovateli?
moi indeksy?
4.8) U menya medlenno rabotayut zaprosy ili ne proishodit
4.7) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
ispol'zovaniya indeksov. Pochemu?
4.8) Kak mne vypolnit' poisk regulyarnogo vyrazheniya i poisk
4.9) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
4.10) CHto takoe R-tree indeks?
4.11) CHto takoe Genetic Query Optimizer?
4.12) Kak mne vypolnit' poisk regulyarnogo vyrazheniya i poisk
nezavisimyj ot registra bukv poisk regulyarnogo vyrazheniya? Kak mne
nezavisimyj ot registra bukv poisk regulyarnogo vyrazheniya? Kak mne
ispol'zovat' indeks dlya poiska nezavisimogo ot registra bukv?
ispol'zovat' indeks dlya poiska nezavisimogo ot registra bukv?
4.
13
) Kak ya mogu opredelit', chto znachenie polya ravno NULL v
4.
9
) Kak ya mogu opredelit', chto znachenie polya ravno NULL v
kakom-libo zaprose?
kakom-libo zaprose?
4.1
4
) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
4.1
0
) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
4.1
5
.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
4.1
1
.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
4.1
5
.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
4.1
1
.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
4.1
5
.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
4.1
1
.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
4.1
5
.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya
4.1
1
.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya
snova pri otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii
snova pri otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii
v kolonke, gde ya ispol'zuyu posledovatel'nost'/SERIAL?
v kolonke, gde ya ispol'zuyu posledovatel'nost'/SERIAL?
4.16) CHto takoe OID? CHto takoe TID?
4.12) CHto takoe OID? CHto takoe TID?
4.17) CHto oznachayut nekotorye terminy ispol'zuemye v PostgreSQL?
4.13) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
4.18) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
AllocSetAlloc()"?
AllocSetAlloc()"?
4.1
9
) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
4.1
4
) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
4.
20
) Pochemu pri rabote s moim bol'shim ob"ektom ya poluchayu oshibku
4.
15
) Pochemu pri rabote s moim bol'shim ob"ektom ya poluchayu oshibku
"invalid large obj descriptor"?
"invalid large obj descriptor"?
4.
21
) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
4.
16
) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
tekuschee vremya?
tekuschee vremya?
4.22) Pochemu moi podzaprosy, ispol'zuyuschie IN tak medlenno
4.17) Kak vypolnit' vneshnee svyazyvanie?
rabotaeyut?
4.18) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
4.23) Kak vypolnit' vneshnee svyazyvanie?
4.19) Kak mne vernut' iz funkcii neskol'ko strok tablicy?
4.24) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
4.20) Pochemu ya ne mogu nadezhno sozdavat'/udalyat' vremennye tablicy
4.25) Kak mne vernut' iz funkcii neskol'ko zapisej?
4.26) Pochemu ya ne mogu nadezhno sozdavat'/udalyat' vremennye tablicy
v funkciyah PL/PgSQL?
v funkciyah PL/PgSQL?
4.2
7
) Kakie opcii shifrovaniya suschestvuyut?
4.2
1
) Kakie opcii shifrovaniya suschestvuyut?
Rasshireniya PostgreSQL
Rasshireniya PostgreSQL
...
@@ -117,7 +101,7 @@
...
@@ -117,7 +101,7 @@
zapuskayu ee v psql, pochemu ya poluchayu core dump?
zapuskayu ee v psql, pochemu ya poluchayu core dump?
5.2) Kak ya mogu vnesti nekotorye klassnye novye tipy i funkcii v
5.2) Kak ya mogu vnesti nekotorye klassnye novye tipy i funkcii v
PostgreSQL?
PostgreSQL?
5.3) Kak mne napisat' C funkciyu, vozvraschayuschuyu
zapis'
?
5.3) Kak mne napisat' C funkciyu, vozvraschayuschuyu
stroku tablicy
?
5.4) YA izmenil ishodnyj fajl. Pochemu posle perekompilyacii ya ne
5.4) YA izmenil ishodnyj fajl. Pochemu posle perekompilyacii ya ne
vizhu izmenenij?
vizhu izmenenij?
_________________________________________________________________
_________________________________________________________________
...
@@ -126,46 +110,33 @@
...
@@ -126,46 +110,33 @@
1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie?
1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie?
PostgreSQL proiznositsya Post-Gres-Q-L (Post-Gres-K'yu-`El). Po adresu
PostgreSQL proiznositsya Post-Gres-Q-L (Post-Gres-K'yu-`El), takzhe
http://www.postgresql.org/postgresql.mp3 dostupen zvukovoj fajl s
chasto govoryat prosto Postgres.
primerom kak `eto nuzhno proiznosit'.
PostgreSQL - `eto ob"ektno-relyacionnaya sistema upravleniya bazami
PostgreSQL - `eto rasshirenie SUBD POSTGRES (i po`etomu inogda
dannyh (SUBD), kotoraya imeet tradicionnye vozmozhnosti kommercheskih
govoryat prosto "Postgres"), issledovatel'skij prototip novogo
SUBD s rasshireniyami, kotorye est' v SUBD novogo pokoleniya.
pokoleniya SUBD. PostgreSQL odnovremenno sohranyaet moschnuyu model'
PostgreSQL - `eto svobodnoe i polnost'yu otkrytoe programmnoe
dannyh i obschirnoe kolichestvo tipov POSTGRES, i zameschaet yazyk
obespechenie.
zaprosov PostQuel na rasshirennoe podmnozhestvo SQL. PostgreSQL - `eto
svobodnoe i polnost'yu otkrytoe programmnoe obespechenie.
Razrabotku PostgreSQL vypolnyaet komanda razrabotchikov, razbrosannaya
po vsemu miru i svyazannaya cherez Internet. Razrabotka yavlyaetsya
Razrabotku PostgreSQL vypolnyaet komanda razrabotchikov, vse
obschestvennym proektom i ne upravlyaetsya kakoj-libo kompaniej.
uchastniki kotoroj podpisany na spisok rassylki razrabotchikov. V
Podrobnosti smotrite v FAQ dlya razrabotchikov,
nastoyaschee vremya, ih koordinatorom yavlyaetsya Mark Furn'e (Marc G.
http://www.PostgreSQL.org/files/documentation/faqs/FAQ_DEV.html
Fournier) (scrappy@PostgreSQL.org). (Sm. sekciyu 1.6 o tom, kak
podklyuchit'sya k razrabotke). `Eta komanda teper' otvechaet za vsyu
razrabotku PostgreSQL. Dannyj proekt yavlyaetsya obschestvennym i ne
upravlyaetsya kakoj-libo kompaniej. Podrobnosti smotrite v FAQ dlya
razrabotchikov, http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
Avtorami PostgreSQL 1.01 yavlyayutsya `Endryu YU (Andrew Yu) i Dzholi
CHen (Jolly Chen). Mnogie drugie vnesli svoj vklad v perenos na drugie
platformy, testirovanie, otladku i rasshirenie `etogo koda.
Pervonachal'nyj kod Postgres, iz kotorogo poyavilsya PostgreSQL, byl
itogom usilij mnogih akademicheskih studentov, neakademicheskih
studentov i mnozhestva raznyh programmistov, rabotavshih pod
rukovodstvom professora Majkla Stounbrejkera (Michael Stonebraker) v
Kalifornijskom universitete, Berkli.
Pervonachal'noe imya, dannoe v Berkli, bylo Postgres. Kogda v 1995
godu byla dobavlena funkcional'nost' SQL, `eto imya bylo izmeneno na
Postgres95. No i `eto imya bylo izmeneno v konce 1996 na PostgreSQL.
1.2) Kakovy avtorskie prava na PostgreSQL?
1.2) Kakovy avtorskie prava na PostgreSQL?
PostgreSQL popadaet pod dejstvie sleduyuschego COPYRIGHT:
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
Sistema Upravleniya Bazami Dannyh PostgreSQL
Portions copyright (c) 1996-200
4
, PostgreSQL Global Development Group
Portions copyright (c) 1996-200
5
, PostgreSQL Global Development Group
Portions Copyright (c) 1994-6 Regents of the University of California
Portions Copyright (c) 1994-6 Regents of the University of California
Predostavlyayutsya prava na ispol'zovanie, kopirovanie, izmenenie i
Predostavlyayutsya prava na ispol'zovanie, kopirovanie, izmenenie i
...
@@ -190,20 +161,13 @@
...
@@ -190,20 +161,13 @@
PREDOSTAVLYAT' SOPROVOZHDENIE, PODDERZHKU, OBNOVLENIYA, RASSHIRENIYA
PREDOSTAVLYAT' SOPROVOZHDENIE, PODDERZHKU, OBNOVLENIYA, RASSHIRENIYA
ILI IZMENENIYA.
ILI IZMENENIYA.
Vysheizlozhennoe yavlyaetsya BSD licenziej, klassicheskoj licenziej
1.3) Na kakih platformah rabotaet PostgreSQL?
programmnogo obespecheniya s otkrytym kodom. `Eta licenziya ne
nakladyvaet ogranichenij na ispol'zovanie ishodnogo koda. Nam
nravitsya `eta licenziya i my ne sobiraemsya eio menyat'.
1.3) Na kakih Unix platformah rabotaet PostgreSQL?
Obychno, PostgreSQL mozhet rabotat' na lyuboj sovremennoj platforme
Obychno, PostgreSQL mozhet rabotat' na lyuboj sovremennoj platforme
sovmestimoj s Unix. V instrukcii po ustanovke, vy najdete spisok teh
sovmestimoj s Unix. V instrukcii po ustanovke, vy najdete spisok teh
platform, na kotoryh byli provedeny testovye zapuski PostgreSQL k
platform, na kotoryh byli provedeny testovye zapuski PostgreSQL k
momentu vyhoda dannoj versii.
momentu vyhoda dannoj versii.
1.4) Suschestvuyut li versii perenesennye ne na Unix sistemy?
Nachinaya s versii 8.0, PostgreSQL bez vsyakih uhischrenij rabotaet na
Nachinaya s versii 8.0, PostgreSQL bez vsyakih uhischrenij rabotaet na
operacionnyh sistemah Microsoft Windows, osnovannyh na NT, takih kak
operacionnyh sistemah Microsoft Windows, osnovannyh na NT, takih kak
Win2000, WinXP i Win2003. Paket installyatora dostupen po adresu
Win2000, WinXP i Win2003. Paket installyatora dostupen po adresu
...
@@ -212,57 +176,27 @@
...
@@ -212,57 +176,27 @@
pomosch'yu Cygwin.
pomosch'yu Cygwin.
Takzhe suschestvuet versiya sportirovannaya pod Novell Netware 6 na
Takzhe suschestvuet versiya sportirovannaya pod Novell Netware 6 na
http://forge.novell.com.
http://forge.novell.com, 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?
1.
4
) Gde mozhno vzyat' PostgreSQL?
Naprimer, vospol'zovavshis' anonimnym dostupom na ftp sajt PostgreSQL
Naprimer, vospol'zovavshis' anonimnym dostupom na ftp sajt PostgreSQL
ftp://ftp.PostgreSQL.org/pub. Spisok zerkal vy najdete na nashem
ftp://ftp.PostgreSQL.org/pub. Spisok zerkal vy najdete na nashem
osnovnom sajte.
osnovnom sajte.
1.
6
) Gde poluchit' podderzhku?
1.
5
) Gde poluchit' podderzhku?
Osnovnoj spisok rassylki: pgsql-general@PostgreSQL.org. V nem mozhno
Soobschestvo PostgreSQL predostavlyaet pomosch' mnozhestvu
obsuzhdat' lyubye temy, kasayuschiesya PostgreSQL. CHtoby
pol'zovatelej cherez E-mail. Osnovnoj web-sajt dlya podpiski na spiski
podpisat'sya, otprav'te pis'mo po `elektronnoj pochte, v kotorom v
rassylki po E-mail `eto: http://www.postgresql.org/community/lists/.
tele pis'ma (ne v teme) napishite sleduyuschie stroki:
Horoshim mestom dlya togo, chtoby nachat' zadavat' voprosy
subscribe
yavlyayutsya spiski general (obschie voprosy) ili bugs (oshibki).
end
na adres pgsql-general-request@PostgreSQL.org.
Suschestvuet dajzhest spisok. CHtoby podpisat'sya na nego, otprav'te
pis'mo po `elektronnoj pochte na adres:
pgsql-general-digest-request@PostgreSQL.org i v tele pis'ma napishite
strochki strochki:
subscribe
end
Dajzhesty otpravlyayutsya podpischikam, kogda v osnovnom spiske
rassylki nakopitsya okolo 30 kilobajt soobschenij.
Dostupen i spisok rassylki soobschenij ob oshibkah. CHtoby
podpisat'sya na `etot spisok, otprav'te po `elektronnoj pochte pis'mo
na adres pgsql-bugs-request@PostgreSQL.org i v tele pis'ma napishite
strochki strochki:
subscribe
end
Takzhe imeetsya spisok rassylki s diskussiyami razrabotchikov. CHtoby
podpisat'sya na `etot spisok, otprav'te po `elektronnoj pochte pis'mo
na adres pgsql-hackers-request@PostgreSQL.org i v tele pis'ma
napishite strochki strochki:
subscribe
end
Dopolnitel'nye spiski rassylki i infomaciyu o PostgreSQL mozhno najti
na domashnej stranichke PostgreSQL po adresu:
http://www.PostgreSQL.org
Glavnym IRC kanalom yavlyaetsya #postgreql, raspolozhennyj na servere
Glavnym IRC kanalom yavlyaetsya #postgreql, raspolozhennyj na servere
Freenode (irc.freenode.net). CHtoby podklyuchit'sya, vy mozhete
Freenode (irc.freenode.net). CHtoby podklyuchit'sya, vy mozhete
ispol'zovat'
komandu Unix
irc -c '#postgresql' "$USER"
ispol'zovat'
v Unix vyzov programmy
irc -c '#postgresql' "$USER"
irc.freenode.net ili lyuboj drugoj IRC klient. Na `etom zhe servere
irc.freenode.net ili lyuboj drugoj IRC klient. Na `etom zhe servere
suschestvuyut kanaly na ispanskom (#postgresql-es) i francuzskom
suschestvuyut kanaly na ispanskom (#postgresql-es) i francuzskom
(#postgresqlfr) yazykah. Takzhe suschestvuet kanal po PostgreSQL na
(#postgresqlfr) yazykah. Takzhe suschestvuet kanal po PostgreSQL na
...
@@ -271,18 +205,27 @@
...
@@ -271,18 +205,27 @@
Spisok kommercheskoj podderzhki kompanij dostupen na
Spisok kommercheskoj podderzhki kompanij dostupen na
http://techdocs.postgresql.org/companies.php.
http://techdocs.postgresql.org/companies.php.
1.6) 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.
1.7) Kakaya poslednyaya versiya?
1.7) Kakaya poslednyaya versiya?
Poslednij vypusk PostgreSQL - `eto versiya
7.4.6
Poslednij vypusk PostgreSQL - `eto versiya
8.0.1
My planiruem vypuskat' novye versii kazhdye
6-8
mesyacev.
My planiruem vypuskat' novye versii kazhdye
10-12
mesyacev.
1.8) Kakaya dokumentaciya imeetsya v nalichii?
1.8) Kakaya dokumentaciya imeetsya v nalichii?
V distributiv vklyuchayutsya razlichnye rukovodstva, stranicy
PostgreSQL soderzhit mnogo dokumentacii, vklyuchaya bol'shoe
`elektronnogo rukovodstva man i nekotorye malen'kie testovye primery.
rukovodstvo, stranicy `elektronnogo rukovodstva man i nekotorye
Smotrite v katalog /doc. Vy takzhe mozhete prosmatrivat' dokumentaciyu
malen'kie testovye primery. Smotrite v katalog /doc. Vy takzhe mozhete
v Internet po adresu http://www.PostgreSQL.org/docs.
prosmatrivat' dokumentaciyu v Internet po adresu
http://www.PostgreSQL.org/docs.
Suschestvuet dve knigi po PostgreSQL dostupnye po adresam
Suschestvuet dve knigi po PostgreSQL dostupnye po adresam
http://www.PostgreSQL.org/docs/awbook.html i
http://www.PostgreSQL.org/docs/awbook.html i
...
@@ -292,8 +235,9 @@
...
@@ -292,8 +235,9 @@
po adresu http://techdocs.PostgreSQL.org/ vy mozhete najti kollekciyu
po adresu http://techdocs.PostgreSQL.org/ vy mozhete najti kollekciyu
tehnicheskih statej posvyaschennyh PostgreSQL.
tehnicheskih statej posvyaschennyh PostgreSQL.
psql imeet neskol'ko prekrasnyh komand \d dlya otobrazheniya
Klient komandnoj stroki psql imeet neskol'ko komand \d dlya
informacii po tipam, operatoram, funkciyam, agregatam i t.d.
otobrazheniya informacii po tipam, operatoram, funkciyam, agregatam i
t.d. - ispol'zujte \? dlya polucheniya spiska dostupnyh komand.
Nash sajt soderzhit esche bol'she informacii.
Nash sajt soderzhit esche bol'she informacii.
...
@@ -321,17 +265,13 @@
...
@@ -321,17 +265,13 @@
Handbook, Bowman, Judith S., et al., Addison-Wesley. Drugim nravitsya
Handbook, Bowman, Judith S., et al., Addison-Wesley. Drugim nravitsya
The Complete Reference SQL, Groff et al., McGraw-Hill.
The Complete Reference SQL, Groff et al., McGraw-Hill.
1.11) Reshena li v PostgreSQL problema 2000-go goda (Y2K)?
1.11) Kak prisoedinitsya k komande razrabotchikov?
Da, my legko rabotaem s datami posle 2000 goda i pered 2000 godom.
1.12) Kak prisoedinitsya k komande razrabotchikov?
Dlya nachala, skachajte poslednyuyu versiyu ishodnyh tekstov i
Dlya nachala, skachajte poslednyuyu versiyu ishodnyh tekstov i
prochtite
dokumentaciyu razrabotchikov PostgreSQL na nashem sajte ili
prochtite
FAQ i dokumentaciyu dlya razrabotchikov PostgreSQL na nashem
v distributive. Zatem, podpishites' na spiski rassylki pgsql-hackers
i
sajte ili v distributive. Zatem, podpishites' na spiski rassylk
i
pgsql-
patches. Dalee, otpravlyajte ispravleniya (patches) vysokogo
pgsql-
hackers i pgsql-patches. Dalee, otpravlyajte ispravleniya
kachestva v spisok pgsql-patches.
(patches) vysokogo
kachestva v spisok pgsql-patches.
Suschestvuet ogranichennyj spisok lyudej, kotoryj imeyut privelegiyu
Suschestvuet ogranichennyj spisok lyudej, kotoryj imeyut privelegiyu
vnosit' izmeneniya v CVS arhiv PostgreSQL. Kazhdyj iz `etih lyudej v
vnosit' izmeneniya v CVS arhiv PostgreSQL. Kazhdyj iz `etih lyudej v
...
@@ -340,15 +280,7 @@
...
@@ -340,15 +280,7 @@
previlegii vnosit' izmeneniya, i my uvereny, chto te ispravleniya,
previlegii vnosit' izmeneniya, i my uvereny, chto te ispravleniya,
kotorye oni vnesut budut vysokogo kachestva.
kotorye oni vnesut budut vysokogo kachestva.
1.13) Kak otpravit' soobschenie ob oshibke??
1.12) Kak sravnivat' PostgreSQL s drugimi SUBD?
Zapolnite formu ob oshibke v PostgreSQL, kotoraya raspolozhena na
http://www.postgresql.org/bugform.html.
Takzhe ne zabud'te posmotret' na ftp://ftp.PostgreSQL.org/pub na
predmet bolee svezhih versij PostgreSQL ili zaplat.
1.14) Kak sravnivat' PostgreSQL s drugimi SUBD?
Suschestvuet neskol'ko metodov sravneniya programmnogo obespecheniya:
Suschestvuet neskol'ko metodov sravneniya programmnogo obespecheniya:
vozmozhnosti, proizvoditel'nost', nadezhnost', podderzhka i cena.
vozmozhnosti, proizvoditel'nost', nadezhnost', podderzhka i cena.
...
@@ -363,24 +295,17 @@
...
@@ -363,24 +295,17 @@
dlya raboty s soderzhimym blokirovok.
dlya raboty s soderzhimym blokirovok.
Proizvoditel'nost'
Proizvoditel'nost'
PostgreSQL imeet proizvoditel'nost' shodnuyu s drugimi
Proizvoditel'nost' PostgreSQL shodna s drugimi kommercheskimi
kommercheskimi SUBD i s SUBD s otkrytym ishodnym kodom, v
SUBD i s SUBD s otkrytym ishodnym kodom. V kakih-to veschah my
kakih-to aspektah rabotaya bystree chem oni, v kakih-to
bystree, v kakih-to medlennee. V sravnenii s MySQL ili linejnoj
medlenee. V sravnenii s MySQL ili obydennee SUBD, my bystree,
SUBD, my bystree, kogda pol'zovatelej mnogo, a takzhe na
kogda pol'zovatelej mnogo, a takzhe na kompleksnyh zaprosah i
slozhnyh zaprosah i pri chtenii/zapisi zagruzki zaprosa. MySQL
chtenii/zapisi zagruzki zaprosa. MySQL bystree dlya prostyh
bystree dlya prostyh SELECT zaprosov, vypolnyaemyh nebol'shim
SELECT zaprosov, vypolnyaemyh nebol'shim kolichestvom
kolichestvom pol'zovatelej. I razumeetsya, MySQL ne imeet
pol'zovatelej. I razumeetsya, MySQL ne imeet kakih-libo
kakih-libo vozmozhnostej iz perechislenyh vyshe, v sekcii
vozmozhnostej iz perechislenyh vyshe, v sekcii Vozmozhnosti. My
Vozmozhnosti. My delaem upor na nadezhnost' i rasshirennye
delaem upor na nadezhnost' i rasshirennye vozmozhnosti, no my
vozmozhnosti, no my takzhe prodolzhaem uvelichivat'
takzhe prodolzhaem uvelichivat' proizvoditel'nost' s kazhdym
proizvoditel'nost' s kazhdym vypuskom.
vypuskom. Suschestvuet interesnaya stranichka v Internet,
sravnivayuschaya PostgreSQL i MySQL na
http://openacs.org/philosophy/why-not-mysql.html. Takzhe, MySQL
- `eto kompaniya, kotoraya rasprostranyaet svoj produkt cherez
otkrytye ishodnye teksty i trebuet kommercheskuyu licenziyu na
zakrytoe programmnoe obespechenie, a ne soobschestvo
razrabotchikov s otkrytymi ishodnymi tekstami, kak PostgreSQL.
Nadezhnost'
Nadezhnost'
My ponimali, chto nasha SUBD dolzhna byt' nadezhnoj ili ona
My ponimali, chto nasha SUBD dolzhna byt' nadezhnoj ili ona
...
@@ -404,7 +329,7 @@
...
@@ -404,7 +329,7 @@
podderzhku PostgreSQL prevoshodyaschej drugie SUBD.
podderzhku PostgreSQL prevoshodyaschej drugie SUBD.
Suschestvuet kommercheskaya podderzhka po rezul'tam voznikshih
Suschestvuet kommercheskaya podderzhka po rezul'tam voznikshih
incidentov, kotoraya dostupna dlya teh komu ona nuzhna.
incidentov, kotoraya dostupna dlya teh komu ona nuzhna.
(Smotrite Sekciyu 1.
6
.)
(Smotrite Sekciyu 1.
5
.)
Cena
Cena
Nash produkt besplaten kak dlya kommercheskogo tak, i ne dlya
Nash produkt besplaten kak dlya kommercheskogo tak, i ne dlya
...
@@ -413,52 +338,20 @@
...
@@ -413,52 +338,20 @@
opisyvayutsya v nashej licenzii stilya BSD, kotoraya privedena
opisyvayutsya v nashej licenzii stilya BSD, kotoraya privedena
vyshe.
vyshe.
1.15) Kak okazat' finansovuyu pomosch' PostgreSQL?
PostgreSQL imeet odnorangovuyu infrastrukturu s togo samogo vremeni
kak my nachali razrabotku v 1996 godu. My dolzhny blagodarit' za `eto
Marka Furn'e (Marc Fournier), kotoryj sozdal `etu infrastrukturu i
upravlyaet ej na protyazhenii `etih let.
Kachestvennaya infrastruktura ochen' vazhna dlya proektov s otkrytym
ishodnym kodom. Ona predotvraschaet raskoly, kotorye mogut sil'no
zaderzhat' postupatel'noe dvizhenie proekta.
Razumeetsya, `eta infrastruktura ne yavlyaetsya deshevoj. Suschestvuet
nekotoroe kolichestvo ezhemesyachnyh i odnorazovyh rashodov, kotorye
trebuyut deneg. Esli vy ili vasha kompaniya imeet den'gi, kotorye
mozhno peredat' v pomosch' nashim usiliyam, pozhalujsta posetite
stranichku https://store.pgsql.com/shopping/ i sdelajte svoj vklad.
Hotya na stranichke govoritsya o PostgreSQL, Inc, punkt
"contributions" prednaznachen isklyuchitel'no dlya podderzhki proekta
PostgreSQL i ne peredaetsya kakoj-libo konkretnoj kompanii. Esli
hotite, to mozhete `eto proverit', napisav pis'mo na kontaktnyj adres.
_________________________________________________________________
Esli u vas est' istorii po uspeshnomu primeneniyu PostgreSQL,
pozhalujsta, prisylajte ih na nash sajt propagandy
http://advocacy.postgresql.org.
Voprosy pol'zovatelej po klientskoj chasti
Voprosy pol'zovatelej po klientskoj chasti
2.1)
Suschestvuyut li ODBC drajvera
dlya PostgreSQL?
2.1)
Kakie interfejsy est'
dlya PostgreSQL?
Suschestvuet dva ODBC drajvera, PsqlODBC i OpenLink ODBC.
Ustanovka PostgreSQL vklyuchaet tol'ko C i vstroennyj (embedded) C
interfejsy. Vse drugie interfejsy yavlyayutsya nezavisimymi proektami
Vy mozhete skachat' PsqlODBC s
i zagruzhayutsya otdel'no; samostoyatel'nost' proektov pozvolyaet im
http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
organizovat' sobstvennoe raspisanie vypuskov novyh versij i imet'
sobstvennuyu komandu razrabotchikov.
OpenLink ODBC mozhno vzyat' na http://www.openlinksw.com. `Etot
drajver rabotaet s ih standartnym klientskim programmnym
obespecheniem, ispol'zuyuschim ODBC, i takim obrazom, ODBC drajvery
dlya PostgreSQL dostupny dlya kazhdoj iz podderzhivaemyh imi platform
(Win, Mac, Unix, VMS).
Vozmozhno oni budut prodavat' svoj produkt tem komu nuzhn
a
Nekotorye yazyki programmirovaniya, takie kak PHP vklyuchayut v seby
a
kommercheskaya podderzhka, no besplatnaya versiya vsegda budet
interfejs k PostgreSQL. Interfejsy dlya takih yazykov kak Perl, TCL,
dostupna. Pozhalujsta, napravlyajte voprosy na adres
Python i mnogih drugih, dostupny na http://gborg.postgresql.org v
postgres95@openlink.co.uk
.
sekcii Drivers/Interfaces, a takzhe cherez poisk v Internet
.
2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL cherez
2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL cherez
Web?
Web?
...
@@ -466,39 +359,21 @@
...
@@ -466,39 +359,21 @@
Prekrasnoe vvedenie vo vzaimodejstvie baz dannyh i Web mozhno najti
Prekrasnoe vvedenie vo vzaimodejstvie baz dannyh i Web mozhno najti
na: http://www.webreview.com
na: http://www.webreview.com
Dlya integracii s Web,
odnim iz prevoshodnyh instrumentov yavlyaetsya
Dlya integracii s Web,
PHP http://www.php.net yavlyaetsya neplohim
PHP. Domashnyaya stanichka http://www.php.net
.
interfejsom
.
Dlya kompleksnyh reshenij, mnogie pol'zuyutsya Perl interfejsom i
V slozhnyh sluchayah, mnogie pol'zuyutsya Perl i CGI.pm ili mod_perl.
CGI.pm ili mod_perl.
2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
Da, suschestvuet neskol'ko graficheskih interfejsov dlya PostgreSQL.
Da, suschestvuet neskol'ko graficheskih interfejsov dlya PostgreSQL.
`Eto PgAccess (http://www.pgaccess.org), PgAdmin III
Oni vklyuchayut PgAdmin III (http://www.pgadmin.org), PgAccess
(http://www.pga
dmin
.org), RHDB Admin
(http://www.pga
ccess
.org), RHDB Admin
(http://sources.redhat.com/rhdb/), TORA (http://www.globecom.net/tora/
(http://sources.redhat.com/rhdb/), TORA (http://www.globecom.net/tora/
(chastichno kommercheskoe PO) i Rekall (
chastichno kommercheskoe PO) i Rekall (
http://www.thekompany.com/products/rekall/, kommercheskij). Takzhe
http://www.rekallrevealed.org/). Takzhe est' PhpPgAdmin (
est' PhpPgAdmin ( http://phppgadmin.sourceforge.net/) - interfejs k
http://phppgadmin.sourceforge.net/) - interfejs k PostgreSQL,
PostgreSQL, osnovannyj na Web.
osnovannyj na Web.
2.4) Kakie yazyki mogut vzaimodejstvovat' s PostgreSQL?
Kakie-libo interfejsy dlya PostgreSQL suschestvuyut dlya bol'shinstva
populyarnyh yazykov programmirovaniya. Posmotrite spisok modulej
rasshireniya dlya teh yazykov programmirovaniya, kotorymi vy
pol'zuetes'.
Sleduyuschie interfejsy vklyuchayutsya v distributiv PostgreSQL:
* C (libpq)
* Embedded C (ecpg)
* Java (jdbc)
* Python (PyGreSQL)
* TCL (libpgtcl)
Dopolnitel'nye interfejsy dostupny po adresu
http://gborg.PostgreSQL.org v sekcii Drivers/Interfaces.
_________________________________________________________________
_________________________________________________________________
Voprosy administrirovaniya
Voprosy administrirovaniya
...
@@ -507,141 +382,89 @@
...
@@ -507,141 +382,89 @@
Zadajte opciyu --prefix kogda zapuskaete configure.
Zadajte opciyu --prefix kogda zapuskaete configure.
3.2) Kogda ya zapuskayu postmaster, ya poluchayu soobschenie Bad System
3.2) Kak mne upravlyat' soedineniyami s drugih komp'yuterov?
Call ili soobschenie core dumped. Pochemu?
`Eto mozhet byt' vyzvano raznymi problemami, no pervoe, chto nuzhno
sdelat' - `eto ubedit'sya v tom, chto v vashem yadre ustanovleno
rasshirenie System V. PostgreSQL trebuet, chtoby yadro podderzhivalo
razdelyaemuyu pamyat' i semafory.
3.3) Kogda ya pytayus' zapustit' postmaster, ya poluchayu oshibki
IpcMemoryCreate. Pochemu?
Libo u vas v yadre nepravil'nye nastrojki razdelyaemoj pamyati, libo
vashemu yadru nuzhno bol'shee kolichestvo dostupnoj razdelyaemoj
pamyati. Te konkretnye dejstviya, kotorye vam nuzhno proizvesti
zavisyat ot arhitektury vashej mashiny i ot togo kak mnogo buferov i
backend processov vy nastroili dlya postmaster. Dlya bol'shinstva
sistem, s kolichestvom buferov i processov po umolchaniyu, neobhodimyj
minimum - `eto okolo 1 megabajta. Podrobnosti o razdelyaemoj pamyati i
semaforah smotrite v Rukovodstve administratora PostgreSQL..
3.4) Kogda ya pytayus' zapustit' postmaster, ya poluchayu oshibki
IpcSemaphoreCreate. Pochemu?
Esli `eto soobschenie IpcSemaphoreCreate: semget failed (No space left
on device) to nastrojki vashego yadra takovy, chto emu ne hvataet
semaforov. Postgres trebuet odin semafor na potencial'nyj backend
process. Vremennym resheniem yavlyaetsya zapusk postmaster s
nastrojkami na mesh'shee kolichestvo backend processov. Ispol'zujte -N
s znacheniem men'shim chem 32, kotoroe prinyato po umolchaniyu. Bolee
pravil'noe reshenie - `eto uvelichit' znacheniya SEMMNS i SEMMNI v
nastrjkah yadra.
Neispravnye semafory takzhe mogut privesti k padeniyu SUBD vo vremya
dostupa k baze dannyh.
Esli vy poluchili kakoe-libo drugoe soobschenie ob oshibke, to vpolne
vozmozhno, chto v vashem yadre voobsche ne nastroena podderzhka
semaforov. Smotrite podrobnosti o razdelyaemoj pamyati i semaforah v
Rukovodstve Administratora PostgreSQL.
3.5) Kak mne upravlyat' soedineniyami s drugih komp'yuterov?
Po umolchaniyu, PostgreSQL razreshaet tol'ko soedineniya na lokal'noj
Po umolchaniyu, PostgreSQL razreshaet tol'ko soedineniya na lokal'noj
mashine cherez sokety domena Unix ili TCP/IP soedineniya. D
rugie
mashine cherez sokety domena Unix ili TCP/IP soedineniya. D
lya togo,
mashiny ne smogut podklyuchit'sya k baze poka vy ne izmenite
chtoby drugie mashiny smogli podklyuchit'sya k baze vy dolzhny
listen_addresses v postgresql.conf i poka ne budet razreshena
izmenit' listen_addresses v postgresql.conf, razreshit'
host-avtorizaciya v fajle $PGDATA/pg_hba.conf.
host-avtorizaciya v fajle $PGDATA/pg_hba.conf
i perestartovat' server
.
3.
6
) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya
3.
3
) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya
proizvoditel'nosti?
proizvoditel'nosti?
Nesomnenno, indeksy mogut uvelichit' skorost' vypolneniya zaprosov.
Suschestvuet tri glavnyh oblasti, kotorye potencial'no mogut
Komanda EXPLAIN ANALYZE pozvolyaet vam posmotret' kak PostgreSQL
uvelichit' proizvoditel'nost':
interpretiruet vash zapros i kakie indeksy ispol'zuyutsya.
Izmenenie zaprosa
Esli vy vypolnyaete mnogo operatorov INSERT, rassmotrite vozmozhnost'
`Eto oznachaet modifikaciyu zaprosov dlya polucheniya luchshej
vypolnyat' ih v bol'shoj pachke, ispol'zuya komandu COPY. `Eto
proizvoditel'nosti:
znachitel'no bystree, chem otdel'nye INSERT. Vo-vtoryh, operatory vne
bloka tranzakcii BEGIN WORK/COMMIT sami vypolnyayut tranzakciyu.
+ Sozdanie indeksov, vklyuchaya indeksy vyrazhenij i
Podumajte nad vypolneniem neskol'kih operatorov v odnom bloke
chastichnye indeksy
tranzakcii. `Eto umen'shit kolichestvo tranzakcij. Takzhe, zadumajtes'
+ Ispol'zovanie COPY vmesto mnozhestva INSERT
nad udaleniem i peresozdaniem indeksov, kogda vy vypolnyaete bol'shie
+ Gruppirovka neskol'kih operatorov v edinuyu tranzakciyu dlya
izmeneniya dannyh.
umen'sheniya nagruzki pri vypolnenii zaversheniya tranzakcii
+ Ispol'zovanie CLUSTER, kogda iz indeksa beriotsya mnozhestvo
Suschestvuet neskol'ko opcij nastrojki v Rukovodstve Administratora
strok
PostgreSQL. Vy mozhete zapretit' fsync() pri starte postmaster s
+ Ispol'zovanie LIMIT dlya togo, chtoby vozvraschalas' tol'ko
opciej -o -F. `Eto predotvratit vyzovy fsync(), kotorye privodyat k
chast' vyvoda ot zaprosa
sbrosu dannyh na disk posle kazhdoj tranzakcii.
+ Ispol'zovanie Podgotovlennyh (Prepared) zaprosov
+ Ispol'zovanie ANALYZE dlya obsluzhivaniya statistiki
Vy mozhete takzhe ispol'zovat' opciyu shared_buffers -B dlya
optimizatora
uvelicheniya kolichestva buferov razdelyaemoj pamyati, kotoraya
+ Regulyarnoe ispol'zovanie VACUUM ili pg_autovacuum
ispol'zuetsya backend processami. Esli vy sdelaete znachenie `etogo
+ Udalenie indeksov vo vremya bol'shih izmenenij dannyh
parametra slishkom bol'shim, to postmaster mozhet ne zapustitsya
potomu chto vy ischerpaete ogranichenie yadra na ob"em razdelyaemoj
Nastrojka servera
pamyati. Kazhdyj bufer imeet razmer v 8 kilobajt i po umolchaniyu
Nekotorye ustanovki v postgresql.conf vliyayut na
vydelyaetsya 1000 buferov.
proizvoditel'nost'. Podrobnyj polnyj spisok ustanovok sm. v
Administration Guide/Server Run-time Environment/Run-time
Vy mozhete takzhe ispol'zovat' backend opcii sort_mem i work_mem dlya
Configuration, a kommentarii sm. v
uvelicheniya maksimal'nogo kolichestva pamyati, kotoroe ispol'zuetsya
http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
backend processom dlya vremennyh sortirovok. Znachenie po umolchaniyu
nf_e.html i
sostavlyaet 1024 (t.e. 1MB).
http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
Vy takzhe mozhete ispol'zovat' komandu CLUSTER dlya gruppirovki dannyh
Vybor "zheleza" - apparatnogo obespecheniya
v tablicah na sovpadayuschij indeks. Podrobnosti smotrite na stranice
Vliyanie "zheleza" na proizvoditel'nost' podrobno opisano v
rukovodstva po komande CLUSTER.
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/inde
x.html i http://www.powerpostgresql.com/PerfList/.
3.7) Kakie vozmozhnosti dlya otladki est' v nalichii?
3.4) Kakie vozmozhnosti dlya otladki est' v nalichii?
PostgreSQL imeet neskol'ko vozmozhnostej, pozvolyayuschie poluchit'
Est' mnozhestvo ustanovok v nastrojkah servera, nachinayuschihsya na
informaciyu o sostoyanii, kotoraya mozhet byt' ispol'zovana v
log_*, pozvolyayuschih protokolirovat' zaprosy i statistiku raboty
otladochnyh celyah.
processa, kotoraya ochen' polezna dlya otladki i izmereniya
proizvoditel'nosti.
Vo-pervyh, pri zapuske configure s opciej --enable-cassert, mnogie
vyzovy assert() pozvolyayut otslezhivat' rabotu backend processa i
Dlya predostavleniya bolee detal'noj informacii razrabotchikam servera
ostanovku programmy pri vozniknovenii kakih-libo neozhidannostej.
pri otladke kakoj-libo problemy dolzhny pol'zovat'sya sleduyuschie
instrukcii.
I postmaster, i postgres imeyut neskol'ko otladochnyh opcij.
Vo-pervyh, pri zapuske postmaster, ubedites', chto standartnyj vyvod i
Takim zhe obrazom mozhno proizvodit' i otladku severa, esli on
vyvod oshibok osuschestvlyayutsya v fajl zhurnala:
rabotaet nepravil'no. Vo-pervyh, pri zapuske configure s opciej
cd /usr/local/pgsql
--enable-cassert, mnogie vyzovy assert() pozvolyayut otslezhivat'
./bin/postmaster >server.log 2>&1 &
rabotu backend processa i ostanovku programmy pri vozniknovenii
kakih-libo neozhidannostej.
`Eto privedet k poyavleniyu fajla server.log v glavnom kataloge
PostgreSQL. `Etot fajl soderzhit poleznuyu informaciyu o problemah ili
oshibkah, voznikshih na servere. Postmaster imeet opciyu -d, kotoraya
pozvolyaet poluchat' pri protokolirovanii bolee detal'nuyu infrmaciyu.
Dlya opcii -d ukazyvaetsya chislo, kotoroe zadaet uroven' otladki.
Bud'te ostorozhny, tak kak vysokij uroven' otladki privodit k
generacii fajlov zhurnala bol'shogo razmera.
Esli postmaster ne zapuschen, vy mozhete zapustit' postgres backend iz
Esli postmaster ne zapuschen, vy mozhete zapustit' postgres backend iz
komandnoj stroki i vvesti vash operator SQL napryamuyu. `Eto
komandnoj stroki i vvesti vash operator SQL napryamuyu. `Eto
rekomenduetsya tol'ko dlya celej otladki. Zametim, chto v `etom
rekomenduetsya tol'ko dlya celej otladki. Zametim, chto v `etom
rezhime, zapros zavershaetsya simvolom novoj stroki, a ne tochkoj s
rezhime, zapros zavershaetsya simvolom novoj stroki, a ne tochkoj s
zapyatoj. Esli vy proizvodili kompilyaciyu s otladochnymi simvol
o
ami,
zapyatoj. Esli vy proizvodili kompilyaciyu s otladochnymi simvolami,
vy mozhete ispol'zovat' lyuboj otladchik, chtoby posmotret', chto
vy mozhete ispol'zovat' lyuboj otladchik, chtoby posmotret', chto
sluchilos'. Poskol'ku backend zapuskaetsya ne iz postmaster, on ne
sluchilos'. Poskol'ku backend zapuskaetsya ne iz postmaster, on ne
zapuskaetsya v identichnom okruzhenii i znachit problemy iteracij
zapuskaetsya v identichnom okruzhenii i znachit problemy iteracij
blokirovok/backend ne mogut byt' vosproizvedeny.
blokirovok/backend ne mogut byt' vosproizvedeny.
Esli postmaster zapuschen, zapustite psql v odnom okne, zatem najdite
Esli postmaster zapuschen, zapustite psql v odnom okne, zatem najdite
PID processa postgres, ispol'zuemyj psql, ispol'zuya
PID processa postgres, ispol'zuemyj psql, ispol'zuya SELECT
SELECT pg_backend_pid()
pg_backend_pid(). Ispol'zujte otladchik dlya podklyucheniya k postgres
PID. Vy mozhete ustanovit' tochki preryvaniya v otladchike i zapustit'
zapros iz psql. Esli vy proizvodite otladku zapuska postgres, vy
Ispol'zujte otdadchik dlya podklyucheniya k postgres PID. Vy mozhete
mozhete ustanovit' PGOPTIONS="-W n", i zatem zapustit' psql. `Eta
ustanovit' tochki preryvaniya v otladchike i zapustit' zapros iz psql.
opciya privodit k zaderzhke processa zapuska na n sekund, v techenie
Esli vy proizvodite otladku zapuska postgres, vy mozhete ustanovit'
kotoryh vy mozhete podklyuchit' k processu otladchik, ustanovit'
PGOPTIONS="-W n", i zatem zapustit' psql. `Eta opciya privodit k
lyubye tochki preryvaniya i prodolzhit' zapusk.
zaderzhke processa zapuska na n sekund, v techenie kotoryh vy mozhete
podklyuchit' k processu otladchik, ustanovit' lyubye tochki
preryvaniya i prodolzhit' zapusk.
Programma postgres imeet opcii -s, -A, i -t kotorye mogut byt' ochen'
poleznymi dlya otladki i izmereniya proizvoditel'nosti.
Vy takzhe mozhete skompilirovat' PostgreSQL s profilirovaniem dlya
Vy takzhe mozhete skompilirovat' PostgreSQL s profilirovaniem dlya
togo, chtoby uvidet' kakie funkcii skol'ko vremeni vypolnyayutsya.
togo, chtoby uvidet' kakie funkcii skol'ko vremeni vypolnyayutsya.
...
@@ -650,49 +473,22 @@
...
@@ -650,49 +473,22 @@
tekuschij katalog klienta. V Linux dlya vypolneniya profilirovaniya
tekuschij katalog klienta. V Linux dlya vypolneniya profilirovaniya
trebuetsya kompilyacii s -DLINUX_PROFILE.
trebuetsya kompilyacii s -DLINUX_PROFILE.
3.
8
) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
3.
5
) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
pytayus' podklyuchit'sya k baze?
pytayus' podklyuchit'sya k baze?
Vam nuzhno uvelichit' ogranichenie na kolichestvo konkuretnyh backend
Vy dostigli ustanovlennogo po umolchaniyu ogranicheniya na 100 sessij
processov pri zapuske postmaster.
podklyucheniya k baze dannyh. Vam neobhodimo uvelichit' dlya
postmaster limit na kolichestvo konkurentnyh backend processov,
Po umolchaniyu ustanovlen limit na 32 processa. Vy mozhete uvelichit'
izmeniv znachenie max_connections v fajle postgresql.conf i
`etot limit perezapustiv postmaster s nuzhnym znacheniem processov,
perestartovat' postmaster.
kotoroe ukazyvaetsya v opcii -N ili izmeniv fajl postgresql.conf.
Zametim, chto esli vy zadadite v opcii -N znachenie bol'she 32, to vy
takzhe dolzhny uvelichit' znachenie v opcii -B kotoroe po umolchaniyu
ustanovleno v 64; Znachenie opcii -B dolzhno byt' po krajnej mere
vdvoe bol'she znacheniya opcii -N, i vozmozhno eschio bol'she dlya
luchshej proizvoditel'nosti. Dlya bol'shego kolichestva backend
processov, vam takzhe neploho bylo by uvelichit' nekotorye parametry
yadra Unix. `Eto takie parametry, kak maksimal'noe kolichestvo blokov
razdelyaemoj pamyati, SHMMAX; maksimal'noe kolichestvo semaforov,
SEMMNS i SEMMNI; maksimal'noe kolichestvo processov, NPROC;
maksimal'noe kolichestvo processov na pol'zovatelya, MAXUPRC; i
maksimal'noe kolichestvo otkrytyh fajlov, NFILE i NINODE. Prichina
sozdaniya ogranicheniya na kolichestvo backend processov kak raz i
sostoit v tom, chtoby vashej sisteme hvatilo resursov.
3.9) CHto nahoditsya v kataloge pgsql_tmp?
Dannyj katalog soderzhit vremennye fajly, generiruemye obrabotchikom
zaprosa. Naprimer, esli dlya vypolneniya ORDER BY nuzhna sortirovka i
`eta sortirovka trebuet pamyati bol'she, chem dopuskaet parametr -S u
backend'a, to dlya hraneniya dopolnitel'nyh dannyh sozdayutsya
vremennye fajly.
`Eti vremennye fajly dolzhny udalyat'sya avtomaticheski, no `etogo
mozhet ne proizojti, esli backend ruhnul vo vremya sortirovki. Ostanov
i zapusk servernogo processa obespechit ih udalenie iz kataloga.
3.
10
) Pochemu neobhodimo delat' dump i restore pri obnovlenii vypuskov
3.
6
) Pochemu neobhodimo delat' dump i restore pri obnovlenii vypuskov
PostgreSQL?
PostgreSQL?
Razrabotchiki PostgreSQL delayut tol'ko nebol'shie izmeneniya mezhdu
Razrabotchiki PostgreSQL delayut tol'ko nebol'shie izmeneniya mezhdu
podvypuskami. Takim obrazom obnovlenie s versii 7.
2 do 7.2
.1 ne
podvypuskami. Takim obrazom obnovlenie s versii 7.
4 do 7.4
.1 ne
trebuet vypolneniya dump i restore. Odnako pri vyhode ocherednogo
trebuet vypolneniya dump i restore. Odnako pri vyhode ocherednogo
vypuska (t.e. pri obnovlenii naprimer, s 7.
2 na 7.3
) chasto menyaetsya
vypuska (t.e. pri obnovlenii naprimer, s 7.
3 na 7.4
) chasto menyaetsya
vnutrennij format sistemnyh tablic i fajlov dannyh. `Eti izmeneniya
vnutrennij format sistemnyh tablic i fajlov dannyh. `Eti izmeneniya
chasto nosyat kompleksnyj harakter, tak chto net vozmozhnosti
chasto nosyat kompleksnyj harakter, tak chto net vozmozhnosti
obespechit' obratnuyu sovmestimost' fajlov dannyh. Vypolenie dump
obespechit' obratnuyu sovmestimost' fajlov dannyh. Vypolenie dump
...
@@ -704,7 +500,7 @@
...
@@ -704,7 +500,7 @@
bez ispol'zovaniya dump/restore. Kommentarii k vypusku govorit kogda
bez ispol'zovaniya dump/restore. Kommentarii k vypusku govorit kogda
mozhno ispol'zovat' pg_upgrade dlya `etogo vypuska.
mozhno ispol'zovat' pg_upgrade dlya `etogo vypuska.
3.
11
) Kakoe komp'yuternoe "zhelezo" ya dolzhen ispol'zovat'?
3.
7
) Kakoe komp'yuternoe "zhelezo" ya dolzhen ispol'zovat'?
Poskol'ku "zhelezo" personal'nyh komp'yuterov yavlyaetsya naibolee
Poskol'ku "zhelezo" personal'nyh komp'yuterov yavlyaetsya naibolee
sovmestimym, lyudi sklonny verit', chto takoe "zhelezo" imeet
sovmestimym, lyudi sklonny verit', chto takoe "zhelezo" imeet
...
@@ -719,21 +515,15 @@
...
@@ -719,21 +515,15 @@
Voprosy `ekspluatacii
Voprosy `ekspluatacii
4.1) V chem otlichie mezhdu binarnym i normal'nym kursorom?
4.1) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek zaprosa?
Smotrite opisanie na stranicah rukovodstva posvyaschennym DECLARE.
4.2) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek zaprosa?
Proizvol'noj stroki?
Proizvol'noj stroki?
Smotrite stanicu rukovodstva posvyaschennuyu FETCH ili ispol'zujte
Dlya polucheniya tol'ko neskol'kih strok, esli vy znaete ih
SELECT ... LIMIT....
kolichestvo na moment vypolneniya SELECT ispol'zujte LIMIT.
Esli est' kakoj-libo indeks, kotoryj sovpadaet s ORDER BY, to
Dazhe esli vy hotite poluchit' tol'ko pervye neskol'ko zapisej, budet
vozmozhno, chto ves' zapros vypolnen i ne budet. Esli vy ne znaete
vypolnen ves' zapros. Rassmotrim zapros, kotoryj imeet ORDER BY. Esli
kolichestva neobhodimyh strok na moment vypolneniya SELECT,
est' kakoj-libo indeks, kotoryj sovpadaet s ORDER BY, PostgreSQL
ispol'zujte kursor i FETCH.
mozhet vydat' tol'ko neskol'ko pervyh zaproshennyh zapisej ili mozhet
vypolnyat' zapros poka ne budut vydany zhelaemye zapisi.
To SELECT a random row, use:
To SELECT a random row, use:
SELECT col
SELECT col
...
@@ -741,7 +531,9 @@
...
@@ -741,7 +531,9 @@
ORDER BY random()
ORDER BY random()
LIMIT 1;
LIMIT 1;
4.3) Kak poluchit' spisok tablic ili drugih komponentov v psql?
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
CHtoby prosmatrivat' tablicy v psql, ispol'zujte komandu \dt. Polnyj
spisok komand v psql vy mozhete poluchit', ispol'zuya \?. Krome togo,
spisok komand v psql vy mozhete poluchit', ispol'zuya \?. Krome togo,
...
@@ -750,45 +542,44 @@
...
@@ -750,45 +542,44 @@
generiruyutsya pri vvode v psql komand, nachinayuschihsya s obratnoj
generiruyutsya pri vvode v psql komand, nachinayuschihsya s obratnoj
kosoj cherty. Vy takzhe mozhete zapustit' psql s opciej -E tak, chtoby
kosoj cherty. Vy takzhe mozhete zapustit' psql s opciej -E tak, chtoby
`eta programma vydavala zaprosy, kotorye ona ispol'zuet dlya
`eta programma vydavala zaprosy, kotorye ona ispol'zuet dlya
vypolneniya zadannyh vami komand. PostgreSQL takzhe predostavlyaet
vypolneniya zadannyh vami komand. PostgreSQL takzhe predostavlyaet SQL
SQLi sovmestimyj s INFORMATION SCHEMA interfejs, s pomosch'yu
sovmestimyj s INFORMATION SCHEMA interfejs, s pomosch'yu kotorogo, vy
kotorogo, vy mozhete sformirovat' zapros na poluchenie informacii o
mozhete sformirovat' zapros na poluchenie informacii o baze dannyh.
baze dannyh.
Takzhe suschestvuyut sistemnye tablicy, nachinayuschiesya s pg_.
Ispol'zujte psql -l dlya polucheniya spiska vseh baz dannyh.
4.4) Kak udalit' kolonku iz tablicy ili izmenit' eio tip 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?
DROP COLUMN funkcional'nost' byla dobavlena v vypusk 7.3 s operatorom
V 8.0 i bolee pozdnih versiyah, izmenenie tipa kolonki vypolnyaetsya
ALTER TABLE DROP COLUMN. V rannih versiyah, mozhno sdelat' tak:
ochen' legko cherez ALTER TABLE ALTER COLUMN TYPE.
BEGIN;
LOCK TABLE old_table;
V bolee rannih versiyah sdelajte tak:
SELECT ... -- vyborka vseh kolonok za isklyucheniem toj, kotoruyu hotite u
dalit'
INTO TABLE new_table
FROM old_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
COMMIT;
Dlya izmeneniya tipa dannyh kolonki, sdelajte tak:
BEGIN;
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
ALTER TABLE tab DROP COLUMN old_col;
ALTER TABLE tab DROP COLUMN old_col;
COMMIT;
COMMIT;
4.5) Kakovy maksimal'nye razmery dlya zapisej, tablic i bazy dannyh?
4.4) Kakovy maksimal'nye razmery dlya strok v tablice, tablic i bazy
dannyh?
Suschestvuyut sleduyuschie ogranicheniya:
Suschestvuyut sleduyuschie ogranicheniya:
Maksimal'nyj razmer bazy? neogranichen (suschestvuyut ba
zy na 32 TB)
Maksimal'nyj razmer bazy? neogranichen (suschestvuyut ba
zy na 32 TB)
Maksimal'nyj razmer tablicy?
32 TB
Maksimal'nyj razmer tablicy?
32 TB
Maksimal'nyj razmer zapisi?
1.6 TB
Maksimal'nyj razmer stroki?
1.6 TB
Maksimal'nyj razmer polya?
1 GB
Maksimal'nyj razmer polya?
1 GB
Maksimal'noe kolichestvo zapisej v tablice?
neogranicheno
Maksimal'noe kolichestvo strok v tablice?
neogranicheno
Maksimal'noe kolichestvo kolonok v tablice? 250-1600 v zavisimosti ot tip
Maksimal'noe kolichestvo kolonok v tablice? 250-1600 v zavisimosti ot
a
tip
a
Maksimal'noe kolichestvo indeksov v tablice?
neogranicheno
Maksimal'noe kolichestvo indeksov v tablice?
neogranicheno
Razumeetsya, ponyatie "neogranicheno" na samom dele ogranichivaetsya
Razumeetsya, ponyatie "neogranicheno" na samom dele ogranichivaetsya
dostupnym diskovym prostranistvom i razmerami pamyati/svoppinga. Kogda
dostupnym diskovym prostranistvom i razmerami pamyati/svoppinga. Kogda
znacheniya perechislennye vyshe neopravdano bol'shie, mozhet
znacheniya perechislennye vyshe neopravdano bol'shie, mozhet
...
@@ -803,7 +594,7 @@ a
...
@@ -803,7 +594,7 @@ a
byt' uvelicheny v chetyre raza, esli razmer bloka po umolchaniyu budet
byt' uvelicheny v chetyre raza, esli razmer bloka po umolchaniyu budet
uvelichen do 32k.
uvelichen do 32k.
4.
6
) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya sohraneniya
4.
5
) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya sohraneniya
dannyh iz obychnogo tekstovogo fajla?
dannyh iz obychnogo tekstovogo fajla?
SUBD PostgreSQL mozhet potrebovat'sya diskovogo prostranstva do 5 raz
SUBD PostgreSQL mozhet potrebovat'sya diskovogo prostranstva do 5 raz
...
@@ -814,21 +605,21 @@ a
...
@@ -814,21 +605,21 @@ a
srednem, sostavlyaet 20 bajt. Razmer prostogo fajla sostavit 2.8 MB.
srednem, sostavlyaet 20 bajt. Razmer prostogo fajla sostavit 2.8 MB.
Razmer bazy PostgreSQL, soderzhaschej `eti zhe dannye sostavit
Razmer bazy PostgreSQL, soderzhaschej `eti zhe dannye sostavit
priblizitel'no 6.4 MB iz kotoryh:
priblizitel'no 6.4 MB iz kotoryh:
32 bajt: na kazhdyj zagolovok
zapisi
(priblizitel'no)
32 bajt: na kazhdyj zagolovok
stroki v tablice
(priblizitel'no)
+ 24 bajta: odno pole s celochislennym tipom i odno tekstovoe pole
+ 24 bajta: odno pole s celochislennym tipom i odno tekstovoe pole
+ 4 bajta: ukazatel' na stranice dlya vsej
zapis
i
+ 4 bajta: ukazatel' na stranice dlya vsej
tablichnoj strok
i
----------------------------------------
----------------------------------------
60 bajt na
zapis'
60 bajt na
stroku v tablice
Razmer stranicy dannyh v PostgreSQL sostavlyaet 8192 bajt (8 KB), tak chto:
Razmer stranicy dannyh v PostgreSQL sostavlyaet 8192 bajt (8 KB), tak chto:
8192 bajt na stranicu
8192 bajt na stranicu
--------------------- = 136
zapisej
na stranicu BD (okruglionno)
--------------------- = 136
strok v tablice
na stranicu BD (okruglionno)
60 bajt na
zapis'
60 bajt na
stroku v tablice
100000 strok dannyh
100000 strok dannyh
----------------------- = 735 stranic v BD (okruglionno)
----------------------- = 735 stranic v BD (okruglionno)
128
zapisej
na stranicu
128
strok v tablice
na stranicu
735 stranic BD * 8192 bajt na stranicu = 6,021,120 bajt (6 MB)
735 stranic BD * 8192 bajt na stranicu = 6,021,120 bajt (6 MB)
...
@@ -838,26 +629,12 @@ a
...
@@ -838,26 +629,12 @@ a
Znacheniya NULL hranyatsya kak bitovye karty i po`etomu oni zanimayut
Znacheniya NULL hranyatsya kak bitovye karty i po`etomu oni zanimayut
ochen' malo mesta.
ochen' malo mesta.
4.7) Kak mne ubedit'sya, chto suschestvuyut nuzhnye mne tablicy, indeksy,
4.6) Pochemu moi zaprosy rabotayut medleno? Pochemu oni ne ispol'zuyut moi
bazy dannyh i pol'zovateli?
indeksy?
psql imeet neskol'ko komand, nachinayuschihsya s obratnoj kosoj
cherty, dlya togo chtoby prosmatrivat' takuyu informaciyu. Ispol'zujte
\? dlya togo, chtoby uvidet' `eti komandy. Takzhe suschestvuyut
sistemnye tablicy, imya kotoryh nachinaetsya na pg_ i v kotoryh takzhe
soderzhitsya `eta informaciya. Eschio, psql -l pokazhet spisok vseh
baz dannyh.
Takzhe smotrite fajl pgsql/src/tutorial/syscat.source. V nem
predstavleny mnogie operatory SELECT kotorye nuzhny dlya polucheniya
informacii iz sistemnyh tablic bazy dannyh.
4.8) U menya medlenno rabotayut zaprosy ili ne proishodit ispol'zovaniya
indeksov. Pochemu?
Indeksy ne ispol'zuyutsya dlya kazhdogo zaprosa avtomaticheski. Oni
Indeksy ne ispol'zuyutsya dlya kazhdogo zaprosa avtomaticheski. Oni
ispol'zuyutsya tol'ko esli tablica bol'she minimal'nogo razmera i
ispol'zuyutsya tol'ko esli tablica bol'she minimal'nogo razmera i
zapros vybiraet tol'ko malen'kij procent
zapisej
v tablice. Tak
zapros vybiraet tol'ko malen'kij procent
strok
v tablice. Tak
ustroeno, potomu chto dostup k disku s primeneniem randomizacii pri
ustroeno, potomu chto dostup k disku s primeneniem randomizacii pri
skanirovanii indeksov mozhet byt' medlennee, chem prostoe chtenie
skanirovanii indeksov mozhet byt' medlennee, chem prostoe chtenie
tablicy ili ee posledovatel'noe skanirovanie.
tablicy ili ee posledovatel'noe skanirovanie.
...
@@ -866,11 +643,11 @@ a
...
@@ -866,11 +643,11 @@ a
tablicy, PostgreSQL dolzhen imet' statistiku po `etoj tablice. `Eta
tablicy, PostgreSQL dolzhen imet' statistiku po `etoj tablice. `Eta
statistika sobiraetsya pri ispol'zovanii VACUUM ANALYZE ili prosto
statistika sobiraetsya pri ispol'zovanii VACUUM ANALYZE ili prosto
ANALYZE. Ispol'zuya statistiku, optimizator uznaet o tom kak mnogo
ANALYZE. Ispol'zuya statistiku, optimizator uznaet o tom kak mnogo
zapisej
v tablice i esli on dolzhen ispol'zovat' indeksy, to on mozhet
strok
v tablice i esli on dolzhen ispol'zovat' indeksy, to on mozhet
prinimat' luchshie resheniya. Statistika takzhe vliyaet na opredelenie
prinimat' luchshie resheniya. Statistika takzhe vliyaet na opredelenie
optimal'nogo poryadka svyazyvaniya i metoda svyazyvaniya.
Sbor
optimal'nogo poryadka svyazyvaniya i metoda svyazyvaniya.
Pri
statistiki dolzhen periodicheski vypolnyatsya pri izmenenii
izmenenii soderzhimogo tablicy dolzhen periodicheski vypolnyatsya sbor
s
oderzhimogo tablicy
.
s
tatistiki
.
Obychno indeksy ne ispol'zuyutsya dlya ORDER BY ili dlya vypolneniya
Obychno indeksy ne ispol'zuyutsya dlya ORDER BY ili dlya vypolneniya
svyazyvanij. Posledovatel'nyj perebor sleduyuschij za yavnoj
svyazyvanij. Posledovatel'nyj perebor sleduyuschij za yavnoj
...
@@ -899,61 +676,23 @@ a
...
@@ -899,61 +676,23 @@ a
* Stroka poiska ne dolzhna nachinat'sya s simvola klassa, t.e.
* Stroka poiska ne dolzhna nachinat'sya s simvola klassa, t.e.
[a-e].
[a-e].
* Poisk nezavisimyj ot registra, takoj kak ILIKE i ~* ne ispol'zuet
* Poisk nezavisimyj ot registra, takoj kak ILIKE i ~* ne ispol'zuet
indeksy. Vmesto nego, ispol'zujte
funkcional'nye indeksy
, kotorye
indeksy. Vmesto nego, ispol'zujte
indeksy vyrazhenij
, kotorye
opisyvayutsya v sekcii 4.
12
.
opisyvayutsya v sekcii 4.
8
.
* Vo vremya initdb dolzhna ispol'zovat'sya lokal' po umolchaniyu C,
* Vo vremya initdb dolzhna ispol'zovat'sya lokal' po umolchaniyu C,
potomu chto ne suschestvuet vozmozhnosti uznat' next-greater
potomu chto ne suschestvuet vozmozhnosti uznat' sleduyuschij
simvol dlya ne-C lokali. Vy mozhete dlya takih sluchaev sozdat'
naibol'shij simvol dlya ne-C lokali. Vy mozhete dlya takih
special'nyj indeks
sluchaev sozdat' special'nyj indeks text_pattern_ops kotoryj
text_pattern_ops
rabotaet tol'ko dlya LIKE indeksirovaniya.
kotoryj rabotaet tol'ko dlya
LIKE
indeksirovaniya.
V vypuskah do versii 8.0, indeksy chasto nel'zya bylo ispol'zovat',
V vypuskah do versii 8.0, indeksy chasto nel'zya bylo ispol'zovat',
esli tipy dannyh tochno ne sovpadali s indeksnymi tipami kolonok. `Eto
esli tipy dannyh tochno ne sovpadali s indeksnymi tipami kolonok. `Eto
osobenno kasalos' int2, int8 i numeric indeksov kolonok.
osobenno kasalos' int2, int8 i numeric indeksov kolonok.
4.
9
) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
4.
7
) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
Smotrite stranicu rukovodstva posvyaschennuyu EXPLAIN.
Smotrite stranicu rukovodstva posvyaschennuyu EXPLAIN.
4.10) CHto takoe R-tree indeks?
4.8) Kak mne vypolnit' poisk regulyarnogo vyrazheniya i poisk nezavisimyj
R-tree indeks ispol'zuetsya dlya indeksirovaniya prostranstvennyh
dannyh. Indeks h`esha ne mozhet upravlyat' poiskami diapazona. B-tree
indeks upravlyaet tol'ko poiskami diapazona v odnom izmerenii. R-tree
indeks mozhet upravlyat' mnogorazmernymi dannymi. Naprimer, esli
R-tree indeks mozhet byt' vstroen v atribut tipa point, to sistema
mozhet bolee `effektivno otvetit' na zapros tipa "vybrat' vse tochki
vnutri zadannogo chetyrehugol'nika."
Kanonicheskij istochnik, opisyvayuschij pervonachal'noe sozdanie
R-tree `eto:
Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of
Data, 45-57.
Vy mozhete najti `etot dokument v knige Stounbrejkera "Readings in
Database Systems".
Vstroennnye R-tree mogut upravlyat' poligonami i boksami. V teorii,
R-tree mogut byt' rasshireny dlya upravleniya bol'shim kolichestvom
izmerenij. Na praktike, rasshirenie R-tree trebuet nekotoryh usilij i
u nas, v dannyj moment, net kakoj-libo dokumentacii o tom, kak `eto
sdelat'.
4.11) CHto takoe Genetic Query Optimizer?
Modul' GEQO proizvodit bystruyu optimizaciyu zaprosa, kogda proishodit
svyazyvanie mnogih tablic cherez Genetic Algorithm (GA). `Eto
pozvolyaet upravlyat' bol'shimi zaprosami na svyazyvanie cherez
neistoschayuschij poisk.
4.12) Kak mne vypolnit' poisk regulyarnogo vyrazheniya i poisk nezavisimyj
ot registra bukv poisk regulyarnogo vyrazheniya? Kak mne ispol'zovat'
ot registra bukv poisk regulyarnogo vyrazheniya? Kak mne ispol'zovat'
indeks dlya poiska nezavisimogo ot registra bukv?
indeks dlya poiska nezavisimogo ot registra bukv?
...
@@ -967,27 +706,24 @@ a
...
@@ -967,27 +706,24 @@ a
WHERE lower(col) = 'abc';
WHERE lower(col) = 'abc';
`Eta konstrukciya ne budet ispol'zovat' standartnyj indeks. Odnako,
`Eta konstrukciya ne budet ispol'zovat' standartnyj indeks. Odnako,
esli vy sozdadite
funkcional'nyj indeks
, on budet ispol'zovan:
esli vy sozdadite
indeks vyrazheniya
, on budet ispol'zovan:
CREATE INDEX tabindex ON tab (lower(col));
CREATE INDEX tabindex ON tab (lower(col));
4.
13
) Kak ya mogu opredelit', chto znachenie polya ravno NULL v kakom-libo
4.
9
) Kak ya mogu opredelit', chto znachenie polya ravno NULL v kakom-libo
zaprose?
zaprose?
Vy prosto sravnivaete znachenie s IS NULL i IS NOT NULL.
Vy prosto sravnivaete znachenie s IS NULL i IS NOT NULL.
4.1
4
) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
4.1
0
) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
Tip Vnutrennee imya Zamechaniya
Tip Vnutrennee imya Zamechaniya
--------------------------------------------------
VARCHAR(n) varchar razmer zadaet maksimal'nuyu dlinu, net zapolneniya
VARCHAR(n) varchar razmer zadaet maksimal'nuyu dlinu, net zapolnen
CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny
iya
TEXT text net zadavaemogo verhnego ogranicheniya ili dliny
CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny
BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zovat'
TEXT text net zadavaemogo verhnego ogranicheniya ili dlin
null-bajt bez opaski)
y
"char" char odin simvol
BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zova
t' null-bajt bez opaski)
"char" char odin simvol
Vnutrennee imya vy mozhete uvidet', kogda smotrite sistemnye katalogi
Vnutrennee imya vy mozhete uvidet', kogda smotrite sistemnye katalogi
i v nekotoryh soobscheniyah ob oshibkah.
i v nekotoryh soobscheniyah ob oshibkah.
...
@@ -1010,7 +746,7 @@ t' null-bajt bez opaski)
...
@@ -1010,7 +746,7 @@ t' null-bajt bez opaski)
znacheniya kotoryh mogut vklyuchat' NULL bajty. Vse tipy opisannye
znacheniya kotoryh mogut vklyuchat' NULL bajty. Vse tipy opisannye
zdes', imeyut shodnye harakteristiki proizvoditel'nosti.
zdes', imeyut shodnye harakteristiki proizvoditel'nosti.
4.1
5
.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
4.1
1
.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
PostgreSQL podderzhivaet tip dannyh SERIAL. On avtomaticheski sozdaet
PostgreSQL podderzhivaet tip dannyh SERIAL. On avtomaticheski sozdaet
posledovatel'nost'. Naprimer:
posledovatel'nost'. Naprimer:
...
@@ -1027,18 +763,14 @@ t' null-bajt bez opaski)
...
@@ -1027,18 +763,14 @@ t' null-bajt bez opaski)
);
);
Smotrite podrobnosti o posledovatel'nostyah na stranice rukovodstva
Smotrite podrobnosti o posledovatel'nostyah na stranice rukovodstva
posvyaschennoj create_sequence. Vy takzhe mozhete ispol'zovat' kazhdoe
posvyaschennoj create_sequence.
pole OID v zapisi kak unikal'noe znachenie. Odnako, esli vam nuzhen
damp i perezagruzka bazy dannyh, vam neobhodimo ispol'zovat' komandu
pg_dump s opciej -o ili opciyu COPY WITH OIDS dlya sohraneniya
znachenij polya OID.
4.1
5
.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
4.1
1
.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
Odin iz sposobov sostoit v poluchenii sleduyuschego znacheniya SERIAL
Odin iz sposobov sostoit v poluchenii sleduyuschego znacheniya SERIAL
iz ob"ekta sequence s pomosch'yu funkcii nextval() pered vstavkoj i
iz ob"ekta sequence s pomosch'yu funkcii nextval() pered vstavkoj i
zatem vstavlyat' `eto znachenie yavno. Ispol'zujte tablicu-primer v
zatem vstavlyat' `eto znachenie yavno. Ispol'zujte tablicu-primer v
4.1
5
.1, primer v psevdoyazyke pokazhet kak `eto delaetsya:
4.1
1
.1, primer v psevdoyazyke pokazhet kak `eto delaetsya:
new_id = execute("SELECT nextval('person_id_seq')");
new_id = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
...
@@ -1055,21 +787,13 @@ t' null-bajt bez opaski)
...
@@ -1055,21 +787,13 @@ t' null-bajt bez opaski)
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = execute("SELECT currval('person_id_seq')");
new_id = execute("SELECT currval('person_id_seq')");
I nakonec, vy mozhete ispol'zovat' znachenie OID, vozraschaemoe iz
4.11.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
opertora INSERT chtoby uvidet' znachenie po umolchaniyu, chto
predpolozhitel'no yavlyaetsya naimenee perenosimym na drugie platformy
resheniem, k tomu zhe znachenie oid budet urezat'sya, kogda ono
dostignet 4 milliardov. V Perl, ispol'zuya DBI s modulem Edmund
Mergl'ya DBD::Pg, znachenie oid stanovitsya dostupnym cherez
$sth->{pg_oid_status} posle $sth->execute().
4.15.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
Net. currval() vozvraschaet tekuschee znachenie, naznachennoe vashe
m
Net. currval() vozvraschaet tekuschee znachenie, naznachennoe vashe
j
backend'om, a ne drugimi pol'zovatel
yami.
sessiej, a ne drugimi sessi
yami.
4.1
5
.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya snova
4.1
1
.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya snova
pri otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii v kolonke,
pri otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii v kolonke,
gde ya ispol'zuyu posledovatel'nost'/SERIAL?
gde ya ispol'zuyu posledovatel'nost'/SERIAL?
...
@@ -1078,64 +802,30 @@ t' null-bajt bez opaski)
...
@@ -1078,64 +802,30 @@ t' null-bajt bez opaski)
blokiruyutsya do polnogo vypolneniya tranzakcij. `Eto mozhet vyzyvat'
blokiruyutsya do polnogo vypolneniya tranzakcij. `Eto mozhet vyzyvat'
razryvy v numeracii pri otmene tranzakcij.
razryvy v numeracii pri otmene tranzakcij.
4.1
6
) CHto takoe OID? CHto takoe TID?
4.1
2
) CHto takoe OID? CHto takoe TID?
Polya OID sluzhat unikal'nymi idetifikatorami zapisej v PostgreSQL.
Kazhdaya, sozdavaemaya v PostgreSQL tablichnaya stroka, poluchaet
Kazhdaya zapis', kotoraya sozdaiotsya v PostgreSQL poluchaet
unikal'nyj indentifikator OID za isklyucheniem sluchaya kogda
unikal'nyj OID. Vse znacheniya OID generiruemye vo vremya initdb
ispol'zovalos' WITHOUT OIDS. OID - `eto avtomaticheski naznachaemoe
imeyut znacheniya men'she 16384 (iz include/access/transam.h). Vse
unikal'noe 4-h bajtovoe celoe chislo. Odnako, posle togo kak ego
sozdannye pol'zovatelem OID imeyut bOl'shie znachenie. Po umolchaniyu,
znachenie prevysit 4 milliarda, znacheniya OID nachinayut
vse `eti OID yavlyayutsya unikal'nymi ne tol'ko vnutri kakoj-libo
dublirovat'sya. PostgreSQL ispol'zuet OID dlya svyazyvaniya svoih
tablicy ili bazy dannyh, no i vnutri vsej SUBD PostgreSQL.
vnutrennih tablic.
PostgreSQL ispol'zuet OID v svoih vnutrennih sistemnyh tablicah dlya
Dlya unikal'nyh znachenij v kolonkah tablicy pol'zovatelya, luchshim
svyazi zapisej i tablic. Znacheniya OID mogut byt' ispol'zovany dlya
sposobom yavlyaetsya ispol'zovanie SERIAL vmesto OID, potomu chto
identifikacii zadannyh pol'zovatelem zapisej, a takzhe ispol'zovat'sya
posledovatel'nosti SERIAL unikal'ny tol'ko vnutri tablicy i takim
pri svyazyvaniyah. Rekomenduetsya ispol'zovat' tip kolonki OID dlya
obrazom men'she podverzheny perepolneniyu. Dlya hraneniya znachenij
hraneniya znachenij OID Vy mozhete sozdat' indeks na pole OID dlya
8-mi bajtnoj posledovatel'nosti dostupen tip SERIAL8.
bolee bystrogo dostupa.
Znacheniya OID naznachayutsya dlya vseh novyh zapisej iz central'noj
oblasti, kotorye ispol'zuyutsya vsemi vsemi bazami dannyh. Esli vy
hotite izmenit' OID na kakoe-libo drugoe znachenie ili esli vy hotite
sozdat' kopiyu tablicy s takimizhe OID, to `eto mozhno sdelat' tak:
CREATE TABLE new_table(mycol int);
SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table;
COPY tmp_table TO '/tmp/pgtable';
COPY new_table WITH OIDS FROM '/tmp/pgtable';
DROP TABLE tmp_table;
OID hranitsya kak 4-h bajtnoe celoe i ne mozhet prevyshat' znachenie v
4 milliarda. Odnako, esche nikto ne soobschil o tom, chto takoe
proizoshlo, no my planiruem do togo kak `eto sluchit'sya izbavitsya ot
`etogo ogranicheniya.
TID ispol'zuetsya dlya identifikacii special'nyh fizicheskih zapisej s
TID ispol'zuetsya dlya identifikacii special'nyh fizicheskih zapisej s
blochnymi i offset znacheniyami. TID izmenyaetsya posle togo kak
blochnymi i offset znacheniyami. TID izmenyaetsya posle togo kak
zapisi
byli izmeneny ili peregruzheny.
stroki v tablice
byli izmeneny ili peregruzheny.
TID ispol'zuetsya indeksnymi zapisyami v kachestve ukazatelya na
TID ispol'zuetsya indeksnymi zapisyami v kachestve ukazatelya na
fizicheskie zapisi.
fizicheskie zapisi.
4.17) CHto oznachayut nekotorye terminy ispol'zuemye v PostgreSQL?
4.13) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
Nekotoryj ishodnyj kod i staraya dokumentaciya ispol'zuyut
obscheupotrebitel'nye terminy. Vot nekotorye iz nih:
* 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
Spisok obschih terminov po bazam dannyh mozhno najti na
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
/glossary.html
4.18) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
AllocSetAlloc()"?
AllocSetAlloc()"?
Predpolozhitel'no u vas zakonchilas' virtual'naya pamyat' ili chto
Predpolozhitel'no u vas zakonchilas' virtual'naya pamyat' ili chto
...
@@ -1152,11 +842,11 @@ t' null-bajt bez opaski)
...
@@ -1152,11 +842,11 @@ t' null-bajt bez opaski)
klientom, potomu chto backend vozvraschaet slishkom bol'shoj ob"em
klientom, potomu chto backend vozvraschaet slishkom bol'shoj ob"em
dannyh, popytajtes' vypolnit' `etu komandu pered zapuskom klienta.
dannyh, popytajtes' vypolnit' `etu komandu pered zapuskom klienta.
4.1
9
) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
4.1
4
) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
Iz psql, naberite SELECT version();
Iz psql, naberite SELECT version();
4.
20
) Pochemu pri rabote s moim bol'shim ob"ektom ya poluchayu oshibku
4.
15
) Pochemu pri rabote s moim bol'shim ob"ektom ya poluchayu oshibku
"invalid large obj descriptor"?
"invalid large obj descriptor"?
Vam nuzhno pri ispol'zovanii bol'shogo ob"ekta pomestit' v nachale
Vam nuzhno pri ispol'zovanii bol'shogo ob"ekta pomestit' v nachale
...
@@ -1174,38 +864,13 @@ t' null-bajt bez opaski)
...
@@ -1174,38 +864,13 @@ t' null-bajt bez opaski)
Esli vy ispol'zuete takoj interfejs klienta kak ODBC, vam vozmozhno
Esli vy ispol'zuete takoj interfejs klienta kak ODBC, vam vozmozhno
ponadobitsya ustanovit' auto-commit off.
ponadobitsya ustanovit' auto-commit off.
4.
21
) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
4.
16
) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
tekuschee vremya?
tekuschee vremya?
Ispol'zujte CURRENT_TIMESTAMP:
Ispol'zujte CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime
timestamp
DEFAULT CURRENT_TIMESTAMP );
CREATE TABLE test (x int, modtime
TIMESTAMP
DEFAULT CURRENT_TIMESTAMP );
4.22) Pochemu moi podzaprosy, ispol'zuyuschie IN tak medlenno rabotaeyut?
4.17) Kak mne vypolnit' vneshnee svyazyvanie?
V versiyah do 7.4, podzaprosy svyazyvalis' s roditel'skimi zaprosami
cherez posledovatel'nyj perebor rezul'tatov pozaprosa dlya kazhdoj
zapisi roditel'skogo zaprosa. Esli podzapros vozvraschaet tol'ko
neskol'ko zapisej, a roditel'skij zapros vozvraschaet mnogo zapisej,
IN rabotaet naibolee bystro. CHtoby uvelichit' skorost' v drugih
zaprosah, zamenite IN na EXISTS:
SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
na:
SELECT *
FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
CHtoby takaya konstrukciya rabotala bystro, kolonka subcol dolzhna
byt' proindeksirovana.
V versii 7.4 i vyshe, IN fakticheski ispol'zuet takoj zhe mehanizm
svyazyvaniya kak i obychnye zaprosy, po`etomu predpochtitel'nym
yavlyaetsya ispol'zovanie EXISTS
.
4.23) Kak mne vypolnit' vneshnee svyazyvanie?
PostgreSQL podderzhivaet vneshnee svyazyvanie, ispol'zuya standartnyj
PostgreSQL podderzhivaet vneshnee svyazyvanie, ispol'zuya standartnyj
sintaksis SQL. Vot dva primera:
sintaksis SQL. Vot dva primera:
...
@@ -1217,27 +882,14 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
...
@@ -1217,27 +882,14 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
FROM t1 LEFT OUTER JOIN t2 USING (col);
FROM t1 LEFT OUTER JOIN t2 USING (col);
`Eto identichnye zaprosy svyazyvaniya t1.col i t2.col, takzhe
`Eto identichnye zaprosy svyazyvaniya t1.col i t2.col, takzhe
vozvraschayut lyubye nesvyazannye
zapis
i v t1 (kotorye ne sovpadayut s
vozvraschayut lyubye nesvyazannye
strok
i v t1 (kotorye ne sovpadayut s
t2). RIGHT svyazyvanie dolzhno dobavit' nesvyazannye
zapis
i t2. FULL
t2). RIGHT svyazyvanie dolzhno dobavit' nesvyazannye
strok
i t2. FULL
svyazyvanie dolzhno vozvratit' sovpavshie
zapis
i plyus vse
svyazyvanie dolzhno vozvratit' sovpavshie
strok
i plyus vse
nesvyazannye
zapis
i iz t1 i t2. Slovo OUTER yavlyaetsya
nesvyazannye
strok
i iz t1 i t2. Slovo OUTER yavlyaetsya
neobyazatel'nym i naznachaetsya v LEFT, RIGHT i FULL svyazyvaniyah.
neobyazatel'nym i naznachaetsya v LEFT, RIGHT i FULL svyazyvaniyah.
Obychnye svyazyvaniya nazyvayutsya INNER svyazyvaniya.
Obychnye svyazyvaniya nazyvayutsya INNER svyazyvaniya.
V predyduschih versiyah, vneshnie svyazyvaniya mogli byt' `emulirovany
4.18) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
ispol'zuya UNION i NOT IN. Naprimer, kogda proishodit svyazyvanie tab1
i tab2, sleduyuschij zapros vypolnyaet vneshnee svyazyvanie dvuh
tablic:
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
4.24) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
Ne suschestvuet sposoba sozdat' zapros k bazam dannyh otlichnym ot
Ne suschestvuet sposoba sozdat' zapros k bazam dannyh otlichnym ot
tekuschej. Poskol'ku PostgreSQL zagruzhaet sistemnye katalogi
tekuschej. Poskol'ku PostgreSQL zagruzhaet sistemnye katalogi
...
@@ -1245,21 +897,19 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
...
@@ -1245,21 +897,19 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
vesti takoj mezhbazovyj zapros.
vesti takoj mezhbazovyj zapros.
contrib/dblink pozvolyaet zaprosy mezhdu bazami, ispol'zuya vyzovy
contrib/dblink pozvolyaet zaprosy mezhdu bazami, ispol'zuya vyzovy
funkcij. Razumeetsya, klient mozhet odnovremenno ustanavlivat'
funkcij. Razumeetsya, klient mozhet odnovremenno
takzhe
ustanavlivat'
soedieneniya s razlichnymi bazami dannyh i takih obrazom ob"edinyat'
soedieneniya s razlichnymi bazami dannyh i takih obrazom ob"edinyat'
informaciyu iz nih.
informaciyu iz nih.
4.
25) Kak mne vernut' iz funkcii neskol'ko zapisej
?
4.
19) Kak mne vernut' iz funkcii neskol'ko strok tablicy
?
V versii 7.3, vy mozhete legko vernut' neskol'ko zapisej ili kolonok
Vy mozhete legko ispol'zovat' funkcii, vozvraschayuschie spisok,
iz kakoj-libo funkcii,
http://techdocs.postgresql.org/guides/SetReturningFunctions.
http://techdocs.postgresql.org/guides/SetReturningFunctions
.
4.2
6
) Pochemu ya ne mogu nadezhno sozdavat'/udalyat' vremennye tablicy v
4.2
0
) Pochemu ya ne mogu nadezhno sozdavat'/udalyat' vremennye tablicy v
funkciyah PL/PgSQL?
funkciyah PL/PgSQL?
PL/PgSQL k`eshiruet s
oderzhimoe
funkcii i odin iz negativnyh `effektov
PL/PgSQL k`eshiruet s
cenarii
funkcii i odin iz negativnyh `effektov
`etogo sostoit v tom, chto esli funkciya PL/PgSQL obraschaetsya k
`etogo sostoit v tom, chto esli funkciya PL/PgSQL obraschaetsya k
vremennoj tablice i `eta tablica pozdnee udalyaetsya i peresozdaetsya,
vremennoj tablice i `eta tablica pozdnee udalyaetsya i peresozdaetsya,
a funkciya zatem vyzyvaetsya snova, to ee vyzov privedet k oshibke,
a funkciya zatem vyzyvaetsya snova, to ee vyzov privedet k oshibke,
...
@@ -1268,7 +918,7 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
...
@@ -1268,7 +918,7 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
EXECUTE dlya dostupa k vremennym tablicam v PL/PgSQL. Ispol'zovanie
EXECUTE dlya dostupa k vremennym tablicam v PL/PgSQL. Ispol'zovanie
`etogo operatora zastavit zapros peregenerirovat'sya kazhdyj raz.
`etogo operatora zastavit zapros peregenerirovat'sya kazhdyj raz.
4.2
7
) Kakie opcii shifrovaniya suschestvuyut?
4.2
1
) Kakie opcii shifrovaniya suschestvuyut?
* contrib/pgcrypto soderzhit mnogo funkcij shifrovaniya dlya
* contrib/pgcrypto soderzhit mnogo funkcij shifrovaniya dlya
ispol'zovaniya v SQL zaprosah.
ispol'zovaniya v SQL zaprosah.
...
@@ -1281,8 +931,7 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
...
@@ -1281,8 +931,7 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
transportov, takih kak stunnel ili ssh, vmesto sobstvennyh SSL
transportov, takih kak stunnel ili ssh, vmesto sobstvennyh SSL
soedinenij PostgreSQL).
soedinenij PostgreSQL).
* Paroli pol'zovatelej k baze dannyh avtomaticheski shifruyutsya,
* Paroli pol'zovatelej k baze dannyh avtomaticheski shifruyutsya,
pri sohranenii v versii 7.3. V predyduschih versiyah, vy dolzhny
pri sohranenii v sistemnyh tablicah.
razreshit' opciyu PASSWORD_ENCRYPTION v postgresql.conf.
* Server mozhno zapustit', ispol'zuya shifrovannuyu fajlovuyu
* Server mozhno zapustit', ispol'zuya shifrovannuyu fajlovuyu
sistemu.
sistemu.
_________________________________________________________________
_________________________________________________________________
...
@@ -1302,7 +951,7 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
...
@@ -1302,7 +951,7 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
Otprav'te vashi rasshireniya v spisok rassylki pgsql-hackers i oni po
Otprav'te vashi rasshireniya v spisok rassylki pgsql-hackers i oni po
vozmozhnosti budut pomescheny v podkatalog contrib/.
vozmozhnosti budut pomescheny v podkatalog contrib/.
5.3) Kak mne napisat' C funkciyu, vozvraschayuschuyu
zapis'
?
5.3) Kak mne napisat' C funkciyu, vozvraschayuschuyu
stroku tablicy
?
V versiyah PostgreSQL, nachinaya s 7.3, funkcii, vozvraschayuschie
V versiyah PostgreSQL, nachinaya s 7.3, funkcii, vozvraschayuschie
tablicy polnost'yu podderzhivayutsya v C, PL/PgSQL i SQL. Podrobnosti
tablicy polnost'yu podderzhivayutsya v C, PL/PgSQL i SQL. Podrobnosti
...
...
doc/src/FAQ/FAQ_russian.html
View file @
49c320b1
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
<BODY
bgcolor=
"#ffffff"
text=
"#000000"
link=
"#ff0000"
vlink=
"#a00000"
alink=
"#0000ff"
>
<BODY
bgcolor=
"#ffffff"
text=
"#000000"
link=
"#ff0000"
vlink=
"#a00000"
alink=
"#0000ff"
>
<H1>
PostgreSQL
</H1>
<H1>
PostgreSQL
</H1>
<P>
:
15 20:06:34 EST 2004
</P>
<P>
:
2 12:44:03 EST 2005
</P>
<P>
: (Bruce Momjian) (
<A
href=
<P>
: (Bruce Momjian) (
<A
href=
"mailto:pgman@candle.pha.pa.us"
>
pgman@candle.pha.pa.us
</A>
)
<BR>
"mailto:pgman@candle.pha.pa.us"
>
pgman@candle.pha.pa.us
</A>
)
<BR>
...
@@ -22,124 +22,101 @@
...
@@ -22,124 +22,101 @@
</P>
</P>
<P>
<P>
<A
href=
"http://www.postgresql.org/
docs/faqs/FAQ.html"
>
http://www.PostgreSQL.org/docs
/faqs/FAQ.html
</A>
.
</P>
<A
href=
"http://www.postgresql.org/
files/documentation/faqs/FAQ.html"
>
http://www.PostgreSQL.org/files/documentation
/faqs/FAQ.html
</A>
.
</P>
<P>
<P>
<A
href=
"http://www.postgresql.org/docs/
index.html"
>
http://www.PostgreSQL.org/docs/index.html
</A>
.
</P>
<A
href=
"http://www.postgresql.org/docs/
faq/"
>
http://www.PostgreSQL.org/docs/faq/
</A>
.
</P>
<HR>
<HR>
<H2
align=
"center"
>
</H2>
<H2
align=
"center"
>
</H2>
<A
href=
"#1.1"
>
1.1
</A>
) PostgreSQL? ?
<BR>
<A
href=
"#1.1"
>
1.1
</A>
) PostgreSQL? ?
<BR>
<A
href=
"#1.2"
>
1.2
</A>
) PostgreSQL?
<BR>
<A
href=
"#1.2"
>
1.2
</A>
) PostgreSQL?
<BR>
<A
href=
"#1.3"
>
1.3
</A>
)
Unix
PostgreSQL?
<BR>
<A
href=
"#1.3"
>
1.3
</A>
) PostgreSQL?
<BR>
<A
href=
"#1.4"
>
1.4
</A>
)
Unix
?
<BR>
<A
href=
"#1.4"
>
1.4
</A>
)
PostgreSQL
?
<BR>
<A
href=
"#1.5"
>
1.5
</A>
)
PostgreSQL
?
<BR>
<A
href=
"#1.5"
>
1.5
</A>
) ?
<BR>
<A
href=
"#1.6"
>
1.6
</A>
) ?
<BR>
<A
href=
"#1.6"
>
1.6
</A>
)
?
<BR>
<A
href=
"#1.7"
>
1.7
</A>
) ?
<BR>
<A
href=
"#1.7"
>
1.7
</A>
) ?
<BR>
<A
href=
"#1.8"
>
1.8
</A>
) ?
<BR>
<A
href=
"#1.8"
>
1.8
</A>
) ?
<BR>
<A
href=
"#1.9"
>
1.9
</A>
)
<A
href=
"#1.9"
>
1.9
</A>
)
?
<BR>
?
<BR>
<A
href=
"#1.10"
>
1.10
</A>
)
<SMALL>
SQL
</SMALL>
?
<BR>
<A
href=
"#1.10"
>
1.10
</A>
)
<SMALL>
SQL
</SMALL>
?
<BR>
<A
href=
"#1.11"
>
1.11
</A>
) PostgreSQL 2000- (Y2K)?
<BR>
<A
href=
"#1.11"
>
1.11
</A>
) ?
<BR>
<A
href=
"#1.12"
>
1.12
</A>
) ?
<BR>
<A
href=
"#1.12"
>
1.12
</A>
) PostgreSQL
<A
href=
"#1.13"
>
1.13
</A>
) ?
<BR>
<A
href=
"#1.14"
>
1.14
</A>
) PostgreSQL
<SMALL></SMALL>
?
<BR>
<SMALL></SMALL>
?
<BR>
<A
href=
"#1.15"
>
1.15
</A>
) PostgreSQL?
<BR>
<H2
align=
"center"
>
</H2>
<H2
align=
"center"
>
</H2>
<A
href=
"#2.1"
>
2.1
</A>
)
<SMALL>
ODBC
</SMALL>
<A
href=
"#2.1"
>
2.1
</A>
) PostgreSQL?
<BR>
PostgreSQL?
<BR>
<A
href=
"#2.2"
>
2.2
</A>
)
<A
href=
"#2.2"
>
2.2
</A>
)
PostgreSQL Web?
<BR>
PostgreSQL Web?
<BR>
<A
href=
"#2.3"
>
2.3
</A>
) PostgreSQL
<A
href=
"#2.3"
>
2.3
</A>
) PostgreSQL
?
<BR>
?
<BR>
<A
href=
"#2.4"
>
2.4
</A>
)
PostgreSQL?
<BR>
<H2
align=
"center"
>
</H2>
<H2
align=
"center"
>
</H2>
<A
href=
"#3.1"
>
3.1
</A>
) PostgreSQL
<A
href=
"#3.1"
>
3.1
</A>
) PostgreSQL
<I>
/usr/local/pgsql
</I>
?
<BR>
<I>
/usr/local/pgsql
</I>
?
<BR>
<A
href=
"#3.2"
>
3.2
</A>
)
<I>
postmaster
</I>
,
<A
href=
"#3.2"
>
3.2
</A>
)
<I>
Bad System Call
</I>
core dumped. ?
<BR>
<A
href=
"#3.3"
>
3.3
</A>
)
<I>
postmaster
</I>
,
<I>
IpcMemoryCreate
</I>
. ?
<BR>
<A
href=
"#3.4"
>
3.4
</A>
)
<I>
postmaster
</I>
,
<I>
IpcSemaphoreCreate
</I>
. ?
<BR>
<A
href=
"#3.5"
>
3.5
</A>
)
?
<BR>
?
<BR>
<A
href=
"#3.
6"
>
3.6
</A>
)
<A
href=
"#3.
3"
>
3.3
</A>
)
?
<BR>
?
<BR>
<A
href=
"#3.
7"
>
3.7
</A>
) ?
<BR>
<A
href=
"#3.
4"
>
3.4
</A>
) ?
<BR>
<A
href=
"#3.
8"
>
3.8
</A>
)
<I>
"Sorry, too many
<A
href=
"#3.
5"
>
3.5
</A>
)
<I>
"Sorry, too many
clients"
</I>
?
<BR>
clients"
</I>
?
<BR>
<A
href=
"#3.9"
>
3.9
</A>
)
<I>
pgsql_tmp
</I>
?
<BR>
<A
href=
"#3.6"
>
3.6
</A>
) dump restore
<A
href=
"#3.10"
>
3.10
</A>
) dump restore
PostgreSQL?
<BR>
PostgreSQL?
<BR>
<A
href=
"#3.
11"
>
3.11
</A>
) ""
<A
href=
"#3.
7"
>
3.7
</A>
) ""
?
<BR>
?
<BR>
<H2
align=
"center"
>
</H2>
<H2
align=
"center"
>
</H2>
<A
href=
"#4.1"
>
4.1
</A>
)
<A
href=
"#4.1"
>
4.1
</A>
)
<SMALL>
SELECT
</SMALL>
?
<BR>
<A
href=
"#4.2"
>
4.2
</A>
)
<SMALL>
SELECT
</SMALL>
? ?
<BR>
? ?
<BR>
<A
href=
"#4.
3"
>
4.3
</A>
)
<A
href=
"#4.
2"
>
4.2
</A>
) , ,
<I>
psql
</I>
?
<BR>
? ,
<A
href=
"#4.4"
>
4.4
</A>
)
<I>
psql
</I>
?
<BR>
ţ
?
<BR>
<A
href=
"#4.3"
>
4.3
</A>
)
?
<BR>
<A
href=
"#4.
5"
>
4.5
</A>
)
,
<A
href=
"#4.
4"
>
4.4
</A>
)
,
?
<BR>
?
<BR>
<A
href=
"#4.
6"
>
4.6
</A>
)
<A
href=
"#4.
5"
>
4.5
</A>
)
?
<BR>
?
<BR>
<A
href=
"#4.7"
>
4.7
</A>
) ,
<A
href=
"#4.6"
>
4.6
</A>
) ?
, , ?
<BR>
?
<BR>
<A
href=
"#4.8"
>
4.8
</A>
)
<A
href=
"#4.7"
>
4.7
</A>
) ,
. ?
<BR>
<A
href=
"#4.9"
>
4.9
</A>
) ,
?
<BR>
?
<BR>
<A
href=
"#4.10"
>
4.10
</A>
) R-tree ?
<BR>
<A
href=
"#4.8"
>
4.8
</A>
)
<A
href=
"#4.11"
>
4.11
</A>
) Genetic Query Optimizer?
<BR>
<A
href=
"#4.12"
>
4.12
</A>
)
?
?
?
<BR>
?
<BR>
<A
href=
"#4.
13"
>
4.13
</A>
) ,
<A
href=
"#4.
9"
>
4.9
</A>
) ,
<SMALL>
NULL
</SMALL>
- ?
<BR>
<SMALL>
NULL
</SMALL>
- ?
<BR>
<A
href=
"#4.1
4"
>
4.14
</A>
)
<A
href=
"#4.1
0"
>
4.10
</A>
)
?
<BR>
?
<BR>
<A
href=
"#4.1
5.1"
>
4.15
.1
</A>
) serial/--?
<BR>
<A
href=
"#4.1
1.1"
>
4.11
.1
</A>
) serial/--?
<BR>
<A
href=
"#4.1
5.2"
>
4.15
.2
</A>
)
<A
href=
"#4.1
1.2"
>
4.11
.2
</A>
)
<SMALL>
SERIAL
</SMALL>
?
<BR>
<SMALL>
SERIAL
</SMALL>
?
<BR>
<A
href=
"#4.1
5.3"
>
4.15
.3
</A>
) ,
<A
href=
"#4.1
1.3"
>
4.11
.3
</A>
) ,
<I>
currval()
</I>
<I>
nextval()
</I>
<I>
currval()
</I>
<I>
nextval()
</I>
?
<BR>
?
<BR>
<A
href=
"#4.1
5.4"
>
4.15
.4
</A>
)
<A
href=
"#4.1
1.4"
>
4.11
.4
</A>
)
?
?
, /SERIAL?
<BR>
, /SERIAL?
<BR>
<A
href=
"#4.1
6"
>
4.16
</A>
)
<SMALL>
OID
</SMALL>
?
<A
href=
"#4.1
2"
>
4.12
</A>
)
<SMALL>
OID
</SMALL>
?
<SMALL>
TID
</SMALL>
?
<BR>
<SMALL>
TID
</SMALL>
?
<BR>
<A
href=
"#4.17"
>
4.17
</A>
)
<A
href=
"#4.13"
>
4.13
</A>
)
<I>
"ERROR: Memory
PostgreSQL?
<BR>
<A
href=
"#4.18"
>
4.18
</A>
)
<I>
"ERROR: Memory
exhausted in AllocSetAlloc()"
</I>
?
<BR>
exhausted in AllocSetAlloc()"
</I>
?
<BR>
<A
href=
"#4.1
9"
>
4.19
</A>
) , PostgreSQL
<A
href=
"#4.1
4"
>
4.14
</A>
) , PostgreSQL
?
<BR>
?
<BR>
<A
href=
"#4.
20"
>
4.20
</A>
)
<A
href=
"#4.
15"
>
4.15
</A>
)
<I>
"invalid large obj descriptor"
</I>
?
<BR>
<I>
"invalid large obj descriptor"
</I>
?
<BR>
<A
href=
"#4.
21"
>
4.21
</A>
)
<A
href=
"#4.
16"
>
4.16
</A>
)
?
<BR>
?
<BR>
<A
href=
"#4.22"
>
4.22
</A>
) ,
<A
href=
"#4.17"
>
4.17
</A>
) ?
<BR>
<CODE><SMALL>
IN
</SMALL></CODE>
?
<BR>
<A
href=
"#4.18"
>
4.18
</A>
) ,
<A
href=
"#4.23"
>
4.23
</A>
) ?
<BR>
<A
href=
"#4.24"
>
4.24
</A>
) ,
?
<BR>
?
<BR>
<A
href=
"#4.
25"
>
4.25
</A>
)
?
<BR>
<A
href=
"#4.
19"
>
4.19
</A>
)
?
<BR>
<A
href=
"#4.2
6"
>
4.26
</A>
) /
<A
href=
"#4.2
0"
>
4.20
</A>
) /
PL/PgSQL?
<BR>
PL/PgSQL?
<BR>
<A
href=
"#4.2
7"
>
4.27
</A>
) ?
<BR>
<A
href=
"#4.2
1"
>
4.21
</A>
) ?
<BR>
<H2
align=
"center"
>
PostgreSQL
</H2>
<H2
align=
"center"
>
PostgreSQL
</H2>
<A
href=
"#5.1"
>
5.1
</A>
) .
<A
href=
"#5.1"
>
5.1
</A>
) .
...
@@ -147,7 +124,7 @@
...
@@ -147,7 +124,7 @@
<A
href=
"#5.2"
>
5.2
</A>
)
<A
href=
"#5.2"
>
5.2
</A>
)
PostgreSQL?
<BR>
PostgreSQL?
<BR>
<A
href=
"#5.3"
>
5.3
</A>
) C ,
<A
href=
"#5.3"
>
5.3
</A>
) C ,
?
<BR>
?
<BR>
<A
href=
"#5.4"
>
5.4
</A>
) .
<A
href=
"#5.4"
>
5.4
</A>
) .
?
<BR>
?
<BR>
...
@@ -157,50 +134,35 @@
...
@@ -157,50 +134,35 @@
<H4><A
name=
"1.1"
>
1.1
</A>
) PostgreSQL? ?
</H4>
<H4><A
name=
"1.1"
>
1.1
</A>
) PostgreSQL? ?
</H4>
<P>
PostgreSQL
<I>
Post-Gres-Q-L (---)
</I>
.
<P>
PostgreSQL
<I>
Post-Gres-Q-L (---)
</I>
,
http://www.postgresql.org/postgresql.mp3
<I>
Postgres
</I>
.
</P>
.
</P>
<P>
PostgreSQL - POSTGRES (
"Postgres"),
<SMALL></SMALL>
.
PostgreSQL
POSTGRES, PostQuel
<SMALL>
SQL
</SMALL>
. PostgreSQL -
.
</P>
<P>
PostgreSQL ,
. ,
(Marc G. Fournier) (
<A
href=
"mailto:scrappy@PostgreSQL.org"
>
scrappy@PostgreSQL.org
</A>
). (.
<A
href=
"#1.6"
>
1.6
</A>
, ).
PostgreSQL.
- .
FAQ ,
<A
href=
"http://www.postgresql.org/docs/faqs/FAQ_DEV.html"
>
http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
</A>
</P>
<P>
PostgreSQL 1.01 (Andrew Yu)
<P>
PostgreSQL - -
(Jolly Chen).
(),
, , .
<small></small>
,
<small></small>
Postgres, PostgreSQL,
. PostgreSQL -
,
.
</P>
,
(Michael Stonebraker) ,
.
</P>
<P>
, , Postgres.
<P>
PostgreSQL ,
1995
<SMALL>
SQL
</SMALL>
,
.
Postgres95.
- .
1996 PostgreSQL.
</P>
FAQ ,
<A
href=
"http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html"
>
http://www.PostgreSQL.org/files/documentation/faqs/FAQ_DEV.html
</A>
</P>
<H4><A
name=
"1.2"
>
1.2
</A>
) PostgreSQL?
</H4>
<H4><A
name=
"1.2"
>
1.2
</A>
) PostgreSQL?
</H4>
<P>
PostgreSQL COPYRIGHT:
</P>
<P>
PostgreSQL BSD.
,
. ţ
.
</P>
<P>
BSD, :
</P>
<P>
PostgreSQL
</P>
<P>
PostgreSQL
</P>
<P>
Portions copyright (c) 1996-200
4
, PostgreSQL Global Development
<P>
Portions copyright (c) 1996-200
5
, PostgreSQL Global Development
Group Portions Copyright (c) 1994-6 Regents of the University of
Group Portions Copyright (c) 1994-6 Regents of the University of
California
</P>
California
</P>
...
@@ -225,21 +187,13 @@
...
@@ -225,21 +187,13 @@
" "
" "
, , , .
</P>
, , , .
</P>
<P>
BSD ,
<H4><A
name=
"1.3"
>
1.3
</A>
) PostgreSQL?
</H4>
.
.
ţ .
</P>
<H4><A
name=
"1.3"
>
1.3
</A>
) Unix PostgreSQL?
</H4>
<P>
, PostgreSQL
<P>
, PostgreSQL
Unix. ,
Unix. ,
, PostgreSQL
, PostgreSQL
.
</P>
.
</P>
<H4><A
name=
"1.4"
>
1.4
</A>
) Unix
?
</H4>
<P>
8.0, PostgreSQL
<P>
8.0, PostgreSQL
Microsoft Windows, NT,
Microsoft Windows, NT,
Win2000, WinXP Win2003.
Win2000, WinXP Win2003.
...
@@ -249,69 +203,30 @@
...
@@ -249,69 +203,30 @@
PostgreSQL Cygwin.
</P>
PostgreSQL Cygwin.
</P>
<P>
Novell Netware 6
<P>
Novell Netware 6
<a
href=
"http://forge.novell.com/"
>
http://forge.novell.com
</a>
.
</P>
<A
href=
"http://forge.novell.com/"
>
http://forge.novell.com
</A>
,
OS/2 (eComStation)
<A
href=
"http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F"
>
http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1
&
button=Search
&
key=postgreSQL
&
stype=all
&
sort=type
&
dir=%2F
</A>
.
</P>
<H4><A
name=
"1.
5"
>
1.5
</A>
) PostgreSQL?
</H4>
<H4><A
name=
"1.
4"
>
1.4
</A>
) PostgreSQL?
</H4>
<P>
, ftp
<P>
, ftp
PostgreSQL
<A
href=
PostgreSQL
<A
href=
"ftp://ftp.PostgreSQL.org/pub"
>
ftp://ftp.PostgreSQL.org/pub
</A>
.
"ftp://ftp.PostgreSQL.org/pub"
>
ftp://ftp.PostgreSQL.org/pub
</A>
.
.
</P>
.
</P>
<H4><A
name=
"1.
6"
>
1.6
</A>
) ?
</H4>
<H4><A
name=
"1.
5"
>
1.5
</A>
) ?
</H4>
<P>
:
<A
href=
<P>
PostgreSQL
"mailto:pgsql-general@PostgreSQL.org"
>
pgsql-general@PostgreSQL.org
</A>
.
E-mail. web-
, PostgreSQL.
E-mail :
<A
href=
"http://www.postgresql.org/community/lists/"
>
, ,
http://www.postgresql.org/community/lists/
</A>
.
( ) :
</P>
,
<i>
general
</i>
<PRE>
( )
<i>
bugs
</i>
().
</P>
subscribe
end
</PRE>
<P>
<A
href=
"mailto:pgsql-general-request@PostgreSQL.org"
>
pgsql-general-request@PostgreSQL.org
</A>
.
</P>
<P>
. ,
:
<A
href=
"mailto:pgsql-general-digest-request@PostgreSQL.org"
>
pgsql-general-digest-request@PostgreSQL.org
</A>
:
</P>
<PRE>
subscribe
end
</PRE>
,
30 .
<P>
.
,
<A
href=
"mailto:pgsql-bugs-request@PostgreSQL.org"
>
pgsql-bugs-request@PostgreSQL.org
</A>
:
</P>
<PRE>
subscribe
end
</PRE>
.
,
<A
href=
"mailto:pgsql-hackers-request@PostgreSQL.org"
>
pgsql-hackers-request@PostgreSQL.org
</A>
:
<PRE>
subscribe
end
</PRE>
<P>
PostgreSQL
PostgreSQL :
</P>
<BLOCKQUOTE>
<A
href=
"http://www.PostgreSQL.org"
>
http://www.PostgreSQL.org
</A>
</BLOCKQUOTE>
<P>
IRC
<I>
#postgreql
</I>
,
<P>
IRC
<I>
#postgreql
</I>
,
Freenode (
<I>
irc.freenode.net
</I>
).
Freenode (
<I>
irc.freenode.net
</I>
).
, Unix
, Unix
<code>
irc -c '#postgresql' "$USER" irc.freenode.net
</code>
<code>
irc -c '#postgresql' "$USER" irc.freenode.net
</code>
IRC .
IRC .
(
<I>
#postgresql-es
</I>
) (
<I>
#postgresqlfr
</I>
)
(
<I>
#postgresql-es
</I>
) (
<I>
#postgresqlfr
</I>
)
...
@@ -320,19 +235,32 @@
...
@@ -320,19 +235,32 @@
<P>
<P>
<A
href=
"http://techdocs.postgresql.org/companies.php"
>
http://techdocs.postgresql.org/companies.php
</A>
.
</P>
<A
href=
"http://techdocs.postgresql.org/companies.php"
>
http://techdocs.postgresql.org/companies.php
</A>
.
</P>
<H4><A
name=
"1.6"
>
1.6
</A>
) ?
</H3>
<P>
ޣ
PostgreSQL :
<A
HREF=
"http://www.postgresql.org/support/submitbug"
>
http://www.postgresql.org/support/submitbug
</A>
.
</P>
<P>
PostgreSQL
FTP
<A
href=
"ftp://ftp.postgresql.org/pub"
>
ftp://ftp.PostgreSQL.org/pub
</A>
.
<H4><A
name=
"1.7"
>
1.7
</A>
) ?
</H4>
<H4><A
name=
"1.7"
>
1.7
</A>
) ?
</H4>
<P>
PostgreSQL -
7.4.6
</P>
<P>
PostgreSQL -
8.0.1
</P>
<P>
6-8
.
</P>
<P>
10-12
.
</P>
<H4><A
name=
"1.8"
>
1.8
</A>
) ?
</H4>
<H4><A
name=
"1.8"
>
1.8
</A>
) ?
</H4>
<P>
,
<P>
PostgreSQL , ,
man .
man
<I>
/doc
</I>
.
.
<I>
/doc
</I>
.
<A
href=
"http://www.postgresql.org/docs"
>
<A
href=
"http://www.postgresql.org/docs"
>
http://www.PostgreSQL.org/docs
</A>
.
</P>
http://www.PostgreSQL.org/docs
</A>
.
</P>
<P>
PostgreSQL
<A
href=
<P>
PostgreSQL
<A
href=
"http://www.PostgreSQL.org/docs/awbook.html"
>
http://www.PostgreSQL.org/docs/awbook.html
</A>
"http://www.PostgreSQL.org/docs/awbook.html"
>
http://www.PostgreSQL.org/docs/awbook.html
</A>
...
@@ -342,9 +270,9 @@
...
@@ -342,9 +270,9 @@
,
<a
href=
"http://techdocs.postgresql.org"
>
http://techdocs.PostgreSQL.org/
</a>
,
<a
href=
"http://techdocs.postgresql.org"
>
http://techdocs.PostgreSQL.org/
</a>
PostgreSQL.
</p>
PostgreSQL.
</p>
<P>
<I>
psql
</I>
\d
<P><I>
psql
</I>
\d
, , , .. -
, , , .
.
</P>
\?
.
</P>
<P>
.
</P>
<P>
.
</P>
...
@@ -381,15 +309,11 @@
...
@@ -381,15 +309,11 @@
Bowman, Judith S., et al., Addison-Wesley.
<I>
The
Bowman, Judith S., et al., Addison-Wesley.
<I>
The
Complete Reference SQL
</I>
, Groff et al., McGraw-Hill.
</P>
Complete Reference SQL
</I>
, Groff et al., McGraw-Hill.
</P>
<H4><A
name=
"1.11"
>
1.11
</A>
) PostgreSQL 2000- (Y2K)?
</H4>
<H4><A
name=
"1.11"
>
1.11
</A>
) ?
</H4>
<P>
, 2000 2000 .
</P>
<H4><A
name=
"1.12"
>
1.12
</A>
) ?
</H4>
<P>
,
<P>
,
PostgreSQL .
FAQ PostgreSQL
,
<I>
pgsql-hackers
</I>
.
,
<I>
pgsql-hackers
</I>
<I>
pgsql-patches
</I>
. , (patches)
<I>
pgsql-patches
</I>
. , (patches)
pgsql-patches.
</P>
pgsql-patches.
</P>
...
@@ -400,16 +324,7 @@
...
@@ -400,16 +324,7 @@
, , ,
, , ,
.
</P>
.
</P>
<H4><A
name=
"1.13"
>
1.13
</A>
) ??
</H4>
<H4><A
name=
"1.12"
>
1.12
</A>
) PostgreSQL
<P>
PostgreSQL,
<A
href=
"http://www.postgresql.org/bugform.html"
>
http://www.postgresql.org/bugform.html
</A>
.
</P>
<P>
<A
href=
"ftp://ftp.PostgreSQL.org/pub"
>
ftp://ftp.PostgreSQL.org/pub
</A>
PostgreSQL .
</P>
<H4><A
name=
"1.14"
>
1.14
</A>
) PostgreSQL
<SMALL></SMALL>
?
</H4>
<SMALL></SMALL>
?
</H4>
<P>
<P>
...
@@ -431,24 +346,16 @@
...
@@ -431,24 +346,16 @@
<DT><B></B></DT>
<DT><B></B></DT>
<DD>
PostgreSQL
<DD>
PostgreSQL
, -
. - ,
,
- . MySQL
- . MySQL
, , ,
, , ,
/ . MySQL
/ . MySQL
SELECT , .
SELECT , .
, MySQL -
, MySQL -
,
<I></I>
.
,
<I></I>
.
,
,
.
.
<BR>
, PostgreSQL MySQL
<A
href=
"http://openacs.org/philosophy/why-not-mysql.html"
>
http://openacs.org/philosophy/why-not-mysql.html
</A>
. , MySQL -
,
,
, PostgreSQL.
<BR>
<BR>
<BR>
</DD>
</DD>
...
@@ -475,7 +382,7 @@
...
@@ -475,7 +382,7 @@
,
,
PostgreSQL
<SMALL></SMALL>
.
PostgreSQL
<SMALL></SMALL>
.
,
,
. (
<A
href=
"#1.
6"
>
1.6
</A>
.)
<BR>
. (
<A
href=
"#1.
5"
>
1.5
</A>
.)
<BR>
<BR>
<BR>
</DD>
</DD>
...
@@ -489,57 +396,23 @@
...
@@ -489,57 +396,23 @@
</DD>
</DD>
</DL>
</DL>
<H4><A
name=
"1.15"
>
1.15
</A>
)
PostgreSQL?
</H4>
<P>
PostgreSQL
1996 .
(Marc Fournier),
.
</P>
<P>
. ,
.
</P>
<P>
, .
,
. ,
,
<A
href=
"https://store.pgsql.com/shopping/"
>
https://store.pgsql.com/shopping/
</A>
.
</P>
<P>
PostgreSQL, Inc,
"contributions"
PostgreSQL - .
, , .
</P>
<HR>
<p>
PostgreSQL, ,
<a
href=
"http://advocacy.postgresql.org/"
>
http://advocacy.postgresql.org
</a>
.
</p>
<H2
align=
"center"
>
</H2>
<H2
align=
"center"
>
</H2>
<H4><A
name=
"2.1"
>
2.1
</A>
)
<SMALL>
ODBC
</SMALL>
<H4><A
name=
"2.1"
>
2.1
</A>
) PostgreSQL?
</H4>
PostgreSQL?
</H4>
<P>
<SMALL>
ODBC
</SMALL>
, PsqlODBC
OpenLink
<SMALL>
ODBC
</SMALL>
.
</P>
<P>
PsqlODBC
<A
href=
"http://gborg.postgresql.org/project/psqlodbc/projdisplay.php"
>
<P>
PostgreSQL
<small>
C
</small>
http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
</A>
.
</P>
(embedded)
<small>
C
</small>
.
;
<P>
OpenLink
<SMALL>
ODBC
</SMALL>
<A
href=
"http://www.openlinksw.com/"
>
http://www.openlinksw.com
</A>
.
.
</P>
,
<SMALL>
ODBC
</SMALL>
, ,
<SMALL>
ODBC
</SMALL>
<P>
,
<small>
PHP
</small>
PostgreSQL
PostgreSQL.
(Win, Mac, Unix, VMS).
</P>
Perl,
<small>
TCL
</small>
, Python ,
<A
href=
"http://gborg.postgresql.org"
>
http://gborg.postgresql.org
</A>
<i>
Drivers/Interfaces
</I>
, .
</P>
<P>
, . ,
<A
href=
"mailto:postgres95@openlink.co.uk"
>
postgres95@openlink.co.uk
</A>
.
</P>
<H4><A
name=
"2.2"
>
2.2
</A>
)
<H4><A
name=
"2.2"
>
2.2
</A>
)
PostgreSQL Web?
</H4>
PostgreSQL Web?
</H4>
...
@@ -547,49 +420,25 @@
...
@@ -547,49 +420,25 @@
<P>
Web :
<P>
Web :
<A
href=
"http://www.webreview.com"
>
http://www.webreview.com
</A></P>
<A
href=
"http://www.webreview.com"
>
http://www.webreview.com
</A></P>
<P>
Web,
PHP.
<P>
Web,
PHP
<A
href=
"http://www.php.net"
>
<A
href=
"http://www.php.net"
>
http://www.php.net
</A>
.
</P>
http://www.php.net
</A>
.
</P>
<P>
, Perl
CGI.pm mod_perl.
</P>
<P>
, Perl CGI.pm mod_perl.
</P>
<H4><A
name=
"2.3"
>
2.3
</A>
) PostgreSQL
<H4><A
name=
"2.3"
>
2.3
</A>
) PostgreSQL
?
</H4>
?
</H4>
<P>
, PostgreSQL.
<P>
, PostgreSQL.
PgAccess (
<A
href=
"http://www.pgaccess.org/"
>
http://www.pgaccess
.org
</A>
),
PgAdmin III (
<A
href=
"http://www.pgadmin.org/"
>
http://www.pgadmin
.org
</A>
),
PgA
dmin III (
<A
href=
"http://www.pgadmin.org/"
>
http://www.pgadmin
.org
</A>
),
PgA
ccess (
<A
href=
"http://www.pgaccess.org/"
>
http://www.pgaccess
.org
</A>
),
RHDB Admin (
<A
href=
"http://sources.redhat.com/rhdb/"
>
http://sources.redhat.com/rhdb/
</A>
),
RHDB Admin (
<A
href=
"http://sources.redhat.com/rhdb/"
>
http://sources.redhat.com/rhdb/
</A>
),
TORA (
<A
href=
"http://www.globecom.net/tora/"
>
http://www.globecom.net/tora/
TORA (
<A
href=
"http://www.globecom.net/tora/"
>
http://www.globecom.net/tora/
</A>
( )
</A>
)
Rekall (
<A
href=
"http://www.
thekompany.com/products/rekall
/"
>
Rekall (
<A
href=
"http://www.
rekallrevealed.org
/"
>
http://www.
thekompany.com/products/rekall/
</A>
,
).
http://www.
rekallrevealed.org/
</A>
).
PhpPgAdmin (
<A
href=
"http://phppgadmin.sourceforge.net/"
>
PhpPgAdmin (
<A
href=
"http://phppgadmin.sourceforge.net/"
>
http://phppgadmin.sourceforge.net/
</A>
) - PostgreSQL,
http://phppgadmin.sourceforge.net/
</A>
) - PostgreSQL,
Web.
</P>
Web.
</P>
<H4><A
name=
"2.4"
>
2.4
</A>
) PostgreSQL?
</H4>
<P>
- PostgreSQL
.
, .
</P>
<P>
PostgreSQL:
</P>
<UL>
<LI>
C (libpq)
</LI>
<LI>
Embedded C (ecpg)
</LI>
<LI>
Java (jdbc)
</LI>
<LI>
Python (PyGreSQL)
</LI>
<LI>
TCL (libpgtcl)
</LI>
</UL>
<P>
<A
href=
"http://gborg.postgresql.org/"
>
http://gborg.PostgreSQL.org
</a>
<i>
Drivers/Interfaces
</i>
.
</P>
<HR>
<HR>
<H2
align=
"center"
>
</H2>
<H2
align=
"center"
>
</H2>
...
@@ -599,144 +448,100 @@
...
@@ -599,144 +448,100 @@
<P>
<I>
--prefix
</I>
<I>
configure
</I>
.
</P>
<P>
<I>
--prefix
</I>
<I>
configure
</I>
.
</P>
<H4><A
name=
"3.2"
>
3.2
</A>
)
<I>
postmaster
</I>
,
<H4><A
name=
"3.2"
>
3.2
</A>
)
<I>
Bad System Call
</I>
core dumped. ?
</H4>
<P>
, ,
- ,
System V. PostgreSQL ,
.
</P>
<H4><A
name=
"3.3"
>
3.3
</A>
)
<I>
postmaster
</I>
,
<I>
IpcMemoryCreate
</I>
. ?
</H4>
<P>
,
.
,
backend
<I>
postmaster
</I>
. ,
, -
1 .
<A
href=
"http://www.postgresql.org/docs/current/static/kernel-resources.html"
>
PostgreSQL.
</A>
.
</P>
<H4><A
name=
"3.4"
>
3.4
</A>
)
<I>
postmaster
</I>
,
<I>
IpcSemaphoreCreate
</I>
. ?
</H4>
<P>
<I>
IpcSemaphoreCreate: semget failed (No
space left on device)
</I>
,
. Postgres
backend .
<I>
postmaster
</I>
backend .
<I>
-N
</I>
32, .
-
<SMALL>
SEMMNS
</SMALL>
<SMALL>
SEMMNI
</SMALL>
.
</P>
<P>
.
</P>
<P>
- ,
, .
PostgreSQL.
</P>
<H4><A
name=
"3.5"
>
3.5
</A>
)
?
</H4>
?
</H4>
<P>
, PostgreSQL
<P>
, PostgreSQL
Unix TCP/IP .
Unix TCP/IP . ,
listen_addresses
postgresql.conf
<B></B>
host-
<I>
listen_addresses
</I>
<I>
postgresql.conf
</I>
,
<I>
$PGDATA/pg_hba.conf
</I>
.
</P>
host-
<I>
$PGDATA/pg_hba.conf
</I>
.
</P>
<H4><A
name=
"3.
6"
>
3.6
</A>
)
<H4><A
name=
"3.
3"
>
3.3
</A>
)
?
</H4>
?
</H4>
<P>
, .
<P>
,
<SMALL>
EXPLAIN ANALYZE
</SMALL>
PostgreSQL
:
</P>
.
</P>
<DL>
<P>
<SMALL>
INSERT
</SMALL>
,
<DT><B>
</B></DT>
,
<DD>
<SMALL>
COPY
</SMALL>
. ,
:
<SMALL>
INSERT
</SMALL>
. -,
<UL>
<SMALL>
BEGIN WORK/COMMIT
</SMALL>
.
<LI>
,
</LI>
.
<LI>
COPY
<small>
INSERT
</small></LI>
. ,
<LI>
,
</LI>
.
</P>
<LI>
<small>
CLUSTER
</small>
, ң
</LI>
<P>
<LI>
<small>
LIMIT
</small>
,
<A
href=
"http://www.postgresql.org/docs/current/static/runtime.html"
>
</LI>
PostgreSQL
</A>
.
<LI>
(Prepared)
</LI>
<I>
fsync()
</I>
<I>
postmaster
</I>
<I>
-o -F
</I>
.
<LI>
<small>
ANALYZE
</small>
<I>
fsync()
</I>
,
</LI>
.
</P>
<LI>
<small>
VACUUM
</small>
<I>
pg_autovacuum
</I></LI>
<LI>
</LI>
<P>
<I>
shared_buffers
</I>
<I>
-B
</I>
</UL>
,
<BR><BR>
backend .
</DD>
,
<I>
postmaster
</I>
.
8 1000 .
</P>
<P>
backend
<I>
sort_mem
</I>
<I>
work_mem
</I>
,
backend .
1024 (.. 1MB).
</P>
<P>
<SMALL>
CLUSTER
</SMALL>
.
<SMALL>
CLUSTER
</SMALL>
.
</P>
<H4><A
name=
"3.7"
>
3.7
</A>
)
?
</H4>
<P>
PostgreSQL ,
,
.
</P>
<P>
-,
<I>
configure
</I>
--enable-cassert,
<DT><B>
</B></DT>
<I>
assert()
</I>
backend
-
<DD>
<I>
postgresql.conf
</I>
.
</P>
. .
<A
href=
"http://www.postgresql.org/docs/current/static/runtime.html"
>
Administration Guide/Server Run-time Environment/Run-time Configuration
</A>
,
.
<A
href=
"http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html"
>
http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html
</A>
<A
href=
"http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html"
>
http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html
</A>
.
<BR><BR>
</DD>
<DT><B>
"" -
</B></DT>
<DD>
""
<A
href=
"http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html"
>
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html
</A>
<A
href=
"http://www.powerpostgresql.com/PerfList/"
>
http://www.powerpostgresql.com/PerfList/
</A>
.
<BR><BR>
</DD>
</DL>
<P>
<I>
postmaster
</I>
,
<I>
postgres
</I>
<H4><A
name=
"3.4"
>
3.4
</A>
)
. -,
<I>
postmaster
</I>
, ,
?
</H4>
:
</P>
<PRE>
cd /usr/local/pgsql
./bin/postmaster
>
server.log 2
>&
1
&
</PRE>
<P>
server.log
<P>
,
PostgreSQL.
<code>
log_*
</code>
,
, .
<I>
Postmaster
</I>
<I>
-d
</I>
,
,
.
</P>
.
<I>
-d
</I>
,
. ,
<P><B>
.
</P>
-
.
</B></P>
<P>
,
. -,
<I>
configure
</I>
--enable-cassert,
<I>
assert()
</I>
backend
- .
</P>
<P>
<I>
postmaster
</I>
,
<P>
<I>
postmaster
</I>
,
<I>
postgres
</I>
backend
<I>
postgres
</I>
backend
<SMALL>
SQL
</SMALL>
.
<B></B>
<SMALL>
SQL
</SMALL>
.
<B></B>
. , ,
. , ,
, .
, .
, ,
, ,
, . backend
, . backend
<I>
postmaster
</I>
,
<I>
postmaster
</I>
,
/backend .
</P>
/backend .
</P>
<P>
<I>
postmaster
</I>
,
<I>
psql
</I>
<P>
<I>
postmaster
</I>
,
<I>
psql
</I>
,
<SMALL>
PID
</SMALL>
<I>
postgres
</I>
,
,
<SMALL>
PID
</SMALL>
<I>
postgres
</I>
,
<I>
psql
</I>
,
</P>
<I>
psql
</I>
,
<CODE>
SELECT pg_backend_pid()
</CODE>
.
<I>
postgres
</I>
<SMALL>
PID
</SMALL>
.
<PRE>
SELECT pg_backend_pid()
</PRE>
<P>
<I>
postgres
</I>
<SMALL>
PID
</SMALL>
.
<I>
psql
</I>
.
<I>
psql
</I>
.
<I>
postgres
</I>
,
<I>
postgres
</I>
,
...
@@ -745,10 +550,6 @@
...
@@ -745,10 +550,6 @@
,
,
.
</P>
.
</P>
<P>
<I>
postgres
</I>
<I>
-s, -A
</I>
,
<I>
-t
</I>
.
</P>
<P>
PostgreSQL
<P>
PostgreSQL
, .
, .
backend'
backend'
...
@@ -756,51 +557,23 @@
...
@@ -756,51 +557,23 @@
. Linux
. Linux
<I>
-DLINUX_PROFILE
</I>
.
</P>
<I>
-DLINUX_PROFILE
</I>
.
</P>
<H4><A
name=
"3.
8"
>
3.8
</A>
)
<I>
"Sorry, too
<H4><A
name=
"3.
5"
>
3.5
</A>
)
<I>
"Sorry, too
many clients"
</I>
?
</H4>
many clients"
</I>
?
</H4>
<P>
<P>
100
backend
<I>
postmaster
</I>
.
</P>
.
<I>
postmaster
</I>
backend ,
<P>
32 .
<I>
max_connections
</I>
<I>
postgresql.conf
</I>
<I>
postmaster
</I>
<I>
postmaster
</I>
.
</P>
,
<I>
-N
</I>
<I>
postgresql.conf
</I>
.
</P>
<P>
,
<I>
-N
</I>
32,
<I>
-B
</I>
64;
<I>
-B
</I>
<I>
-N
</I>
,
ݣ .
backend ,
Unix. ,
,
<SMALL>
SHMMAX;
</SMALL>
,
<SMALL>
SEMMNS
</SMALL>
<SMALL>
SEMMNI;
</SMALL>
,
<SMALL>
NPROC;
</SMALL>
,
<SMALL>
MAXUPRC;
</SMALL>
,
<SMALL>
NFILE
</SMALL>
<SMALL>
NINODE
</SMALL>
.
backend
, .
</P>
<H4><A
name=
"3.9"
>
3.9
</A>
)
<I>
pgsql_tmp
</I>
?
</H4>
<P>
,
. ,
<small>
ORDER BY
</small>
,
<i>
-S
</i>
backend',
.
</P>
<P>
,
, backend .
.
</P>
<H4><A
name=
"3.
10"
>
3.10
</A>
) dump restore
<H4><A
name=
"3.
6"
>
3.6
</A>
) dump restore
PostgreSQL?
</H4>
PostgreSQL?
</H4>
<P>
PostgreSQL
<P>
PostgreSQL
. 7.
2 7.2
.1
. 7.
4 7.4
.1
dump restore.
dump restore.
(.. , 7.
2 7.3
)
(.. , 7.
3 7.4
)
.
.
,
,
. dump
. dump
...
@@ -812,7 +585,7 @@
...
@@ -812,7 +585,7 @@
dump/restore.
dump/restore.
<i>
pg_upgrade
</i>
.
</P>
<i>
pg_upgrade
</i>
.
</P>
<H4><A
name=
"3.
11"
>
3.11
</A>
) ""
<H4><A
name=
"3.
7"
>
3.7
</A>
) ""
?
</H4>
?
</H4>
<P>
""
<P>
""
, , ""
, , ""
...
@@ -827,24 +600,15 @@
...
@@ -827,24 +600,15 @@
<H2
align=
"center"
>
</H2>
<H2
align=
"center"
>
</H2>
<H4><A
name=
"4.1"
>
4.1
</A>
)
<H4><A
name=
"4.1"
>
4.1
</A>
)
<SMALL>
SELECT
</SMALL>
?
</H4>
<P>
<SMALL>
DECLARE
</SMALL>
.
</P>
<H4><A
name=
"4.2"
>
4.2
</A>
)
<SMALL>
SELECT
</SMALL>
? ?
</H4>
? ?
</H4>
<P>
<SMALL>
FETCH
</SMALL>
<P>
,
<SMALL>
SELECT
</SMALL>
...
<SMALL>
LIMIT
</SMALL>
....
</P>
<SMALL>
SELECT
</SMALL>
<SMALL>
LIMIT
</SMALL>
.
</P>
- ,
<SMALL>
ORDER BY
</SMALL>
,
<P>
,
, .
. ,
<SMALL>
SELECT
</SMALL>
,
<SMALL>
ORDER BY.
</SMALL>
- ,
<SMALL>
FETCH
</SMALL>
.
</P>
<SMALL>
ORDER BY
</SMALL>
, PostgreSQL
.
</P>
<p>
To
<small>
SELECT
</small>
a random row, use:
<p>
To
<small>
SELECT
</small>
a random row, use:
</p><pre>
SELECT col
</p><pre>
SELECT col
...
@@ -854,8 +618,9 @@
...
@@ -854,8 +618,9 @@
</pre>
</pre>
</p>
</p>
<H4><A
name=
"4.3"
>
4.3
</A>
)
<H4><A
name=
"4.2"
>
4.2
</A>
) , ,
<I>
psql
</I>
?
</H4>
? ,
<I>
psql
</I>
?
</H4>
<P>
<I>
psql
</I>
, \dt.
<P>
<I>
psql
</I>
, \dt.
<I>
psql
</I>
, \?.
<I>
psql
</I>
, \?.
...
@@ -865,28 +630,25 @@
...
@@ -865,28 +630,25 @@
.
.
<I>
psql
</I>
<I>
-E
</I>
,
<I>
psql
</I>
<I>
-E
</I>
,
,
,
. PostgreSQL
<SMALL>
SQL
i
</SMALL>
. PostgreSQL
<SMALL>
SQL
</SMALL>
INFORMATION SCHEMA , ,
INFORMATION SCHEMA , ,
.
</P>
.
</P>
<P>
,
<I>
pg_
</I>
.
</P>
<P>
<I>
psql -l
</I>
.
</P>
<H4><A
name=
"4.4"
>
4.4
</A>
)
<P>
<I>
pgsql/src/tutorial/syscat.source
</I>
.
ţ ?
</H4>
<SMALL>
SELECT
</SMALL>
.
</P>
<P><small>
DROP COLUMN
</small>
7.3
<small>
ALTER TABLE DROP COLUMN
</small>
. ,
:
</P>
<PRE>
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;
COMMIT;
</PRE>
<P>
, :
</P>
<H4><A
name=
"4.3"
>
4.3
</A>
) ?
</H4>
<P>
8.0 ,
<SMALL>
ALTER TABLE ALTER COLUMN TYPE
</SMALL>
.
<P>
:
</P>
<PRE>
<PRE>
BEGIN;
BEGIN;
ALTER TABLE tab ADD COLUMN new_col
<i>
new_data_type
</i>
;
ALTER TABLE tab ADD COLUMN new_col
<i>
new_data_type
</i>
;
...
@@ -895,24 +657,49 @@
...
@@ -895,24 +657,49 @@
COMMIT;
COMMIT;
</PRE>
</PRE>
<H4><A
name=
"4.
5"
>
4.5
</A>
)
,
<H4><A
name=
"4.
4"
>
4.4
</A>
)
,
?
</H4>
?
</H4>
<P>
:
</P>
<P>
:
</P>
<PRE>
<BLOCKQUOTE>
? ( 32 TB)
<TABLE
BORDER=
"1"
>
? 32 TB
<TBODY>
? 1.6 TB
<TR>
? 1 GB
<TD>
?
</TD>
?
<TD>
( 32 TB)
</TD>
? 250-1600
</TR>
?
<TR>
</PRE>
<TD>
?
</TD>
<TD>
32 TB
</TD>
, ""
</TR>
<TR>
<TD>
?
</TD>
<TD>
1.6 TB
</TD>
</TR>
<TR>
<TD>
?
</TD>
<TD>
1 GB
</TD>
</TR>
<TR>
<TD>
?
</TD>
<TD></TD>
</TR>
<TR>
<TD>
?
</TD>
<TD>
250-1600
</TD>
</TR>
<TR>
<TD>
?
</TD>
<TD></TD>
</TR>
</TBODY>
</TABLE>
</BLOCKQUOTE>
<BR>
<P>
, ""
/.
/.
,
,
.
.
</P>
<P>
32 TB
<P>
32 TB
.
.
...
@@ -923,7 +710,7 @@
...
@@ -923,7 +710,7 @@
,
,
32k.
</P>
32k.
</P>
<H4><A
name=
"4.
6"
>
4.6
</A>
)
<H4><A
name=
"4.
5"
>
4.5
</A>
)
?
</H4>
?
</H4>
<P>
PostgreSQL 5
<P>
PostgreSQL 5
...
@@ -935,21 +722,21 @@
...
@@ -935,21 +722,21 @@
PostgreSQL,
PostgreSQL,
6.4 MB :
</P>
6.4 MB :
</P>
<PRE>
<PRE>
32 : ()
32 :
()
+ 24 :
+ 24 :
+ 4 :
+ 4 :
----------------------------------------
----------------------------------------
60
60
PostgreSQL 8192 (8 KB), :
PostgreSQL 8192 (8 KB), :
8192
8192
--------------------- = 136 (̣)
--------------------- = 136
(̣)
60
60
100000
100000
----------------------- = 735 (̣)
----------------------- = 735 (̣)
128
128
735 * 8192 = 6,021,120 (6 MB)
735 * 8192 = 6,021,120 (6 MB)
</PRE>
</PRE>
...
@@ -961,25 +748,12 @@
...
@@ -961,25 +748,12 @@
.
.
</P>
</P>
<H4><A
name=
"4.7"
>
4.7
</A>
) ,
<H4><A
name=
"4.6"
>
4.6
</A>
) ?
, , ?
</H4>
?
</H4>
<P><I>
psql
</I>
,
, .
\? , .
,
<i>
pg_
</i>
. ݣ,
<i>
psql -l
</i>
.
</P>
<P>
<I>
pgsql/src/tutorial/syscat.source
</I>
.
<SMALL>
SELECT
</SMALL>
.
</P>
<H4><A
name=
"4.8"
>
4.8
</A>
)
. ?
</H4>
<P>
.
<P>
.
. ,
. ,
,
,
.
</P>
.
</P>
...
@@ -988,11 +762,11 @@
...
@@ -988,11 +762,11 @@
, PostgreSQL .
, PostgreSQL .
<SMALL>
VACUUM ANALYZE
</SMALL>
<SMALL>
VACUUM ANALYZE
</SMALL>
<SMALL>
ANALYZE
</SMALL>
. ,
<SMALL>
ANALYZE
</SMALL>
. ,
, .
, .
.
.
.
</P>
.
</P>
<P>
<SMALL>
ORDER BY
</SMALL>
<P>
<SMALL>
ORDER BY
</SMALL>
.
.
...
@@ -1024,67 +798,26 @@
...
@@ -1024,67 +798,26 @@
</UL></LI>
</UL></LI>
<LI>
, .. [a-e].
</LI>
<LI>
, .. [a-e].
</LI>
<LI>
,
<small>
ILIKE
</small>
<LI>
,
<small>
ILIKE
</small>
<i>
~*
</i>
. ,
<i>
~*
</i>
. ,
,
<A
href=
"#4.
12"
>
4.12
</A>
.
</LI>
,
<A
href=
"#4.
8"
>
4.8
</A>
.
</LI>
<LI>
<i>
initdb
</i>
<LI>
<i>
initdb
</i>
<i>
C
</i>
,
next-greater
<i>
C
</i>
,
-C .
-C .
<CODE>
text_pattern_ops
</CODE>
<PRE>
<SMALL>
LIKE
</SMALL>
.
</LI>
text_pattern_ops
</PRE>
<PRE>
LIKE
</PRE>
.
</LI>
</UL>
</UL>
</P>
<P>
8.0, ,
<P>
8.0, ,
.
.
int2, int8 numeric .
</P>
int2, int8 numeric .
</P>
<H4><A
name=
"4.
9"
>
4.9
</A>
) ,
<H4><A
name=
"4.
7"
>
4.7
</A>
) ,
?
</H4>
?
</H4>
<P>
<SMALL>
EXPLAIN
</SMALL>
.
</P>
<P>
<SMALL>
EXPLAIN
</SMALL>
.
</P>
<H4><A
name=
"4.10"
>
4.10
</A>
) R-tree ?
</H4>
<P>
R-tree .
. B-tree
. R-tree
. , R-tree
<I>
point
</I>
,
"
."
</P>
<P>
, R-tree
<H4><A
name=
"4.8"
>
4.8
</A>
)
:
</P>
<P>
Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt
of Data, 45-57.
</P>
<P>
"Readings in
Database Systems".
</P>
<P>
R-tree . ,
R-tree
. , R-tree
, , - ,
.
</P>
<H4><A
name=
"4.11"
>
4.11
</A>
) Genetic Query
Optimizer?
</H4>
<P>
<SMALL>
GEQO
</SMALL>
,
Genetic Algorithm (GA).
.
</P>
<H4><A
name=
"4.12"
>
4.12
</A>
)
?
?
?
</H4>
?
</H4>
...
@@ -1101,28 +834,55 @@
...
@@ -1101,28 +834,55 @@
</PRE>
</PRE>
. ,
. ,
, :
, :
<PRE>
<PRE>
CREATE INDEX tabindex ON tab (lower(col));
CREATE INDEX tabindex ON tab (lower(col));
</PRE>
</PRE>
<H4><A
name=
"4.
13"
>
4.13
</A>
) ,
<H4><A
name=
"4.
9"
>
4.9
</A>
) ,
<SMALL>
NULL
</SMALL>
- ?
</H4>
<SMALL>
NULL
</SMALL>
- ?
</H4>
<P>
<SMALL>
IS NULL
</SMALL>
<P>
<SMALL>
IS NULL
</SMALL>
<SMALL>
IS NOT NULL
</SMALL>
.
</P>
<SMALL>
IS NOT NULL
</SMALL>
.
</P>
<H4><A
name=
"4.1
4"
>
4.14
</A>
)
<H4><A
name=
"4.1
0"
>
4.10
</A>
)
?
</H4>
?
</H4>
<PRE>
<BLOCKQUOTE>
<TABLE
BORDER=
"1"
>
--------------------------------------------------
<TBODY>
VARCHAR(n) varchar ,
<TR>
CHAR(n) bpchar
<TH></TH>
TEXT text
<TH>
</TH>
BYTEA bytea ( null- )
<TH></TH>
"char" char
</TR>
</PRE>
<TR>
<TD>
VARCHAR(n)
</TD>
<TD>
varchar
</TD>
<TD>
,
</TD>
</TR>
<TR>
<TD>
CHAR(n)
</TD>
<TD>
bpchar
</TD>
<TD>
</TD>
</TR>
<TR>
<TD>
TEXT
</TD>
<TD>
text
</TD>
<TD>
</TD>
</TR>
<TR>
<TD>
BYTEA
</TD>
<TD>
bytea
</TD>
<TD>
( null- )
</TD>
</TR>
<TR>
<TD>
"char"
</TD>
<TD>
char
</TD>
<TD>
</TD>
</TR>
</TBODY>
</TABLE>
</BLOCKQUOTE>
<P>
,
<P>
,
.
</P>
.
</P>
...
@@ -1147,7 +907,7 @@ BYTEA bytea
...
@@ -1147,7 +907,7 @@ BYTEA bytea
<SMALL>
NULL
</SMALL>
.
<SMALL>
NULL
</SMALL>
.
, .
</P>
, .
</P>
<H4><A
name=
"4.1
5.1"
>
4.15
.1
</A>
)
<H4><A
name=
"4.1
1.1"
>
4.11
.1
</A>
)
serial/--?
</H4>
serial/--?
</H4>
<P>
PostgreSQL
<SMALL>
SERIAL
</SMALL>
.
<P>
PostgreSQL
<SMALL>
SERIAL
</SMALL>
.
...
@@ -1169,20 +929,15 @@ BYTEA bytea
...
@@ -1169,20 +929,15 @@ BYTEA bytea
</PRE>
</PRE>
<I>
create_sequence
</I>
.
<I>
create_sequence
</I>
.
<I>
OID
</I>
. ,
,
<H4><A
name=
"4.11.2"
>
4.11.2
</A>
)
<I>
pg_dump
</I>
<I>
-o
</I>
<SMALL>
COPY WITH OIDS
</SMALL>
<SMALL>
OID
</SMALL>
.
<H4><A
name=
"4.15.2"
>
4.15.2
</A>
)
<SMALL>
SERIAL
</SMALL>
?
</H4>
<SMALL>
SERIAL
</SMALL>
?
</H4>
<P>
<P>
<SMALL>
SERIAL
</SMALL>
sequence
<SMALL>
SERIAL
</SMALL>
sequence
<I>
nextval()
</I>
<I></I>
<I>
nextval()
</I>
<I></I>
. -
<A
href=
"#4.1
5.1"
>
4.15
.1
</A>
,
. -
<A
href=
"#4.1
1.1"
>
4.11
.1
</A>
,
:
</P>
:
</P>
<PRE>
<PRE>
new_id = execute("SELECT nextval('person_id_seq')");
new_id = execute("SELECT nextval('person_id_seq')");
...
@@ -1205,23 +960,15 @@ BYTEA bytea
...
@@ -1205,23 +960,15 @@ BYTEA bytea
new_id = execute("SELECT currval('person_id_seq')");
new_id = execute("SELECT currval('person_id_seq')");
</PRE>
</PRE>
,
<A
href=
"#4.16"
><SMALL>
OID
</SMALL></A>
,
<SMALL>
INSERT
</SMALL>
,
, oid ,
4 . Perl, DBI Edmund Mergl' DBD::Pg,
oid
<I>
$sth-
>
{pg_oid_status}
</I>
<I>
$sth-
>
execute()
</I>
.
<H4><A
name=
"4.1
5.3"
>
4.15
.3
</A>
) ,
<H4><A
name=
"4.1
1.3"
>
4.11
.3
</A>
) ,
<I>
currval()
</I>
<I>
nextval()
</I>
<I>
currval()
</I>
<I>
nextval()
</I>
?
</H4>
?
</H4>
<P>
.
<i>
currval()
</i>
,
<P>
.
<i>
currval()
</i>
,
backend'
, .
</P>
, .
</P>
<H4><A
name=
"4.1
5.4"
>
4.15
.4
</A>
)
<H4><A
name=
"4.1
1.4"
>
4.11
.4
</A>
)
?
?
, /SERIAL?
</H4>
, /SERIAL?
</H4>
...
@@ -1231,78 +978,32 @@ BYTEA bytea
...
@@ -1231,78 +978,32 @@ BYTEA bytea
.
</P>
.
</P>
<H4><A
name=
"4.1
6"
>
4.16
</A>
)
<SMALL>
OID
</SMALL>
?
<H4><A
name=
"4.1
2"
>
4.12
</A>
)
<SMALL>
OID
</SMALL>
?
<SMALL>
TID
</SMALL>
?
</H4>
<SMALL>
TID
</SMALL>
?
</H4>
<P>
<SMALL>
OID
</SMALL>
<P>
, PostgreSQL ,
PostgreSQL. , PostgreSQL
<SMALL>
OID
</SMALL>
<SMALL>
OID
</SMALL>
.
<SMALL>
OID
</SMALL>
<SMALL>
WITHOUT OIDS
</SMALL>
. O
<SMALL>
ID
</SMALL>
-
<I>
initdb
</I>
16384 (
4- .
<I>
include/access/transam.h
</I>
).
, 4 ,
<SMALL>
OID
</SMALL>
. ,
O
<SMALL>
ID
</SMALL>
. PostgreSQL
<SMALL>
OID
</SMALL>
-
<SMALL>
OID
</SMALL>
.
</P>
, PostgreSQL.
</P>
<P>
,
<P>
PostgreSQL
<SMALL>
OID
</SMALL>
<SMALL>
SERIAL
</SMALL>
.
<SMALL>
OID
</SMALL>
O
<SMALL>
ID
</SMALL>
,
<SMALL>
SERIAL
</SMALL>
,
.
. 8-
<SMALL>
OID
</SMALL>
<SMALL>
OID
</SMALL>
<SMALL>
SERIAL8
</SMALL>
.
<SMALL>
OID
</SMALL>
.
</P>
<P>
<SMALL>
OID
</SMALL>
, .
<SMALL>
OID
</SMALL>
-
<SMALL>
OID
</SMALL>
, :
</P>
<PRE>
CREATE TABLE new_table(mycol int);
SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table;
COPY tmp_table TO '/tmp/pgtable';
COPY new_table WITH OIDS FROM '/tmp/pgtable';
DROP TABLE tmp_table;
</PRE>
<P>
O
<SMALL>
ID
</SMALL>
4-
4 . , ,
,
.
</P>
<P>
T
<SMALL>
ID
</SMALL>
<P>
T
<SMALL>
ID
</SMALL>
offset . T
<SMALL>
ID
</SMALL>
offset . T
<SMALL>
ID
</SMALL>
.
.
<P>
T
<SMALL>
ID
</SMALL>
<P>
T
<SMALL>
ID
</SMALL>
.
</P>
.
</P>
<H4><A
name=
"4.17"
>
4.17
</A>
)
PostgreSQL?
</H4>
<P>
. :
</P>
<UL>
<LI>
table, relation, class
</LI>
<LI>
row, record, tuple
</LI>
<LI>
column, field, attribute
</LI>
<LI>
retrieve, select
</LI>
<LI>
replace, update
</LI>
<H4><A
name=
"4.13"
>
4.13
</A>
)
<I>
"ERROR: Memory
<LI>
append, insert
</LI>
<LI><SMALL>
OID
</SMALL>
, serial value
</LI>
<LI>
portal, cursor
</LI>
<LI>
range variable, table name, table alias
</LI>
</UL>
<P>
<A
href=
"http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html"
>
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
</A></P>
<H4><A
name=
"4.18"
>
4.18
</A>
)
<I>
"ERROR: Memory
exhausted in AllocSetAlloc()"
</I>
?
</H4>
exhausted in AllocSetAlloc()"
</I>
?
</H4>
<P>
<P>
...
@@ -1322,12 +1023,12 @@ BYTEA bytea
...
@@ -1322,12 +1023,12 @@ BYTEA bytea
, backend ,
, backend ,
.
.
<H4><A
name=
"4.1
9"
>
4.19
</A>
) , PostgreSQL
<H4><A
name=
"4.1
4"
>
4.14
</A>
) , PostgreSQL
?
</H4>
?
</H4>
<P>
<I>
psql
</I>
,
<CODE>
SELECT version();
</CODE></P>
<P>
<I>
psql
</I>
,
<CODE>
SELECT version();
</CODE></P>
<H4><A
name=
"4.
20"
>
4.20
</A>
)
<H4><A
name=
"4.
15"
>
4.15
</A>
)
<I>
"invalid large obj descriptor"
</I>
?
</H4>
<I>
"invalid large obj descriptor"
</I>
?
</H4>
<P>
<P>
...
@@ -1345,46 +1046,15 @@ BYTEA bytea
...
@@ -1345,46 +1046,15 @@ BYTEA bytea
<P>
<SMALL>
ODBC
</SMALL>
,
<P>
<SMALL>
ODBC
</SMALL>
,
<CODE>
auto-commit off.
</CODE></P>
<CODE>
auto-commit off.
</CODE></P>
<H4><A
name=
"4.
21"
>
4.21
</A>
)
<H4><A
name=
"4.
16"
>
4.16
</A>
)
?
</H4>
?
</H4>
<P>
<I>
CURRENT_TIMESTAMP
</I>
:
</P>
<P>
<I>
CURRENT_TIMESTAMP
</I>
:
</P>
<PRE>
<PRE>
<CODE>
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
</CODE>
</PRE>
</PRE>
<H4><A
name=
"4.22"
>
4.22
</A>
) ,
<H4><A
name=
"4.17"
>
4.17
</A>
) ?
</H4>
<CODE><SMALL>
IN
</SMALL></CODE>
?
</H4>
<P>
7.4,
.
, ,
<CODE><SMALL>
IN
</SMALL></CODE>
.
,
<CODE>
IN
</CODE>
<CODE>
EXISTS
</CODE>
:
</P>
<PRE>
SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
</PRE>
:
<PRE>
SELECT *
FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
</PRE>
,
<CODE>
subcol
</CODE>
.
<P>
7.4 ,
<CODE>
IN
</CODE>
,
<CODE>
EXISTS
</CODE></P>
.
<H4><A
name=
"4.23"
>
4.23
</A>
) ?
</H4>
<P>
PostgreSQL ,
<P>
PostgreSQL ,
SQL. :
</P>
SQL. :
</P>
...
@@ -1400,32 +1070,15 @@ BYTEA bytea
...
@@ -1400,32 +1070,15 @@ BYTEA bytea
</PRE>
</PRE>
<P>
t1.col t2.col,
<P>
t1.col t2.col,
t1 ( t2).
t1 ( t2).
<SMALL>
RIGHT
</SMALL>
<SMALL>
RIGHT
</SMALL>
t2.
<SMALL>
FULL
</SMALL>
t2.
<SMALL>
FULL
</SMALL>
t1 t2.
<SMALL>
OUTER
</SMALL>
t1 t2.
<SMALL>
OUTER
</SMALL>
<SMALL>
LEFT
</SMALL>
,
<SMALL>
LEFT
</SMALL>
,
<SMALL>
RIGHT
</SMALL>
<SMALL>
FULL
</SMALL>
.
<SMALL>
RIGHT
</SMALL>
<SMALL>
FULL
</SMALL>
.
<SMALL>
INNER
</SMALL>
.
</P>
<SMALL>
INNER
</SMALL>
.
</P>
<P>
,
<H4><A
name=
"4.18"
>
4.18
</A>
) ,
<SMALL>
UNION
</SMALL>
<SMALL>
NOT IN
</SMALL>
. ,
<I>
tab1
</I>
<I>
tab2
</I>
,
<I></I>
:
<BR>
<BR>
</P>
<PRE>
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
</PRE>
<H4><A
name=
"4.24"
>
4.24
</A>
) ,
?
</H4>
?
</H4>
<P>
.
<P>
.
...
@@ -1433,20 +1086,19 @@ BYTEA bytea
...
@@ -1433,20 +1086,19 @@ BYTEA bytea
, , .
</P>
, , .
</P>
<P><I>
contrib/dblink
</I>
,
<P><I>
contrib/dblink
</I>
,
. ,
. ,
.
</P>
.
</P>
<H4><A
name=
"4.
25"
>
4.25
</A>
)
?
</H4>
<H4><A
name=
"4.
19"
>
4.19
</A>
)
?
</H4>
<P>
7.3,
<P>
, ,
- ,
<A
href=
"http://techdocs.postgresql.org/guides/SetReturningFunctions"
>
<href
="
http:
//
techdocs
.
postgresql
.
org
/
guides
/
SetReturningFunctions
"
>
http://techdocs.postgresql.org/guides/SetReturningFunctions
</A>
.
</P>
http://techdocs.postgresql.org/guides/SetReturningFunctions
</a>
.
</P>
<H4><A
name=
"4.2
6"
>
4.26
</A>
) /
<H4><A
name=
"4.2
0"
>
4.20
</A>
) /
PL/PgSQL?
</H4>
PL/PgSQL?
</H4>
<P>
PL/PgSQL
<P>
PL/PgSQL
, PL/PgSQL
, PL/PgSQL
,
,
, ,
, ,
...
@@ -1455,7 +1107,7 @@ BYTEA bytea
...
@@ -1455,7 +1107,7 @@ BYTEA bytea
PL/PgSQL.
PL/PgSQL.
.
</P>
.
</P>
<h4><a
name=
"4.2
7"
>
4.27
</a>
) ?
<h4><a
name=
"4.2
1"
>
4.21
</a>
) ?
</h4>
</h4>
<ul>
<ul>
<li><i>
contrib/pgcrypto
</i>
<li><i>
contrib/pgcrypto
</i>
...
@@ -1468,8 +1120,7 @@ BYTEA bytea
...
@@ -1468,8 +1120,7 @@ BYTEA bytea
,
,
stunnel ssh, SSL PostgreSQL).
</li>
stunnel ssh, SSL PostgreSQL).
</li>
<li>
,
<li>
,
7.3. ,
.
</li>
<i>
PASSWORD_ENCRYPTION
</i>
<i>
postgresql.conf
</i>
.
</li>
<li>
, .
</li>
<li>
, .
</li>
</ul>
</ul>
<HR>
<HR>
...
@@ -1489,7 +1140,7 @@ BYTEA bytea
...
@@ -1489,7 +1140,7 @@ BYTEA bytea
<I>
contrib/
</I>
.
</P>
<I>
contrib/
</I>
.
</P>
<H4><A
name=
"5.3"
>
5.3
</A>
) C ,
<H4><A
name=
"5.3"
>
5.3
</A>
) C ,
?
</H4>
?
</H4>
<P>
PostgreSQL, 7.3, ,
<P>
PostgreSQL, 7.3, ,
C, PL/PgSQL SQL.
C, PL/PgSQL SQL.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment