- ïÔ×ÅÔÙ ÎÁ ÞÁÓÔÏ ÚÁÄÁ×ÁÅÍÙÅ ×ÏÐÒÏÓÙ ÐÏ PostgreSQL
+ Otvety na chasto zadavaemye voprosy po PostgreSQL
- äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: óÒÅÄÁ 9 ïËÔÑÂÒÑ 23:14:53 EDT 2002
+ Data poslednego obnovleniya: Voskresen'e 20 Oktyabrya 20:47:14 EDT
+ 2002
- áÎÇÌÉÊÓËÉÊ ×ÁÒÉÁÎÔ ÓÏÐÒÏ×ÏÖÄÁÅÔ: âÒÀÓ íÏÍØÑÎ (Bruce Momjian)
+ Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian)
(pgman@candle.pha.pa.us)
- ðÅÒÅ×ÅÌ ÎÁ ÒÕÓÓËÉÊ: ÷ÉËÔÏÒ ÷ÉÓÌÏÂÏËÏ× (victor_v@permonline.ru)
+ Perevel na russkij: Viktor Vislobokov (victor_v@permonline.ru)
- óÁÍÕÀ Ó×ÅÖÕÀ ÁÎÇÌÉÊÓËÕÀ ×ÅÒÓÉÀ ÄÏËÕÍÅÎÔÁ ÍÏÖÎÏ ÎÁÊÔÉ ÎÁ
+ Samuyu svezhuyu anglijskuyu versiyu dokumenta mozhno najti na
http://www.PostgreSQL.org/docs/faq-english.html.
- ïÔ×ÅÔÙ ÎÁ ×ÏÐÒÏÓÙ ÓÐÅÃÉÆÉÞÎÙÅ ÄÌÑ ËÏÎËÒÅÔÎÙÈ ÐÌÁÔÆÏÒÍ ÍÏÖÎÏ ÎÁÊÔÉ ÎÁ
- http://www.PostgreSQL.org/users-lounge/docs/faq.html.
+ Otvety na voprosy specifichnye dlya konkretnyh platform mozhno najti
+ na http://www.PostgreSQL.org/users-lounge/docs/faq.html.
_________________________________________________________________
- ïÂÝÉÅ ×ÏÐÒÏÓÙ
+ Obschie voprosy
- 1.1) þÔÏ ÔÁËÏÅ PostgreSQL? ëÁË ÐÒÏÉÚÎÏÓÉÔÓÑ ÜÔÏ ÎÁÚ×ÁÎÉÅ?
- 1.2) ëÁËÏ×Ù Á×ÔÏÒÓËÉÅ ÐÒÁ×Á ÎÁ PostgreSQL?
- 1.3) îÁ ËÁËÉÈ Unix ÐÌÁÔÆÏÒÍÁÈ ÒÁÂÏÔÁÅÔ PostgreSQL?
- 1.4) óÕÝÅÓÔ×ÕÀÔ ÌÉ ×ÅÒÓÉÉ ÐÏÒÔÉÒÏ×ÁÎÎÙÅ ÎÅ ÎÁ Unix ÓÉÓÔÅÍÙ?
- 1.5) çÄÅ ÍÏÖÎÏ ×ÚÑÔØ PostgreSQL?
- 1.6) çÄÅ ÐÏÌÕÞÉÔØ ÐÏÄÄÅÒÖËÕ?
- 1.7) ëÁËÁÑ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ?
- 1.8) ëÁËÁÑ ÄÏËÕÍÅÎÔÁÃÉÑ ÉÍÅÅÔÓÑ × ÎÁÌÉÞÉÉ?
- 1.9) ëÁË ÎÁÊÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ÉÚ×ÅÓÔÎÙÈ ÏÛÉÂËÁÈ ÉÌÉ ÏÔÓÕÔÓÔ×ÕÀÝÉÈ
- ×ÏÚÍÏÖÎÏÓÔÑÈ?
- 1.10) ëÁË ÎÁÕÞÉÔØÓÑ SQL?
- 1.11) òÅÛÅÎÁ ÌÉ × PostgreSQL ÐÒÏÂÌÅÍÁ 2000-ÇÏ ÇÏÄÁ (Y2K)?
- 1.12) ëÁË ÐÒÉÓÏÅÄÉÎÉÔÓÑ Ë ËÏÍÁÎÄÅ ÒÁÚÒÁÂÏÔÞÉËÏ×?
- 1.13) ëÁË ÏÔÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ?
- 1.14) ëÁË ÓÒÁ×ÎÉ×ÁÔØ PostgreSQL Ó ÄÒÕÇÉÍÉ óõâä?
- 1.15) ëÁË ÏËÁÚÁÔØ ÆÉÎÁÎÓÏ×ÕÀ ÐÏÍÏÝØ PostgreSQL?
-
- ÷ÏÐÒÏÓÙ ÐÏÌØÚÏ×ÁÔÅÌÅÊ ÐÏ ËÌÉÅÎÔÓËÏÊ ÞÁÓÔÉ
+ 1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie?
+ 1.2) Kakovy avtorskie prava na PostgreSQL?
+ 1.3) Na kakih Unix platformah rabotaet PostgreSQL?
+ 1.4) Suschestvuyut li versii portirovannye ne na Unix sistemy?
+ 1.5) Gde mozhno vzyat' PostgreSQL?
+ 1.6) Gde poluchit' podderzhku?
+ 1.7) Kakaya poslednyaya versiya?
+ 1.8) Kakaya dokumentaciya imeetsya v nalichii?
+ 1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
+ vozmozhnostyah?
+ 1.10) Kak nauchit'sya SQL?
+ 1.11) Reshena li v PostgreSQL problema 2000-go goda (Y2K)?
+ 1.12) Kak prisoedinitsya k komande razrabotchikov?
+ 1.13) Kak otravit' soobschenie ob oshibke?
+ 1.14) Kak sravnivat' PostgreSQL s drugimi SUBD?
+ 1.15) Kak okazat' finansovuyu pomosch' PostgreSQL?
+
+ Voprosy pol'zovatelej po klientskoj chasti
- 2.1) óÕÝÅÓÔ×ÕÀÔ ÌÉ ODBC ÄÒÁÊ×ÅÒÁ ÄÌÑ PostgreSQL?
- 2.2) ëÁËÉÅ ÉÎÓÔÒÕÍÅÎÔÙ ÓÕÝÅÓÔ×ÕÀÔ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ PostgreSQL ÞÅÒÅÚ
- Web?
- 2.3) åÓÔØ ÌÉ Õ PostgreSQL ÇÒÁÆÉÞÅÓËÉÊ ÉÎÔÅÒÆÅÊÓ ÐÏÌØÚÏ×ÁÔÅÌÑ?
- çÅÎÅÒÁÔÏÒ ÏÔÞÅÔÏ×? ÷ÓÔÒÏÅÎÎÙÊ ÉÎÔÅÒÆÅÊÓ ÄÌÑ ÑÚÙËÁ ÚÁÐÒÏÓÏ×?
- 2.4) ëÁËÉÅ ÑÚÙËÉ ÍÏÇÕÔ ×ÚÁÉÍÏÄÅÊÓÔ×Ï×ÁÔØ Ó PostgreSQL?
-
- ÷ÏÐÒÏÓÙ ÁÄÍÉÎÉÓÔÒÉÒÏ×ÁÎÉÑ
+ 2.1) Suschestvuyut li ODBC drajvera dlya PostgreSQL?
+ 2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL
+ cherez Web?
+ 2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
+ Generator otchetov? Vstroennyj interfejs dlya yazyka zaprosov?
+ 2.4) Kakie yazyki mogut vzaimodejstvovat' s PostgreSQL?
+
+ Voprosy administrirovaniya
- 3.1) ëÁË ÍÎÅ ÕÓÔÁÎÏ×ÉÔØ PostgreSQL × ÍÅÓÔÏ ÏÔÌÉÞÎÏÅ ÏÔ
+ 3.1) Kak mne ustanovit' PostgreSQL v mesto otlichnoe ot
/usr/local/pgsql?
- 3.2) ëÏÇÄÁ Ñ ÚÁÐÕÓËÁÀ postmaster, Ñ ÐÏÌÕÞÁÀ ÓÏÏÂÝÅÎÉÅ Bad System Call
- ÉÌÉ ÓÏÏÂÝÅÎÉÅ core dumped. ðÏÞÅÍÕ?
- 3.3) ëÏÇÄÁ Ñ ÐÙÔÁÀÓØ ÚÁÐÕÓÔÉÔØ postmaster, Ñ ÐÏÌÕÞÁÀ ÏÛÉÂËÉ
- IpcMemoryCreate. ðÏÞÅÍÕ?
- 3.4) ëÏÇÄÁ Ñ ÐÙÔÁÀÓØ ÚÁÐÕÓÔÉÔØ postmaster, Ñ ÐÏÌÕÞÁÀ ÏÛÉÂËÉ
- IpcSemaphoreCreate. ðÏÞÅÍÕ?
- 3.5) ëÁË ÍÎÅ ÕÐÒÁ×ÌÑÔØ ÓÏÅÄÉÎÅÎÉÑÍÉ Ó ÄÒÕÇÉÈ ËÏÍÐØÀÔÅÒÏ×?
- 3.6) ëÁËÉÅ ÎÁÓÔÒÏÊËÉ ÍÎÅ ÎÕÖÎÏ ÓÄÅÌÁÔØ ÄÌÑ ÕÌÕÞÛÅÎÉÑ
- ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ?
- 3.7) ëÁËÉÅ ×ÏÚÍÏÖÎÏÓÔÉ ÄÌÑ ÏÔÌÁÄËÉ ÅÓÔØ × ÎÁÌÉÞÉÉ?
- 3.8) ðÏÞÅÍÕ Ñ ÐÏÌÕÞÁÀ ÓÏÏÂÝÅÎÉÅ "Sorry, too many clients" ËÏÇÄÁ
- ÐÙÔÁÀÓØ ÐÏÄËÌÀÞÉÔØÓÑ Ë ÂÁÚÅ?
- 3.9) þÔÏ ÜÔÏ ÚÁ ÆÁÊÌÙ pg_sorttempNNN.NN × ÍÏÅÍ ËÁÔÁÌÏÇÅ Ó ÂÁÚÏÊ
- ÄÁÎÎÙÈ?
- 3.10) ðÏÞÅÍÕ ÎÅÏÂÈÏÄÉÍÏ ÄÅÌÁÔØ dump É restore ÐÒÉ ÏÂÎÏ×ÌÅÎÉÉ ×ÙÐÕÓËÏ×
+ 3.2) Kogda ya zapuskayu postmaster, ya poluchayu soobschenie Bad
+ System Call ili soobschenie core dumped. Pochemu?
+ 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?
+ 3.7) Kakie vozmozhnosti dlya otladki est' v nalichii?
+ 3.8) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
+ pytayus' podklyuchit'sya k baze?
+ 3.9) CHto nahoditsya v kataloge pgsql_tmp?
+ 3.10) Pochemu neobhodimo delat' dump i restore pri obnovlenii vypuskov
PostgreSQL?
- ÷ÏÐÒÏÓÙ ÜËÓÐÌÕÁÔÁÃÉÉ
+ Voprosy `ekspluatacii
- 4.1) ÷ ÞÅÍ ÏÔÌÉÞÉÅ ÍÅÖÄÕ ÂÉÎÁÒÎÙÍ É ÎÏÒÍÁÌØÎÙÍ ËÕÒÓÏÒÏÍ?
- 4.2) ëÁË ×ÙÐÏÌÎÉÔØ SELECT ÔÏÌØËÏ ÄÌÑ ÎÅÓËÏÌØËÉÈ ÐÅÒ×ÙÈ ÓÔÒÏÞÅË
- ÚÁÐÒÏÓÁ?
- 4.3) ëÁË ÐÏÌÕÞÉÔØ ÓÐÉÓÏË ÔÁÂÌÉà ÉÌÉ ÄÒÕÇÉÈ ËÏÍÐÏÎÅÎÔÏ× × psql?
- 4.4) ëÁË ÕÄÁÌÉÔØ ËÏÌÏÎËÕ ÉÚ ÔÁÂÌÉÃÙ?
- 4.5) ëÁËÏ×Ù ÍÁËÓÉÍÁÌØÎÙÅ ÒÁÚÍÅÒÙ ÄÌÑ ÚÁÐÉÓÅÊ, ÔÁÂÌÉÃ É ÂÁÚÙ ÄÁÎÎÙÈ?
- 4.6) ëÁË ÍÎÏÇÏ ÄÉÓËÏ×ÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á × ÂÁÚÅ ÄÁÎÎÙÈ ÎÕÖÎÏ ÄÌÑ
- ÓÏÈÒÁÎÅÎÉÑ ÄÁÎÎÙÈ ÉÚ ÏÂÙÞÎÏÇÏ ÔÅËÓÔÏ×ÏÇÏ ÆÁÊÌÁ?
- 4.7) ëÁË ÍÎÅ ÕÂÅÄÉÔØÓÑ, ÞÔÏ ÓÕÝÅÓÔ×ÕÀÔ ÎÕÖÎÙÅ ÍÎÅ ÔÁÂÌÉÃÙ, ÉÎÄÅËÓÙ,
- ÂÁÚÙ ÄÁÎÎÙÈ É ÐÏÌØÚÏ×ÁÔÅÌÉ?
- 4.8) õ ÍÅÎÑ ÍÅÄÌÅÎÎÏ ÒÁÂÏÔÁÀÔ ÚÁÐÒÏÓÙ ÉÌÉ ÎÅ ÐÒÏÉÓÈÏÄÉÔ ÉÓÐÏÌØÚÏ×ÁÎÉÑ
- ÉÎÄÅËÓÏ×. ðÏÞÅÍÕ?
- 4.9) ëÁË ÐÏÓÍÏÔÒÅÔØ ÎÁ ÔÏ, ËÁË ÏÐÔÉÍÉÚÁÔÏÒ ×ÙÐÏÌÎÑÅÔ ÍÏÊ ÚÁÐÒÏÓ?
- 4.10) þÔÏ ÔÁËÏÅ R-tree ÉÎÄÅËÓ?
- 4.11) þÔÏ ÔÁËÏÅ Genetic Query Optimizer?
- 4.12) ëÁË ÍÎÅ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ É ÐÏÉÓË
- ÎÅÚÁ×ÉÓÉÍÙÊ ÏÔ ÒÅÇÉÓÔÒÁ ÂÕË× ÐÏÉÓË ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ? ëÁË ÍÎÅ
- ÉÓÐÏÌØÚÏ×ÁÔØ ÉÎÄÅËÓ ÄÌÑ ÐÏÉÓËÁ ÎÅÚÁ×ÉÓÉÍÏÇÏ ÏÔ ÒÅÇÉÓÔÒÁ ÂÕË×?
- 4.13) ëÁË Ñ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ, ÞÔÏ ÚÎÁÞÅÎÉÅ ÐÏÌÑ ÒÁ×ÎÏ NULL × ËÁËÏÍ-ÌÉÂÏ
- ÚÁÐÒÏÓÅ?
- 4.14) ëÁËÏ×Ù ÏÔÌÉÞÉÑ ÍÅÖÄÕ ÒÁÚÎÙÍÉ ÓÉÍ×ÏÌØÎÙÍÉ ÔÉÐÁÍÉ?
- 4.15.1) ëÁË ÍÎÅ ÓÏÚÄÁÔØ ÐÏÌÅ serial/Ó-Á×ÔÏ-Õ×ÅÌÉÞÅÎÉÅÍ?
- 4.15.2) ëÁË ÍÎÅ ÐÏÌÕÞÉÔØ ÚÎÁÞÅÎÉÅ ÐÒÉ ×ÓÔÁ×ËÅ SERIAL?
- 4.15.3) îÅ ÍÏÖÅÔ ÌÉ ÐÏÌÕÞÉÔØÓÑ ÔÁË, ÞÔÏ ÉÓÐÏÌØÚÏ×ÁÎÉÅ currval() É
- nextval() ÐÒÉ×ÅÄÅÔ Ë ÚÁÃÉËÌÉÒÏ×ÁÎÉÀ Ó ÄÒÕÇÉÍÉ ÐÏÌØÚÏ×ÁÔÅÌÑÍÉ?
- 4.15.4) ðÏÞÅÍÕ ÞÉÓÌÁ ÉÚ ÍÏÅÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÎÅ ÉÓÐÏÌØÚÕÀÔÓÑ ÓÎÏ×Á
- ÐÒÉ ÏÔÍÅÎÅ ÔÒÁÎÚÁËÃÉÉ? ðÏÞÅÍÕ ÓÏÚÄÁÀÔÓÑ ÒÁÚÒÙ×Ù ÐÒÉ ÎÕÍÅÒÁÃÉÉ ×
- ËÏÌÏÎËÅ, ÇÄÅ Ñ ÉÓÐÏÌØÚÕÀ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ/SERIAL?
- 4.16) þÔÏ ÔÁËÏÅ OID? þÔÏ ÔÁËÏÅ TID?
- 4.17) þÔÏ ÏÚÎÁÞÁÀÔ ÎÅËÏÔÏÒÙÅ ÔÅÒÍÉÎÙ ÉÓÐÏÌØÚÕÅÍÙÅ × PostgreSQL?
- 4.18) ðÏÞÅÍÕ Ñ ÐÏÌÕÞÁÀ ÏÛÉÂËÕ "ERROR: Memory exhausted in
+ 4.1) V chem otlichie mezhdu binarnym i normal'nym kursorom?
+ 4.2) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek
+ zaprosa?
+ 4.3) Kak poluchit' spisok tablic ili drugih komponentov v psql?
+ 4.4) Kak udalit' kolonku iz tablicy?
+ 4.5) Kakovy maksimal'nye razmery dlya zapisej, tablic i bazy dannyh?
+ 4.6) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya
+ sohraneniya dannyh iz obychnogo tekstovogo fajla?
+ 4.7) Kak mne ubedit'sya, chto suschestvuyut nuzhnye mne tablicy,
+ indeksy, bazy dannyh i pol'zovateli?
+ 4.8) U menya medlenno rabotayut zaprosy ili ne proishodit
+ ispol'zovaniya indeksov. Pochemu?
+ 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
+ ispol'zovat' indeks dlya poiska nezavisimogo ot registra bukv?
+ 4.13) Kak ya mogu opredelit', chto znachenie polya ravno NULL v
+ kakom-libo zaprose?
+ 4.14) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
+ 4.15.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
+ 4.15.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
+ 4.15.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
+ nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
+ 4.15.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya
+ snova pri otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii
+ v kolonke, gde ya ispol'zuyu posledovatel'nost'/SERIAL?
+ 4.16) CHto takoe OID? CHto takoe TID?
+ 4.17) CHto oznachayut nekotorye terminy ispol'zuemye v PostgreSQL?
+ 4.18) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
AllocSetAlloc()"?
- 4.19) ëÁË ÍÎÅ ÕÚÎÁÔØ, ËÁËÁÑ ×ÅÒÓÉÑ PostgreSQL ÚÁÐÕÝÅÎÁ?
- 4.20) ðÏÞÅÍÕ ÐÒÉ ÒÁÂÏÔÅ Ó ÍÏÉÍ ÂÏÌØÛÉÍ ÏÂßÅËÔÏÍ Ñ ÐÏÌÕÞÁÀ ÏÛÉÂËÕ
+ 4.19) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
+ 4.20) Pochemu pri rabote s moim bol'shim ob"ektom ya poluchayu oshibku
"invalid large obj descriptor"?
- 4.21) ëÁË ÍÎÅ ÓÏÚÄÁÔØ ËÏÌÏÎËÕ ËÏÔÏÒÁÑ ÐÏ ÕÍÏÌÞÁÎÉÀ ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ
- ÔÅËÕÝÅÅ ×ÒÅÍÑ?
- 4.22) ðÏÞÅÍÕ ÍÏÉ ÐÏÄÚÁÐÒÏÓÙ, ÉÓÐÏÌØÚÕÀÝÉÅ IN ÔÁË ÍÅÄÌÅÎÎÏ ÒÁÂÏÔÁÅÀÔ?
- 4.23) ëÁË ×ÙÐÏÌÎÉÔØ ×ÎÅÛÎÅÅ Ó×ÑÚÙ×ÁÎÉÅ?
- 4.24) ëÁË ×ÙÐÏÌÎÑÔØ ÚÁÐÒÏÓÙ, ÉÓÐÏÌØÚÕÀÝÉÅ ÎÅÓËÏÌØËÏ ÂÁÚ ÄÁÎÎÙÈ?
- 4.25) ëÁË ÍÎÅ ×ÅÒÎÕÔØ ÉÚ ÆÕÎËÃÉÉ ÎÅÓËÏÌØËÏ ÚÁÐÉÓÅÊ?
- 4.26) ðÏÞÅÍÕ Ñ ÎÅ ÍÏÇÕ ÎÁÄÅÖÎÏ ÓÏÚÄÁ×ÁÔØ/ÕÄÁÌÑÔØ ×ÒÅÍÅÎÎÙÅ ÔÁÂÌÉÃÙ ×
- ÆÕÎËÃÉÑÈ PL/PgSQL?
- 4.27) ëÁËÉÅ ÏÐÃÉÉ ÒÅÐÌÉËÁÃÉÉ ÓÕÝÅÓÔ×ÕÀÔ?
-
- òÁÓÛÉÒÅÎÉÑ PostgreSQL
+ 4.21) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
+ tekuschee vremya?
+ 4.22) Pochemu moi podzaprosy, ispol'zuyuschie IN tak medlenno
+ rabotaeyut?
+ 4.23) Kak vypolnit' vneshnee svyazyvanie?
+ 4.24) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
+ 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?
+ 4.27) Kakie opcii replikacii suschestvuyut?
+ 4.28) Kakie opcii shifrovaniya suschestvuyut?
+
+ Rasshireniya PostgreSQL
- 5.1) ñ ÎÁÐÉÓÁÌ ÆÕÎËÃÉÀ ÏÐÒÅÄÅÌÑÅÍÕÀ ÐÏÌØÚÏ×ÁÔÅÌÅÍ. ëÏÇÄÁ Ñ ÚÁÐÕÓËÁÀ ÅÅ
- × psql, ÐÏÞÅÍÕ Ñ ÐÏÌÕÞÁÀ dump core?
- 5.2) ëÁË Ñ ÍÏÇÕ ×ÎÅÓÔÉ ÎÅËÏÔÏÒÙÅ ËÌÁÓÓÎÙÅ ÎÏ×ÙÅ ÔÉÐÙ É ÆÕÎËÃÉÉ ×
+ 5.1) YA napisal funkciyu opredelyaemuyu pol'zovatelem. Kogda ya
+ zapuskayu ee v psql, pochemu ya poluchayu dump core?
+ 5.2) Kak ya mogu vnesti nekotorye klassnye novye tipy i funkcii v
PostgreSQL?
- 5.3) ëÁË ÍÎÅ ÎÁÐÉÓÁÔØ C ÆÕÎËÃÉÀ, ×ÏÚ×ÒÁÝÁÀÝÕÀ ÚÁÐÉÓØ?
- 5.4) ñ ÉÚÍÅÎÉÌ ÉÓÈÏÄÎÙÊ ÆÁÊÌ. ðÏÞÅÍÕ ÐÏÓÌÅ ÐÅÒÅËÏÍÐÉÌÑÃÉÉ Ñ ÎÅ ×ÉÖÕ
- ÉÚÍÅÎÅÎÉÊ?
+ 5.3) Kak mne napisat' C funkciyu, vozvraschayuschuyu zapis'?
+ 5.4) YA izmenil ishodnyj fajl. Pochemu posle perekompilyacii ya ne
+ vizhu izmenenij?
_________________________________________________________________
- ïÂÝÉÅ ×ÏÐÒÏÓÙ
+ Obschie voprosy
- 1.1) þÔÏ ÔÁËÏÅ PostgreSQL?
+ 1.1) CHto takoe PostgreSQL? Kak proiznositsya `eto nazvanie?
- PostgreSQL ÐÒÏÉÚÎÏÓÉÔÓÑ Post-Gres-Q-L (ðÏÓÔ-çÒÅÓ-ëØÀ-üÌ).
-
- PostgreSQL - ÜÔÏ ÒÁÓÛÉÒÅÎÉÅ óõâä POSTGRES, ÉÓÓÌÅÄÏ×ÁÔÅÌØÓËÉÊ ÐÒÏÔÏÔÉÐ
- ÎÏ×ÏÇÏ ÐÏËÏÌÅÎÉÑ óõâä. PostgreSQL ÏÄÎÏ×ÒÅÍÅÎÎÏ ÓÏÈÒÁÎÑÅÔ ÍÏÝÎÕÀ ÍÏÄÅÌØ
- ÄÁÎÎÙÈ É ÏÂÝÉÒÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÔÉÐÏ× POSTGRES, É ÚÁÍÅÝÁÅÔ ÑÚÙË ÚÁÐÒÏÓÏ×
- PostQuel ÎÁ ÒÁÓÛÉÒÅÎÎÏÅ ÐÏÄÍÎÏÖÅÓÔ×Ï SQL. PostgreSQL - ÜÔÏ Ó×ÏÂÏÄÎÏÅ É
- ÐÏÌÎÏÓÔØÀ ÏÔËÒÙÔÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ.
+ PostgreSQL proiznositsya Post-Gres-Q-L (Post-Gres-K'yu-`El).
+
+ PostgreSQL - `eto rasshirenie SUBD POSTGRES, issledovatel'skij
+ prototip novogo pokoleniya SUBD. PostgreSQL odnovremenno sohranyaet
+ moschnuyu model' dannyh i obschirnoe kolichestvo tipov POSTGRES, i
+ zameschaet yazyk zaprosov PostQuel na rasshirennoe podmnozhestvo SQL.
+ PostgreSQL - `eto svobodnoe i polnost'yu otkrytoe programmnoe
+ obespechenie.
+
+ Razrabotku PostgreSQL vypolnyaet komanda razrabotchikov, vse
+ uchastniki kotoroj podpisany na spisok rassylki razrabotchikov. V
+ nastoyaschee vremya, ih koordinatorom yavlyaetsya Mark Fornaj (Marc G.
+ Fournier) (scrappy@PostgreSQL.org). (Sm. sekciyu 1.6 o tom, kak
+ podklyuchit'sya k razrabotke). `Eta komanda teper' otvechaet za vsyu
+ razrabotku PostgreSQL.
+
+ 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?
+
+ PostgreSQL popadaet pod dejstvie sleduyuschego COPYRIGHT:
- òÁÚÒÁÂÏÔËÕ PostgreSQL ×ÙÐÏÌÎÑÅÔ ËÏÍÁÎÄÁ, Ó×ÑÚÁÎÎÁÑ ÞÅÒÅÚ Internet, ×ÓÅ
- ÕÞÁÓÔÎÉËÉ ËÏÔÏÒÏÊ ÐÏÄÐÉÓÁÎÙ ÎÁ ÓÐÉÓÏË ÒÁÓÓÙÌËÉ ÒÁÚÒÁÂÏÔÞÉËÏ×. ÷
- ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ, ÉÈ ËÏÏÒÄÉÎÁÔÏÒÏÍ Ñ×ÌÑÅÔÓÑ íÁÒË æÏÒÎÁÊ (Marc G.
- Fournier) (scrappy@PostgreSQL.org). (óÍ. ÎÉÖÅ Ï ÔÏÍ, ËÁË ÐÏÄËÌÀÞÉÔØÓÑ
- Ë ÒÁÚÒÁÂÏÔËÅ). üÔÁ ËÏÍÁÎÄÁ ÔÅÐÅÒØ ÏÔ×ÅÞÁÅÔ ÚÁ ×ÓÀ ÒÁÚÒÁÂÏÔËÕ
- PostgreSQL.
+ Sistema Upravleniya Bazami Dannyh PostgreSQL
- á×ÔÏÒÁÍÉ PostgreSQL 1.01 Ñ×ÌÑÀÔÓÑ üÎÄÒÀ à (Andrew Yu) É äÖÏÌÉ þÅÎ
- (Jolly Chen). íÎÏÇÉÅ ÄÒÕÇÉÅ ×ÎÅÓÌÉ Ó×ÏÊ ×ËÌÁÄ × ÐÅÒÅÎÏÓ ÎÁ ÄÒÕÇÉÅ
- ÐÌÁÔÆÏÒÍÙ, ÔÅÓÔÉÒÏ×ÁÎÉÅ, ÏÔÌÁÄËÕ É ÒÁÓÛÉÒÅÎÉÅ ÜÔÏÇÏ ËÏÄÁ.
- ðÅÒ×ÏÎÁÞÁÌØÎÙÊ ËÏÄ Postgres, ÉÚ ËÏÔÏÒÏÇÏ ÐÏÑ×ÉÌÓÑ PostgreSQL, ÂÙÌ
- ÉÔÏÇÏÍ ÕÓÉÌÉÊ ÍÎÏÇÉÈ ÁËÁÄÅÍÉÞÅÓËÉÈ ÓÔÕÄÅÎÔÏ×, ÎÅÁËÁÄÅÍÉÞÅÓËÉÈ
- ÓÔÕÄÅÎÔÏ× É ÍÎÏÖÅÓÔ×Á ÒÁÚÎÙÈ ÐÒÏÇÒÁÍÍÉÓÔÏ×, ÒÁÂÏÔÁ×ÛÉÈ ÐÏÄ
- ÒÕËÏ×ÏÄÓÔ×ÏÍ ÐÒÏÆÅÓÓÏÒÁ íÁÊËÌÁ óÔÏÕÎÂÒÅÊËÅÒÁ (Michael Stonebraker) ×
- ëÁÌÉÆÏÒÎÉÊÓËÏÍ ÕÎÉ×ÅÒÓÉÔÅÔÅ, âÅÒËÌÉ.
+ Portion copyright (c) 1996-2002, PostgreSQL Global Development Group
+ Portions Copyright (c) 1994-6 Regents of the University of California
- ðÅÒ×ÏÎÁÞÁÌØÎÏÅ ÉÍÑ, ÄÁÎÎÏÅ × âÅÒËÌÉ, ÂÙÌÏ Postgres. ëÏÇÄÁ × 1995 ÇÏÄÕ
- ÂÙÌÁ ÄÏÂÁ×ÌÅÎÁ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔØ SQL, ÜÔÏ ÉÍÑ ÂÙÌÏ ÉÚÍÅÎÅÎÏ ÎÁ
- Postgres95. îÏ É ÜÔÏ ÉÍÑ ÂÙÌÏ ÉÚÍÅÎÅÎÏ × ËÏÎÃÅ 1996 ÎÁ PostgreSQL.
+ Predostavlyayutsya prava na ispol'zovanie, kopirovanie, izmenenie i
+ rasprostranenie dannogo programmnogo obespecheniya i ego dokumentacii
+ dlya lyubyh celej, besplatno i bez podpisaniya kakogo-libo
+ soglasheniya, pri uslovii chto dlya kazhdoj kopii budut predostavleny
+ dannoe vyshe zamechanie ob avtorskih pravah, tekuschij paragraf i dva
+ sleduyuschih paragrafa.
+
+ KALIFORNIJSKIJ UNIVERSITET NE NESET NIKAKOJ OTVETSTVENNOSTI ZA LYUBYE
+ POVREZHDENIYA, VKLYUCHAYA POTERYU DOHODA, NANESENNYE PRYAMYM ILI
+ NEPRYAMYM, SPECIAL'NYM ILI SLUCHAJNYM ISPOL'ZOVANIEM DANNOGO
+ PROGRAMMNOGO OBESPECHENIYA ILI EGO DOKUMENTACII, DAZHE ESLI
+ KALIFORNIJSKIJ UNIVERSITET BYL IZVESCHEN O VOZMOZHNOSTI TAKIH
+ POVREZHDENIJ.
+
+ KALIFORNIJSKIJ UNIVERSITET SPECIAL'NO OTKAZYVAZYVAETSYA PREDOSTAVLYAT'
+ LYUBYE GARANTII, VKLYUCHAYA, NO NE OGRANICHIVAYAS' TOL'KO `ETIMI
+ GARANTIYAMI: NEYAVNYE GARANTII PRIGODNOSTI TOVARA ILI PRIGODNOSTI DLYA
+ OTDEL'NOJ CELI. DANNOE PROGRAMMNOE OBESPECHENIE PREDOSTAVLYAETSYA NA
+ OSNOVE PRICIPA "KAK EST'" I KALIFORNIJSKIJ UNIVERSITET NE OBYAZAN
+ PREDOSTAVLYAT' SOPROVOZHDENIE, PODDERZHKU, OBNOVLENIYA, RASSHIRENIYA
+ ILI IZMENENIYA.
+
+ Vysheizlozhennoe yavlyaetsya BSD licenziej, klassicheskoj licenziej
+ 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
+ sovmestimoj s Unix. V instrukcii po ustanovke, vy najdete spisok teh
+ platform, na kotoryh byli provedeny testovye zapuski PostgreSQL k
+ momentu vyhoda dannoj versii.
- 1.2) ëÁËÏ×Ù Á×ÔÏÒÓËÉÅ ÐÒÁ×Á ÎÁ PostgreSQL?
+ 1.4) Suschestvuyut li versii perenesennye ne na Unix sistemy?
- PostgreSQL ÐÏÐÁÄÁÅÔ ÐÏÄ ÄÅÊÓÔ×ÉÅ ÓÌÅÄÕÀÝÅÇÏ COPYRIGHT:
+ Klient
- óÉÓÔÅÍÁ õÐÒÁ×ÌÅÎÉÑ âÁÚÁÍÉ äÁÎÎÙÈ PostgreSQL
+ Dlya zapuska na platformah MS Windows vozmozhna kompilyaciya C
+ biblioteki libpq, psql, drugih interfesov i klientskih prilozhenij. V
+ `etom sluchae, klient zapuskaetsya na MS Windows i svyazyvaetsya po
+ TCP/IP s serverom, zapuschennym na odnoj iz podderzhivaemyh Unix
+ platform. V distributiv vklyuchaetsya fajl win32.mak dlya togo, chtoby
+ mozhno bylo provesti sborku biblioteki libpq i psql dlya Win32.
+ PostgreSQL takzhe rabotaet cherez ODBC.
- Portion copyright (c) 1996-2002, PostgreSQL Global Development Group
- Portions Copyright (c) 1994-6 Regents of the University of California
+ Server
+
+ Server BD mozhet byt' zapuschen na Windows NT i Win2k, ispol'zuya
+ biblioteku Cygwin, razrabotannuyu dlya perenosa programmnogo
+ obespecheniya Unix v NT. Smotrite pgsql/doc/FAQ_MSWIN v distributive
+ ili MS Windows FAQ na http://www.PostgreSQL.org/docs/faq-mswin.html.
+
+ PostgreSQL, sportirovannyj special'no dlya MS Win NT/2000/XP v
+ nastoyaschij moment nachal rabotat'.
- ðÒÅÄÏÓÔÁ×ÌÑÀÔÓÑ ÐÒÁ×Á ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ, ËÏÐÉÒÏ×ÁÎÉÅ, ÉÚÍÅÎÅÎÉÅ É
- ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÅ ÄÁÎÎÏÇÏ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ É ÅÇÏ ÄÏËÕÍÅÎÔÁÃÉÉ
- ÄÌÑ ÌÀÂÙÈ ÃÅÌÅÊ, ÂÅÓÐÌÁÔÎÏ É ÂÅÚ ÐÏÄÐÉÓÁÎÉÑ ËÁËÏÇÏ-ÌÉÂÏ ÓÏÇÌÁÛÅÎÉÑ,
- ÐÒÉ ÕÓÌÏ×ÉÉ ÞÔÏ ÄÌÑ ËÁÖÄÏÊ ËÏÐÉÉ ÂÕÄÕÔ ÐÒÅÄÏÓÔÁ×ÌÅÎÙ ÄÁÎÎÏÅ ×ÙÛÅ
- ÚÁÍÅÞÁÎÉÅ Ï Á×ÔÏÒÓËÉÈ ÐÒÁ×ÁÈ, ÔÅËÕÝÉÊ ÐÁÒÁÇÒÁÆ É Ä×Á ÓÌÅÄÕÀÝÉÈ
- ÐÁÒÁÇÒÁÆÁ.
-
- ëáìéæïòîéêóëéê õîé÷åòóéôåô îå îåóåô îéëáëïê ïô÷åôóô÷åîîïóôé úá ìàâùå
- ðï÷òåöäåîéñ, ÷ëìàþáñ ðïôåòà äïèïäá, îáîåóåîîùå ðòñíùí éìé îåðòñíùí,
- óðåãéáìøîùí éìé óìõþáêîùí éóðïìøúï÷áîéåí äáîîïçï ðòïçòáííîïçï
- ïâåóðåþåîéñ éìé åçï äïëõíåîôáãéé, äáöå åóìé ëáìéæïòîéêóëéê õîé÷åòóéôåô
- âùì éú÷åýåî ï ÷ïúíïöîïóôé ôáëéè ðï÷òåöäåîéê.
-
- ëáìéæïòîéêóëéê õîé÷åòóéôåô óðåãéáìøîï ïôëáúù÷áúù÷áåôóñ ðòåäïóôá÷ìñôø
- ìàâùå çáòáîôéé, ÷ëìàþáñ, îï îå ïçòáîéþé÷áñóø ôïìøëï üôéíé çáòáîôéñíé:
- îåñ÷îùå çáòáîôéé ðòéçïäîïóôé ôï÷áòá éìé ðòéçïäîïóôé äìñ ïôäåìøîïê
- ãåìé. äáîîïå ðòïçòáííîïå ïâåóðåþåîéå ðòåäïóôá÷ìñåôóñ îá ïóîï÷å ðòéãéðá
- "ëáë åóôø" é ëáìéæïòîéêóëéê õîé÷åòóéôåô îå ïâñúáî ðòåäïóôá÷ìñôø
- óïðòï÷ïöäåîéå, ðïääåòöëõ, ïâîï÷ìåîéñ, òáóûéòåîéñ éìé éúíåîåîéñ.
-
- ÷ÙÛÅÉÚÌÏÖÅÎÎÏÅ Ñ×ÌÑÅÔÓÑ BSD ÌÉÃÅÎÚÉÅÊ, ËÌÁÓÓÉÞÅÓËÏÊ ÌÉÃÅÎÚÉÅÊ
- ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ Ó ÏÔËÒÙÔÙÍ ËÏÄÏÍ. üÔÁ ÌÉÃÅÎÚÉÑ ÎÅ ÎÁËÌÁÄÙ×ÁÅÔ
- ÏÇÒÁÎÉÞÅÎÉÊ ÎÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÉÓÈÏÄÎÏÇÏ ËÏÄÁ. îÁÍ ÎÒÁ×ÉÔÓÑ ÜÔÁ ÌÉÃÅÎÚÉÑ
- É ÍÙ ÎÅ ÓÏÂÉÒÁÅÍÓÑ Å£ ÍÅÎÑÔØ.
-
- 1.3) îÁ ËÁËÉÈ Unix ÐÌÁÔÆÏÒÍÁÈ ÒÁÂÏÔÁÅÔ PostgreSQL?
-
- ïÂÙÞÎÏ, PostgreSQL ÍÏÖÅÔ ÒÁÂÏÔÁÔØ ÎÁ ÌÀÂÏÊ ÓÏ×ÒÅÍÅÎÎÏÊ ÐÌÁÔÆÏÒÍÅ
- ÓÏ×ÍÅÓÔÉÍÏÊ Ó Unix. ÷ ÉÎÓÔÒÕËÃÉÉ ÐÏ ÕÓÔÁÎÏ×ËÅ, ×Ù ÎÁÊÄÅÔÅ ÓÐÉÓÏË ÔÅÈ
- ÐÌÁÔÆÏÒÍ, ÎÁ ËÏÔÏÒÙÈ ÂÙÌÉ ÐÒÏ×ÅÄÅÎÙ ÔÅÓÔÏ×ÙÅ ÚÁÐÕÓËÉ PostgreSQL Ë
- ÍÏÍÅÎÔÕ ×ÙÈÏÄÁ ÄÁÎÎÏÊ ×ÅÒÓÉÉ.
-
- 1.4) óÕÝÅÓÔ×ÕÀÔ ÌÉ ×ÅÒÓÉÉ ÐÅÒÅÎÅÓÅÎÎÙÅ ÎÅ ÎÁ Unix ÓÉÓÔÅÍÙ?
-
- ëÌÉÅÎÔ
-
- äÌÑ ÚÁÐÕÓËÁ ÎÁ ÐÌÁÔÆÏÒÍÁÈ MS Windows ×ÏÚÍÏÖÎÁ ËÏÍÐÉÌÑÃÉÑ C ÂÉÂÌÉÏÔÅËÉ
- libpq, psql É ÄÒÕÇÉÈ ÉÎÔÅÒÆÅÓÏ× É ÂÉÎÁÒÎÙÈ ÆÁÊÌÏ×. ÷ ÜÔÏÍ ÓÌÕÞÁÅ,
- ËÌÉÅÎÔ ÚÁÐÕÓËÁÅÔÓÑ ÎÁ MS Windows É Ó×ÑÚÙ×ÁÅÔÓÑ ÐÏ TCP/IP Ó ÓÅÒ×ÅÒÏÍ,
- ÚÁÐÕÝÅÎÎÙÍ ÎÁ ÏÄÎÏÊ ÉÚ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ Unix ÐÌÁÔÆÏÒÍ. ÷ ÄÉÓÔÒÉÂÕÔÉ×
- ×ËÌÀÞÁÅÔÓÑ ÆÁÊÌ win31.mak ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÍÏÖÎÏ ÂÙÌÏ ÐÒÏ×ÅÓÔÉ ÓÂÏÒËÕ
- ÂÉÂÌÉÏÔÅËÉ libpq É psql ÄÌÑ Win32. PostgreSQL ÔÁËÖÅ ÒÁÂÏÔÁÅÔ ÞÅÒÅÚ
- ODBC.
-
- óÅÒ×ÅÒ
-
- óÅÒ×ÅÒ âä ÍÏÖÅÔ ÂÙÔØ ÚÁÐÕÝÅÎ ÎÁ Windows NT É Win2k, ÉÓÐÏÌØÚÕÑ
- ÂÉÂÌÉÏÔÅËÕ Cygwin, ÒÁÚÒÁÂÏÔÁÎÎÕÀ ÄÌÑ ÐÅÒÅÎÏÓÁ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ
- Unix × NT. óÍÏÔÒÉÔÅ pgsql/doc/FAQ_MSWIN × ÄÉÓÔÒÉÂÕÔÉ×Å ÉÌÉ MS Windows
- FAQ ÎÁ ÎÁÛÅÍ ÓÁÊÔÅ. íÙ ÎÅ ÐÌÁÎÉÒÕÅÍ ÓÐÅÃÉÁÌØÎÏ ÐÅÒÅÎÏÓÉÔØ PostgreSQL
- ÎÁ ËÁËÕÀ-ÌÉÂÏ ÐÌÁÔÆÏÒÍÕ Microsoft.
-
- 1.5) çÄÅ ÍÏÖÎÏ ×ÚÑÔØ PostgreSQL?
-
- îÁÐÒÉÍÅÒ, ×ÏÓÐÏÌØÚÏ×Á×ÛÉÓØ ÁÎÏÎÉÍÎÙÍ ÄÏÓÔÕÐÏÍ ÎÁ ftp ÓÁÊÔ PostgreSQL
- ftp://ftp.PostgreSQL.org/pub. óÐÉÓÏË ÚÅÒËÁÌ ×Ù ÎÁÊÄÅÔÅ ÎÁ ÎÁÛÅÍ
- ÏÓÎÏ×ÎÏÍ ÓÁÊÔÅ.
-
- 1.6) çÄÅ ÐÏÌÕÞÉÔØ ÐÏÄÄÅÒÖËÕ?
-
- ïÓÎÏ×ÎÏÊ ÓÐÉÓÏË ÒÁÓÓÙÌËÉ: pgsql-general@PostgreSQL.org. ÷ ÎÅÍ ÍÏÖÎÏ
- ÏÂÓÕÖÄÁÔØ ÌÀÂÙÅ ÔÅÍÙ, ËÁÓÁÀÝÉÅÓÑ PostgreSQL. þÔÏÂÙ ÐÏÄÐÉÓÁÔØÓÑ,
- ÏÔÐÒÁ×ØÔÅ ÐÉÓØÍÏ ÐÏ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÅ, × ËÏÔÏÒÏÍ × ÔÅÌÅ ÐÉÓØÍÁ (ÎÅ ×
- ÔÅÍÅ) ÎÁÐÉÛÉÔÅ ÓÌÅÄÕÀÝÉÅ ÓÔÒÏËÉ:
+ 1.5) Gde mozhno vzyat' PostgreSQL?
+
+ Naprimer, vospol'zovavshis' anonimnym dostupom na ftp sajt PostgreSQL
+ ftp://ftp.PostgreSQL.org/pub. Spisok zerkal vy najdete na nashem
+ osnovnom sajte.
+
+ 1.6) Gde poluchit' podderzhku?
+
+ Osnovnoj spisok rassylki: pgsql-general@PostgreSQL.org. V nem mozhno
+ obsuzhdat' lyubye temy, kasayuschiesya PostgreSQL. CHtoby
+ podpisat'sya, otprav'te pis'mo po `elektronnoj pochte, v kotorom v
+ tele pis'ma (ne v teme) napishite sleduyuschie stroki:
subscribe
end
- ÎÁ ÁÄÒÅÓ pgsql-general-request@PostgreSQL.org.
+ na adres pgsql-general-request@PostgreSQL.org.
- óÕÝÅÓÔ×ÕÅÔ ÄÁÊÖÅÓÔ ÓÐÉÓÏË. þÔÏÂÙ ÐÏÄÐÉÓÁÔØÓÑ ÎÁ ÎÅÇÏ, ÏÔÐÒÁ×ØÔÅ ÐÉÓØÍÏ
- ÐÏ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÅ ÎÁ ÁÄÒÅÓ:
- pgsql-general-digest-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
- äÁÊÖÅÓÔÙ ÏÔÐÒÁ×ÌÑÀÔÓÑ ÐÏÄÐÉÓÞÉËÁÍ, ËÏÇÄÁ × ÏÓÎÏ×ÎÏÍ ÓÐÉÓËÅ ÒÁÓÓÙÌËÉ
- ÎÁËÏÐÉÔÓÑ ÏËÏÌÏ 30 ËÉÌÏÂÁÊÔ ÓÏÏÂÝÅÎÉÊ.
+ Dajzhesty otpravlyayutsya podpischikam, kogda v osnovnom spiske
+ rassylki nakopitsya okolo 30 kilobajt soobschenij.
- äÏÓÔÕÐÅÎ É ÓÐÉÓÏË ÒÁÓÓÙÌËÉ ÓÏÏÂÝÅÎÉÊ Ï ÏÛÉÂËÁÈ. þÔÏÂÙ ÐÏÄÐÉÓÁÔØÓÑ ÎÁ
- ÜÔÏÔ ÓÐÉÓÏË, ÏÔÐÒÁ×ØÔÅ ÐÏ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÅ ÐÉÓØÍÏ ÎÁ ÁÄÒÅÓ
- pgsql-bugs-request@PostgreSQL.org É × ÔÅÌÅ ÐÉÓØÍÁ ÎÁÐÉÛÉÔÅ ÓÔÒÏÞËÉ
- ÓÔÒÏÞËÉ:
+ 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
- ôÁËÖÅ ÉÍÅÅÔÓÑ ÓÐÉÓÏË ÒÁÓÓÙÌËÉ Ó ÄÉÓËÕÓÓÉÑÍÉ ÒÁÚÒÁÂÏÔÞÉËÏ×. þÔÏÂÙ
- ÐÏÄÐÉÓÁÔØÓÑ ÎÁ ÜÔÏÔ ÓÐÉÓÏË, ÏÔÐÒÁ×ØÔÅ ÐÏ ÜÌÅËÔÒÏÎÎÏÊ ÐÏÞÔÅ ÐÉÓØÍÏ ÎÁ
- ÁÄÒÅÓ pgsql-hackers-request@PostgreSQL.org É × ÔÅÌÅ ÐÉÓØÍÁ ÎÁÐÉÛÉÔÅ
- ÓÔÒÏÞËÉ ÓÔÒÏÞËÉ:
+ 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
- äÏÐÏÌÎÉÔÅÌØÎÙÅ ÓÐÉÓËÉ ÒÁÓÓÙÌËÉ É ÉÎÆÏÍÁÃÉÀ Ï PostgreSQL ÍÏÖÎÏ ÎÁÊÔÉ ÎÁ
- ÄÏÍÁÛÎÅÊ ÓÔÒÁÎÉÞËÅ PostgreSQL ÐÏ ÁÄÒÅÓÕ:
+ Dopolnitel'nye spiski rassylki i infomaciyu o PostgreSQL mozhno najti
+ na domashnej stranichke PostgreSQL po adresu:
http://www.PostgreSQL.org
- åÝÅ ÓÕÝÅÓÔ×ÕÅÔ IRC ËÁÎÁÌ ÎÁ EFNet, Ó ÎÁÚ×ÁÎÉÅÍ #PostgreSQL. ñ
- ÉÓÐÏÌØÚÕÀ ÄÌÑ ÐÏÄËÌÀÞÅÎÉÑ Ë ÜÔÏÍÕ ËÁÎÁÌÕ ËÏÍÁÎÄÕ Unix irc -c
+ Esche suschestvuet IRC kanal na EFNet, s nazvaniem #PostgreSQL. YA
+ ispol'zuyu dlya podklyucheniya k `etomu kanalu komandu Unix irc -c
'#PostgreSQL' "$USER" irc.phoenix.net.
- óÐÉÓÏË ËÏÍÍÅÒÞÅÓËÏÊ ÐÏÄÄÅÒÖËÉ ËÏÍÐÁÎÉÊ ÄÏÓÔÕÐÅÎ ÎÁ
- http://www.postgresql.org/users-lounge/commercial-support.html.
+ Spisok kommercheskoj podderzhki kompanij dostupen na
+ http://www.PostgreSQL.org/users-lounge/commercial-support.html.
- 1.7) ëÁËÁÑ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ?
+ 1.7) Kakaya poslednyaya versiya?
- ðÏÓÌÅÄÎÉÊ ×ÙÐÕÓË PostgreSQL - ÜÔÏ ×ÅÒÓÉÑ 7.2.3.
+ Poslednij vypusk PostgreSQL - `eto versiya 7.2.3.
- íÙ ÐÌÁÎÉÒÕÅÍ ×ÙÐÕÓËÁÔØ ÎÏ×ÙÅ ×ÅÒÓÉÉ ËÁÖÄÙÅ ÞÅÔÙÒÅ ÍÅÓÑÃÁ.
+ My planiruem vypuskat' novye versii kazhdye chetyre mesyaca.
- 1.8) ëÁËÁÑ ÄÏËÕÍÅÎÔÁÃÉÑ ÉÍÅÅÔÓÑ × ÎÁÌÉÞÉÉ?
+ 1.8) Kakaya dokumentaciya imeetsya v nalichii?
- ÷ ÄÉÓÔÒÉÂÕÔÉ× ×ËÌÀÞÁÀÔÓÑ ÒÁÚÌÉÞÎÙÅ ÒÕËÏ×ÏÄÓÔ×Á, ÓÔÒÁÎÉÃÙ ÜÌÅËÔÒÏÎÎÏÇÏ
- ÒÕËÏ×ÏÄÓÔ×Á man É ÎÅËÏÔÏÒÙÅ ÍÁÌÅÎØËÉÅ ÔÅÓÔÏ×ÙÅ ÐÒÉÍÅÒÙ. óÍÏÔÒÉÔÅ ×
- ËÁÔÁÌÏÇ /doc. ÷Ù ÔÁËÖÅ ÍÏÖÅÔÅ ÐÒÏÓÍÁÔÒÉ×ÁÔØ ÄÏËÕÍÅÎÔÁÃÉÀ × éÎÔÅÒÎÅÔ ÐÏ
- ÁÄÒÅÓÕ http://www.PostgreSQL.org/users-lounge/docs/.
-
- óÕÝÅÓÔ×ÕÅÔ Ä×Å ËÎÉÇÉ ÐÏ PostgreSQL ÄÏÓÔÕÐÎÙÅ ÐÏ ÁÄÒÅÓÁÍ
- http://www.PostgreSQL.org/docs/awbook.html É
- http://www.commandprompt.com/ppbook/. óÐÉÓÏË ËÎÉÇ ÐÏ PostgreSQL,
- ËÏÔÏÒÙÅ ÍÏÖÎÏ ËÕÐÉÔØ ÄÏÓÔÕÐÅÎ ÐÏ ÁÄÒÅÓÕ
- http://www.postgresql.org/books/. ëÒÏÍÅ ÔÏÇÏ, ÐÏ ÁÄÒÅÓÕ
- http://techdocs.postgresql.org/ ×Ù ÍÏÖÅÔÅ ÎÁÊÔÉ ËÏÌÌÅËÃÉÀ ÔÅÈÎÉÞÅÓËÉÈ
- ÓÔÁÔÅÊ ÐÏÓ×ÑÝÅÎÎÙÈ PostgreSQL.
-
- psql ÉÍÅÅÔ ÎÅÓËÏÌØËÏ ÐÒÅËÒÁÓÎÙÈ ËÏÍÁÎÄ \d ÄÌÑ ÏÔÏÂÒÁÖÅÎÉÑ ÉÎÆÏÒÍÁÃÉÉ
- ÐÏ ÔÉÐÁÍ, ÏÐÅÒÁÔÏÒÁÍ, ÆÕÎËÃÉÑÍ, ÁÇÒÅÇÁÔÁÍ É Ô.Ä.
-
- îÁÛ ÓÁÊÔ ÓÏÄÅÒÖÉÔ ÅÝÅ ÂÏÌØÛÅ ÉÎÆÏÒÍÁÃÉÉ.
-
- 1.9) ëÁË ÎÁÊÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ÉÚ×ÅÓÔÎÙÈ ÏÛÉÂËÁÈ ÉÌÉ ÏÔÓÕÔÓÔ×ÕÀÝÉÈ
- ×ÏÚÍÏÖÎÏÓÔÑÈ?
+ V distributiv vklyuchayutsya razlichnye rukovodstva, stranicy
+ `elektronnogo rukovodstva man i nekotorye malen'kie testovye primery.
+ Smotrite v katalog /doc. Vy takzhe mozhete prosmatrivat' dokumentaciyu
+ v Internet po adresu http://www.PostgreSQL.org/users-lounge/docs/.
+
+ Suschestvuet dve knigi po PostgreSQL dostupnye po adresam
+ http://www.PostgreSQL.org/docs/awbook.html i
+ http://www.commandprompt.com/ppbook/. Spisok knig po PostgreSQL,
+ kotorye mozhno kupit' dostupen po adresu
+ http://www.ca.PostgreSQL.org/books/. Krome togo, po adresu
+ http://techdocs.PostgreSQL.org/ vy mozhete najti kollekciyu
+ tehnicheskih statej posvyaschennyh PostgreSQL.
+
+ psql imeet neskol'ko prekrasnyh komand \d dlya otobrazheniya
+ informacii po tipam, operatoram, funkciyam, agregatam i t.d.
+
+ Nash sajt soderzhit esche bol'she informacii.
+
+ 1.9) Kak najti informaciyu ob izvestnyh oshibkah ili otsutstvuyuschih
+ vozmozhnostyah?
- PostgreSQL ÐÏÄÄÅÒÖÉ×ÁÅÔ ÒÁÓÛÉÒÅÎÎÙÊ ÐÏÄËÌÁÓÓ SQL-92. óÍÏÔÒÉÔÅ ÎÁÛ
- ÓÐÉÓÏË TODO ÎÁ ÐÒÅÄÍÅÔ ÉÚ×ÅÓÔÎÙÈ ÏÛÉÂÏË, ÏÔÓÕÔÓÔ×ÕÀÝÉÈ ÏÓÏÂÅÎÎÏÓÔÑÈ É
- ÂÕÄÕÝÉÈ ÐÌÁÎÏ×.
+ PostgreSQL podderzhivaet rasshirennyj podklass SQL-92. Smotrite nash
+ spisok TODO na predmet izvestnyh oshibok, otsutstvuyuschih
+ osobennostyah i buduschih planov.
- 1.10) ëÁË ÍÎÅ ÎÁÕÞÉÔØÓÑ SQL?
+ 1.10) Kak mne nauchit'sya SQL?
- ëÎÉÇÁ ÐÏ PostgreSQL ÎÁ http://www.PostgreSQL.org/docs/awbook.html
- ÎÁÕÞÉÔ SQL. óÕÝÅÓÔ×ÕÅÔ ÄÒÕÇÁÑ ËÎÉÇÁ ÐÏ PostgreSQL ÎÁ
- http://www.commandprompt.com/ppbook. åÓÔØ ÐÒÅËÒÁÓÎÙÊ ÕÞÅÂÎÉË ÎÁ
- http://www.intermedia.net/support/sql/sqltut.shtm, ÎÁ
+ Kniga po PostgreSQL na http://www.PostgreSQL.org/docs/awbook.html
+ nauchit SQL. Suschestvuet drugaya kniga po PostgreSQL na
+ http://www.commandprompt.com/ppbook. Est' prekrasnyj uchebnik na
+ http://www.intermedia.net/support/sql/sqltut.shtm, na
http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,
- É ÎÁ http://sqlcourse.com.
+ i na http://sqlcourse.com.
- åÝÅ ÏÄÉÎ ÕÞÅÂÎÉË - ÜÔÏ ËÎÉÇÁ "Teach Yourself SQL in 21 Days, Second
- Edition" (ïÓ×ÏÊ ÓÁÍÏÓÔÏÑÔÅÌØÎÏ SQL ÚÁ 21 ÄÅÎØ, ÷ÔÏÒÁÑ ÒÅÄÁËÃÉÑ) ÎÁ
- http://members.tripod.com/er4ebus/sql/index.htm
+ Esche odin uchebnik - `eto kniga "Teach Yourself SQL in 21 Days,
+ Second Edition" (Osvoj samostoyatel'no SQL za 21 den', Vtoraya
+ redakciya) na http://members.tripod.com/er4ebus/sql/index.htm
- íÎÏÇÉÍ ÉÚ ÎÁÛÉÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ ÎÒÁ×ÉÔÓÑ ËÎÉÇÁ The Practical SQL
- Handbook, Bowman, Judith S., et al., Addison-Wesley. äÒÕÇÉÍ ÎÒÁ×ÉÔÓÑ
+ Mnogim iz nashih pol'zovatelej nravitsya kniga The Practical SQL
+ Handbook, Bowman, Judith S., et al., Addison-Wesley. Drugim nravitsya
The Complete Reference SQL, Groff et al., McGraw-Hill.
- 1.11) òÅÛÅÎÁ ÌÉ × PostgreSQL ÐÒÏÂÌÅÍÁ 2000-ÇÏ ÇÏÄÁ (Y2K)?
+ 1.11) Reshena li v PostgreSQL problema 2000-go goda (Y2K)?
- äÁ, ÍÙ ÌÅÇËÏ ÍÁÎÉÐÕÌÉÒÕÅÍ ÄÁÔÁÍÉ ÐÏÓÌÅ 2000 ÇÏÄÁ É ÐÅÒÅÄ 2000 ÇÏÄÏÍ.
+ Da, my legko manipuliruem datami posle 2000 goda i pered 2000 godom.
- 1.12) ëÁË ÐÒÉÓÏÅÄÉÎÉÔÓÑ Ë ËÏÍÁÎÄÅ ÒÁÚÒÁÂÏÔÞÉËÏ×?
+ 1.12) Kak prisoedinitsya k komande razrabotchikov?
- äÌÑ ÎÁÞÁÌÁ, ÓËÁÞÁÊÔÅ ÐÏÓÌÅÄÎÀÀ ×ÅÒÓÉÀ ÉÓÈÏÄÎÙÈ ÔÅËÓÔÏ× É ÐÒÏÞÔÉÔÅ
- ÄÏËÕÍÅÎÔÁÃÉÀ ÒÁÚÒÁÂÏÔÞÉËÏ× PostgreSQL ÎÁ ÎÁÛÅÍ ÓÁÊÔÅ ÉÌÉ ×
- ÄÉÓÔÒÉÂÕÔÉ×Å. úÁÔÅÍ, ÐÏÄÐÉÛÉÔÅÓØ ÎÁ ÓÐÉÓËÉ ÒÁÓÓÙÌËÉ pgsql-hackers É
- pgsql-patches. äÁÌÅÅ, ÏÔÐÒÁ×ÌÑÊÔÅ ÉÓÐÒÁ×ÌÅÎÉÑ (patches) ×ÙÓÏËÏÇÏ
- ËÁÞÅÓÔ×Á × ÓÐÉÓÏË pgsql-patches.
-
- óÕÝÅÓÔ×ÕÅÔ ÏÇÒÁÎÉÞÅÎÎÙÊ ÓÐÉÓÏË ÌÀÄÅÊ, ËÏÔÏÒÙÊ ÉÍÅÀÔ ÐÒÉ×ÅÌÅÇÉÀ ×ÎÏÓÉÔØ
- ÉÚÍÅÎÅÎÉÑ × CVS ÁÒÈÉ× PostgreSQL. ëÁÖÄÙÊ ÉÚ ÜÔÉÈ ÌÀÄÅÊ × Ó×ÏÅ ×ÒÅÍÑ
- ÏÔÐÒÁ×ÉÌ ÔÁË ÍÎÏÇÏ ×ÙÓÏËÏËÁÞÅÓÔ×ÅÎÎÙÈ ÉÓÐÒÁ×ÌÅÎÉÊ, ÞÔÏ ÉÈ ÂÙÌÏ
- ÎÅ×ÏÚÍÏÖÎÏ ÏÓÔÁ×ÉÔØ ÂÅÚ ×ÎÉÍÁÎÉÑ É ÏÎÉ ÂÙÌÉ ÕÄÏÓÔÏÅÎÙ ÐÒÅ×ÉÌÅÇÉÉ
- ×ÎÏÓÉÔØ ÉÚÍÅÎÅÎÉÑ, É ÍÙ Õ×ÅÒÅÎÙ, ÞÔÏ ÔÅ ÉÓÐÒÁ×ÌÅÎÉÑ, ËÏÔÏÒÙÅ ÏÎÉ
- ×ÎÅÓÕÔ ÂÕÄÕÔ ×ÙÓÏËÏÇÏ ËÁÞÅÓÔ×Á.
-
- 1.13) ëÁË ÏÔÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ??
+ Dlya nachala, skachajte poslednyuyu versiyu ishodnyh tekstov i
+ prochtite dokumentaciyu razrabotchikov PostgreSQL na nashem sajte ili
+ v distributive. Zatem, podpishites' na spiski rassylki pgsql-hackers i
+ pgsql-patches. Dalee, otpravlyajte ispravleniya (patches) vysokogo
+ kachestva v spisok pgsql-patches.
+
+ Suschestvuet ogranichennyj spisok lyudej, kotoryj imeyut privelegiyu
+ vnosit' izmeneniya v CVS arhiv PostgreSQL. Kazhdyj iz `etih lyudej v
+ svoe vremya otpravil tak mnogo vysokokachestvennyh ispravlenij, chto
+ ih bylo nevozmozhno ostavit' bez vnimaniya i oni byli udostoeny
+ previlegii vnosit' izmeneniya, i my uvereny, chto te ispravleniya,
+ kotorye oni vnesut budut vysokogo kachestva.
+
+ 1.13) Kak otravit' soobschenie ob oshibke??
- ðÏÖÁÌÕÊÓÔÁ ÐÏÓÅÔÉÔÅ ÓÔÒÁÎÉÞËÕ PostgreSQL BugTool, ÎÁ ËÏÔÏÒÏÊ
- ÐÒÅÄÏÓÔÁ×ÌÅÎÙ ÄÅÔÁÌØÎÙÅ ÉÎÓÔÒÕËÃÉÉ Ï ÔÏÍ ËÁË ÏÔÐÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ ÏÂ
- ÏÛÉÂËÅ.
+ Pozhalujsta posetite stranichku PostgreSQL BugTool na
+ http://www.PostgreSQL.org/bugs/bugs.php, na kotoroj predostavleny
+ detal'nye instrukcii o tom kak otpravit' soobschenie ob oshibke.
- ôÁËÖÅ ÎÅ ÚÁÂÕÄØÔÅ ÐÏÓÍÏÔÒÅÔØ ÎÁ ftp://ftp.PostgreSQL.org/pub ÎÁ
- ÐÒÅÄÍÅÔ ÂÏÌÅÅ Ó×ÅÖÉÈ ×ÅÒÓÉÊ PostgreSQL ÉÌÉ ÚÁÐÌÁÔ.
+ Takzhe ne zabud'te posmotret' na ftp://ftp.PostgreSQL.org/pub na
+ predmet bolee svezhih versij PostgreSQL ili zaplat.
- 1.14) ëÁË ÓÒÁ×ÎÉ×ÁÔØ PostgreSQL Ó ÄÒÕÇÉÍÉ óõâä?
+ 1.14) Kak sravnivat' PostgreSQL s drugimi SUBD?
- óÕÝÅÓÔ×ÕÅÔ ÎÅÓËÏÌØËÏ ÍÅÔÏÄÏ× ÓÒÁ×ÎÅÎÉÑ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ:
- ×ÏÚÍÏÖÎÏÓÔÉ, ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔØ, ÎÁÄÅÖÎÏÓÔØ, ÐÏÄÄÅÒÖËÁ É ÃÅÎÁ.
-
- ÷ÏÚÍÏÖÎÏÓÔÉ
- PostgreSQL ÉÍÅÅÔ ÂÏÌØÛÉÎÓÔ×Ï ×ÏÚÍÏÖÎÏÓÔÅÊ ÐÒÅÄÓÔÁ×ÌÅÎÎÙÈ ×
- ÂÏÌØÛÉÈ ËÏÍÍÅÒÞÅÓËÉÈ óõâä, ÔÁËÉÅ ËÁË: ÔÒÁÎÚÁËÃÉÉ, ÐÏÄÚÁÐÒÏÓÙ,
- ÔÒÉÇÇÅÒÙ, ÏÂÚÏÒÙ (views), ×ÎÅÛÎÉÊ ËÌÀÞ ÓÓÙÌÏÞÎÏÊ ÃÅÌÏÓÔÎÏÓÔÉ É
- ÒÁÚÎÙÅ ÂÌÏËÉÒÏ×ËÉ. õ ÎÁÓ ÅÓÔØ ÎÅËÏÔÏÒÙÅ ×ÏÚÍÏÖÎÏÓÔÉ, ËÏÔÏÒÙÈ
- ÎÅÔ Õ ÎÉÈ: ÔÉÐÙ, ÏÐÒÅÄÅÌÑÅÍÙÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ, ÍÅÈÁÎÉÚÍ
- ÎÁÓÌÅÄÏ×ÁÎÉÑ, ÐÒÁ×ÉÌÁ É ËÏÎËÕÒÅÔÎÏÅ ÍÎÏÇÏ×ÅÒÓÉÏÎÎÏÅ ÕÐÒÁ×ÌÅÎÉÅ
- ÄÌÑ ÒÁÂÏÔÙ Ó ÓÏÄÅÒÖÉÍÙÍ ÂÌÏËÉÒÏ×ÏË.
+ Suschestvuet neskol'ko metodov sravneniya programmnogo obespecheniya:
+ vozmozhnosti, proizvoditel'nost', nadezhnost', podderzhka i cena.
+
+ Vozmozhnosti
+ PostgreSQL imeet bol'shinstvo vozmozhnostej predstavlennyh v
+ bol'shih kommercheskih SUBD, takie kak: tranzakcii, podzaprosy,
+ triggery, obzory (views), vneshnij klyuch ssylochnoj
+ celostnosti i raznye blokirovki. U nas est' nekotorye
+ vozmozhnosti, kotoryh net u nih: tipy, opredelyaemye
+ pol'zovatelem, mehanizm nasledovaniya, pravila i konkuretnoe
+ mnogoversionnoe upravlenie dlya raboty s soderzhimym
+ blokirovok.
- ðÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔØ
- PostgreSQL ÉÍÅÅÔ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔØ ÓÈÏÖÕÀ Ó ÄÒÕÇÉÍÉ
- ËÏÍÍÅÒÞÅÓËÉÍÉ óõâä É Ó óõâä Ó ÏÔËÒÙÔÙÍ ÉÓÈÏÄÎÙÍ ËÏÄÏÍ, ×
- ËÁËÉÈ-ÔÏ ÁÓÐÅËÔÁÈ ÒÁÂÏÔÁÑ ÂÙÓÔÒÅÅ ÞÅÍ ÏÎÉ, × ËÁËÉÈ-ÔÏ ÍÅÄÌÅÎÅÅ.
- ÷ ÓÒÁ×ÎÅÎÉÉ Ó MySQL ÉÌÉ ÌÉÎÅÊÎÙÍÉ óõâä, ÍÙ ÍÅÄÌÅÎÅÅ ÐÒÉ
- ÏÐÅÒÁÃÉÑÈ ×ÓÔÁ×ËÉ/ÏÂÎÏ×ÌÅÎÉÑ, ÐÏÔÏÍÕ ÞÔÏ ÕÐÒÁ×ÌÑÅÍ
- ÔÒÁÎÚÁËÃÉÑÍÉ. é ÒÁÚÕÍÅÅÔÓÑ, MySQL ÎÅ ÉÍÅÅÔ ËÁËÉÈ-ÌÉÂÏ
- ×ÏÚÍÏÖÎÏÓÔÅÊ ÉÚ ÐÅÒÅÞÉÓÌÅÎÙÈ ×ÙÛÅ, × ÓÅËÃÉÉ ÷ÏÚÍÏÖÎÏÓÔÉ. íÙ
- ÄÅÌÁÅÍ ÕÐÏÒ ÎÁ ÎÁÄÅÖÎÏÓÔØ É ÒÁÓÛÉÒÅÎÎÙÅ ×ÏÚÍÏÖÎÏÓÔÉ, ÎÏ ÍÙ
- ÔÁËÖÅ ÐÒÏÄÏÌÖÁÅÍ Õ×ÅÌÉÞÉ×ÁÔØ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔØ Ó ËÁÖÄÙÍ
- ×ÙÐÕÓËÏÍ. óÕÝÅÓÔ×ÕÅÔ ÉÎÔÅÒÅÓÎÁÑ ÓÔÒÁÎÉÞËÁ × éÎÔÅÒÎÅÔ,
- ÓÒÁ×ÎÉ×ÁÀÝÁÑ PostgreSQL É MySQL ÎÁ
- http://openacs.org/why-not-mysql.html
+ Proizvoditel'nost'
+ PostgreSQL imeet proizvoditel'nost' shozhuyu s drugimi
+ kommercheskimi SUBD i s SUBD s otkrytym ishodnym kodom, v
+ kakih-to aspektah rabotaya bystree chem oni, v kakih-to
+ medlenee. V sravnenii s MySQL ili linejnymi SUBD, my medlenee
+ pri operaciyah vstavki/obnovleniya, potomu chto upravlyaem
+ tranzakciyami. I razumeetsya, MySQL ne imeet kakih-libo
+ vozmozhnostej iz perechislenyh vyshe, v sekcii Vozmozhnosti. My
+ delaem upor na nadezhnost' i rasshirennye vozmozhnosti, no my
+ takzhe prodolzhaem uvelichivat' proizvoditel'nost' s kazhdym
+ vypuskom. Suschestvuet interesnaya stranichka v Internet,
+ sravnivayuschaya PostgreSQL i MySQL na
+ http://openacs.org/philosophy/why-not-mysql.html
- îÁÄÅÖÎÏÓÔØ
- íÙ ÐÏÎÉÍÁÌÉ, ÞÔÏ ÎÁÛÁ óõâä ÄÏÌÖÎÁ ÂÙÔØ ÎÁÄÅÖÎÏÊ ÉÌÉ ÏÎÁ ÎÉÞÅÇÏ
- ÎÅ ÂÕÄÅÔ ÓÔÏÉÔØ. íÙ ÓÔÁÒÁÅÍÓÑ ×ÙÐÕÓËÁÔØ ÈÏÒÏÛÏ ÐÒÏ×ÅÒÅÎÎÙÊ,
- ÓÔÁÂÉÌØÎÙÊ ËÏÄ, ËÏÔÏÒÙÊ ÓÏÄÅÒÖÉÔ ÍÉÎÉÍÕÍ ÏÛÉÂÏË. ëÁÖÄÙÊ ×ÙÐÕÓË
- ÐÒÏÈÏÄÉÔ ÓÔÁÄÉÀ ÂÅÔÁ-ÔÅÓÔÉÒÏ×ÁÎÉÑ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ × ÔÅÞÅÎÉÉ
- ÏÄÎÏÇÏ ÍÅÓÑÃÁ É ÎÁÛÁ ÉÓÔÏÒÉÑ ×ÙÐÕÓËÏ× ÐÏËÁÚÙ×ÁÅÔ ÞÔÏ ÍÙ ÍÏÖÅÍ
- ÐÒÅÄÏÓÔÁ×ÌÑÔØ ÓÔÁÂÉÌØÎÙÅ, ÍÏÎÏÌÉÔÎÙÅ ×ÙÐÕÓËÉ, ËÏÔÏÒÙÅ ÇÏÔÏ×Ù Ë
- ÐÒÏÄÕËÔÉ×ÎÏÍÕ ÉÓÐÏÌØÚÏ×ÁÎÉÀ. íÙ ×ÅÒÉÍ, ÞÔÏ ÍÙ ÐÒÏÉÚ×ÏÄÉÍ
- ÐÒÏ×ÅÒËÕ ÎÅ ÈÕÖÅ, ÞÅÍ Õ ÄÒÕÇÉÈ óõâä.
+ Nadezhnost'
+ My ponimali, chto nasha SUBD dolzhna byt' nadezhnoj ili ona
+ nichego ne budet stoit'. My staraemsya vypuskat' horosho
+ proverennyj, stabil'nyj kod, kotoryj soderzhit minimum oshibok.
+ Kazhdyj vypusk prohodit stadiyu beta-testirovaniya po krajnej
+ mere v techenii odnogo mesyaca i nasha istoriya vypuskov
+ pokazyvaet chto my mozhem predostavlyat' stabil'nye, monolitnye
+ vypuski, kotorye gotovy k produktivnomu ispol'zovaniyu. My
+ verim, chto my proizvodim proverku ne huzhe, chem u drugih
+ SUBD.
- ðÏÄÄÅÒÖËÁ
- îÁÛ ÓÐÉÓÏË ÒÁÓÓÙÌËÉ ÐÒÅÄÓÔÁ×ÌÅÎ ÂÏÌØÛÏÊ ÇÒÕÐÐÏÊ ÒÁÚÒÁÂÏÔÞÉËÏ× É
- ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÐÏÍÏÞØ ÒÅÛÉÔØ ÌÀÂÙÅ ×ÏÚÎÉËÛÉÅ
- ÐÒÏÂÌÅÍÙ. ÷ ÔÏ ÖÅ ×ÒÅÍÑ, ÍÙ ÎÅ ÇÁÒÁÎÔÉÒÕÅÍ ËÁËÉÅ-ÌÉÂÏ
- ÉÓÐÒÁ×ÌÅÎÉÑ, ÎÏ É ÒÁÚÒÁÂÏÔÞÉËÉ ËÏÍÍÅÒÞÅÓËÉÈ óõâä ÎÅ ×ÓÅÇÄÁ
- ÄÅÌÁÀÔ ÉÓÐÒÁ×ÌÅÎÉÑ. ðÒÑÍÏÊ ÄÏÓÔÕÐ Ë ÒÁÚÒÁÂÏÔÞÉËÁÍ, ÓÏÏÂÝÅÓÔ×Õ
- ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ÒÕËÏ×ÏÄÓÔ×ÁÍ É ÉÓÈÏÄÎÙÍ ÔÅËÓÔÁÍ ÞÁÓÔÏ ÄÅÌÁÀÔ
- ÐÏÄÄÅÒÖËÕ PostgreSQL ÐÒÅ×ÏÓÈÏÄÑÝÅÊ ÄÒÕÇÉÅ óõâä. óÕÝÅÓÔ×ÕÅÔ
- ËÏÍÍÅÒÞÅÓËÁÑ ÐÏÄÄÅÒÖËÁ ÐÏ ÒÅÚÕÌØÔÁÍ ×ÏÚÎÉËÛÉÈ ÉÎÃÉÄÅÎÔÏ×,
- ËÏÔÏÒÁÑ ÄÏÓÔÕÐÎÁ ÄÌÑ ÔÅÈ ËÏÍÕ ÏÎÁ ÎÕÖÎÁ. (óÍÏÔÒÉÔÅ ëÁË ÐÏÌÕÞÉÔØ
- ÐÏÄÄÅÒÖËÕ?.)
+ Podderzhka
+ Nash spisok rassylki predostavlyaet vozmozhmozhnost' obscheniya
+ s bol'shoj gruppoj razrabotchikov i pol'zovatelej, kotorye
+ mogut pomoch' reshit' lyubye voznikshie problemy. V to zhe
+ vremya, my ne garantiruem kakie-libo ispravleniya, no i
+ razrabotchiki kommercheskih SUBD ne vsegda delayut
+ ispravleniya. Pryamoj dostup k razrabotchikam, soobschestvu
+ pol'zovatelej, rukovodstvam i ishodnym tekstam chasto delayut
+ podderzhku PostgreSQL prevoshodyaschej drugie SUBD.
+ Suschestvuet kommercheskaya podderzhka po rezul'tam voznikshih
+ incidentov, kotoraya dostupna dlya teh komu ona nuzhna.
+ (Smotrite Sekciyu 1.6.)
- ãÅÎÁ
- îÁÛ ÐÒÏÄÕËÔ ÂÅÓÐÌÁÔÅÎ ËÁË ÄÌÑ ËÏÍÍÅÒÞÅÓËÏÇÏ ÔÁË, É ÎÅ ÄÌÑ
- ËÏÍÍÅÒÞÅÓËÏÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ. ÷Ù ÍÏÖÅÔÅ ÄÏÂÁ×ÌÑÔØ Ó×ÏÊ ËÏÄ × ÎÁÛ
- ÐÒÏÄÕËÔ ÂÅÚ ÏÇÒÁÎÉÞÅÎÉÊ, ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ÔÅÈ, ÞÔÏ ÏÐÉÓÙ×ÁÀÔÓÑ ×
- ÎÁÛÅÊ ÌÉÃÅÎÚÉÉ ÓÔÉÌÑ BSD, ËÏÔÏÒÁÑ ÐÒÉ×ÅÄÅÎÁ ×ÙÛÅ.
+ Cena
+ Nash produkt besplaten kak dlya kommercheskogo tak, i ne dlya
+ kommercheskogo ispol'zovaniya. Vy mozhete dobavlyat' svoj kod v
+ nash produkt bez ogranichenij, za isklyucheniem teh, chto
+ opisyvayutsya v nashej licenzii stilya BSD, kotoraya privedena
+ vyshe.
- 1.15) ëÁË ÏËÁÚÁÔØ ÆÉÎÁÎÓÏ×ÕÀ ÐÏÍÏÝØ PostgreSQL?
-
- PostgreSQL ÉÍÅÅÔ ÏÄÎÏÒÁÎÇÏ×ÕÀ ÉÎÆÒÁÓÔÒÕËÔÕÒÕ Ó ÔÏÇÏ ÓÁÍÏÇÏ ×ÒÅÍÅÎÉ ËÁË
- ÍÙ ÎÁÞÁÌÉ ÒÁÚÒÁÂÏÔËÕ 6 ÌÅÔ ÎÁÚÁÄ. íÙ ÄÏÌÖÎÙ ÂÌÁÇÏÄÁÒÉÔØ ÚÁ ÜÔÏ íÁÒËÁ
- æÏÎÁÑ (Marc Fournier), ËÏÔÏÒÙÊ ÓÏÚÄÁÌ ÜÔÕ ÉÎÆÒÁÓÔÒÕËÔÕÒÕ É ÕÐÒÁ×ÌÑÅÔ
- ÅÊ ÎÁ ÐÒÏÔÑÖÅÎÉÉ ÜÔÉÈ ÌÅÔ.
-
- ëÁÞÅÓÔ×ÅÎÎÁÑ ÉÎÆÒÁÓÔÒÕËÔÕÒÁ ÏÞÅÎØ ×ÁÖÎÁ ÄÌÑ ÐÒÏÅËÔÏ× Ó ÏÔËÒÙÔÙÍ
- ÉÓÈÏÄÎÙÍ ËÏÄÏÍ. ïÎÁ ÐÒÅÄÏÔ×ÒÁÝÁÅÔ ÒÁÓËÏÌÙ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÓÉÌØÎÏ
- ÚÁÄÅÒÖÁÔØ ÐÏÓÔÕÐÁÔÅÌØÎÏÅ Ä×ÉÖÅÎÉÅ ÐÒÏÅËÔÁ.
-
- òÁÚÕÍÅÅÔÓÑ, ÜÔÁ ÉÎÆÒÁÓÔÒÕËÔÕÒÁ ÎÅ Ñ×ÌÑÅÔÓÑ ÄÅÛÅ×ÏÊ. óÕÝÅÓÔ×ÕÅÔ
- ÎÅËÏÔÏÒÏÅ ËÏÌÉÞÅÓÔ×Ï ÅÖÅÍÅÓÑÞÎÙÈ É ÏÄÎÏÒÁÚÏ×ÙÈ ÒÁÓÈÏÄÏ×, ËÏÔÏÒÙÅ
- ÔÒÅÂÕÀÔ ÄÅÎÅÇ. åÓÌÉ ×Ù ÉÌÉ ×ÁÛÁ ËÏÍÐÁÎÉÑ ÉÍÅÅÔ ÄÅÎØÇÉ, ËÏÔÏÒÙÅ ÍÏÖÎÏ
- ÐÅÒÅÄÁÔØ × ÐÏÍÏÝØ ÎÁÛÉÍ ÕÓÉÌÉÑÍ, ÐÏÖÁÌÕÊÓÔÁ ÐÏÓÅÔÉÔÅ ÓÔÒÁÎÉÞËÕ
- https://store.pgsql.com/shopping/index.php?id=1 É ÓÄÅÌÁÊÔÅ Ó×ÏÊ ×ËÌÁÄ.
-
- èÏÔÑ ÎÁ ÓÔÒÁÎÉÞËÅ ÇÏ×ÏÒÉÔÓÑ Ï PostgreSQL, Inc, ÐÕÎËÔ "contributions"
- ÐÒÅÄÎÁÚÎÁÞÅÎ ÉÓËÌÀÞÉÔÅÌØÎÏ ÄÌÑ ÐÏÄÄÅÒÖËÉ ÐÒÏÅËÔÁ PostgreSQL É ÎÅ
- ÐÅÒÅÄÁÅÔÓÑ ËÁËÏÊ-ÌÉÂÏ ËÏÎËÒÅÔÎÏÊ ËÏÍÐÁÎÉÉ. åÓÌÉ ÈÏÔÉÔÅ, ÔÏ ÍÏÖÅÔÅ ÜÔÏ
- ÐÒÏ×ÅÒÉÔØ, ÎÁÐÉÓÁ× ÐÉÓØÍÏ ÎÁ ËÏÎÔÁËÔÎÙÊ ÁÄÒÅÓ.
+ 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 Fonaya (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.
_________________________________________________________________
- ÷ÏÐÒÏÓÙ ÐÏÌØÚÏ×ÁÔÅÌÅÊ ÐÏ ËÌÉÅÎÔÓËÏÊ ÞÁÓÔÉ
+ Voprosy pol'zovatelej po klientskoj chasti
- 2.1) óÕÝÅÓÔ×ÕÀÔ ÌÉ ODBC ÄÒÁÊ×ÅÒÁ ÄÌÑ PostgreSQL?
+ 2.1) Suschestvuyut li ODBC drajvera dlya PostgreSQL?
- óÕÝÅÓÔ×ÕÅÔ Ä×Á ODBC ÄÒÁÊ×ÅÒÁ, PsqlODBC É OpenLink ODBC.
+ Suschestvuet dva ODBC drajvera, PsqlODBC i OpenLink ODBC.
- PsqlODBC ×ËÌÀÞÁÅÔÓÑ × ÄÉÓÔÒÉÂÕÔÉ×. âÏÌØÛÅ ÉÎÆÏÒÍÁÃÉÉ Ï ÜÔÏÍ ÄÒÁÊ×ÅÒÅ
- ÍÏÖÎÏ ÎÁÊÔÉ ÎÁ ftp://ftp.PostgreSQL.org/pub/odbc/.
+ PsqlODBC vklyuchaetsya v distributiv. Bol'she informacii ob `etom
+ drajvere mozhno najti na ftp://ftp.PostgreSQL.org/pub/odbc/.
- OpenLink ODBC ÍÏÖÎÏ ×ÚÑÔØ ÎÁ http://www.openlinksw.com. üÔÏÔ ÄÒÁÊ×ÅÒ
- ÒÁÂÏÔÁÅÔ Ó ÉÈ ÓÔÁÎÄÁÒÔÎÙÍ ËÌÉÅÎÔÓËÉÍ ÐÒÏÇÒÁÍÍÎÙÍ ÏÂÅÓÐÅÞÅÎÉÅÍ,
- ÉÓÐÏÌØÚÕÀÝÉÍ ODBC, É ÔÁËÉÍ ÏÂÒÁÚÏÍ, ODBC ÄÒÁÊ×ÅÒÙ ÄÌÑ PostgreSQL
- ÄÏÓÔÕÐÎÙ ÄÌÑ ËÁÖÄÏÊ ÉÚ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ ÉÍÉ ÐÌÁÔÆÏÒÍ (Win, Mac, Unix,
- VMS).
+ 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).
- ÷ÏÚÍÏÖÎÏ ÏÎÉ ÂÕÄÕÔ ÐÒÏÄÁ×ÁÔØ Ó×ÏÊ ÐÒÏÄÕËÔ ÔÅÍ ËÏÍÕ ÎÕÖÎÁ ËÏÍÍÅÒÞÅÓËÁÑ
- ÐÏÄÄÅÒÖËÁ, ÎÏ ÂÅÓÐÌÁÔÎÁÑ ×ÅÒÓÉÑ ×ÓÅÇÄÁ ÂÕÄÅÔ ÄÏÓÔÕÐÎÁ. ðÏÖÁÌÕÊÓÔÁ,
- ÎÁÐÒÁ×ÌÑÊÔÅ ×ÏÐÒÏÓÙ ÎÁ ÁÄÒÅÓ postgres95@openlink.co.uk.
+ Vozmozhno oni budut prodavat' svoj produkt tem komu nuzhna
+ kommercheskaya podderzhka, no besplatnaya versiya vsegda budet
+ dostupna. Pozhalujsta, napravlyajte voprosy na adres
+ postgres95@openlink.co.uk.
- ôÁËÖÅ ÐÏÓÍÏÔÒÉÔÅ ODBC ÒÁÚÄÅÌ × ÒÕËÏ×ÏÄÓÔ×Å ÐÒÏÇÒÁÍÍÉÓÔÁ.
+ Takzhe posmotrite ODBC razdel v rukovodstve programmista.
- 2.2) ëÁËÉÅ ÉÎÓÔÒÕÍÅÎÔÙ ÓÕÝÅÓÔ×ÕÀÔ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ PostgreSQL ÞÅÒÅÚ Web?
+ 2.2) Kakie instrumenty suschestvuyut dlya ispol'zovaniya PostgreSQL cherez
+ Web?
- ðÒÅËÒÁÓÎÏÅ ××ÅÄÅÎÉÅ ×Ï ×ÚÁÉÍÏÄÅÊÓÔ×ÉÅ ÂÁÚ ÄÁÎÎÙÈ É Web ÍÏÖÎÏ ÎÁÊÔÉ ÎÁ:
- http://www.webreview.com
-
- ôÁËÖÅ ÚÁÇÌÑÎÉÔÅ ÎÁ http://www.phone.net/home/mwm/hotlist/.
+ Prekrasnoe vvedenie vo vzaimodejstvie baz dannyh i Web mozhno najti
+ na: http://www.webreview.com
- äÌÑ ÉÎÔÅÇÒÁÃÉÉ Ó Web, ÏÄÎÉÍ ÉÚ ÐÒÅ×ÏÓÈÏÄÎÙÈ ÉÎÓÔÒÕÍÅÎÔÏ× Ñ×ÌÑÅÔÓÑ PHP.
- äÏÍÁÛÎÑÑ ÓÔÁÎÉÞËÁ http://www.php.net.
+ Dlya integracii s Web, odnim iz prevoshodnyh instrumentov yavlyaetsya
+ PHP. Domashnyaya stanichka http://www.php.net.
- äÌÑ ËÏÍÐÌÅËÓÎÙÈ ÒÅÛÅÎÉÊ, ÍÎÏÇÉÅ ÐÏÌØÚÕÀÔÓÑ Perl ÉÎÔÅÒÆÅÊÓÏÍ É CGI.pm.
+ Dlya kompleksnyh reshenij, mnogie pol'zuyutsya Perl interfejsom i
+ CGI.pm ili mod_perl.
- 2.3) åÓÔØ ÌÉ Õ PostgreSQL ÇÒÁÆÉÞÅÓËÉÊ ÉÎÔÅÒÆÅÊÓ ÐÏÌØÚÏ×ÁÔÅÌÑ? çÅÎÅÒÁÔÏÒ
- ÏÔÞÅÔÏ×? ÷ÓÔÒÏÅÎÎÙÊ ÉÎÔÅÒÆÅÊÓ ÄÌÑ ÑÚÙËÁ ÚÁÐÒÏÓÏ×?
+ 2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya? Generator
+ otchetov? Vstroennyj interfejs dlya yazyka zaprosov?
- õ ÎÁÓ ÅÓÔØ ÐÒÅËÒÁÓÎÙÊ ÇÏÒÁÆÉÞÅÓËÉÊ ÉÎÔÅÒÆÅÊÓ, ÎÁÚÙ×ÁÅÍÙÊ pgaccess,
- ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÞÁÓÔØÀ ÄÉÓÔÒÉÂÕÔÉ×Á. pgaccess ÔÁËÖÅ ÅÍÅÅÔ ÇÅÎÅÒÁÔÏÒ
- ÏÔÞÅÔÏ×. åÇÏ ÓÔÒÁÎÉÞËÁ http://www.flex.ro/pgaccess
+ U nas est' prekrasnyj goraficheskij interfejs, nazyvaemyj PgAccess,
+ kotoryj takzhe mozhno ispol'zovat' kak generator otchetov. Ego
+ stranichka http://www.pgaccess.org/
- íÙ ÔÁËÖÅ ×ËÌÀÞÁÅÍ ecpg, ËÏÔÏÒÙÊ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ×ÓÔÒÏÅÎÎÙÊ ÉÎÔÅÒÆÅÊÓ Ë
- ÑÚÙËÕ ÚÁÐÒÏÓÏ× SQL ÉÚ C.
+ My takzhe vklyuchaem ecpg, kotoryj predostavlyaet vstroennyj interfejs
+ k yazyku zaprosov SQL iz C.
- 2.4) ëÁËÉÅ ÑÚÙËÉ ÍÏÇÕÔ ×ÚÁÉÍÏÄÅÊÓÔ×Ï×ÁÔØ Ó PostgreSQL?
+ 2.4) Kakie yazyki mogut vzaimodejstvovat' s PostgreSQL?
- ÷ÏÔ ÜÔÉ:
+ Vot `eti:
* C (libpq)
* C++ (libpq++)
* Embedded C (ecpg)
* Java (jdbc)
- * Perl (perl5)
+ * Perl (DBD::Pg i perl5)
* ODBC (odbc)
* Python (PyGreSQL)
* TCL (libpgtcl)
* C Easy API (libpgeasy)
- * Embedded HTML (PHP from http://www.php.net)
+ * PHP ('pg_' functions, Pear::DB)
- äÏÐÏÌÎÉÔÅÌØÎÙÅ ÉÎÔÅÒÆÅÊÓÙ ÄÏÓÔÕÐÎÙ ÐÏ ÁÄÒÅÓÕ
- http://www.postgresql.org/interfaces.html.
+ Dopolnitel'nye interfejsy dostupny po adresu
+ http://www.PostgreSQL.org/interfaces.html. i
+ http://gborg.PostgreSQL.org.
_________________________________________________________________
- ÷ÏÐÒÏÓÙ ÁÄÍÉÎÉÓÔÒÉÒÏ×ÁÎÉÑ
+ Voprosy administrirovaniya
- 3.1) ëÁË ÍÎÅ ÕÓÔÁÎÏ×ÉÔØ PostgreSQL × ÍÅÓÔÏ ÏÔÌÉÞÎÏÅ ÏÔ /usr/local/pgsql?
-
- úÁÄÁÊÔÅ ÏÐÃÉÀ --prefix ËÏÇÄÁ ÚÁÐÕÓËÁÅÔÅ configure.
-
- 3.2) ëÏÇÄÁ Ñ ÚÁÐÕÓËÁÀ postmaster, Ñ ÐÏÌÕÞÁÀ ÓÏÏÂÝÅÎÉÅ Bad System Call ÉÌÉ
- ÓÏÏÂÝÅÎÉÅ core dumped. ðÏÞÅÍÕ?
-
- üÔÏ ÍÏÖÅÔ ÂÙÔØ ×ÙÚ×ÁÎÏ ÒÁÚÎÙÍÉ ÐÒÏÂÌÅÍÁÍÉ, ÎÏ ÐÅÒ×ÏÅ, ÞÔÏ ÎÕÖÎÏ
- ÓÄÅÌÁÔØ - ÜÔÏ ÕÂÅÄÉÔØÓÑ × ÔÏÍ, ÞÔÏ × ×ÁÛÅÍ ÑÄÒÅ ÕÓÔÁÎÏ×ÌÅÎÏ ÒÁÓÛÉÒÅÎÉÅ
- System V. PostgreSQL ÔÒÅÂÕÅÔ, ÞÔÏÂÙ ÑÄÒÏ ÐÏÄÄÅÒÖÉ×ÁÌÏ ÒÁÚÄÅÌÑÅÍÕÀ
- ÐÁÍÑÔØ É ÓÅÍÁÆÏÒÙ.
-
- 3.3) ëÏÇÄÁ Ñ ÐÙÔÁÀÓØ ÚÁÐÕÓÔÉÔØ postmaster, Ñ ÐÏÌÕÞÁÀ ÏÛÉÂËÉ
- IpcMemoryCreate. ðÏÞÅÍÕ?
-
- ìÉÂÏ Õ ×ÁÓ × ÑÄÒÅ ÎÅÐÒÁ×ÉÌØÎÙÅ ÎÁÓÔÒÏÊËÉ ÒÁÚÄÅÌÑÅÍÏÊ ÐÁÍÑÔÉ, ÌÉÂÏ
- ×ÁÛÅÍÕ ÑÄÒÕ ÎÕÖÎÏ ÂÏÌØÛÅÅ ËÏÌÉÞÅÓÔ×Ï ÄÏÓÔÕÐÎÏÊ ÒÁÚÄÅÌÑÅÍÏÊ ÐÁÍÑÔÉ. ôÅ
- ËÏÎËÒÅÔÎÙÅ ÄÅÊÓÔ×ÉÑ, ËÏÔÏÒÙÅ ×ÁÍ ÎÕÖÎÏ ÐÒÏÉÚ×ÅÓÔÉ ÚÁ×ÉÓÑÔ ÏÔ
- ÁÒÈÉÔÅËÔÕÒÙ ×ÁÛÅÊ ÍÁÛÉÎÙ É ÏÔ ÔÏÇÏ ËÁË ÍÎÏÇÏ ÂÕÆÅÒÏ× É backend
- ÐÒÏÃÅÓÓÏ× ×Ù ÎÁÓÔÒÏÉÌÉ ÄÌÑ postmaster. äÌÑ ÂÏÌØÛÉÎÓÔ×Á ÓÉÓÔÅÍ, Ó
- ËÏÌÉÞÅÓÔ×ÏÍ ÂÕÆÅÒÏ× É ÐÒÏÃÅÓÓÏ× ÐÏ ÕÍÏÌÞÁÎÉÀ, ÎÅÏÂÈÏÄÉÍÙÊ ÍÉÎÉÍÕÍ -
- ÜÔÏ ÏËÏÌÏ 1 ÍÅÇÁÂÁÊÔÁ. ðÏÄÒÏÂÎÏÓÔÉ Ï ÒÁÚÄÅÌÑÅÍÏÊ ÐÁÍÑÔÉ É ÓÅÍÁÆÏÒÁÈ
- ÓÍÏÔÒÉÔÅ × òÕËÏ×ÏÄÓÔ×Å ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ PostgreSQL.
-
- 3.4) ëÏÇÄÁ Ñ ÐÙÔÁÀÓØ ÚÁÐÕÓÔÉÔØ postmaster, Ñ ÐÏÌÕÞÁÀ ÏÛÉÂËÉ
- IpcSemaphoreCreate. ðÏÞÅÍÕ?
-
- åÓÌÉ ÜÔÏ ÓÏÏÂÝÅÎÉÅ IpcSemaphoreCreate: semget failed (No space left on
- device) ÔÏ ÎÁÓÔÒÏÊËÉ ×ÁÛÅÇÏ ÑÄÒÁ ÔÁËÏ×Ù, ÞÔÏ ÅÍÕ ÎÅ È×ÁÔÁÅÔ ÓÅÍÁÆÏÒÏ×.
- Postgres ÔÒÅÂÕÅÔ ÏÄÉÎ ÓÅÍÁÆÏÒ ÎÁ ÐÏÔÅÎÃÉÁÌØÎÙÊ backend ÐÒÏÃÅÓÓ.
- ÷ÒÅÍÅÎÎÙÍ ÒÅÛÅÎÉÅÍ Ñ×ÌÑÅÔÓÑ ÚÁÐÕÓË postmaster Ó ÎÁÓÔÒÏÊËÁÍÉ ÎÁ ÍÅÛØÛÅÅ
- ËÏÌÉÞÅÓÔ×Ï backend ÐÒÏÃÅÓÓÏ×. éÓÐÏÌØÚÕÊÔÅ -N Ó ÚÎÁÞÅÎÉÅÍ ÍÅÎØÛÉÍ ÞÅÍ
- 32, ËÏÔÏÒÏÅ ÐÒÉÎÑÔÏ ÐÏ ÕÍÏÌÞÁÎÉÀ. âÏÌÅÅ ÐÒÁ×ÉÌØÎÏÅ ÒÅÛÅÎÉÅ - ÜÔÏ
- Õ×ÅÌÉÞÉÔØ ÚÎÁÞÅÎÉÑ SEMMNS É SEMMNI × ÎÁÓÔÒÊËÁÈ ÑÄÒÁ.
-
- îÅÉÓÐÒÁ×ÎÙÅ ÓÅÍÁÆÏÒÙ ÔÁËÖÅ ÍÏÇÕÔ ÐÒÉ×ÅÓÔÉ Ë ÐÁÄÅÎÉÀ óõâä ×Ï ×ÒÅÍÑ
- ÄÏÓÔÕÐÁ Ë ÂÁÚÅ ÄÁÎÎÙÈ.
-
- åÓÌÉ ×Ù ÐÏÌÕÞÉÌÉ ËÁËÏÅ-ÌÉÂÏ ÄÒÕÇÏÅ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ, ÔÏ ×ÐÏÌÎÅ
- ×ÏÚÍÏÖÎÏ, ÞÔÏ × ×ÁÛÅÍ ÑÄÒÅ ×ÏÏÂÝÅ ÎÅ ÎÁÓÔÒÏÅÎÁ ÐÏÄÄÅÒÖËÁ ÓÅÍÁÆÏÒÏ×.
- óÍÏÔÒÉÔÅ ÐÏÄÒÏÂÎÏÓÔÉ Ï ÒÁÚÄÅÌÑÅÍÏÊ ÐÁÍÑÔÉ É ÓÅÍÁÆÏÒÁÈ × òÕËÏ×ÏÄÓÔ×Å
- áÄÍÉÎÉÓÔÒÁÔÏÒÁ PostgreSQL.
-
- 3.5) ëÁË ÍÎÅ ÕÐÒÁ×ÌÑÔØ ÓÏÅÄÉÎÅÎÉÑÍÉ Ó ÄÒÕÇÉÈ ËÏÍÐØÀÔÅÒÏ×?
-
- ðÏ ÕÍÏÌÞÁÎÉÀ, PostgreSQL ÒÁÚÒÅÛÁÅÔ ÔÏÌØËÏ ÓÏÅÄÉÎÅÎÉÑ ÎÁ ÌÏËÁÌØÎÏÊ
- ÍÁÛÉÎÅ ÞÅÒÅÚ ÓÏËÅÔÙ ÄÏÍÅÎÁ Unix. äÒÕÇÉÅ ÍÁÛÉÎÙ ÎÅ ÓÍÏÇÕÔ ÐÏÄËÌÀÞÉÔØÓÑ
- Ë ÂÁÚÅ ÐÏËÁ ÄÌÑ postmaster ÎÅ ÂÕÄÅÔ ÚÁÄÁÎ ÆÌÁÇ -i É ÐÏËÁ ÎÅ ÂÕÄÅÔ
- ÒÁÚÒÅÛÅÎÁ host-Á×ÔÏÒÉÚÁÃÉÑ × ÆÁÊÌÅ $PGDATA/pg_hba.conf. üÔÉ ÄÅÊÓÔ×ÉÑ
- ÄÅÌÁÀÔ ×ÏÚÍÏÖÎÙÍÉ TCP/IP ÓÏÅÄÉÎÅÎÉÑ.
-
- 3.6) ëÁËÉÅ ÎÁÓÔÒÏÊËÉ ÍÎÅ ÎÕÖÎÏ ÓÄÅÌÁÔØ ÄÌÑ ÕÌÕÞÛÅÎÉÑ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ?
-
- îÅÓÏÍÎÅÎÎÏ, ÉÎÄÅËÓÙ ÍÏÇÕÔ Õ×ÅÌÉÞÉÔØ ÓËÏÒÏÓÔØ ×ÙÐÏÌÎÅÎÉÑ ÚÁÐÒÏÓÏ×.
- ëÏÍÁÎÄÁ EXPLAIN ÐÏÚ×ÏÌÑÅÔ ×ÁÍ ÐÏÓÍÏÔÒÅÔØ ËÁË PostgreSQL ÉÎÔÅÒÐÒÅÔÉÒÕÅÔ
- ×ÁÛ ÚÁÐÒÏÓ É ËÁËÉÅ ÉÎÄÅËÓÙ ÉÓÐÏÌØÚÕÀÔÓÑ.
-
- åÓÌÉ ×Ù ×ÙÐÏÌÎÑÅÔÅ ÍÎÏÇÏ ÏÐÅÒÁÔÏÒÏ× INSERT, ÒÁÓÓÍÏÔÒÉÔÅ ×ÏÚÍÏÖÎÏÓÔØ
- ×ÙÐÏÌÎÑÔØ ÉÈ × ÂÏÌØÛÏÊ ÐÁÞËÅ, ÉÓÐÏÌØÚÕÑ ËÏÍÁÎÄÕ COPY. üÔÏ ÚÎÁÞÉÔÅÌØÎÏ
- ÂÙÓÔÒÅÅ, ÞÅÍ ÏÔÄÅÌØÎÙÅ INSERT. ÷Ï-×ÔÏÒÙÈ, ÏÐÅÒÁÔÏÒÙ ×ÎÅ ÂÌÏËÁ
- ÔÒÁÎÚÁËÃÉÉ BEGIN WORK/COMMIT ÓÁÍÉ ×ÙÐÏÌÎÑÀÔ ÔÒÁÎÚÁËÃÉÀ. ðÏÄÕÍÁÊÔÅ ÎÁÄ
- ×ÙÐÏÌÎÅÎÉÅÍ ÎÅÓËÏÌØËÉÈ ÏÐÅÒÁÔÏÒÏ× × ÏÄÎÏÍ ÂÌÏËÅ ÔÒÁÎÚÁËÃÉÉ. üÔÏ
- ÕÍÅÎØÛÉÔ ËÏÌÉÞÅÓÔ×Ï ÔÒÁÎÚÁËÃÉÊ. ôÁËÖÅ, ÚÁÄÕÍÁÊÔÅÓØ ÎÁÄ ÕÄÁÌÅÎÉÅÍ É
- ÐÅÒÅÓÏÚÄÁÎÉÅÍ ÉÎÄÅËÓÏ×, ËÏÇÄÁ ×Ù ×ÙÐÏÌÎÑÅÔÅ ÂÏÌØÛÉÅ ÉÚÍÅÎÅÎÉÑ ÄÁÎÎÙÈ.
-
- óÕÝÅÓÔ×ÕÅÔ ÎÅÓËÏÌØËÏ ÏÐÃÉÊ ÎÁÓÔÒÏÊËÉ. ÷Ù ÍÏÖÅÔÅ ÚÁÐÒÅÔÉÔØ fsync() ÐÒÉ
- ÓÔÁÒÔÅ postmaster Ó ÏÐÃÉÅÊ -o -F. üÔÏ ÐÒÅÄÏÔ×ÒÁÔÉÔ ×ÙÚÏ×Ù fsync(),
- ËÏÔÏÒÙÅ ÐÒÉ×ÏÄÑÔ Ë ÓÂÒÏÓÕ ÄÁÎÎÙÈ ÎÁ ÄÉÓË ÐÏÓÌÅ ËÁÖÄÏÊ ÔÒÁÎÚÁËÃÉÉ.
-
- ÷Ù ÍÏÖÅÔÅ ÔÁËÖÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ postmaster ÏÐÃÉÀ -B ÄÌÑ Õ×ÅÌÉÞÅÎÉÑ
- ËÏÌÉÞÅÓÔ×Á ÂÕÆÅÒÏ× ÒÁÚÄÅÌÑÅÍÏÊ ÐÁÍÑÔÉ, ËÏÔÏÒÁÑ ÉÓÐÏÌØÚÕÅÔÓÑ backend
- ÐÒÏÃÅÓÓÁÍÉ. åÓÌÉ ×Ù ÓÄÅÌÁÅÔÅ ÚÎÁÞÅÎÉÅ ÜÔÏÇÏ ÐÁÒÁÍÅÔÒÁ ÓÌÉÛËÏÍ ÂÏÌØÛÉÍ,
- ÔÏ postmaster ÍÏÖÅÔ ÎÅ ÚÁÐÕÓÔÉÔÓÑ ÐÏÔÏÍÕ ÞÔÏ ×Ù ÉÓÞÅÒÐÁÅÔÅ ÏÇÒÁÎÉÞÅÎÉÅ
- ÑÄÒÁ ÎÁ ÏÂßÅÍ ÒÁÚÄÅÌÑÅÍÏÊ ÐÁÍÑÔÉ. ëÁÖÄÙÊ ÂÕÆÅÒ ÉÍÅÅÔ ÒÁÚÍÅÒ × 8
- ËÉÌÏÂÁÊÔ É ÐÏ ÕÍÏÌÞÁÎÉÀ ×ÙÄÅÌÑÅÔÓÑ 64 ÂÕÆÅÒÁ.
-
- ÷Ù ÍÏÖÅÔÅ ÔÁËÖÅ ÉÓÐÏÌØÚÏ×ÁÔØ backend ÏÐÃÉÀ -S ÄÌÑ Õ×ÅÌÉÞÅÎÉÑ
- ÍÁËÓÉÍÁÌØÎÏÇÏ ËÏÌÉÞÅÓÔ×Á ÐÁÍÑÔÉ, ËÏÔÏÒÏÅ ÉÓÐÏÌØÚÕÅÔÓÑ backend
- ÐÒÏÃÅÓÓÏÍ ÄÌÑ ×ÒÅÍÅÎÎÙÈ ÓÏÒÔÉÒÏ×ÏË. úÎÁÞÅÎÉÅ ÄÌÑ ÏÐÃÉÉ -S ÚÁÄÁÅÔÓÑ ×
- ËÉÌÏÂÁÊÔÁÈ É ÐÏ ÕÍÏÌÞÁÎÉÀ ÒÁ×ÎÏ 512 (Ô.Å. 512K).
-
- ÷Ù ÔÁËÖÅ ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ËÏÍÁÎÄÕ CLUSTER ÄÌÑ ÇÒÕÐÐÉÒÏ×ËÉ ÄÁÎÎÙÈ ×
- ÔÁÂÌÉÃÁÈ ÎÁ ÓÏ×ÐÁÄÁÀÝÉÊ ÉÎÄÅËÓ. ðÏÄÒÏÂÎÏÓÔÉ ÓÍÏÔÒÉÔÅ ÎÁ ÓÔÒÁÎÉÃÅ
- ÒÕËÏ×ÏÄÓÔ×Á ÐÏ ËÏÍÁÎÄÅ CLUSTER.
-
- 3.7) ëÁËÉÅ ×ÏÚÍÏÖÎÏÓÔÉ ÄÌÑ ÏÔÌÁÄËÉ ÅÓÔØ × ÎÁÌÉÞÉÉ?
-
- PostgreSQL ÉÍÅÅÔ ÎÅÓËÏÌØËÏ ×ÏÚÍÏÖÎÏÓÔÅÊ, ÐÏÚ×ÏÌÑÀÝÉÅ ÐÏÌÕÞÉÔØ
- ÉÎÆÏÒÍÁÃÉÀ Ï ÓÏÓÔÏÑÎÉÉ, ËÏÔÏÒÁÑ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ × ÏÔÌÁÄÏÞÎÙÈ
- ÃÅÌÑÈ.
-
- ÷Ï-ÐÅÒ×ÙÈ, ÐÒÉ ÚÁÐÕÓËÅ configure Ó ÏÐÃÉÅÊ --enable-cassert, ÍÎÏÇÉÅ
- ×ÙÚÏ×Ù assert() ÐÏÚ×ÏÌÑÀÔ ÏÔÓÌÅÖÉ×ÁÔØ ÒÁÂÏÔÕ backend ÐÒÏÃÅÓÓÁ É
- ÏÓÔÁÎÏ×ËÕ ÐÒÏÇÒÁÍÍÙ ÐÒÉ ×ÏÚÎÉËÎÏ×ÅÎÉÉ ËÁËÉÈ-ÌÉÂÏ ÎÅÏÖÉÄÁÎÎÏÓÔÅÊ.
-
- é postmaster, É postgres ÉÍÅÀÔ ÎÅÓËÏÌØËÏ ÏÔÌÁÄÏÞÎÙÈ ÏÐÃÉÊ. ÷Ï-ÐÅÒ×ÙÈ,
- ÐÒÉ ÚÁÐÕÓËÅ postmaster, ÕÂÅÄÉÔÅÓØ, ÞÔÏ ÓÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ É ×Ù×ÏÄ
- ÏÛÉÂÏË ÏÓÕÝÅÓÔ×ÌÑÀÔÓÑ × ÆÁÊÌ ÖÕÒÎÁÌÁ:
+ 3.1) Kak mne ustanovit' PostgreSQL v mesto otlichnoe ot /usr/local/pgsql?
+
+ Zadajte opciyu --prefix kogda zapuskaete configure.
+
+ 3.2) Kogda ya zapuskayu postmaster, ya poluchayu soobschenie Bad System
+ 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
+ mashine cherez sokety domena Unix. Drugie mashiny ne smogut
+ podklyuchit'sya k baze poka dlya postmaster ne budet zadan flag -i i
+ poka ne budet razreshena host-avtorizaciya v fajle
+ $PGDATA/pg_hba.conf. `Eti dejstviya delayut vozmozhnymi TCP/IP
+ soedineniya.
+
+ 3.6) Kakie nastrojki mne nuzhno sdelat' dlya uluchsheniya
+ proizvoditel'nosti?
+
+ Nesomnenno, indeksy mogut uvelichit' skorost' vypolneniya zaprosov.
+ Komanda EXPLAIN pozvolyaet vam posmotret' kak PostgreSQL
+ interpretiruet vash zapros i kakie indeksy ispol'zuyutsya.
+
+ Esli vy vypolnyaete mnogo operatorov INSERT, rassmotrite vozmozhnost'
+ vypolnyat' ih v bol'shoj pachke, ispol'zuya komandu COPY. `Eto
+ znachitel'no bystree, chem otdel'nye INSERT. Vo-vtoryh, operatory vne
+ bloka tranzakcii BEGIN WORK/COMMIT sami vypolnyayut tranzakciyu.
+ Podumajte nad vypolneniem neskol'kih operatorov v odnom bloke
+ tranzakcii. `Eto umen'shit kolichestvo tranzakcij. Takzhe, zadumajtes'
+ nad udaleniem i peresozdaniem indeksov, kogda vy vypolnyaete bol'shie
+ izmeneniya dannyh.
+
+ Suschestvuet neskol'ko opcij nastrojki. Vy mozhete zapretit' fsync()
+ pri starte postmaster s opciej -o -F. `Eto predotvratit vyzovy
+ fsync(), kotorye privodyat k sbrosu dannyh na disk posle kazhdoj
+ tranzakcii.
+
+ Vy mozhete takzhe ispol'zovat' dlya postmaster opciyu -B dlya
+ uvelicheniya kolichestva buferov razdelyaemoj pamyati, kotoraya
+ ispol'zuetsya backend processami. Esli vy sdelaete znachenie `etogo
+ parametra slishkom bol'shim, to postmaster mozhet ne zapustitsya
+ potomu chto vy ischerpaete ogranichenie yadra na ob"em razdelyaemoj
+ pamyati. Kazhdyj bufer imeet razmer v 8 kilobajt i po umolchaniyu
+ vydelyaetsya 64 bufera.
+
+ Vy mozhete takzhe ispol'zovat' backend opciyu -S dlya uvelicheniya
+ maksimal'nogo kolichestva pamyati, kotoroe ispol'zuetsya backend
+ processom dlya vremennyh sortirovok. Znachenie dlya opcii -S zadaetsya
+ v kilobajtah i po umolchaniyu ravno 512 (t.e. 512K).
+
+ Vy takzhe mozhete ispol'zovat' komandu CLUSTER dlya gruppirovki dannyh
+ v tablicah na sovpadayuschij indeks. Podrobnosti smotrite na stranice
+ rukovodstva po komande CLUSTER.
+
+ 3.7) Kakie vozmozhnosti dlya otladki est' v nalichii?
+
+ PostgreSQL imeet neskol'ko vozmozhnostej, pozvolyayuschie poluchit'
+ informaciyu o sostoyanii, kotoraya mozhet byt' ispol'zovana v
+ otladochnyh celyah.
+
+ Vo-pervyh, pri zapuske configure s opciej --enable-cassert, mnogie
+ vyzovy assert() pozvolyayut otslezhivat' rabotu backend processa i
+ ostanovku programmy pri vozniknovenii kakih-libo neozhidannostej.
+
+ I postmaster, i postgres imeyut neskol'ko otladochnyh opcij.
+ Vo-pervyh, pri zapuske postmaster, ubedites', chto standartnyj vyvod i
+ vyvod oshibok osuschestvlyayutsya v fajl zhurnala:
cd /usr/local/pgsql
./bin/postmaster >server.log 2>&1 &
- üÔÏ ÐÒÉ×ÅÄÅÔ Ë ÐÏÑ×ÌÅÎÉÀ ÆÁÊÌÁ server.log × ÇÌÁ×ÎÏÍ ËÁÔÁÌÏÇÅ
- PostgreSQL. üÔÏÔ ÆÁÊÌ ÓÏÄÅÒÖÉÔ ÐÏÌÅÚÎÕÀ ÉÎÆÏÒÍÁÃÉÀ Ï ÐÒÏÂÌÅÍÁÈ ÉÌÉ
- ÏÛÉÂËÁÈ, ×ÏÚÎÉËÛÉÈ ÎÁ ÓÅÒ×ÅÒÅ. Postmaster ÉÍÅÅÔ ÏÐÃÉÀ -d, ËÏÔÏÒÁÑ
- ÐÏÚ×ÏÌÑÅÔ ÐÏÌÕÞÁÔØ ÐÒÉ ÐÒÏÔÏËÏÌÉÒÏ×ÁÎÉÉ ÂÏÌÅÅ ÄÅÔÁÌØÎÕÀ ÉÎÆÒÍÁÃÉÀ. äÌÑ
- ÏÐÃÉÉ -d ÕËÁÚÙ×ÁÅÔÓÑ ÞÉÓÌÏ, ËÏÔÏÒÏÅ ÚÁÄÁÅÔ ÕÒÏ×ÅÎØ ÏÔÌÁÄËÉ. âÕÄØÔÅ
- ÏÓÔÏÒÏÖÎÙ, ÔÁË ËÁË ×ÙÓÏËÉÊ ÕÒÏ×ÅÎØ ÏÔÌÁÄËÉ ÐÒÉ×ÏÄÉÔ Ë ÇÅÎÅÒÁÃÉÉ ÆÁÊÌÏ×
- ÖÕÒÎÁÌÁ ÂÏÌØÛÏÇÏ ÒÁÚÍÅÒÁ.
-
- åÓÌÉ postmaster ÎÅ ÚÁÐÕÝÅÎ, ×Ù ÍÏÖÅÔÅ ÚÁÐÕÓÔÉÔØ postgres backend ÉÚ
- ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ É ××ÅÓÔÉ ×ÁÛ ÏÐÅÒÁÔÏÒ SQL ÎÁÐÒÑÍÕÀ. üÔÏ ÒÅËÏÍÅÎÄÕÅÔÓÑ
- ÔÏÌØËÏ ÄÌÑ ÃÅÌÅÊ ÏÔÌÁÄËÉ. úÁÍÅÔÉÍ, ÞÔÏ × ÜÔÏÍ ÒÅÖÉÍÅ, ÚÁÐÒÏÓ
- ÚÁ×ÅÒÛÁÅÔÓÑ ÓÉÍ×ÏÌÏÍ ÎÏ×ÏÊ ÓÔÒÏËÉ, Á ÎÅ ÔÏÞËÏÊ Ó ÚÁÐÑÔÏÊ. åÓÌÉ ×Ù
- ÐÒÏÉÚ×ÏÄÉÌÉ ËÏÍÐÉÌÑÃÉÀ Ó ÏÔÌÁÄÏÞÎÙÍÉ ÓÉÍ×ÏÌÏÁÍÉ, ×Ù ÍÏÖÅÔÅ
- ÉÓÐÏÌØÚÏ×ÁÔØ ÌÀÂÏÊ ÏÔÌÁÄÞÉË, ÞÔÏÂÙ ÐÏÓÍÏÔÒÅÔØ, ÞÔÏ ÓÌÕÞÉÌÏÓØ.
- ðÏÓËÏÌØËÕ backend ÚÁÐÕÓËÁÅÔÓÑ ÎÅ ÉÚ postmaster, ÏÎ ÎÅ ÚÁÐÕÓËÁÅÔÓÑ ×
- ÉÄÅÎÔÉÞÎÏÍ ÏËÒÕÖÅÎÉÉ É ÚÎÁÞÉÔ ÐÒÏÂÌÅÍÙ ÉÔÅÒÁÃÉÊ ÂÌÏËÉÒÏ×ÏË/backend ÎÅ
- ÍÏÇÕÔ ÂÙÔØ ×ÏÓÐÒÏÉÚ×ÅÄÅÎÙ.
-
- åÓÌÉ postmaster ÚÁÐÕÝÅÎ, ÚÁÐÕÓÔÉÔÅ psql × ÏÄÎÏÍ ÏËÎÅ, ÚÁÔÅÍ ÎÁÊÄÉÔÅ
- PID ÐÒÏÃÅÓÓÁ postgres, ÉÓÐÏÌØÚÕÅÍÙÊ psql. éÓÐÏÌØÚÕÊÔÅ ÏÔÄÁÄÞÉË ÄÌÑ
- ÐÏÄËÌÀÞÅÎÉÑ Ë postgres PID. ÷Ù ÍÏÖÅÔÅ ÕÓÔÁÎÏ×ÉÔØ ÔÏÞËÉ ÐÒÅÒÙ×ÁÎÉÑ ×
- ÏÔÌÁÄÞÉËÅ É ÚÁÐÕÓÔÉÔØ ÚÁÐÒÏÓ ÉÚ psql. åÓÌÉ ×Ù ÐÒÏÉÚ×ÏÄÉÔÅ ÏÔÌÁÄËÕ
- ÚÁÐÕÓËÁ postgres, ×Ù ÍÏÖÅÔÅ ÕÓÔÁÎÏ×ÉÔØ PGOPTIONS="-W n", É ÚÁÔÅÍ
- ÚÁÐÕÓÔÉÔØ psql. üÔÁ ÏÐÃÉÑ ÐÒÉ×ÏÄÉÔ Ë ÚÁÄÅÒÖËÅ ÐÒÏÃÅÓÓÁ ÚÁÐÕÓËÁ ÎÁ n
- ÓÅËÕÎÄ, × ÔÅÞÅÎÉÅ ËÏÔÏÒÙÈ ×Ù ÍÏÖÅÔÅ ÐÏÄËÌÀÞÉÔØ Ë ÐÒÏÃÅÓÓÕ ÏÔÌÁÄÞÉË,
- ÕÓÔÁÎÏ×ÉÔØ ÌÀÂÙÅ ÔÏÞËÉ ÐÒÅÒÙ×ÁÎÉÑ É ÐÒÏÄÏÌÖÉÔØ ÚÁÐÕÓË.
-
- ðÒÏÇÒÁÍÍÁ postgres ÉÍÅÅÔ ÏÐÃÉÉ -s, -A, É -t ËÏÔÏÒÙÅ ÍÏÇÕÔ ÂÙÔØ ÏÞÅÎØ
- ÐÏÌÅÚÎÙÍÉ ÄÌÑ ÏÔÌÁÄËÉ É ÉÚÍÅÒÅÎÉÑ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ.
-
- ÷Ù ÔÁËÖÅ ÍÏÖÅÔÅ ÓËÏÍÐÉÌÉÒÏ×ÁÔØ PostgreSQL Ó ÐÒÏÆÉÌÉÒÏ×ÁÎÉÅÍ ÄÌÑ ÔÏÇÏ,
- ÞÔÏÂÙ Õ×ÉÄÅÔØ ËÁËÉÅ ÆÕÎËÃÉÉ ÓËÏÌØËÏ ×ÒÅÍÅÎÉ ×ÙÐÏÌÎÑÀÔÓÑ. æÁÊÌÙ
- ÐÒÏÆÉÌÉÒÏ×ÁÎÉÑ backend'Á ÎÁÈÏÄÑÔÓÑ × ËÁÔÁÌÏÇÅ pgsql/data/base/dbname.
- æÁÊÌ ÐÒÏÆÉÌÉÒÏ×ÁÎÉÑ ËÌÉÅÎÔÁ ÂÕÄÅÔ ÐÏÍÅÝÅÎ × ÔÅËÕÝÉÊ ËÁÔÁÌÏÇ ËÌÉÅÎÔÁ. ÷
- Linux ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ÐÒÏÆÉÌÉÒÏ×ÁÎÉÑ ÔÒÅÂÕÅÔÓÑ ËÏÍÐÉÌÑÃÉÉ Ó
- -DLINUX_PROFILE.
-
- 3.8) ðÏÞÅÍÕ Ñ ÐÏÌÕÞÁÀ ÓÏÏÂÝÅÎÉÅ "Sorry, too many clients" ËÏÇÄÁ ÐÙÔÁÀÓØ
- ÐÏÄËÌÀÞÉÔØÓÑ Ë ÂÁÚÅ?
-
- ÷ÁÍ ÎÕÖÎÏ Õ×ÅÌÉÞÉÔØ ÏÇÒÁÎÉÞÅÎÉÅ ÎÁ ËÏÌÉÞÅÓÔ×Ï ËÏÎËÕÒÅÔÎÙÈ backend
- ÐÒÏÃÅÓÓÏ× ÐÒÉ ÚÁÐÕÓËÅ postmaster.
-
- ðÏ ÕÍÏÌÞÁÎÉÀ ÕÓÔÁÎÏ×ÌÅÎ ÌÉÍÉÔ ÎÁ 32 ÐÒÏÃÅÓÓÁ. ÷Ù ÍÏÖÅÔÅ Õ×ÅÌÉÞÉÔØ ÜÔÏÔ
- ÌÉÍÉÔ ÐÅÒÅÚÁÐÕÓÔÉ× postmaster Ó ÎÕÖÎÙÍ ÚÎÁÞÅÎÉÅÍ ÐÒÏÃÅÓÓÏ×, ËÏÔÏÒÏÅ
- ÕËÁÚÙ×ÁÅÔÓÑ × ÏÐÃÉÉ -N ÉÌÉ ÉÚÍÅÎÉ× ÆÁÊÌ postgresql.conf.
-
- úÁÍÅÔÉÍ, ÞÔÏ ÅÓÌÉ ×Ù ÚÁÄÁÄÉÔÅ × ÏÐÃÉÉ -N ÚÎÁÞÅÎÉÅ ÂÏÌØÛÅ 32, ÔÏ ×Ù
- ÔÁËÖÅ ÄÏÌÖÎÙ Õ×ÅÌÉÞÉÔØ ÚÎÁÞÅÎÉÅ × ÏÐÃÉÉ -B ËÏÔÏÒÏÅ ÐÏ ÕÍÏÌÞÁÎÉÀ
- ÕÓÔÁÎÏ×ÌÅÎÏ × 64; úÎÁÞÅÎÉÅ ÏÐÃÉÉ -B ÄÏÌÖÎÏ ÂÙÔØ ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ ×Ä×ÏÅ
- ÂÏÌØÛÅ ÚÎÁÞÅÎÉÑ ÏÐÃÉÉ -N, É ×ÏÚÍÏÖÎÏ ÅÝ£ ÂÏÌØÛÅ ÄÌÑ ÌÕÞÛÅÊ
- ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ. äÌÑ ÂÏÌØÛÅÇÏ ËÏÌÉÞÅÓÔ×Á backend ÐÒÏÃÅÓÓÏ×, ×ÁÍ
- ÔÁËÖÅ ÎÅÐÌÏÈÏ ÂÙÌÏ ÂÙ Õ×ÅÌÉÞÉÔØ ÎÅËÏÔÏÒÙÅ ÐÁÒÁÍÅÔÒÙ ÑÄÒÁ Unix. üÔÏ
- ÔÁËÉÅ ÐÁÒÁÍÅÔÒÙ, ËÁË ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÂÌÏËÏ× ÒÁÚÄÅÌÑÅÍÏÊ
- ÐÁÍÑÔÉ, SHMMAX; ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÓÅÍÁÆÏÒÏ×, SEMMNS É SEMMNI;
- ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÐÒÏÃÅÓÓÏ×, NPROC; ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï
- ÐÒÏÃÅÓÓÏ× ÎÁ ÐÏÌØÚÏ×ÁÔÅÌÑ, MAXUPRC; É ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÏÔËÒÙÔÙÈ
- ÆÁÊÌÏ×, NFILE É NINODE. ðÒÉÞÉÎÁ ÓÏÚÄÁÎÉÑ ÏÇÒÁÎÉÞÅÎÉÑ ÎÁ ËÏÌÉÞÅÓÔ×Ï
- backend ÐÒÏÃÅÓÓÏ× ËÁË ÒÁÚ É ÓÏÓÔÏÉÔ × ÔÏÍ, ÞÔÏÂÙ ×ÁÛÅÊ ÓÉÓÔÅÍÅ È×ÁÔÉÌÏ
- ÒÅÓÕÒÓÏ×.
-
- ÷ PostgreSQL ÄÏ ×ÅÒÓÉÉ 6.5, ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï backend ÐÒÏÃÅÓÓÏ×
- ÂÙÌÏ 64, É ÉÚÍÅÎÅÎÉÅ ÜÔÏÇÏ ËÏÌÉÞÅÓÔ×Á ÔÒÅÂÏ×ÁÌÏ ÐÅÒÅËÏÍÐÉÌÑÃÉÉ ÐÏÓÌÅ
- ÕÓÔÁÎÏ×ËÉ ËÏÎÓÔÁÎÔÙ MaxBackendId × include/storage/sinvaladt.h.
-
- 3.9) þÔÏ ÜÔÏ ÚÁ ÆÁÊÌÙ pg_sorttempNNN.NN × ÍÏÅÍ ËÁÔÁÌÏÇÅ Ó ÂÁÚÏÊ ÄÁÎÎÙÈ?
-
- üÔÏ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ, ÇÅÎÅÒÉÒÕÅÍÙÅ ×Ï ×ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ ÚÁÐÒÏÓÁ.
- îÁÐÒÉÍÅÒ, ÅÓÌÉ ÄÌÑ ÏÐÅÒÁÔÏÒÁ ORDER BY ÄÏÌÖÎÁ ÂÙÔØ ×ÙÐÏÌÎÅÎÁ
- ÓÏÒÔÉÒÏ×ËÁ, ËÏÔÏÒÁÑ ÔÒÅÂÕÅÔ ÂÏÌØÛÅ ÍÅÓÔÁ ÞÅÍ ×ÙÄÅÌÅÎÎÏ ÄÌÑ backend
- ÐÒÏÃÅÓÓÁ × ÏÐÃÉÉ -S, ÔÏ ÓÏÚÄÁÅÔÓÑ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ ÄÌÑ ÈÒÁÎÅÎÉÑ
- ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÄÁÎÎÙÈ.
-
- ÷ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ ÄÏÌÖÎÙ ÕÄÁÌÑÔØÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ, ÎÏ ÜÔÏÇÏ ÍÏÖÅÔ ÎÅ
- ÐÒÏÉÓÈÏÄÉÔØ, ÅÓÌÉ backend ÐÒÏÃÅÓÓ ÐÁÄÁÅÔ ×Ï ×ÒÅÍÑ ÓÏÒÔÉÒÏ×ËÉ. åÓÌÉ Õ
- ×ÁÓ ÎÅ ÚÁÐÕÝÅÎÏ ÎÉ ÏÄÎÏÇÏ backend ÐÒÏÃÅÓÓÁ, ÔÏ ×Ù ÍÏÖÅÔÅ ÓÐÏËÏÊÎÏ
- ÕÄÁÌÉÔØ ÆÁÊÌÙ pg_tempNNN.NN.
- 3.10) ðÏÞÅÍÕ ÎÅÏÂÈÏÄÉÍÏ ÄÅÌÁÔØ dump É restore ÐÒÉ ÏÂÎÏ×ÌÅÎÉÉ ×ÙÐÕÓËÏ×
- PostgreSQL?
+ `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
+ komandnoj stroki i vvesti vash operator SQL napryamuyu. `Eto
+ rekomenduetsya tol'ko dlya celej otladki. Zametim, chto v `etom
+ rezhime, zapros zavershaetsya simvolom novoj stroki, a ne tochkoj s
+ zapyatoj. Esli vy proizvodili kompilyaciyu s otladochnymi simvoloami,
+ vy mozhete ispol'zovat' lyuboj otladchik, chtoby posmotret', chto
+ sluchilos'. Poskol'ku backend zapuskaetsya ne iz postmaster, on ne
+ zapuskaetsya v identichnom okruzhenii i znachit problemy iteracij
+ blokirovok/backend ne mogut byt' vosproizvedeny.
+
+ Esli postmaster zapuschen, zapustite psql v odnom okne, zatem najdite
+ PID processa postgres, ispol'zuemyj psql. Ispol'zujte otdadchik dlya
+ podklyucheniya k postgres PID. Vy mozhete ustanovit' tochki
+ preryvaniya v otladchike i zapustit' zapros iz psql. Esli vy
+ proizvodite otladku zapuska postgres, vy mozhete ustanovit'
+ PGOPTIONS="-W n", i zatem zapustit' psql. `Eta opciya privodit k
+ 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
+ togo, chtoby uvidet' kakie funkcii skol'ko vremeni vypolnyayutsya.
+ Fajly profilirovaniya backend'a nahodyatsya v kataloge
+ pgsql/data/base/dbname. Fajl profilirovaniya klienta budet pomeschen v
+ tekuschij katalog klienta. V Linux dlya vypolneniya profilirovaniya
+ trebuetsya kompilyacii s -DLINUX_PROFILE.
+
+ 3.8) Pochemu ya poluchayu soobschenie "Sorry, too many clients" kogda
+ pytayus' podklyuchit'sya k baze?
+
+ Vam nuzhno uvelichit' ogranichenie na kolichestvo konkuretnyh backend
+ processov pri zapuske postmaster.
+
+ Po umolchaniyu ustanovlen limit na 32 processa. Vy mozhete uvelichit'
+ `etot limit perezapustiv postmaster s nuzhnym znacheniem processov,
+ 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.
+
+ V PostgreSQL do versii 6.5, maksimal'noe kolichestvo backend processov
+ bylo 64, i izmenenie `etogo kolichestva trebovalo perekompilyacii
+ posle ustanovki konstanty MaxBackendId v include/storage/sinvaladt.h.
+
+ 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.
- òÁÚÒÁÂÏÔÞÉËÉ PostgreSQL ÄÅÌÁÀÔ ÔÏÌØËÏ ÎÅÂÏÌØÛÉÅ ÉÚÍÅÎÅÎÉÑ ÍÅÖÄÕ
- ÐÏÄ×ÙÐÕÓËÁÍÉ. ôÁËÉÍ ÏÂÒÁÚÏÍ ÏÂÎÏ×ÌÅÎÉÅ Ó ×ÅÒÓÉÉ 7.2 ÄÏ 7.2.1 ÎÅ
- ÔÒÅÂÕÅÔ ×ÙÐÏÌÎÅÎÉÑ dump É restore. ïÄÎÁËÏ ÐÒÉ ×ÙÈÏÄÅ ÏÞÅÒÅÄÎÏÇÏ
- ×ÙÐÕÓËÁ ÞÁÓÔÏ ÍÅÎÑÅÔÓÑ ×ÎÕÔÒÅÎÎÉÊ ÆÏÒÍÁÔ ÓÉÓÔÅÍÎÙÈ ÔÁÂÌÉÃ É ÆÁÊÌÏ×
- ÄÁÎÎÙÈ. üÔÉ ÉÚÍÅÎÅÎÉÑ ÞÁÓÔÏ ÎÏÓÑÔ ËÏÍÐÌÅËÓÎÙÊ ÈÁÒÁËÔÅÒ, ÔÁË ÞÔÏ ÎÅÔ
- ×ÏÚÍÏÖÎÏÓÔÉ ÏÂÅÓÐÅÞÉÔØ ÏÂÒÁÔÎÕÀ ÓÏ×ÍÅÓÔÉÍÏÓÔØ ÆÁÊÌÏ× ÄÁÎÎÙÈ. ÷ÙÐÏÌÅÎÉÅ
- dump ÐÏÚ×ÏÌÑÅÔ ÐÏÌÕÞÉÔØ ÄÁÎÎÙÅ × ÏÂÝÅÍ ÆÏÒÍÁÔÅ, ËÏÔÏÒÙÊ ÚÁÔÅÍ ÍÏÖÅÔ
- ÂÙÔØ ÚÁÇÒÕÖÅÎ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÎÏ×ÏÇÏ ×ÎÕÔÒÅÎÎÅÇÏ ÆÏÒÍÁÔÁ.
-
- ÷ ÔÅÈ ×ÙÐÕÓËÁÈ, ÇÄÅ ÆÏÒÍÁÔ ÄÁÎÎÙÈ ÎÁ ÄÉÓËÅ ÎÅ ÍÅÎÑÅÔÓÑ, ÄÌÑ ÐÒÏ×ÅÄÅÎÉÑ
- ÏÂÎÏ×ÌÅÎÉÑ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ ÓÃÅÎÁÒÉÊ pg_upgrade ÂÅÚ
- ÉÓÐÏÌØÚÏ×ÁÎÉÑ dump/restore. ëÏÍÍÅÎÔÁÒÉÉ Ë ×ÙÐÕÓËÕ ÇÏ×ÏÒÉÔ ËÏÇÄÁ ÍÏÖÎÏ
- ÉÓÐÏÌØÚÏ×ÁÔØ pg_upgrade ÄÌÑ ÜÔÏÇÏ ×ÙÐÕÓËÁ.
+ 3.10) Pochemu neobhodimo delat' dump i restore pri obnovlenii vypuskov
+ PostgreSQL?
+
+ Razrabotchiki PostgreSQL delayut tol'ko nebol'shie izmeneniya mezhdu
+ podvypuskami. Takim obrazom obnovlenie s versii 7.2 do 7.2.1 ne
+ trebuet vypolneniya dump i restore. Odnako pri vyhode ocherednogo
+ vypuska (t.e. pri obnovlenii naprimer, s 7.2 na 7.3) chasto menyaetsya
+ vnutrennij format sistemnyh tablic i fajlov dannyh. `Eti izmeneniya
+ chasto nosyat kompleksnyj harakter, tak chto net vozmozhnosti
+ obespechit' obratnuyu sovmestimost' fajlov dannyh. Vypolenie dump
+ pozvolyaet poluchit' dannye v obschem formate, kotoryj zatem mozhet
+ byt' zagruzhen pri ispol'zovanii novogo vnutrennego formata.
+
+ V teh vypuskah, gde format dannyh na diske ne menyaetsya, dlya
+ provedeniya obnovleniya mozhet byt' ispol'zovan scenarij pg_upgrade
+ bez ispol'zovaniya dump/restore. Kommentarii k vypusku govorit kogda
+ mozhno ispol'zovat' pg_upgrade dlya `etogo vypuska.
_________________________________________________________________
- ÷ÏÐÒÏÓÙ ÜËÓÐÌÕÁÔÁÃÉÉ
+ Voprosy `ekspluatacii
- 4.1) ÷ ÞÅÍ ÏÔÌÉÞÉÅ ÍÅÖÄÕ ÂÉÎÁÒÎÙÍ É ÎÏÒÍÁÌØÎÙÍ ËÕÒÓÏÒÏÍ?
+ 4.1) V chem otlichie mezhdu binarnym i normal'nym kursorom?
- óÍÏÔÒÉÔÅ ÏÐÉÓÁÎÉÅ ÎÁ ÓÔÒÁÎÉÃÁÈ ÒÕËÏ×ÏÄÓÔ×Á ÐÏÓ×ÑÝÅÎÎÙÍ DECLARE.
+ Smotrite opisanie na stranicah rukovodstva posvyaschennym DECLARE.
- 4.2) ëÁË ×ÙÐÏÌÎÉÔØ SELECT ÔÏÌØËÏ ÄÌÑ ÎÅÓËÏÌØËÉÈ ÐÅÒ×ÙÈ ÓÔÒÏÞÅË ÚÁÐÒÏÓÁ?
+ 4.2) Kak vypolnit' SELECT tol'ko dlya neskol'kih pervyh strochek zaprosa?
- óÍÏÔÒÉÔÅ ÓÔÁÎÉÃÕ ÒÕËÏ×ÏÄÓÔ×Á ÐÏÓ×ÑÝÅÎÎÕÀ FETCH ÉÌÉ ÉÓÐÏÌØÚÕÊÔÅ SELECT
- ... LIMIT....
+ Smotrite stanicu rukovodstva posvyaschennuyu FETCH ili ispol'zujte
+ SELECT ... LIMIT....
- äÁÖÅ ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ÐÏÌÕÞÉÔØ ÔÏÌØËÏ ÐÅÒ×ÙÅ ÎÅÓËÏÌØËÏ ÚÁÐÉÓÅÊ, ÂÕÄÅÔ
- ×ÙÐÏÌÎÅÎ ×ÅÓØ ÚÁÐÒÏÓ. òÁÓÓÍÏÔÒÉÍ ÚÁÐÒÏÓ, ËÏÔÏÒÙÊ ÉÍÅÅÔ ORDER BY. åÓÌÉ
- ÅÓÔØ ËÁËÏÊ-ÌÉÂÏ ÉÎÄÅËÓ, ËÏÔÏÒÙÊ ÓÏ×ÐÁÄÁÅÔ Ó ORDER BY, PostgreSQL ÍÏÖÅÔ
- ×ÙÄÁÔØ ÔÏÌØËÏ ÎÅÓËÏÌØËÏ ÐÅÒ×ÙÈ ÚÁÐÒÏÛÅÎÎÙÈ ÚÁÐÉÓÅÊ ÉÌÉ ÍÏÖÅÔ ×ÙÐÏÌÎÑÔØ
- ÚÁÐÒÏÓ ÐÏËÁ ÎÅ ÂÕÄÕÔ ×ÙÄÁÎÙ ÖÅÌÁÅÍÙÅ ÚÁÐÉÓÉ.
+ Dazhe esli vy hotite poluchit' tol'ko pervye neskol'ko zapisej, budet
+ vypolnen ves' zapros. Rassmotrim zapros, kotoryj imeet ORDER BY. Esli
+ est' kakoj-libo indeks, kotoryj sovpadaet s ORDER BY, PostgreSQL
+ mozhet vydat' tol'ko neskol'ko pervyh zaproshennyh zapisej ili mozhet
+ vypolnyat' zapros poka ne budut vydany zhelaemye zapisi.
- 4.3) ëÁË ÐÏÌÕÞÉÔØ ÓÐÉÓÏË ÔÁÂÌÉà ÉÌÉ ÄÒÕÇÉÈ ËÏÍÐÏÎÅÎÔÏ× × psql?
+ 4.3) Kak poluchit' spisok tablic ili drugih komponentov v psql?
- ÷Ù ÍÏÖÅÔÅ ÐÏÓÍÏÔÒÅÔØ ÉÓÈÏÄÎÙÊ ËÏÄ psql × ÆÁÊÌÅ
- pgsql/src/bin/psql/describe.c. ïÎ ÓÏÄÅÒÖÉÔ ËÏÍÁÎÄÙ SQL ËÏÔÏÒÙÅ
- ÇÅÎÅÒÉÒÕÀÔÓÑ ÐÒÉ ××ÏÄÅ × psql ËÏÍÁÎÄ, ÎÁÞÉÎÁÀÝÉÈÓÑ Ó ÏÂÒÁÔÎÏÊ ËÏÓÏÊ
- ÞÅÒÔÙ. ÷Ù ÔÁËÖÅ ÍÏÅÖÅÔÅ ÚÁÐÕÓÔÉÔØ psql Ó ÏÐÃÉÅÊ -E ÔÁË, ÞÔÏÂÙ ÜÔÁ
- ÐÒÏÇÒÁÍÍÁ ×ÙÄÁ×ÁÌÁ ÚÁÐÒÏÓÙ, ËÏÔÏÒÙÅ ÏÎÁ ÉÓÐÏÌØÚÕÅÔ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ
- ÚÁÄÁÎÎÙÈ ×ÁÍÉ ËÏÍÁÎÄ.
-
- 4.4) ëÁË ÕÄÁÌÉÔØ ËÏÌÏÎËÕ ÉÚ ÔÁÂÌÉÃÙ?
+ Vy mozhete posmotret' ishodnyj kod psql v fajle
+ pgsql/src/bin/psql/describe.c. On soderzhit komandy SQL kotorye
+ generiruyutsya pri vvode v psql komand, nachinayuschihsya s obratnoj
+ kosoj cherty. Vy takzhe moezhete zapustit' psql s opciej -E tak,
+ chtoby `eta programma vydavala zaprosy, kotorye ona ispol'zuet dlya
+ vypolneniya zadannyh vami komand.
+
+ 4.4) Kak udalit' kolonku iz tablicy?
- íÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÍ ALTER TABLE DROP COLUMN, ÎÏ ÍÏÖÎÏ ÓÄÅÌÁÔØ ÔÁË:
+ `Eta funkcional'nost' byla dobavlena v vypusk 7.3 s operatorom ALTER
+ TABLE DROP COLUMN. V rannih versiyah, mozhno sdelat' tak:
BEGIN;
LOCK TABLE old_table;
- SELECT ... -- ×ÙÂÏÒËÁ ×ÓÅÈ ËÏÌÏÎÏË ÚÁ ÉÓËÌÀÞÅÎÉÅÍ ÔÏÊ, ËÏÔÏÒÕÀ ÈÏÔÉÔÅ ÕÄÁÌ
-ÉÔØ
+ 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;
- 4.5) ëÁËÏ×Ù ÍÁËÓÉÍÁÌØÎÙÅ ÒÁÚÍÅÒÙ ÄÌÑ ÚÁÐÉÓÅÊ, ÔÁÂÌÉÃ É ÂÁÚÙ ÄÁÎÎÙÈ?
-
- óÕÝÅÓÔ×ÕÀÔ ÓÌÅÄÕÀÝÉÅ ÏÇÒÁÎÉÞÅÎÉÑ:
- íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÂÁÚÙ? ÎÅÏÇÒÁÎÉÞÅÎ (ÓÕÝÅÓÔ×ÕÀÔ ÂÁÚÙ ÎÁ 1 TB
-)
- íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ? 16 TB
- íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÚÁÐÉÓÉ? 1.6 TB
- íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÐÏÌÑ? 1 GB
- íÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÚÁÐÉÓÅÊ × ÔÁÂÌÉÃÅ? ÎÅÏÇÒÁÎÉÞÅÎÏ
- íÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ËÏÌÏÎÏË × ÔÁÂÌÉÃÅ? 250-1600 × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÔÉÐ
-Á
- íÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÉÎÄÅËÓÏ× × ÔÁÂÌÉÃÅ? ÎÅÏÇÒÁÎÉÞÅÎÏ
+ 4.5) Kakovy maksimal'nye razmery dlya zapisej, tablic i bazy dannyh?
+
+ Suschestvuyut sleduyuschie ogranicheniya:
+ Maksimal'nyj razmer bazy? neogranichen (suschestvuyut bazy na
+1 TB)
+ Maksimal'nyj razmer tablicy? 16 TB
+ Maksimal'nyj razmer zapisi? 1.6 TB
+ Maksimal'nyj razmer polya? 1 GB
+ Maksimal'noe kolichestvo zapisej v tablice? neogranicheno
+ Maksimal'noe kolichestvo kolonok v tablice? 250-1600 v zavisimosti ot ti
+pa
+ Maksimal'noe kolichestvo indeksov v tablice? neogranicheno
- òÁÚÕÍÅÅÔÓÑ, ÐÏÎÑÔÉÅ "ÎÅÏÇÒÁÎÉÞÅÎÏ" ÎÁ ÓÁÍÏÍ ÄÅÌÅ ÏÇÒÁÎÉÞÉ×ÁÅÔÓÑ
- ÄÏÓÔÕÐÎÙÍ ÄÉÓËÏ×ÙÍ ÐÒÏÓÔÒÁÎÉÓÔ×ÏÍ É ÒÁÚÍÅÒÁÍÉ ÐÁÍÑÔÉ/Ó×ÏÐÐÉÎÇÁ. ëÏÇÄÁ
- ÚÎÁÞÅÎÉÑ ÐÅÒÅÞÉÓÌÅÎÎÙÅ ×ÙÛÅ ÎÅÏÐÒÁ×ÄÁÎÏ ÂÏÌØÛÉÅ, ÍÏÖÅÔ ÐÏÓÔÒÁÄÁÔØ
- ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔØ.
-
- íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ × 16 TB ÎÅ ÔÒÅÂÕÅÔ ÞÔÏÂÙ ÏÐÅÒÁÃÉÏÎÎÁÑ
- ÓÉÓÔÅÍÁ ÐÏÄÄÅÒÖÉ×ÁÌÁ ÆÁÊÌÙ ÂÏÌØÛÉÈ ÒÁÚÍÅÒÏ×. âÏÌØÛÉÅ ÔÁÂÌÉÃÙ ÈÒÁÎÑÔÓÑ
- ËÁË ÍÎÏÖÅÓÔ×Ï ÆÁÊÌÏ× ÒÁÚÍÅÒÏÍ × 1 GB, ÔÁË ÞÔÏ ÏÇÒÁÎÉÞÅÎÉÑ, ËÏÔÏÒÙÅ
- ÎÁËÌÁÄÙ×ÁÅÔ ÆÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÎÅ ×ÁÖÎÙ.
-
- íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ É ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï ËÏÌÏÎÏË ÍÏÇÕÔ
- ÂÙÔØ Õ×ÅÌÉÞÅÎÙ, ÅÓÌÉ ÒÁÚÍÅÒ ÂÌÏËÁ ÐÏ ÕÍÏÌÞÁÎÉÀ ÂÕÄÅÔ Õ×ÅÌÉÞÅÎ ÄÏ 32k.
-
- 4.6) ëÁË ÍÎÏÇÏ ÄÉÓËÏ×ÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á × ÂÁÚÅ ÄÁÎÎÙÈ ÎÕÖÎÏ ÄÌÑ ÓÏÈÒÁÎÅÎÉÑ
- ÄÁÎÎÙÈ ÉÚ ÏÂÙÞÎÏÇÏ ÔÅËÓÔÏ×ÏÇÏ ÆÁÊÌÁ?
-
- óõâä PostgreSQL ÍÏÖÅÔ ÐÏÔÒÅÂÏ×ÁÔØÓÑ ÄÉÓËÏ×ÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á ÄÏ 5 ÒÁÚ
- ÂÏÌØÛÅ ÄÌÑ ÓÏÈÒÁÎÅÎÉÑ ÄÁÎÎÙÈ ÉÚ ÐÒÏÓÔÏÇÏ ÔÅËÓÔÏ×ÏÇÏ ÆÁÊÌÁ.
-
- ÷ ËÁÞÅÓÔ×Å ÐÒÉÍÅÒÁ, ÒÁÓÓÍÏÔÒÉÍ ÆÁÊÌ × 100,000 ÓÔÒÏË × ËÁÖÄÏÊ, ÉÚ
- ËÏÔÏÒÙÈ ÃÅÌÏÅ ÞÉÓÌÏ É ÔÅËÓÔÏ×ÏÅ ÏÐÉÓÁÎÉÅ. ðÒÉ ÜÔÏÍ ÄÌÉÎÁ ÔÅËÓÔÁ, ×
- ÓÒÅÄÎÅÍ, ÓÏÓÔÁ×ÌÑÅÔ 20 ÂÁÊÔ. òÁÚÍÅÒ ÐÒÏÓÔÏÇÏ ÆÁÊÌÁ ÓÏÓÔÁ×ÉÔ 2.8 MB.
- òÁÚÍÅÒ ÂÁÚÙ PostgreSQL, ÓÏÄÅÒÖÁÝÅÊ ÜÔÉ ÖÅ ÄÁÎÎÙÅ ÓÏÓÔÁ×ÉÔ
- ÐÒÉÂÌÉÚÉÔÅÌØÎÏ 6.4 MB ÉÚ ËÏÔÏÒÙÈ:
- 36 ÂÁÊÔ: ÎÁ ËÁÖÄÙÊ ÚÁÇÏÌÏ×ÏË ÚÁÐÉÓÉ (ÐÒÉÂÌÉÚÉÔÅÌØÎÏ)
- + 24 ÂÁÊÔÁ: ÏÄÎÏ ÐÏÌÅ Ó ÃÅÌÏÞÉÓÌÅÎÎÙÍ ÔÉÐÏÍ É ÏÄÎÏ ÔÅËÓÔÏ×ÏÅ ÐÏÌÅ
- + 4 ÂÁÊÔÁ: ÕËÁÚÁÔÅÌØ ÎÁ ÓÔÒÁÎÉÃÅ ÄÌÑ ×ÓÅÊ ÚÁÐÉÓÉ
+ Razumeetsya, ponyatie "neogranicheno" na samom dele ogranichivaetsya
+ dostupnym diskovym prostranistvom i razmerami pamyati/svoppinga. Kogda
+ znacheniya perechislennye vyshe neopravdano bol'shie, mozhet
+ postradat' proizvoditel'nost'.
+
+ Maksimal'nyj razmer tablicy v 16 TB ne trebuet chtoby operacionnaya
+ sistema podderzhivala fajly bol'shih razmerov. Bol'shie tablicy
+ hranyatsya kak mnozhestvo fajlov razmerom v 1 GB, tak chto
+ ogranicheniya, kotorye nakladyvaet fajlovaya sistema ne vazhny.
+
+ Maksimal'nyj razmer tablicy i maksimal'noe kolichestvo kolonok mogut
+ byt' uvelicheny, esli razmer bloka po umolchaniyu budet uvelichen do
+ 32k.
+
+ 4.6) Kak mnogo diskovogo prostranstva v baze dannyh nuzhno dlya sohraneniya
+ dannyh iz obychnogo tekstovogo fajla?
+
+ SUBD PostgreSQL mozhet potrebovat'sya diskovogo prostranstva do 5 raz
+ bol'she dlya sohraneniya dannyh iz prostogo tekstovogo fajla.
+
+ V kachestve primera, rassmotrim fajl v 100,000 strok v kazhdoj, iz
+ kotoryh celoe chislo i tekstovoe opisanie. Pri `etom dlina teksta, v
+ srednem, sostavlyaet 20 bajt. Razmer prostogo fajla sostavit 2.8 MB.
+ Razmer bazy PostgreSQL, soderzhaschej `eti zhe dannye sostavit
+ priblizitel'no 6.4 MB iz kotoryh:
+ 36 bajt: na kazhdyj zagolovok zapisi (priblizitel'no)
+ + 24 bajta: odno pole s celochislennym tipom i odno tekstovoe pole
+ + 4 bajta: ukazatel' na stranice dlya vsej zapisi
----------------------------------------
- 64 ÂÁÊÔ ÎÁ ÚÁÐÉÓØ
+ 64 bajt na zapis'
- òÁÚÍÅÒ ÓÔÒÁÎÉÃÙ ÄÁÎÎÙÈ × PostgreSQL ÓÏÓÔÁ×ÌÑÅÔ 8192 ÂÁÊÔ (8 KB), ÔÁË ÞÔÏ:
+ Razmer stranicy dannyh v PostgreSQL sostavlyaet 8192 bajt (8 KB), tak chto:
- 8192 ÂÁÊÔ ÎÁ ÓÔÒÁÎÉÃÕ
- ------------------- = 128 ÚÁÐÉÓÅÊ ÎÁ ÓÔÒÁÎÉÃÕ âä (Ó ÏËÒÕÇÌÅÎÉÅÍ)
- 64 ÂÁÊÔ ÎÁ ÚÁÐÉÓØ
+ 8192 bajt na stranicu
+ ------------------- = 128 zapisej na stranicu BD (s okrugleniem)
+ 64 bajt na zapis'
- 100000 ÓÔÒÏË ÄÁÎÎÙÈ
- -------------------- = 782 ÓÔÒÁÎÉÃÙ × âä
- 128 ÚÁÐÉÓÅÊ ÎÁ ÓÔÒÁÎÉÃÕ
+ 100000 strok dannyh
+ -------------------- = 782 stranicy v BD
+ 128 zapisej na stranicu
-782 ÓÔÒÁÎÉÃÙ âä * 8192 ÂÁÊÔ ÎÁ ÓÔÒÁÎÉÃÕ = 6,406,144 ÂÁÊÔ (6.4 MB)
+782 stranicy BD * 8192 bajt na stranicu = 6,406,144 bajt (6.4 MB)
- éÎÄÅËÓÙ ÎÅ ÔÒÅÂÕÀÔ ÔÁË ÍÎÏÇÏ, ÎÏ ÐÏÓËÏÌØËÕ ÏÎÉ ÓÏÚÄÁÀÔÓÑ ÄÌÑ ÂÏÌØÛÏÇÏ
- ËÏÌÉÞÅÓÔ×Á ÄÁÎÎÙÈ, ÏÎÉ ÔÁËÖÅ ÍÏÇÕÔ ÂÙÔØ ×ÅÌÉËÉ.
-
- úÎÁÞÅÎÉÑ NULL ÓÏÈÒÁÎÑÀÔÓÑ × ÂÉÔÁÈ É ÐÏÜÔÏÍÕ ÏÎÉ ÚÁÎÉÍÁÀÔ ÏÞÅÎØ ÍÁÌÏ
- ÍÅÓÔÁ.
-
- 4.7) ëÁË ÍÎÅ ÕÂÅÄÉÔØÓÑ, ÞÔÏ ÓÕÝÅÓÔ×ÕÀÔ ÎÕÖÎÙÅ ÍÎÅ ÔÁÂÌÉÃÙ, ÉÎÄÅËÓÙ, ÂÁÚÙ
- ÄÁÎÎÙÈ É ÐÏÌØÚÏ×ÁÔÅÌÉ?
-
- psql ÉÍÅÅÔ ÎÅÓËÏÌØËÏ ËÏÍÁÎÄ, ÎÁÞÉÎÁÀÝÉÈÓÑ Ó ÏÂÒÁÔÎÏÊ ËÏÓÏÊ ÞÅÒÔÙ, ÄÌÑ
- ÔÏÇÏ ÞÔÏÂÙ ÐÒÏÓÍÁÔÒÉ×ÁÔØ ÔÁËÕÀ ÉÎÆÏÒÍÁÃÉÀ. éÓÐÏÌØÚÕÊÔÅ \? ÄÌÑ ÔÏÇÏ,
- ÞÔÏÂÙ Õ×ÉÄÅÔØ ÜÔÉ ËÏÍÁÎÄÙ. ôÁËÖÅ ÓÕÝÅÓÔ×ÕÀÔ ÓÉÓÔÅÍÎÙÅ ÔÁÂÌÉÃÙ, ÉÍÑ
- ËÏÔÏÒÙÈ ÎÁÞÉÎÁÅÔÓÑ ÎÁ pg_ É × ËÏÔÏÒÙÈ ÔÁËÖÅ ÓÏÄÅÒÖÉÔÓÑ ÜÔÁ ÉÎÆÏÒÍÁÃÉÑ.
- åÝ£, psql -l ÐÏËÁÖÅÔ ÓÐÉÓÏË ×ÓÅÈ ÂÁÚ ÄÁÎÎÙÈ.
-
- ôÁËÖÅ ÓÍÏÔÒÉÔÅ ÆÁÊÌ pgsql/src/tutorial/syscat.source. ÷ ÎÅÍ
- ÐÒÅÄÓÔÁ×ÌÅÎÙ ÍÎÏÇÉÅ ÏÐÅÒÁÔÏÒÙ SELECT ËÏÔÏÒÙÅ ÎÕÖÎÙ ÄÌÑ ÐÏÌÕÞÅÎÉÑ
- ÉÎÆÏÒÍÁÃÉÉ ÉÚ ÓÉÓÔÅÍÎÙÈ ÔÁÂÌÉÃ ÂÁÚÙ ÄÁÎÎÙÈ.
-
- 4.8) õ ÍÅÎÑ ÍÅÄÌÅÎÎÏ ÒÁÂÏÔÁÀÔ ÚÁÐÒÏÓÙ ÉÌÉ ÎÅ ÐÒÏÉÓÈÏÄÉÔ ÉÓÐÏÌØÚÏ×ÁÎÉÑ
- ÉÎÄÅËÓÏ×. ðÏÞÅÍÕ?
-
- éÎÄÅËÓÙ ÎÅ ÉÓÐÏÌØÚÕÀÔÓÑ ÄÌÑ ËÁÖÄÏÇÏ ÚÁÐÒÏÓÁ Á×ÔÏÍÁÔÉÞÅÓËÉ. ïÎÉ
- ÉÓÐÏÌØÚÕÀÔÓÑ ÔÏÌØËÏ ÅÓÌÉ ÔÁÂÌÉÃÁ ÂÏÌØÛÅ ÍÉÎÉÍÁÌØÎÏÇÏ ÒÁÚÍÅÒÁ É ÚÁÐÒÏÓ
- ×ÙÂÉÒÁÅÔ ÔÏÌØËÏ ÍÁÌÅÎØËÉÊ ÐÒÏÃÅÎÔ ÚÁÐÉÓÅÊ × ÔÁÂÌÉÃÅ. ôÁË ÕÓÔÒÏÅÎÏ,
- ÐÏÔÏÍÕ ÞÔÏ ÄÏÓÔÕÐ Ë ÄÉÓËÕ Ó ÐÒÉÍÅÎÅÎÉÅÍ ÒÁÎÄÏÍÉÚÁÃÉÉ ÐÒÉ ÓËÁÎÉÒÏ×ÁÎÉÉ
- ÉÎÄÅËÓÏ× ÍÏÖÅÔ ÂÙÔØ ÍÅÄÌÅÎÎÅÅ, ÞÅÍ ÐÒÏÓÔÏÅ ÞÔÅÎÉÅ ÔÁÂÌÉÃÙ ÉÌÉ ÅÅ
- ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÅ ÓËÁÎÉÒÏ×ÁÎÉÅ.
-
- þÔÏÂÙ ÏÐÒÅÄÅÌÉÔØ ÎÅÏÂÈÏÄÉÍÏÓÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÉÎÄÅËÓÁ ÄÌÑ ËÁËÏÊ-ÌÉÂÏ
- ÔÁÂÌÉÃÙ, PostgreSQL ÄÏÌÖÅÎ ÉÍÅÔØ ÓÔÁÔÉÓÔÉËÕ ÐÏ ÜÔÏÊ ÔÁÂÌÉÃÅ. üÔÁ
- ÓÔÁÔÉÓÔÉËÁ ÓÏÂÉÒÁÅÔÓÑ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ VACUUM ANALYZE ÉÌÉ ÐÒÏÓÔÏ
- ANALYZE. éÓÐÏÌØÚÕÑ ÓÔÁÔÉÓÔÉËÕ, ÏÐÔÉÍÉÚÁÔÏÒ ÕÚÎÁÅÔ Ï ÔÏÍ ËÁË ÍÎÏÇÏ
- ÚÁÐÉÓÅÊ × ÔÁÂÌÉÃÅ É ÅÓÌÉ ÏÎ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØ ÉÎÄÅËÓÙ, ÔÏ ÏÎ ÍÏÖÅÔ
- ÐÒÉÎÉÍÁÔØ ÌÕÞÛÉÅ ÒÅÛÅÎÉÑ. óÔÁÔÉÓÔÉËÁ ÔÁËÖÅ ×ÌÉÑÅÔ ÎÁ ÏÐÒÅÄÅÌÅÎÉÅ
- ÏÐÔÉÍÁÌØÎÏÇÏ ÐÏÒÑÄËÁ Ó×ÑÚÙ×ÁÎÉÑ É ÍÅÔÏÄÁ Ó×ÑÚÙ×ÁÎÉÑ. óÂÏÒ ÓÔÁÔÉÓÔÉËÉ
- ÄÏÌÖÅÎ ÐÅÒÉÏÄÉÞÅÓËÉ ×ÙÐÏÌÎÑÔÓÑ ÐÒÉ ÉÚÍÅÎÅÎÉÉ ÓÏÄÅÒÖÉÍÏÇÏ ÔÁÂÌÉÃÙ.
-
- ïÂÙÞÎÏ ÉÎÄÅËÓÙ ÎÅ ÉÓÐÏÌØÚÕÀÔÓÑ ÄÌÑ ORDER BY ÉÌÉ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ
- Ó×ÑÚÙ×ÁÎÉÊ. ðÏÓÌÅÄÏ×ÁÔÅÌØÎÙÊ ÐÅÒÅÂÏÒ ÓÌÅÄÕÀÝÉÊ ÚÁ Ñ×ÎÏÊ ÓÏÒÔÉÒÏ×ËÏÊ
- ÏÂÙÞÎÏ ÂÙÓÔÒÅÅ, ÞÅÍ ÐÏÉÓË ÐÏ ÉÎÄÅËÓÁÍ × ÂÏÌØÛÏÊ ÔÁÂÌÉÃÅ. ïÄÎÁËÏ, ORDER
- BY ÞÁÓÔÏ ËÏÍÂÉÎÉÒÕÅÔÓÑ Ó LIMIT É × ÜÔÏÍ ÓÌÕÞÁÅ ÉÎÄÅËÓ ÂÕÄÅÔ
- ÉÓÐÏÌØÚÏ×ÁÔØÓÑ, ÐÏÓËÏÌØËÕ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ÂÕÄÅÔ ×ÏÚ×ÒÁÝÁÔØÓÑ ÎÅÂÏÌØÛÁÑ
- ÞÁÓÔØ ÔÁÂÌÉÃÙ. æÁËÔÉÞÅÓËÉ MAX() É MIN() ÎÅ ÉÓÐÏÌØÚÕÀÔ ÉÎÄÅËÓÙ, ÎÏ
- ÉÎÄÅËÓ ÉÓÐÏÌØÚÕÅÔÓÑ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ ÚÁÐÒÏÓÏ× Ó ORDER BY É LIMIT:
+ Indeksy ne trebuyut tak mnogo, no poskol'ku oni sozdayutsya dlya
+ bol'shogo kolichestva dannyh, oni takzhe mogut byt' veliki.
+
+ Znacheniya NULL sohranyayutsya v bitah i po`etomu oni zanimayut ochen'
+ malo mesta.
+
+ 4.7) Kak mne ubedit'sya, chto suschestvuyut nuzhnye mne tablicy, indeksy,
+ bazy dannyh i pol'zovateli?
+
+ 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
+ ispol'zuyutsya tol'ko esli tablica bol'she minimal'nogo razmera i
+ zapros vybiraet tol'ko malen'kij procent zapisej v tablice. Tak
+ ustroeno, potomu chto dostup k disku s primeneniem randomizacii pri
+ skanirovanii indeksov mozhet byt' medlennee, chem prostoe chtenie
+ tablicy ili ee posledovatel'noe skanirovanie.
+
+ CHtoby opredelit' neobhodimost' ispol'zovaniya indeksa dlya kakoj-libo
+ tablicy, PostgreSQL dolzhen imet' statistiku po `etoj tablice. `Eta
+ statistika sobiraetsya pri ispol'zovanii VACUUM ANALYZE ili prosto
+ ANALYZE. Ispol'zuya statistiku, optimizator uznaet o tom kak mnogo
+ zapisej v tablice i esli on dolzhen ispol'zovat' indeksy, to on mozhet
+ prinimat' luchshie resheniya. Statistika takzhe vliyaet na opredelenie
+ optimal'nogo poryadka svyazyvaniya i metoda svyazyvaniya. Sbor
+ statistiki dolzhen periodicheski vypolnyatsya pri izmenenii
+ soderzhimogo tablicy.
+
+ Obychno indeksy ne ispol'zuyutsya dlya ORDER BY ili dlya vypolneniya
+ svyazyvanij. Posledovatel'nyj perebor sleduyuschij za yavnoj
+ sortirovkoj obychno bystree, chem poisk po indeksam v bol'shoj
+ tablice. Odnako, ORDER BY chasto kombiniruetsya s LIMIT i v `etom
+ sluchae indeks budet ispol'zovat'sya, poskol'ku pri vypolnenii budet
+ vozvraschat'sya nebol'shaya chast' tablicy. Fakticheski MAX() i MIN()
+ ne ispol'zuyut indeksy, no indeks ispol'zuetsya pri postroenii
+ zaprosov s ORDER BY i LIMIT:
SELECT col
FROM tab
ORDER BY col [ DESC ]
- LIMIT 1
+ LIMIT 1;
- ëÏÇÄÁ ÉÓÐÏÌØÚÕÀÔÓÑ ÏÐÅÒÁÃÉÉ Ó ÛÁÂÌÏÎÁÍÉ, ÎÁÐÒÉÍÅÒ LIKE ÉÌÉ ~, ÉÎÄÅËÓÙ
- ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ × ÓÌÅÄÕÀÝÉÈ ÓÌÕÞÁÑÈ:
- * îÁÞÁÌÏ ÓÔÒÏËÉ ÐÏÉÓËÁ ÄÏÌÖÎÏ ÓÏ×ÐÁÄÁÔØ Ó ÎÁÞÁÌÏÍ ÉÓËÏÍÏÊ ÓÔÒÏËÉ,
- Ô.Å.:
+ Kogda ispol'zuyutsya operacii s shablonami, naprimer LIKE ili ~,
+ indeksy mogut byt' ispol'zovany v sleduyuschih sluchayah:
+ * Nachalo stroki poiska dolzhno sovpadat' s nachalom iskomoj stroki,
+ t.e.:
+ + LIKE shablony ne dolzhny nachinat'sya s %..
+ + ~ shablony regulyarnyh vyrazhenij dolzhna nachinat'sya na ^.
+ * Stroka poiska ne dolzhna nachinat'sya s simvola klassa, t.e.
+ [a-e].
+ * Poisk nezavisimyj ot registra, takoj kak ILIKE i ~* ne ispol'zuet
+ indeksy. Vmesto nego, ispol'zujte funkcional'nye indeksy, kotorye
+ opisyvayutsya v sekcii 4.12.
+ * Vo vremya initdb dolzhna ispol'zovat'sya lokal' po umolchaniyu C.
- * LIKE ÛÁÂÌÏÎÙ ÎÅ ÄÏÌÖÎÙ ÎÁÞÉÎÁÔØÓÑ Ó %.
- *
- * ~ ÛÁÂÌÏÎÙ ÒÅÇÕÌÑÒÎÙÈ ×ÙÒÁÖÅÎÉÊ ÄÏÌÖÎÁ ÎÁÞÉÎÁÔØÓÑ ÎÁ ^.
- *
-
- óÔÒÏËÁ ÐÏÉÓËÁ ÎÅ ÄÏÌÖÎÁ ÎÁÞÉÎÁÔØÓÑ Ó ÓÉÍ×ÏÌÁ ËÌÁÓÓÁ, Ô.Å. [a-e].
-
- îÅ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÐÏÉÓË ÎÅÚÁ×ÉÓÉÍÙÊ ÏÔ ÒÅÇÉÓÔÒÁ ÔÁËÏÊ ËÁË
- ILIKE É ~. ÷ÍÅÓÔÏ ÎÅÇÏ ÉÓÐÏÌØÚÕÊÔÅ ÆÕÎËÃÉÏÎÁÌØÎÙÅ ÉÎÄÅËÓÙ, ËÏÔÏÒÙÅ
- ÏÐÉÓÁÎÙ × ÜÔÏÍ FAQ ÎÉÖÅ.
-
- ÷Ï ×ÒÅÍÑ initdb ÄÏÌÖÎÁ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ C.
-
- 4.9) ëÁË ÐÏÓÍÏÔÒÅÔØ ÎÁ ÔÏ, ËÁË ÏÐÔÉÍÉÚÁÔÏÒ ×ÙÐÏÌÎÑÅÔ ÍÏÊ ÚÁÐÒÏÓ?
+ 4.9) Kak posmotret' na to, kak optimizator vypolnyaet moj zapros?
- óÍÏÔÒÉÔÅ ÓÔÒÁÎÉÃÕ ÒÕËÏ×ÏÄÓÔ×Á ÐÏÓ×ÑÝÅÎÎÕÀ EXPLAIN.
+ Smotrite stranicu rukovodstva posvyaschennuyu EXPLAIN.
- 4.10) þÔÏ ÔÁËÏÅ R-tree ÉÎÄÅËÓ?
+ 4.10) CHto takoe R-tree indeks?
- R-tree ÉÎÄÅËÓ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÉÎÄÅËÓÉÒÏ×ÁÎÉÑ ÐÒÏÓÔÒÁÎÓÔ×ÅÎÎÙÈ ÄÁÎÎÙÈ.
- éÎÄÅËÓ ÈÜÛÁ ÎÅ ÍÏÖÅÔ ÕÐÒÁ×ÌÑÔØ ÐÏÉÓËÁÍÉ ÄÉÁÐÁÚÏÎÁ. B-tree ÉÎÄÅËÓ
- ÕÐÒÁ×ÌÑÅÔ ÔÏÌØËÏ ÐÏÉÓËÁÍÉ ÄÉÁÐÁÚÏÎÁ × ÏÄÎÏÍ ÉÚÍÅÒÅÎÉÉ. R-tree ÉÎÄÅËÓ
- ÍÏÖÅÔ ÕÐÒÁ×ÌÑÔØ ÍÎÏÇÏÒÁÚÍÅÒÎÙÍÉ ÄÁÎÎÙÍÉ. îÁÐÒÉÍÅÒ, ÅÓÌÉ R-tree ÉÎÄÅËÓ
- ÍÏÖÅÔ ÂÙÔØ ×ÓÔÒÏÅÎ × ÁÔÒÉÂÕÔ ÔÉÐÁ point, ÔÏ ÓÉÓÔÅÍÁ ÍÏÖÅÔ ÂÏÌÅÅ
- ÜÆÆÅËÔÉ×ÎÏ ÏÔ×ÅÔÉÔØ ÎÁ ÚÁÐÒÏÓ ÔÉÐÁ "×ÙÂÒÁÔØ ×ÓÅ ÔÏÞËÉ ×ÎÕÔÒÉ ÚÁÄÁÎÎÏÇÏ
- ÞÅÔÙÒÅÈÕÇÏÌØÎÉËÁ."
+ 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."
- ëÁÎÏÎÉÞÅÓËÉÊ ÉÓÔÏÞÎÉË, ÏÐÉÓÙ×ÁÀÝÉÊ ÐÅÒ×ÏÎÁÞÁÌØÎÏÅ ÓÏÚÄÁÎÉÅ R-tree ÜÔÏ:
+ 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.
- ÷Ù ÍÏÖÅÔÅ ÎÁÊÔÉ ÜÔÏÔ ÄÏËÕÍÅÎÔ × ËÎÉÇÅ Stonebraker'Á "Readings in
+ Vy mozhete najti `etot dokument v knige Stonebraker'a "Readings in
Database Systems".
- ÷ÓÔÒÏÅÎÎÎÙÅ R-tree ÍÏÇÕÔ ÕÐÒÁ×ÌÑÔØ ÐÏÌÉÇÏÎÁÍÉ É ÂÏËÓÁÍÉ. ÷ ÔÅÏÒÉÉ,
- R-tree ÍÏÇÕÔ ÂÙÔØ ÒÁÓÛÉÒÅÎÙ ÄÌÑ ÕÐÒÁ×ÌÅÎÉÑ ÂÏÌØÛÉÍ ËÏÌÉÞÅÓÔ×ÏÍ
- ÉÚÍÅÒÅÎÉÊ. îÁ ÐÒÁËÔÉËÅ, ÒÁÓÛÉÒÅÎÉÅ R-tree ÔÒÅÂÕÅÔ ÎÅËÏÔÏÒÙÈ ÕÓÉÌÉÊ É Õ
- ÎÁÓ, × ÄÁÎÎÙÊ ÍÏÍÅÎÔ, ÎÅÔ ËÁËÏÊ-ÌÉÂÏ ÄÏËÕÍÅÎÔÁÃÉÉ Ï ÔÏÍ, ËÁË ÜÔÏ
- ÓÄÅÌÁÔØ.
+ 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) þÔÏ ÔÁËÏÅ Genetic Query Optimizer?
+ 4.11) CHto takoe Genetic Query Optimizer?
- íÏÄÕÌØ GEQO ÐÒÏÉÚ×ÏÄÉÔ ÂÙÓÔÒÕÀ ÏÐÔÉÍÉÚÁÃÉÀ ÚÁÐÒÏÓÁ, ËÏÇÄÁ ÐÒÏÉÓÈÏÄÉÔ
- Ó×ÑÚÙ×ÁÎÉÅ ÍÎÏÇÉÈ ÔÁÂÌÉà ÞÅÒÅÚ Genetic Algorithm (GA). üÔÏ ÐÏÚ×ÏÌÑÅÔ
- ÕÐÒÁ×ÌÑÔØ ÂÏÌØÛÉÍÉ ÚÁÐÒÏÓÁÍÉ ÎÁ Ó×ÑÚÙ×ÁÎÉÅ ÞÅÒÅÚ ÎÅÉÓÔÏÝÁÀÝÉÊ ÐÏÉÓË.
-
- 4.12) ëÁË ÍÎÅ ×ÙÐÏÌÎÉÔØ ÐÏÉÓË ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ É ÐÏÉÓË ÎÅÚÁ×ÉÓÉÍÙÊ ÏÔ
- ÒÅÇÉÓÔÒÁ ÂÕË× ÐÏÉÓË ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ? ëÁË ÍÎÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÉÎÄÅËÓ ÄÌÑ
- ÐÏÉÓËÁ ÎÅÚÁ×ÉÓÉÍÏÇÏ ÏÔ ÒÅÇÉÓÔÒÁ ÂÕË×?
+ 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'
+ indeks dlya poiska nezavisimogo ot registra bukv?
- ïÐÅÒÁÔÏÒ ~ ÐÒÏÉÚ×ÏÄÉÔ ÐÏÉÓË ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ, Á ÏÐÅÒÁÔÏÒ ~*
- ÐÒÏÉÚ×ÏÄÉÔ ÎÅÚÁ×ÉÓÉÍÙÊ ÏÔ ÒÅÇÉÓÔÒÁ ÂÕË× ÐÏÉÓË ÒÅÇÕÌÑÒÎÏÇÏ ×ÙÒÁÖÅÎÉÑ.
- îÅÚÁ×ÉÓÉÍÙÊ ÏÔ ÒÅÇÉÓÔÒÁ ×ÁÒÉÁÎÔ LIKE ÎÁÚÙ×ÁÅÔÓÑ ILIKE.
+ Operator ~ proizvodit poisk regulyarnogo vyrazheniya, a operator ~*
+ proizvodit nezavisimyj ot registra bukv poisk regulyarnogo
+ vyrazheniya. Nezavisimyj ot registra variant LIKE nazyvaetsya ILIKE.
- îÅÚÁ×ÉÓÉÍÏÅ ÏÔ ÒÅÇÉÓÔÒÁ ÓÒÁ×ÎÅÎÉÅ ÏÂÙÞÎÏ ×ÙÒÁÖÁÅÔÓÑ ÔÁË:
+ Nezavisimoe ot registra sravnenie obychno vyrazhaetsya tak:
SELECT *
FROM tab
- WHERE lower(col) = 'abc'
+ WHERE lower(col) = 'abc';
- üÔÁ ËÏÎÓÔÒÕËÃÉÑ ÎÅ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÁÎÄÁÒÔÎÙÊ ÉÎÄÅËÓ. ïÄÎÁËÏ, ÅÓÌÉ
- ×Ù ÓÏÚÄÁÄÉÔÅ ÆÕÎËÃÉÏÎÁÌØÎÙÊ ÉÎÄÅËÓ, ÏÎ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ:
- CREATE INDEX tabindex on tab (lower(col));
+ `Eta konstrukciya ne budet ispol'zovat' standartnyj indeks. Odnako,
+ esli vy sozdadite funkcional'nyj indeks, on budet ispol'zovan:
+ CREATE INDEX tabindex ON tab (lower(col));
- 4.13) ëÁË Ñ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ, ÞÔÏ ÚÎÁÞÅÎÉÅ ÐÏÌÑ ÒÁ×ÎÏ NULL × ËÁËÏÍ-ÌÉÂÏ
- ÚÁÐÒÏÓÅ?
+ 4.13) Kak ya mogu opredelit', chto znachenie polya ravno NULL v kakom-libo
+ zaprose?
- ÷Ù ÐÒÏÓÔÏ ÓÒÁ×ÎÉ×ÁÅÔÅ ÚÎÁÞÅÎÉÅ Ó IS NULL É IS NOT NULL.
+ Vy prosto sravnivaete znachenie s IS NULL i IS NOT NULL.
- 4.14) ëÁËÏ×Ù ÏÔÌÉÞÉÑ ÍÅÖÄÕ ÒÁÚÎÙÍÉ ÓÉÍ×ÏÌØÎÙÍÉ ÔÉÐÁÍÉ?
+ 4.14) Kakovy otlichiya mezhdu raznymi simvol'nymi tipami?
-ôÉÐ ÷ÎÕÔÒÅÎÎÅÅ ÉÍÑ úÁÍÅÞÁÎÉÑ
+Tip Vnutrennee imya Zamechaniya
--------------------------------------------------
-"char" char 1 ÓÉÍ×ÏÌ
-CHAR(#) bpchar ÚÁÐÏÌÎÑÅÔÓÑ ÐÕÓÔÏÔÏÊ ÄÏ ÆÉËÓÉÒÏ×ÁÎÎÏÊ ÄÌÉÎÙ
-VARCHAR(#) varchar ÒÁÚÍÅÒ ÚÁÄÁÅÔ ÍÁËÓÉÍÁÌØÎÕÀ ÄÌÉÎÕ, ÎÅÔ ÚÁÐÏÌÎÅÎÉ
-Ñ
-TEXT text ÎÅÔ ÚÁÄÁ×ÁÅÍÏÇÏ ×ÅÒÈÎÅÇÏ ÏÇÒÁÎÉÞÅÎÉÑ ÉÌÉ ÄÌÉÎÙ
-BYTEA bytea ÍÁÓÓÉ× ÂÁÊÔ ÐÅÒÅÍÅÎÎÏÊ ÄÌÉÎÙ (ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔ
-Ø null-ÂÁÊÔ ÂÅÚ ÏÐÁÓËÉ)
+"char" char 1 simvol
+CHAR(n) bpchar zapolnyaetsya pustotoj do fiksirovannoj dliny
+VARCHAR(n) varchar razmer zadaet maksimal'nuyu dlinu, net zapolnen
+iya
+TEXT text net zadavaemogo verhnego ogranicheniya ili dlin
+y
+BYTEA bytea massiv bajt peremennoj dliny (mozhno ispol'zova
+t' null-bajt bez opaski)
- ÷ÎÕÔÒÅÎÎÅÅ ÉÍÑ ×Ù ÍÏÖÅÔÅ Õ×ÉÄÅÔØ, ËÏÇÄÁ ÓÍÏÔÒÉÔÅ ÓÉÓÔÅÍÎÙÅ ËÁÔÁÌÏÇÉ É
- × ÎÅËÏÔÏÒÙÈ ÓÏÏÂÝÅÎÉÑÈ ÏÂ ÏÛÉÂËÁÈ.
-
- ðÏÓÌÅÄÎÉÅ ÞÅÔÙÒÅ ÔÉÐÁ Ñ×ÌÑÀÔÓÑ "varlena" ÔÉÐÁÍÉ (Ô.Å., ÐÅÒ×ÙÅ ÞÅÔÙÒÅ
- ÂÁÊÔÁ ÎÁ ÄÉÓËÅ Ñ×ÌÑÀÔÓÑ ÄÌÉÎÎÏÊ, ÚÁ ËÏÔÏÒÏÊ ÓÌÅÄÕÀÔ ÄÁÎÎÙÅ). ôÁËÉÍ
- ÏÂÒÁÚÏÍ, ÆÁËÔÉÞÅÓËÉ ÉÓÐÏÌØÚÕÅÍÏÅ ÐÒÏÓÔÒÁÎÓÔ×Ï ÂÏÌØÛÅ, ÞÅÍ ÏÂÏÚÎÁÞÅÎÎÙÊ
- ÒÁÚÍÅÒ. ïÄÎÁËÏ, ÜÔÉ ÔÉÐÙ ÄÁÎÎÙÈ ÔÁËÖÅ ÐÏÄÄÁÀÔÓÑ ÓÖÁÔÉÀ ÉÌÉ ÍÏÇÕÔ ÂÙÔØ
- ÓÏÈÒÁÎÅÎÙ ÎÅ × ÓÔÒÏËÏÍ ×ÉÄÅ ÞÅÒÅÚ TOAST, ÔÁË ÞÔÏ ÚÁÎÉÍÁÅÍÏÅ ÄÉÓËÏ×ÏÅ
- ÐÒÏÓÔÒÁÎÓÔ×Ï ÍÏÖÅÔ ÔÁËÖÅ ÂÙÔØ É ÍÅÎØÛÅ, ÞÅÍ ÏÖÉÄÁÌÏÓØ.
-
- CHAR() - ÜÔÏ ÌÕÞÛÅÅ ÒÅÛÅÎÉÅ ÄÌÑ ÈÒÁÎÅÎÉÑ ÓÔÒÏË, ËÏÔÏÒÙÅ ÏÂÙÞÎÏ ÉÍÅÀÔ
- ÏÄÉÎÁËÏ×ÕÀ ÄÌÉÎÕ. VARCHAR() - ÜÔÏ ÌÕÞÛÅÅ ÒÅÛÅÎÉÅ, ËÏÇÄÁ ÎÕÖÎÏ ÈÒÁÎÉÔØ
- ÓÔÒÏËÉ ÐÅÒÅÍÅÎÎÏÊ ÄÌÉÎÙ, ÎÏ ÎÅ ÐÒÅ×ÙÛÁÀÝÉÅ ÏÐÒÅÄÅÌÅÎÎÏÇÏ ÒÁÚÍÅÒÁ. TEXT
- - ÜÔÏ ÌÕÞÛÅÅ ÒÅÛÅÎÉÅ ÄÌÑ ÓÔÒÏË ÎÅÏÇÒÁÎÉÞÅÎÎÏÊ ÄÌÉÎÙ, Ó ÍÁËÓÉÍÁÌØÎÏ
- ÄÏÐÕÓÔÉÍÏÊ ÄÌÉÎÏÊ × 1 ÇÉÇÁÂÁÊÔ. BYTEA ÄÌÑ ÈÒÁÎÅÎÉÑ ÂÉÎÁÒÎÙÈ ÄÁÎÎÙÈ,
- ÚÎÁÞÅÎÉÑ ËÏÔÏÒÙÈ ÍÏÇÕÔ ×ËÌÀÞÁÔØ NULL ÂÁÊÔÙ.
-
- 4.15.1) ëÁË ÍÎÅ ÓÏÚÄÁÔØ ÐÏÌÅ serial/Ó-Á×ÔÏ-Õ×ÅÌÉÞÅÎÉÅÍ?
-
- PostgreSQL ÐÏÄÄÅÒÖÉ×ÁÅÔ ÔÉÐ ÄÁÎÎÙÈ SERIAL. ïÎ Á×ÔÏÍÁÔÉÞÅÓËÉ ÓÏÚÄÁÅÔ
- ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ É ÉÎÄÅËÓ ÄÌÑ ËÏÌÏÎËÉ. îÁÐÒÉÍÅÒ:
+ Vnutrennee imya vy mozhete uvidet', kogda smotrite sistemnye katalogi
+ i v nekotoryh soobscheniyah ob oshibkah.
+
+ Poslednie chetyre tipa yavlyayutsya "varlena" tipami (t.e., pervye
+ chetyre bajta na diske yavlyayutsya dlinnoj, za kotoroj sleduyut
+ dannye). Takim obrazom, fakticheski ispol'zuemoe prostranstvo bol'she,
+ chem oboznachennyj razmer. Odnako, `eti tipy dannyh takzhe poddayutsya
+ szhatiyu ili mogut byt' sohraneny ne v strokom vide cherez TOAST, tak
+ chto zanimaemoe diskovoe prostranstvo mozhet takzhe byt' i men'she,
+ chem ozhidalos'.
+
+ CHAR(n) - `eto luchshee reshenie dlya hraneniya strok, kotorye obychno
+ imeyut odinakovuyu dlinu. VARCHAR(n) - `eto luchshee reshenie, kogda
+ nuzhno hranit' stroki peremennoj dliny, no ne prevyshayuschie
+ opredelennogo razmera. TEXT - `eto luchshee reshenie dlya strok
+ neogranichennoj dliny, s maksimal'no dopustimoj dlinoj v 1 gigabajt.
+ BYTEA dlya hraneniya binarnyh dannyh, znacheniya kotoryh mogut
+ vklyuchat' NULL bajty. `Eti tipy imeyut shodnye harakteristiki
+ proizvoditel'nosti.
+
+ 4.15.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
+
+ PostgreSQL podderzhivaet tip dannyh SERIAL. On avtomaticheski sozdaet
+ posledovatel'nost' i indeks dlya kolonki. Naprimer:
CREATE TABLE person (
id SERIAL,
name TEXT
);
- Á×ÔÏÍÁÔÉÞÅÓËÉ ÔÒÁÎÓÌÉÒÕÅÔÓÑ ×:
+ avtomaticheski transliruetsya v:
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
);
CREATE UNIQUE INDEX person_id_key ON person ( id );
- óÍÏÔÒÉÔÅ ÐÏÄÒÏÂÎÏÓÔÉ Ï ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÑÈ ÎÁ ÓÔÒÁÎÉÃÅ ÒÕËÏ×ÏÄÓÔ×Á
- ÐÏÓ×ÑÝÅÎÎÏÊ create_sequence. ÷Ù ÔÁËÖÅ ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ËÁÖÄÏÅ ÐÏÌÅ
- OID × ÚÁÐÉÓÉ ËÁË ÕÎÉËÁÌØÎÏÅ ÚÎÁÞÅÎÉÅ. ïÄÎÁËÏ, ÅÓÌÉ ×ÁÍ ÎÕÖÅÎ ÄÁÍÐ É
- ÐÅÒÅÚÁÇÒÕÚËÁ ÂÁÚÙ ÄÁÎÎÙÈ, ×ÁÍ ÎÅÏÂÈÏÄÉÍÏ ÉÓÐÏÌØÚÏ×ÁÔØ ËÏÍÁÎÄÕ pg_dump
- Ó ÏÐÃÉÅÊ -o ÉÌÉ ÏÐÃÉÀ COPY WITH OIDS ÄÌÑ ÓÏÈÒÁÎÅÎÉÑ ÚÎÁÞÅÎÉÊ ÐÏÌÑ OID.
-
- 4.15.2) ëÁË ÍÎÅ ÐÏÌÕÞÉÔØ ÚÎÁÞÅÎÉÅ ÐÒÉ ×ÓÔÁ×ËÅ SERIAL?
-
- ïÄÉÎ ÉÚ ÓÐÏÓÏÂÏ× ÓÏÓÔÏÉÔ × ÐÏÌÕÞÅÎÉÉ ÓÌÅÄÕÀÝÅÇÏ ÚÎÁÞÅÎÉÑ SERIAL ÉÚ
- ÏÂßÅËÔÁ sequence Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ nextval() ÐÅÒÅÄ ×ÓÔÁ×ËÏÊ É ÚÁÔÅÍ
- ×ÓÔÁ×ÌÑÔØ ÜÔÏ ÚÎÁÞÅÎÉÅ Ñ×ÎÏ. éÓÐÏÌØÚÕÊÔÅ ÔÁÂÌÉÃÕ-ÐÒÉÍÅÒ × 4.15.1,
- ÞÔÏÂÙ Õ×ÉÄÅÔØ ËÁË ÜÔÏ ÄÅÌÁÅÔÓÑ × Perl:
- new_id = output of "SELECT nextval('person_id_seq')"
- INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
+ Smotrite podrobnosti o posledovatel'nostyah na stranice rukovodstva
+ posvyaschennoj create_sequence. Vy takzhe mozhete ispol'zovat' kazhdoe
+ 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.15.2) Kak mne poluchit' znachenie pri vstavke SERIAL?
+
+ Odin iz sposobov sostoit v poluchenii sleduyuschego znacheniya SERIAL
+ iz ob"ekta sequence s pomosch'yu funkcii nextval() pered vstavkoj i
+ zatem vstavlyat' `eto znachenie yavno. Ispol'zujte tablicu-primer v
+ 4.15.1, primer v psevdoyazyke pokazhet kak `eto delaetsya:
+ new_id = execute("SELECT nextval('person_id_seq')");
+ execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
- úÁÔÅÍ ×Ù ÄÏÌÖÎÙ ÔÁËÖÅ ÓÏÈÒÁÎÉÔØ ÎÏ×ÏÅ ÚÎÁÞÅÎÉÅ × ÐÅÒÅÍÅÎÎÏÊ new_id ÄÌÑ
- ÅÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × ÄÒÕÇÉÈ ÚÁÐÒÏÓÁÈ (ÎÁÐÒÉÍÅÒ ÔÁËÉÈ ËÁË ×ÎÅÛÎÉÊ ËÌÀÞ
- ÄÌÑ ÔÁÂÌÉÃÙ person). úÁÍÅÔÉÍ, ÞÔÏ ÉÍÑ Á×ÔÏÍÁÔÉÞÅÓËÉ ÓÏÚÄÁÎÎÏÇÏ ÏÂßÅËÔÁ
- SEQUENCE ÂÕÄÅÔ <table>_<serialcolumn>_seq, ÇÄÅ table É serialcolumn
- Ñ×ÌÑÀÔÓÑ ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÉÍÅÎÁÍÉ ×ÁÛÅÊ ÔÁÂÌÉÃÙ É ×ÁÛÅÊ ËÏÌÏÎËÉ SERIAL.
-
- ÷ ËÁÞÅÓÔ×Å ÁÌØÔÅÒÎÁÔÉ×Ù, ×Ù ÍÏÖÅÔÅ ÐÏÌÕÞÉÔØ ÎÁÚÎÁÞÅÎÎÏÅ ÚÎÁÞÅÎÉÅ
- SERIAL Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ currval() ÐÏÓÌÅ ÐÒÏ×ÅÄÅÎÉÑ ÏÂÙÞÎÏÊ ÏÐÅÒÁÃÉÉ
- ×ÓÔÁ×ËÉ, ÎÁÐÒÉÍÅÒ
- INSERT INTO person (name) VALUES ('Blaise Pascal');
- new_id = output of "SELECT currval('person_id_seq')";
+ Zatem vy dolzhny takzhe sohranit' novoe znachenie v peremennoj new_id
+ dlya ego ispol'zovaniya v drugih zaprosah (naprimer takih kak vneshnij
+ klyuch dlya tablicy person). Zametim, chto imya avtomaticheski
+ sozdannogo ob"ekta SEQUENCE budet <table>_<serialcolumn>_seq, gde
+ table i serialcolumn yavlyayutsya sootvetstvenno imenami vashej
+ tablicy i vashej kolonki SERIAL.
+
+ V kachestve al'ternativy, vy mozhete poluchit' naznachennoe znachenie
+ SERIAL s pomosch'yu funkcii currval() posle provedeniya obychnoj
+ operacii vstavki, naprimer
+ execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+ new_id = execute("SELECT currval('person_id_seq')");
- é ÎÁËÏÎÅÃ, ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÚÎÁÞÅÎÉÅ OID, ×ÏÚÒÁÝÁÅÍÏÅ ÉÚ
- ÏÐÅÒÔÏÒÁ INSERT ÞÔÏÂÙ Õ×ÉÄÅÔØ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ, ÞÔÏ
- ÐÒÅÄÐÏÌÏÖÉÔÅÌØÎÏ Ñ×ÌÑÅÔÓÑ ÎÁÉÍÅÎÅÅ ÐÅÒÅÎÏÓÉÍÙÍ ÎÁ ÄÒÕÇÉÅ ÐÌÁÔÆÏÒÍÙ
- ÒÅÛÅÎÉÅÍ. ÷ Perl, ÉÓÐÏÌØÚÕÑ DBI Ó ÍÏÄÕÌÅÉ Edmund Mergl'Ñ DBD::Pg,
- ÚÎÁÞÅÎÉÅ oid ÓÔÁÎÏ×ÉÔÓÑ ÄÏÓÔÕÐÎÙÍ ÞÅÒÅÚ $sth->{pg_oid_status} ÐÏÓÌÅ
+ I nakonec, vy mozhete ispol'zovat' znachenie OID, vozraschaemoe iz
+ opertora INSERT chtoby uvidet' znachenie po umolchaniyu, chto
+ predpolozhitel'no yavlyaetsya naimenee perenosimym na drugie platformy
+ resheniem. V Perl, ispol'zuya DBI s modulei Edmund Mergl'ya DBD::Pg,
+ znachenie oid stanovitsya dostupnym cherez $sth->{pg_oid_status} posle
$sth->execute().
- 4.15.3) îÅ ÍÏÖÅÔ ÌÉ ÐÏÌÕÞÉÔØÓÑ ÔÁË, ÞÔÏ ÉÓÐÏÌØÚÏ×ÁÎÉÅ currval() É nextval()
- ÐÒÉ×ÅÄÅÔ Ë ÚÁÃÉËÌÉÒÏ×ÁÎÉÀ Ó ÄÒÕÇÉÍÉ ÐÏÌØÚÏ×ÁÔÅÌÑÍÉ?
-
- îÅÔ. Currval() ×ÏÚ×ÒÁÝÁÅÔ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ, ÎÁÚÎÁÞÅÎÎÏÅ ×ÁÛÅÍ
- backend'ÏÍ, Á ÎÅ ÄÒÕÇÉÍÉ ÐÏÌØÚÏ×ÁÔÅÌÑÍÉ.
-
- 4.15.4) ðÏÞÅÍÕ ÞÉÓÌÁ ÉÚ ÍÏÅÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÎÅ ÉÓÐÏÌØÚÕÀÔÓÑ ÓÎÏ×Á ÐÒÉ
- ÏÔÍÅÎÅ ÔÒÁÎÚÁËÃÉÉ? ðÏÞÅÍÕ ÓÏÚÄÁÀÔÓÑ ÒÁÚÒÙ×Ù ÐÒÉ ÎÕÍÅÒÁÃÉÉ × ËÏÌÏÎËÅ, ÇÄÅ Ñ
- ÉÓÐÏÌØÚÕÀ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ/SERIAL?
-
- äÌÑ ÒÅÁÌÉÚÁÃÉÉ ËÏÎËÕÒÅÔÎÏÓÔÉ, ÚÎÁÞÅÎÉÑ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÅÊ, ÐÒÉ
- ÎÅÏÂÈÏÄÉÍÏÓÔÉ ×ÙÄÁÀÔÓÑ ×Ï ×ÒÅÍÑ ÚÁÐÕÓËÁ ÔÒÁÎÚÁËÃÉÊ É ÎÅ ÂÌÏËÉÒÕÀÔÓÑ ÄÏ
- ÐÏÌÎÏÇÏ ×ÙÐÏÌÎÅÎÉÑ ÔÒÁÎÚÁËÃÉÊ. üÔÏ ÍÏÖÅÔ ×ÙÚÙ×ÁÔØ ÒÁÚÒÙ×Ù × ÎÕÍÅÒÁÃÉÉ
- ÐÒÉ ÏÔÍÅÎÅ ÔÒÁÎÚÁËÃÉÊ.
-
- 4.16) þÔÏ ÔÁËÏÅ OID? þÔÏ ÔÁËÏÅ TID?
-
- ðÏÌÑ OID ÓÌÕÖÁÔ ÕÎÉËÁÌØÎÙÍÉ ÉÄÅÔÉÆÉËÁÔÏÒÁÍÉ ÚÁÐÉÓÅÊ × PostgreSQL.
- ëÁÖÄÁÑ ÚÁÐÉÓØ, ËÏÔÏÒÁÑ ÓÏÚÄÁ£ÔÓÑ × PostgreSQL ÐÏÌÕÞÁÅÔ ÕÎÉËÁÌØÎÙÊ OID.
- ÷ÓÅ ÚÎÁÞÅÎÉÑ OID ÇÅÎÅÒÉÒÕÅÍÙÅ ×Ï ×ÒÅÍÑ initdb ÉÍÅÀÔ ÚÎÁÞÅÎÉÑ ÍÅÎØÛÅ
- 16384 (ÉÚ backend/access/transam.h). ÷ÓÅ ÓÏÚÄÁÎÎÙÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ OID
- ÉÍÅÀÔ ÂïÌØÛÉÅ ÚÎÁÞÅÎÉÅ. ðÏ ÕÍÏÌÞÁÎÉÀ, ×ÓÅ ÜÔÉ OID Ñ×ÌÑÀÔÓÑ ÕÎÉËÁÌØÎÙÍÉ
- ÎÅ ÔÏÌØËÏ ×ÎÕÔÒÉ ËÁËÏÊ-ÌÉÂÏ ÔÁÂÌÉÃÙ ÉÌÉ ÂÁÚÙ ÄÁÎÎÙÈ, ÎÏ É ×ÎÕÔÒÉ ×ÓÅÊ
- óõâä PostgreSQL.
-
- PostgreSQL ÉÓÐÏÌØÚÕÅÔ OID × Ó×ÏÉÈ ×ÎÕÔÒÅÎÎÉÈ ÓÉÓÔÅÍÎÙÈ ÔÁÂÌÉÃÁÈ ÄÌÑ
- Ó×ÑÚÉ ÚÁÐÉÓÅÊ É ÔÁÂÌÉÃ. úÎÁÞÅÎÉÑ OID ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ ÄÌÑ
- ÉÄÅÎÔÉÆÉËÁÃÉÉ ÚÁÄÁÎÎÙÈ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÚÁÐÉÓÅÊ, Á ÔÁËÖÅ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ
- ÐÒÉ Ó×ÑÚÙ×ÁÎÉÑÈ. òÅËÏÍÅÎÄÕÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÔØ ÔÉÐ ËÏÌÏÎËÉ OID ÄÌÑ
- ÈÒÁÎÅÎÉÑ ÚÎÁÞÅÎÉÊ OID ÷Ù ÍÏÖÅÔÅ ÓÏÚÄÁÔØ ÉÎÄÅËÓ ÎÁ ÐÏÌÅ OID ÄÌÑ ÂÏÌÅÅ
- ÂÙÓÔÒÏÇÏ ÄÏÓÔÕÐÁ.
-
- úÎÁÞÅÎÉÑ OID ÎÁÚÎÁÞÁÀÔÓÑ ÄÌÑ ×ÓÅÈ ÎÏ×ÙÈ ÚÁÐÉÓÅÊ ÉÚ ÃÅÎÔÒÁÌØÎÏÊ
- ÏÂÌÁÓÔÉ, ËÏÔÏÒÙÅ ÉÓÐÏÌØÚÕÀÔÓÑ ×ÓÅÍÉ ×ÓÅÍÉ ÂÁÚÁÍÉ ÄÁÎÎÙÈ. åÓÌÉ ×Ù
- ÈÏÔÉÔÅ ÉÚÍÅÎÉÔØ OID ÎÁ ËÁËÏÅ-ÌÉÂÏ ÄÒÕÇÏÅ ÚÎÁÞÅÎÉÅ ÉÌÉ ÅÓÌÉ ×Ù ÈÏÔÉÔÅ
- ÓÏÚÄÁÔØ ËÏÐÉÀ ÔÁÂÌÉÃÙ Ó ÔÁËÉÍÉÖÅ OID, ÔÏ ÜÔÏ ÍÏÖÎÏ ÓÄÅÌÁÔØ ÔÁË:
+ 4.15.3) Ne mozhet li poluchit'sya tak, chto ispol'zovanie currval() i
+ nextval() privedet k zaciklirovaniyu s drugimi pol'zovatelyami?
+
+ Net. currval() vozvraschaet tekuschee znachenie, naznachennoe vashem
+ backend'om, a ne drugimi pol'zovatelyami.
+
+ 4.15.4) Pochemu chisla iz moej posledovatel'nosti ne ispol'zuyutsya snova
+ pri otmene tranzakcii? Pochemu sozdayutsya razryvy pri numeracii v kolonke,
+ gde ya ispol'zuyu posledovatel'nost'/SERIAL?
+
+ Dlya realizacii konkuretnosti, znacheniya posledovatel'nostej, pri
+ neobhodimosti vydayutsya vo vremya zapuska tranzakcij i ne
+ blokiruyutsya do polnogo vypolneniya tranzakcij. `Eto mozhet vyzyvat'
+ razryvy v numeracii pri otmene tranzakcij.
+
+ 4.16) CHto takoe OID? CHto takoe TID?
+
+ Polya OID sluzhat unikal'nymi idetifikatorami zapisej v PostgreSQL.
+ Kazhdaya zapis', kotoraya sozdaiotsya v PostgreSQL poluchaet
+ unikal'nyj OID. Vse znacheniya OID generiruemye vo vremya initdb
+ imeyut znacheniya men'she 16384 (iz include/access/transam.h). Vse
+ sozdannye pol'zovatelem OID imeyut bOl'shie znachenie. Po umolchaniyu,
+ vse `eti OID yavlyayutsya unikal'nymi ne tol'ko vnutri kakoj-libo
+ tablicy ili bazy dannyh, no i vnutri vsej SUBD PostgreSQL.
+
+ PostgreSQL ispol'zuet OID v svoih vnutrennih sistemnyh tablicah dlya
+ svyazi zapisej i tablic. Znacheniya OID mogut byt' ispol'zovany dlya
+ identifikacii zadannyh pol'zovatelem zapisej, a takzhe ispol'zovat'sya
+ pri svyazyvaniyah. Rekomenduetsya ispol'zovat' tip kolonki OID dlya
+ hraneniya znachenij OID Vy mozhete sozdat' indeks na pole OID dlya
+ 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(old_oid oid, mycol int);
SELECT old_oid, mycol INTO new FROM old;
COPY new TO '/tmp/pgtable';
DELETE FROM new;
COPY new WITH OIDS FROM '/tmp/pgtable';
- OID ÈÒÁÎÉÔÓÑ ËÁË 4-È ÂÁÊÔÎÏÅ ÃÅÌÏÅ É ÎÅ ÍÏÖÅÔ ÐÒÅ×ÙÛÁÔØ ÚÎÁÞÅÎÉÅ × 4
- ÍÉÌÌÉÁÒÄÁ. ïÄÎÁËÏ, ÅÝÅ ÎÉËÔÏ ÎÅ ÓÏÏÂÝÉÌ Ï ÔÏÍ, ÞÔÏ ÔÁËÏÅ ÐÒÏÉÚÏÛÌÏ, ÎÏ
- ÍÙ ÐÌÁÎÉÒÕÅÍ ÄÏ ÔÏÇÏ ËÁË ÜÔÏ ÓÌÕÞÉÔØÓÑ ÉÚÂÁ×ÉÔÓÑ ÏÔ ÜÔÏÇÏ ÏÇÒÁÎÉÞÅÎÉÑ.
+ 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 ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÉÄÅÎÔÉÆÉËÁÃÉÉ ÓÐÅÃÉÁÌØÎÙÈ ÆÉÚÉÞÅÓËÉÈ ÚÁÐÉÓÅÊ Ó
- ÂÌÏÞÎÙÍÉ É offset ÚÎÁÞÅÎÉÑÍÉ. TID ÉÚÍÅÎÑÅÔÓÑ ÐÏÓÌÅ ÔÏÇÏ ËÁË ÚÁÐÉÓÉ
- ÂÙÌÉ ÉÚÍÅÎÅÎÙ ÉÌÉ ÐÅÒÅÇÒÕÖÅÎÙ.
+ TID ispol'zuetsya dlya identifikacii special'nyh fizicheskih zapisej s
+ blochnymi i offset znacheniyami. TID izmenyaetsya posle togo kak
+ zapisi byli izmeneny ili peregruzheny.
- TID ÉÓÐÏÌØÚÕÅÔÓÑ ÉÎÄÅËÓÎÙÍÉ ÚÁÐÉÓÑÍÉ × ËÁÞÅÓÔ×Å ÕËÁÚÁÔÅÌÑ ÎÁ
- ÆÉÚÉÞÅÓËÉÅ ÚÁÐÉÓÉ.
+ TID ispol'zuetsya indeksnymi zapisyami v kachestve ukazatelya na
+ fizicheskie zapisi.
- 4.17) þÔÏ ÏÚÎÁÞÁÀÔ ÎÅËÏÔÏÒÙÅ ÔÅÒÍÉÎÙ ÉÓÐÏÌØÚÕÅÍÙÅ × PostgreSQL?
+ 4.17) CHto oznachayut nekotorye terminy ispol'zuemye v PostgreSQL?
- îÅËÏÔÏÒÙÊ ÉÓÈÏÄÎÙÊ ËÏÄ É ÓÔÁÒÁÑ ÄÏËÕÍÅÎÔÁÃÉÑ ÉÓÐÏÌØÚÕÀÔ
- ÏÂÝÅÕÐÏÔÒÅÂÉÔÅÌØÎÙÅ ÔÅÒÍÉÎÙ. ÷ÏÔ ÎÅËÏÔÏÒÙÅ ÉÚ ÎÉÈ:
+ Nekotoryj ishodnyj kod i staraya dokumentaciya ispol'zuyut
+ obscheupotrebitel'nye terminy. Vot nekotorye iz nih:
* table, relation, class
* row, record, tuple
* column, field, attribute
* portal, cursor
* range variable, table name, table alias
- óÐÉÓÏË ÏÂÝÉÈ ÔÅÒÍÉÎÏ× ÐÏ ÂÁÚÁÍ ÄÁÎÎÙÈ ÍÏÖÎÏ ÎÁÊÔÉ ÎÁ
- http://www.comptechnews.com/~reaster/dbdesign.html
+ 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) ðÏÞÅÍÕ Ñ ÐÏÌÕÞÁÀ ÏÛÉÂËÕ "ERROR: Memory exhausted in AllocSetAlloc()"?
+ 4.18) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
+ AllocSetAlloc()"?
- ðÒÅÄÐÏÌÏÖÉÔÅÌØÎÏ Õ ×ÁÓ ÚÁËÏÎÞÉÌÁÓØ ×ÉÒÔÕÁÌØÎÁÑ ÐÁÍÑÔØ ÉÌÉ ÞÔÏ ×ÁÛÅ
- ÑÄÒÏ ÉÍÅÅÔ ÍÁÌÅÎØËÉÊ ÌÉÍÉÔ ÎÁ ÏÐÒÅÄÅÌÅÎÎÙÅ ÒÅÓÕÒÓÙ. ðÏÐÙÔÁÊÔÅÓØ ÐÅÒÅÄ
- ÚÁÐÕÓËÏÍ postmaster ×ÙÐÏÌÎÉÔØ ÓÌÅÄÕÀÝÉÅ ËÏÍÁÎÄÙ:
+ Predpolozhitel'no u vas zakonchilas' virtual'naya pamyat' ili chto
+ vashe yadro imeet malen'kij limit na opredelennye resursy. Popytajtes'
+ pered zapuskom postmaster vypolnit' sleduyuschie komandy:
ulimit -d 262144
limit datasize 256m
- ÷ ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ËÏÍÁÎÄÎÏÇÏ ÉÎÔÅÒÐÒÅÔÁÔÏÒÁ shell, ÔÏÌØËÏ ÏÄÎÁ ÉÚ
- ÄÁÎÎÙÈ ËÏÍÁÎÄ ×ÙÐÏÌÎÉÔÓÑ ÕÓÐÅÛÎÏ, ÎÏ ÏÎÁ ÐÏÚ×ÏÌÉÔ ×ÁÍ ÕÓÔÁÎÏ×ÉÔØ
- ÂÏÌØÛÉÊ ÓÅÇÍÅÎÔ ÄÁÎÎÙÈ ÐÒÏÃÅÓÓÁ É ×ÏÚÍÏÖÎÏ ÒÅÛÉÔ ÐÒÏÂÌÅÍÕ. üÔÁ ËÏÍÁÎÄÁ
- ÉÚÍÅÎÑÅÔ ÐÁÒÁÍÅÔÒÙ ÔÅËÕÝÅÇÏ ÐÒÏÃÅÓÓÁ É ×ÓÅÈ ÅÇÏ ÐÏÔÏÍËÏ×, ÓÏÚÄÁÎÎÙÈ
- ÐÏÓÌŠţ ÚÁÐÕÓËÁ. åÓÌÉ Õ ×ÁÓ ×ÏÚÎÉËÌÁ ÐÒÏÂÌÅÍÁ Ó SQL ËÌÉÅÎÔÏÍ, ÐÏÔÏÍÕ
- ÞÔÏ backend ×ÏÚ×ÒÁÝÁÅÔ ÓÌÉÛËÏÍ ÂÏÌØÛÏÊ ÏÂßÅÍ ÄÁÎÎÙÈ, ÐÏÐÙÔÁÊÔÅÓØ
- ×ÙÐÏÌÎÉÔØ ÜÔÕ ËÏÍÁÎÄÕ ÐÅÒÅÄ ÚÁÐÕÓËÏÍ ËÌÉÅÎÔÁ.
-
- 4.19) ëÁË ÍÎÅ ÕÚÎÁÔØ, ËÁËÁÑ ×ÅÒÓÉÑ PostgreSQL ÚÁÐÕÝÅÎÁ?
+ V zavisimosti ot komandnogo interpretatora shell, tol'ko odna iz
+ dannyh komand vypolnitsya uspeshno, no ona pozvolit vam ustanovit'
+ bol'shij segment dannyh processa i vozmozhno reshit problemu. `Eta
+ komanda izmenyaet parametry tekuschego processa i vseh ego potomkov,
+ sozdannyh posle eio zapuska. Esli u vas voznikla problema s SQL
+ klientom, potomu chto backend vozvraschaet slishkom bol'shoj ob"em
+ dannyh, popytajtes' vypolnit' `etu komandu pered zapuskom klienta.
+
+ 4.19) Kak mne uznat', kakaya versiya PostgreSQL zapuschena?
- éÚ psql, ÎÁÂÅÒÉÔÅ select version();
+ Iz psql, naberite SELECT version();
- 4.20) ðÏÞÅÍÕ ÐÒÉ ÒÁÂÏÔÅ Ó ÍÏÉÍ ÂÏÌØÛÉÍ ÏÂßÅËÔÏÍ Ñ ÐÏÌÕÞÁÀ ÏÛÉÂËÕ "invalid
- large obj descriptor"?
+ 4.20) Pochemu pri rabote s moim bol'shim ob"ektom ya poluchayu oshibku
+ "invalid large obj descriptor"?
- ÷ÁÍ ÎÕÖÎÏ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÂÏÌØÛÏÇÏ ÏÂßÅËÔÁ ÐÏÍÅÓÔÉÔØ × ÎÁÞÁÌÅ BEGIN
- WORK É × ËÏÎÃÅ COMMIT, Á ×ÎÕÔÒÉ ÐÏÌÕÞÉ×ÛÅÇÏÓÑ ÂÌÏËÁ lo_open ...
- lo_close.
-
- ÷ ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ PostgreSQL ÔÒÅÂÕÅÔ, ÞÔÏÂÙ ÐÒÉ ÚÁËÒÙÔÉÉ ÂÏÌØÛÏÇÏ
- ÏÂßÅËÔÁ ÐÒÏÉÓÈÏÄÉÌÏ ×ÙÐÏÌÎÅÎÉÅ ÔÒÁÎÚÁËÃÉÉ. ôÁËÉÍ ÏÂÒÁÚÏÍ, ÐÅÒ×ÁÑ ÖÅ
- ÐÏÐÙÔËÁ ÓÄÅÌÁÔØ ÞÔÏ-ÌÉÂÏ Ó ÂÏÌØÛÉÍ ÏÂßÅËÔÏÍ, ÎÅ ÓÏÂÌÀÄÁÑ ÄÁÎÎÏÇÏ
- ÐÒÁ×ÉÌÁ ÐÒÉ×ÅÄÅÔ Ë ÓÏÏÂÝÅÎÉÀ invalid large obj descriptor, ÔÁË ËÁË ËÏÄ
- ×ÙÐÏÌÎÑÀÝÉÊ ÒÁÂÏÔÕ ÎÁÄ ÂÏÌØÛÉÍ ÏÂßÅËÔÏÍ (ÐÏ ËÒÁÊÎÅÊ ÍÅÒÅ × ÎÁÓÔÏÑÝÉÊ
- ÍÏÍÅÎÔ) ÂÕÄÅÔ ÇÅÎÅÒÉÒÏ×ÁÔØ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ ÅÓÌÉ ×Ù ÎÅ ÉÓÐÏÌØÚÕÅÔÅ
- ÔÒÁÎÚÁËÃÉÀ.
-
- åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ ÔÁËÏÊ ÉÎÔÅÒÆÅÊÓ ËÌÉÅÎÔÁ ËÁË ODBC, ×ÁÍ ×ÏÚÍÏÖÎÏ
- ÐÏÎÁÄÏÂÉÔÓÑ ÕÓÔÁÎÏ×ÉÔØ auto-commit off.
-
- 4.21) ëÁË ÍÎÅ ÓÏÚÄÁÔØ ËÏÌÏÎËÕ ËÏÔÏÒÁÑ ÐÏ ÕÍÏÌÞÁÎÉÀ ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ ÔÅËÕÝÅÅ
- ×ÒÅÍÑ?
+ Vam nuzhno pri ispol'zovanii bol'shogo ob"ekta pomestit' v nachale
+ BEGIN WORK i v konce COMMIT, a vnutri poluchivshegosya bloka lo_open
+ ... lo_close.
+
+ V nastoyaschij moment PostgreSQL trebuet, chtoby pri zakrytii
+ bol'shogo ob"ekta proishodilo vypolnenie tranzakcii. Takim obrazom,
+ pervaya zhe popytka sdelat' chto-libo s bol'shim ob"ektom, ne
+ soblyudaya dannogo pravila privedet k soobscheniyu invalid large obj
+ descriptor, tak kak kod vypolnyayuschij rabotu nad bol'shim ob"ektom
+ (po krajnej mere v nastoyaschij moment) budet generirovat' soobschenie
+ ob oshibke esli vy ne ispol'zuete tranzakciyu.
+
+ Esli vy ispol'zuete takoj interfejs klienta kak ODBC, vam vozmozhno
+ ponadobitsya ustanovit' auto-commit off.
+
+ 4.21) Kak mne sozdat' kolonku kotoraya po umolchaniyu budet soderzhat'
+ tekuschee vremya?
- éÓÐÏÌØÚÕÊÔÅ CURRENT_TIMESTAMP:
+ Ispol'zujte CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
- 4.22) ðÏÞÅÍÕ ÍÏÉ ÐÏÄÚÁÐÒÏÓÙ, ÉÓÐÏÌØÚÕÀÝÉÅ IN ÔÁË ÍÅÄÌÅÎÎÏ ÒÁÂÏÔÁÅÀÔ?
-
- ÷ ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ, ÍÙ Ó×ÑÚÙ×ÁÅÍ ÐÏÚÁÐÒÏÓÙ ÄÌÑ ×ÎÅÛÎÉÈ ÚÁÐÒÏÓÏ× ÞÅÒÅÚ
- ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÙÊ ÐÅÒÅÂÏÒ ÒÅÚÕÌØÔÁÔÁ ÐÏÄÚÁÐÒÏÓÁ ÄÌÑ ËÁÖÄÏÊ ÚÁÐÉÓÉ
- ×ÎÅÛÎÅÇÏ ÚÁÐÒÏÓÁ. åÓÌÉ ÐÏÄÚÁÐÒÏÓ ×ÏÚ×ÒÁÝÁÅÔ ÔÏÌØËÏ ÎÅÓËÏÌØËÏ ÚÁÐÉÓÅÊ É
- ×ÎÅÛÎÉÊ ÚÁÐÒÏÓ ×ÏÚ×ÒÁÝÁÅÔ ÍÎÏÇÏ ÚÁÐÉÓÅÊ, IN ÒÁÂÏÔÁÅÔ ÎÁÉÂÏÌÅÅ ÂÙÓÔÒÏ.
- þÔÏÂÙ Õ×ÅÌÉÞÉÔØ ÓËÏÒÏÓÔØ × ÄÒÕÇÉÈ ÚÁÐÒÏÓÁÈ, ÚÁÍÅÎÉÔÅ IN ÎÁ EXISTS:
-SELECT *
+ 4.22) Pochemu moi podzaprosy, ispol'zuyuschie IN tak medlenno rabotaeyut?
+
+ V nastoyaschij moment, my svyazyvaem pozaprosy dlya vneshnih zaprosov
+ cherez posledovatel'nyj perebor rezul'tata podzaprosa dlya kazhdoj
+ zapisi vneshnego zaprosa. Esli podzapros vozvraschaet tol'ko neskol'ko
+ zapisej i vneshnij 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)
+ WHERE col IN (SELECT subcol FROM subtab);
- ÎÁ:
-SELECT *
+ na:
+ SELECT *
FROM tab
- WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
+ WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
- þÔÏÂÙ ÔÁËÁÑ ËÏÎÓÔÒÕËÃÉÑ ÒÁÂÏÔÁÌÁ ÂÙÓÔÒÏ, ËÏÌÏÎËÁ subcol ÄÏÌÖÎÁ ÂÙÔØ
- ÐÒÏÉÎÄÅËÓÉÒÏ×ÁÎÁ. íÙ ÎÁÄÅÅÍÓÑ ÕÂÒÁÔØ ÜÔÏ ÏÇÒÁÎÉÞÅÎÉÅ × ÂÕÄÕÝÅÍ
- ×ÙÐÕÓËÅ.
+ CHtoby takaya konstrukciya rabotala bystro, kolonka subcol dolzhna
+ byt' proindeksirovana. My nadeemsya ubrat' `eto ogranichenie v
+ buduschem vypuske.
- 4.23) ëÁË ÍÎÅ ×ÙÐÏÌÎÉÔØ ×ÎÅÛÎÅÅ Ó×ÑÚÙ×ÁÎÉÅ?
+ 4.23) Kak mne vypolnit' vneshnee svyazyvanie?
- PostgreSQL ÐÏÄÄÅÒÖÉ×ÁÅÔ ×ÎÅÛÎÅÅ Ó×ÑÚÙ×ÁÎÉÅ, ÉÓÐÏÌØÚÕÑ ÓÔÁÎÄÁÒÔÎÙÊ
- ÓÉÎÔÁËÓÉÓ SQL. ÷ÏÔ Ä×Á ÐÒÉÍÅÒÁ:
+ PostgreSQL podderzhivaet vneshnee svyazyvanie, ispol'zuya standartnyj
+ sintaksis SQL. Vot dva primera:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
- ÉÌÉ
+ ili
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
- üÔÏ ÉÄÅÎÔÉÞÎÙÅ ÚÁÐÒÏÓÙ Ó×ÑÚÙ×ÁÎÉÑ t1.col É t2.col, ÔÁËÖÅ ×ÏÚ×ÒÁÝÁÀÔ
- ÌÀÂÙÅ ÎÅÓ×ÑÚÁÎÎÙÅ ÚÁÐÉÓÉ × t1 (ËÏÔÏÒÙÅ ÎÅ ÓÏ×ÐÁÄÁÀÔ Ó t2). RIGHT
- Ó×ÑÚÙ×ÁÎÉÅ ÄÏÌÖÎÏ ÄÏÂÁ×ÉÔØ ÎÅÓ×ÑÚÁÎÎÙÅ ÚÁÐÉÓÉ t2. FULL Ó×ÑÚÙ×ÁÎÉÅ
- ÄÏÌÖÎÏ ×ÏÚ×ÒÁÔÉÔØ ÓÏ×ÐÁ×ÛÉÅ ÚÁÐÉÓÉ ÐÌÀÓ ×ÓÅ ÎÅÓ×ÑÚÁÎÎÙÅ ÚÁÐÉÓÉ ÉÚ t1 É
- t2. óÌÏ×Ï OUTER Ñ×ÌÑÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÍ É ÎÁÚÎÁÞÁÅÔÓÑ × LEFT, RIGHT É
- FULL Ó×ÑÚÙ×ÁÎÉÑÈ. ïÂÙÞÎÙÅ Ó×ÑÚÙ×ÁÎÉÑ ÎÁÚÙ×ÁÀÔÓÑ INNER Ó×ÑÚÙ×ÁÎÉÑ.
-
- ÷ ÐÒÅÄÙÄÕÝÉÈ ×ÅÒÓÉÑÈ, ×ÎÅÛÎÉÅ Ó×ÑÚÙ×ÁÎÉÑ ÍÏÇÌÉ ÂÙÔØ ÜÍÕÌÉÒÏ×ÁÎÙ
- ÉÓÐÏÌØÚÕÑ UNION É NOT IN. îÁÐÒÉÍÅÒ, ËÏÇÄÁ ÐÒÏÉÓÈÏÄÉÔ Ó×ÑÚÙ×ÁÎÉÅ tab1 É
- tab2, ÓÌÅÄÕÀÝÉÊ ÚÁÐÒÏÓ ×ÙÐÏÌÎÑÅÔ ×ÎÅÛÎÅÅ Ó×ÑÚÙ×ÁÎÉÅ Ä×ÕÈ ÔÁÂÌÉÃ:
+ `Eto identichnye zaprosy svyazyvaniya t1.col i t2.col, takzhe
+ vozvraschayut lyubye nesvyazannye zapisi v t1 (kotorye ne sovpadayut s
+ t2). RIGHT svyazyvanie dolzhno dobavit' nesvyazannye zapisi t2. FULL
+ svyazyvanie dolzhno vozvratit' sovpavshie zapisi plyus vse
+ nesvyazannye zapisi iz t1 i t2. Slovo OUTER yavlyaetsya
+ neobyazatel'nym i naznachaetsya v LEFT, RIGHT i FULL svyazyvaniyah.
+ Obychnye svyazyvaniya nazyvayutsya INNER svyazyvaniya.
+
+ V predyduschih versiyah, vneshnie svyazyvaniya mogli byt' `emulirovany
+ 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
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
ORDER BY col1
- 4.24) ëÁË ×ÙÐÏÌÎÑÔØ ÚÁÐÒÏÓÙ, ÉÓÐÏÌØÚÕÀÝÉÅ ÎÅÓËÏÌØËÏ ÂÁÚ ÄÁÎÎÙÈ?
-
- îÅ ÓÕÝÅÓÔ×ÕÅÔ ÓÐÏÓÏÂÁ ÓÏÚÄÁÔØ ÚÁÐÒÏÓ Ë ÂÁÚÁÍ ÄÁÎÎÙÈ ÏÔÌÉÞÎÙÍ ÏÔ
- ÔÅËÕÝÅÊ. ðÏÓËÏÌØËÕ PostgreSQL ÚÁÇÒÕÖÁÅÔ ÓÉÓÔÅÍÎÙÅ ËÁÔÁÌÏÇÉ ÓÐÅÃÉÆÉÞÎÙÅ
- ÄÌÑ ÂÁÚÙ ÄÁÎÎÙÈ, ÎÅÐÏÎÑÔÎÏ ÄÁÖÅ, ËÁË ÄÏÌÖÅÎ ÓÅÂÑ ×ÅÓÔÉ ÔÁËÏÊ
- ÍÅÖÂÁÚÏ×ÙÊ ÚÁÐÒÏÓ.
-
- /contrib/dblink ÐÏÚ×ÏÌÑÅÔ ÚÁÐÒÏÓÙ ÍÅÖÄÕ ÂÁÚÁÍÉ, ÉÓÐÏÌØÚÕÑ ×ÙÚÏ×Ù
- ÆÕÎËÃÉÊ. òÁÚÕÍÅÅÔÓÑ, ËÌÉÅÎÔ ÍÏÖÅÔ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ
- ÓÏÅÄÉÅÎÅÎÉÑ Ó ÒÁÚÌÉÞÎÙÍÉ ÂÁÚÁÍÉ ÄÁÎÎÙÈ É ÔÁËÉÈ ÏÂÒÁÚÏÍ ÏÂßÅÄÉÎÑÔØ
- ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÎÉÈ.
-
- 4.25) ëÁË ÍÎÅ ×ÅÒÎÕÔØ ÉÚ ÆÕÎËÃÉÉ ÎÅÓËÏÌØËÏ ÚÁÐÉÓÅÊ?
-
- ÷Ù ÍÏÖÅÔÅ ×ÏÚ×ÒÁÝÁÔØ ÉÚ ÆÕÎËÃÉÊ PL/pgSQL ÓÐÉÓËÉ ÒÅÚÕÌØÔÁÔÏ×, ÉÓÐÏÌØÚÕÑ
- refcursors. óÍÏÔÒÉÔÅ
- http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,
- ÓÅËÃÉÀ 23.7.3.3.
-
- 4.26) ðÏÞÅÍÕ Ñ ÎÅ ÍÏÇÕ ÎÁÄÅÖÎÏ ÓÏÚÄÁ×ÁÔØ/ÕÄÁÌÑÔØ ×ÒÅÍÅÎÎÙÅ ÔÁÂÌÉÃÙ ×
- ÆÕÎËÃÉÑÈ PL/PgSQL?
-
- PL/PgSQL ËÜÛÉÒÕÅÔ ÓÏÄÅÒÖÉÍÏÅ ÆÕÎËÃÉÉ É ÏÄÉÎ ÉÚ ÎÅÇÁÔÉ×ÎÙÈ ÜÆÆÅËÔÏ×
- ÜÔÏÇÏ ÓÏÓÔÏÉÔ × ÔÏÍ, ÞÔÏ ÅÓÌÉ ÆÕÎËÃÉÑ PL/PgSQL ÏÂÒÁÝÁÅÔÓÑ Ë ×ÒÅÍÅÎÎÏÊ
- ÔÁÂÌÉÃÅ É ÜÔÁ ÔÁÂÌÉÃÁ ÐÏÚÄÎÅÅ ÕÄÁÌÑÅÔÓÑ É ÐÅÒÅÓÏÚÄÁÅÔÓÑ, Á ÆÕÎËÃÉÑ
- ÚÁÔÅÍ ×ÙÚÙ×ÁÅÔÓÑ ÓÎÏ×Á, ÔÏ ÅÅ ×ÙÚÏ× ÐÒÉ×ÅÄÅÔ Ë ÏÛÉÂËÅ, ÐÏÔÏÍÕ ÞÔÏ
- ÓËÜÛÉÒÏ×ÁÎÎÏÅ ÓÏÄÅÒÖÉÍÏÅ ÆÕÎËÃÉÉ ÓÏÄÅÒÖÉÔ ÕËÁÚÁÔÅÌØ ÎÁ ÓÔÁÒÕÀ
- ×ÒÅÍÅÎÎÕÀ ÔÁÂÌÉÃÕ. þÔÏÂÙ ÒÅÛÉÔØ ÜÔÕ ÐÒÏÂÌÅÍÕ, ÉÓÐÏÌØÚÕÊÔÅ EXECUTE ÄÌÑ
- ÄÏÓÔÕÐÁ Ë ×ÒÅÍÅÎÎÙÍ ÔÁÂÌÉÃÁÍ × PL/PgSQL. éÓÐÏÌØÚÏ×ÁÎÉÅ ÜÔÏÇÏ ÏÐÅÒÁÔÏÒÁ
- ÚÁÓÔÁ×ÉÔ ÚÁÐÒÏÓ ÐÅÒÅÇÅÎÅÒÉÒÏ×ÁÔØÓÑ ËÁÖÄÙÊ ÒÁÚ.
-
- 4.27) ëÁËÉÅ ÏÐÃÉÉ ÒÅÐÌÉËÁÃÉÉ ÓÕÝÅÓÔ×ÕÀÔ?
-
- åÓÔØ ÎÅÓËÏÌØËÏ ÒÅÛÅÎÉÊ ÄÌÑ ÒÅÐÌÉËÁÃÉÉ ÔÉÐÁ master/slave. ïÎÉ ÄÏÐÕÓËÁÀÔ
- ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÔÏÌØËÏ ÏÄÎÏÇÏ ÓÅÒ×ÅÒÁ ÄÌÑ ×ÎÅÓÅÎÉÑ ÉÚÍÅÎÅÎÉÊ × ÂÁÚÕ
- ÄÁÎÎÙÈ, Á slave ÓÅÒ×ÅÒÙ ÐÒÏÓÔÏ ÐÏÚ×ÏÌÑÀÔ ÞÉÔÁÔØ ÄÁÎÎÙÅ ÉÚ ÂÁÚÙ.
+ 4.24) Kak vypolnyat' zaprosy, ispol'zuyuschie neskol'ko baz dannyh?
+
+ Ne suschestvuet sposoba sozdat' zapros k bazam dannyh otlichnym ot
+ tekuschej. Poskol'ku PostgreSQL zagruzhaet sistemnye katalogi
+ specifichnye dlya bazy dannyh, neponyatno dazhe, kak dolzhen sebya
+ vesti takoj mezhbazovyj zapros.
+
+ contrib/dblink pozvolyaet zaprosy mezhdu bazami, ispol'zuya vyzovy
+ funkcij. Razumeetsya, klient mozhet odnovremenno ustanavlivat'
+ soedieneniya s razlichnymi bazami dannyh i takih obrazom ob"edinyat'
+ informaciyu iz nih.
+
+ 4.25) Kak mne vernut' iz funkcii neskol'ko zapisej?
+
+ Vy mozhete vozvraschat' iz funkcij PL/pgSQL spiski rezul'tatov,
+ ispol'zuya refcursors. Smotrite
+ http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html,
+ sekciyu 23.7.3.3.
+
+ 4.26) Pochemu ya ne mogu nadezhno sozdavat'/udalyat' vremennye tablicy v
+ funkciyah PL/PgSQL?
+
+ PL/PgSQL k`eshiruet soderzhimoe funkcii i odin iz negativnyh `effektov
+ `etogo sostoit v tom, chto esli funkciya PL/PgSQL obraschaetsya k
+ vremennoj tablice i `eta tablica pozdnee udalyaetsya i peresozdaetsya,
+ a funkciya zatem vyzyvaetsya snova, to ee vyzov privedet k oshibke,
+ potomu chto sk`eshirovannoe soderzhimoe funkcii soderzhit ukazatel' na
+ staruyu vremennuyu tablicu. CHtoby reshit' `etu problemu, ispol'zujte
+ EXECUTE dlya dostupa k vremennym tablicam v PL/PgSQL. Ispol'zovanie
+ `etogo operatora zastavit zapros peregenerirovat'sya kazhdyj raz.
+
+ 4.27) Kakie opcii replikacii suschestvuyut?
+
+ Est' neskol'ko opcij dlya replikacii tipa master/slave. Oni dopuskayut
+ ispol'zovanie tol'ko master servera dlya vneseniya izmenenij v bazu
+ dannyh, a slave servery prosto pozvolyayut chitat' dannye iz bazy. Ob
+ `etom chitajte zdes':
+ http://gborg.PostgreSQL.org/genpage?replication_research. O replikacii
+ s neskol'kimi master serverami chitajte zdes':
+ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
+
+ 4.28) Kakie opcii shifrovaniya suschestvuyut?
+
+ * contrib/pgcrypto soderzhit mnogo funkcij shifrovaniya dlya
+ ispol'zovaniya v SQL zaprosah.
+ * Est' tol'ko odin sposob shifrovaniya dannyh, peredavaemyh ot
+ klienta k serveru, cherez ispol'zovanie hostssl v pg_hba.conf.
+ * Paroli pol'zovatelej k baze dannyh avtomaticheski shifruyutsya,
+ pri sohranenii v versii 7.3. V predyduschih versiyah, vy dolzhny
+ razreshit' opciyu PASSWORD_ENCRYPTION v postgresql.conf.
+ * Server mozhno zapustit', ispol'zuya shifrovannuyu fajlovuyu
+ sistemu.
_________________________________________________________________
- òÁÓÛÉÒÅÎÉÑ PostgreSQL
+ Rasshireniya PostgreSQL
- 5.1) ñ ÎÁÐÉÓÁÌ ÆÕÎËÃÉÀ ÏÐÒÅÄÅÌÑÅÍÕÀ ÐÏÌØÚÏ×ÁÔÅÌÅÍ. ëÏÇÄÁ Ñ ÚÁÐÕÓËÁÀ ÅÅ ×
- psql, ÐÏÞÅÍÕ Ñ ÐÏÌÕÞÁÀ dump core?
+ 5.1) YA napisal funkciyu opredelyaemuyu pol'zovatelem. Kogda ya zapuskayu
+ ee v psql, pochemu ya poluchayu dump core?
- ðÒÏÂÌÅÍÁ ÍÏÖÅÔ ÚÁËÌÀÞÁÔØÓÑ × ÎÅÓËÏÌØËÉÈ ×ÅÝÁÈ. ðÏÐÙÔÁÊÔÅÓØ ÓÐÅÒ×Á
- ÐÒÏÔÅÓÔÉÒÏ×ÁÔØ ×ÁÛÕ ÆÕÎËÃÉÀ × ÏÔÄÅÌØÎÏÊ ÓÁÍÏÓÔÏÑÔÅÌØÎÏÊ ÐÒÏÇÒÁÍÍÅ.
+ Problema mozhet zaklyuchat'sya v neskol'kih veschah. Popytajtes'
+ sperva protestirovat' vashu funkciyu v otdel'noj samostoyatel'noj
+ programme.
- 5.2) ëÁË Ñ ÍÏÇÕ ×ÎÅÓÔÉ ÎÅËÏÔÏÒÙÅ ËÌÁÓÓÎÙÅ ÎÏ×ÙÅ ÔÉÐÙ É ÆÕÎËÃÉÉ ×
+ 5.2) Kak ya mogu vnesti nekotorye klassnye novye tipy i funkcii v
PostgreSQL?
- ïÔÐÒÁ×ØÔÅ ×ÁÛÉ ÒÁÓÛÉÒÅÎÉÑ × ÓÐÉÓÏË ÒÁÓÓÙÌËÉ pgsql-hackers É ÏÎÉ ÐÏ
- ×ÏÚÍÏÖÎÏÓÔÉ ÂÕÄÕÔ ÐÏÍÅÝÅÎÙ × ÐÏÄËÁÔÁÌÏÇ contrib/.
+ Otprav'te vashi rasshireniya v spisok rassylki pgsql-hackers i oni po
+ vozmozhnosti budut pomescheny v podkatalog contrib/.
- 5.3) ëÁË ÍÎÅ ÎÁÐÉÓÁÔØ C ÆÕÎËÃÉÀ, ×ÏÚ×ÒÁÝÁÀÝÕÀ ÚÁÐÉÓØ?
+ 5.3) Kak mne napisat' C funkciyu, vozvraschayuschuyu zapis'?
- üÔÏ ÔÒÅÂÕÅÔ ÎÅËÏÅÇÏ ÛÁÍÁÎÓÔ×Á ÔÁË ËÁË Á×ÔÏÒÙ ÎÉËÏÇÄÁ ÎÅ ÐÒÏÂÏ×ÁÌÉ
- ÄÅÌÁÔØ ÜÔÏ, ÈÏÔÑ × ÐÒÉÎÉÃÐÅ ÜÔÏ ×ÏÚÍÏÖÎÏ.
+ V versiyah PostgreSQL, nachinaya s 7.3, funkcii, vozvraschayuschie
+ tablicy polnost'yu podderzhivayutsya v C, PL/PgSQL i SQL. Podrobnosti
+ smotrite v Rukovodstve Programmista. Primer vozvraschayuschej tablicu
+ funkcii, napisannoj na C, mozhno najti v contrib/tablefunc.
- 5.4) ñ ÉÚÍÅÎÉÌ ÉÓÈÏÄÎÙÊ ÆÁÊÌ. ðÏÞÅÍÕ ÐÏÓÌÅ ÐÅÒÅËÏÍÐÉÌÑÃÉÉ Ñ ÎÅ ×ÉÖÕ
- ÉÚÍÅÎÅÎÉÊ?
+ 5.4) YA izmenil ishodnyj fajl. Pochemu posle perekompilyacii ya ne vizhu
+ izmenenij?
- æÁÊÌÙ Makefile ÎÅ ÉÍÅÀÔ ÐÒÁ×ÉÌØÎÙÈ ÚÁ×ÉÓÉÍÏÓÔÅÊ ÄÌÑ include ÆÁÊÌÏ×. ÷Ù
- ÄÏÌÖÎÙ ×ÙÐÏÌÎÉÔØ make clean É ÚÁÔÅÍ make. åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ GCC ×Ù
- ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÏÐÃÉÀ --enable-depend × configure ÞÔÏÂÙ ÐÏÒÕÞÉÔØ
- ËÏÍÐÉÌÑÔÏÒÕ Á×ÔÏÍÁÔÉÞÅÓËÉ ÏÔÓÌÅÖÉ×ÁÔØ ÚÁ×ÉÓÉÍÏÓÔÉ.
+ Fajly Makefile ne imeyut pravil'nyh zavisimostej dlya include fajlov.
+ Vy dolzhny vypolnit' make clean i zatem make. Esli vy ispol'zuete GCC
+ vy mozhete ispol'zovat' opciyu --enable-depend v configure chtoby
+ poruchit' kompilyatoru avtomaticheski otslezhivat' zavisimosti.
<HTML>
<!-- DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN" -->
- <!-- HTML -->
<HEAD>
<META name="generator" content="HTML Tidy, see www.w3.org">
-
+ <META http-equiv="Content-Type" content="text/html; charset=koi8-r">
<TITLE>PostgreSQL FAQ</TITLE>
</HEAD>
alink="#0000ff">
<H1>ïÔ×ÅÔÙ ÎÁ ÞÁÓÔÏ ÚÁÄÁ×ÁÅÍÙÅ ×ÏÐÒÏÓÙ ÐÏ PostgreSQL</H1>
- <P>äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: óÒÅÄÁ 9 ïËÔÑÂÒÑ 23:14:53 EDT 2002</P>
+ <P>äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: ÷ÏÓËÒÅÓÅÎØÅ 20 ïËÔÑÂÒÑ 20:47:14 EDT 2002</P>
<P>áÎÇÌÉÊÓËÉÊ ×ÁÒÉÁÎÔ ÓÏÐÒÏ×ÏÖÄÁÅÔ: âÒÀÓ íÏÍØÑÎ (Bruce Momjian) (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
<HR>
<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.3">1.3</A>) îÁ ËÁËÉÈ Unix ÐÌÁÔÆÏÒÍÁÈ ÒÁÂÏÔÁÅÔ PostgreSQL?<BR>
<A href="#1.4">1.4</A>) óÕÝÅÓÔ×ÕÀÔ ÌÉ ×ÅÒÓÉÉ ÐÏÒÔÉÒÏ×ÁÎÎÙÅ ÎÅ ÎÁ Unix ÓÉÓÔÅÍÙ?<BR>
<A href="#3.7">3.7</A>) ëÁËÉÅ ×ÏÚÍÏÖÎÏÓÔÉ ÄÌÑ ÏÔÌÁÄËÉ ÅÓÔØ × ÎÁÌÉÞÉÉ?<BR>
<A href="#3.8">3.8</A>) ðÏÞÅÍÕ Ñ ÐÏÌÕÞÁÀ ÓÏÏÂÝÅÎÉÅ <I>"Sorry, too many
clients"</I> ËÏÇÄÁ ÐÙÔÁÀÓØ ÐÏÄËÌÀÞÉÔØÓÑ Ë ÂÁÚÅ?<BR>
- <A href="#3.9">3.9</A>) þÔÏ ÜÔÏ ÚÁ ÆÁÊÌÙ <I>pg_sorttempNNN.NN</I>
- × ÍÏÅÍ ËÁÔÁÌÏÇÅ Ó ÂÁÚÏÊ ÄÁÎÎÙÈ?<BR>
+ <A href="#3.9">3.9</A>) þÔÏ ÎÁÈÏÄÉÔÓÑ × ËÁÔÁÌÏÇÅ <I>pgsql_tmp</I>?<BR>
<A href="#3.10">3.10</A>) ðÏÞÅÍÕ ÎÅÏÂÈÏÄÉÍÏ ÄÅÌÁÔØ dump É restore ÐÒÉ
ÏÂÎÏ×ÌÅÎÉÉ ×ÙÐÕÓËÏ× PostgreSQL?<BR>
<A href="#4.26">4.26</A>) ðÏÞÅÍÕ Ñ ÎÅ ÍÏÇÕ ÎÁÄÅÖÎÏ ÓÏÚÄÁ×ÁÔØ/ÕÄÁÌÑÔØ
×ÒÅÍÅÎÎÙÅ ÔÁÂÌÉÃÙ × ÆÕÎËÃÉÑÈ PL/PgSQL?<BR>
<A href="#4.27">4.27</A>) ëÁËÉÅ ÏÐÃÉÉ ÒÅÐÌÉËÁÃÉÉ ÓÕÝÅÓÔ×ÕÀÔ?<BR>
+ <A href="#4.28">4.28</A>) ëÁËÉÅ ÏÐÃÉÉ ÛÉÆÒÏ×ÁÎÉÑ ÓÕÝÅÓÔ×ÕÀÔ?<BR>
<H2 align="center">òÁÓÛÉÒÅÎÉÑ PostgreSQL</H2>
<A href="#5.1">5.1</A>) ñ ÎÁÐÉÓÁÌ ÆÕÎËÃÉÀ ÏÐÒÅÄÅÌÑÅÍÕÀ ÐÏÌØÚÏ×ÁÔÅÌÅÍ.
<H2 align="center">ïÂÝÉÅ ×ÏÐÒÏÓÙ</H2>
- <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>
ÒÁÓÛÉÒÅÎÎÏÅ ÐÏÄÍÎÏÖÅÓÔ×Ï <SMALL>SQL</SMALL>. PostgreSQL - ÜÔÏ
Ó×ÏÂÏÄÎÏÅ É ÐÏÌÎÏÓÔØÀ ÏÔËÒÙÔÏÅ ÐÒÏÇÒÁÍÍÎÏÅ ÏÂÅÓÐÅÞÅÎÉÅ.</P>
- <P>òÁÚÒÁÂÏÔËÕ PostgreSQL ×ÙÐÏÌÎÑÅÔ ËÏÍÁÎÄÁ,
- Ó×ÑÚÁÎÎÁÑ ÞÅÒÅÚ Internet, ×ÓÅ ÕÞÁÓÔÎÉËÉ ËÏÔÏÒÏÊ ÐÏÄÐÉÓÁÎÙ ÎÁ ÓÐÉÓÏË
- ÒÁÓÓÙÌËÉ ÒÁÚÒÁÂÏÔÞÉËÏ×. ÷ ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ, ÉÈ ËÏÏÒÄÉÎÁÔÏÒÏÍ
- Ñ×ÌÑÅÔÓÑ íÁÒË æÏÒÎÁÊ (Marc G. Fournier) (<A href=
+ <P>òÁÚÒÁÂÏÔËÕ PostgreSQL ×ÙÐÏÌÎÑÅÔ ËÏÍÁÎÄÁ ÒÁÚÒÁÂÏÔÞÉËÏ×, ×ÓÅ ÕÞÁÓÔÎÉËÉ
+ ËÏÔÏÒÏÊ ÐÏÄÐÉÓÁÎÙ ÎÁ ÓÐÉÓÏË ÒÁÓÓÙÌËÉ ÒÁÚÒÁÂÏÔÞÉËÏ×. ÷ ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ,
+ ÉÈ ËÏÏÒÄÉÎÁÔÏÒÏÍ Ñ×ÌÑÅÔÓÑ íÁÒË æÏÒÎÁÊ (Marc G. Fournier) (<A href=
"mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). (óÍ.
- ÎÉÖÅ Ï ÔÏÍ, ËÁË ÐÏÄËÌÀÞÉÔØÓÑ Ë ÒÁÚÒÁÂÏÔËÅ). üÔÁ ËÏÍÁÎÄÁ ÔÅÐÅÒØ
- ÏÔ×ÅÞÁÅÔ ÚÁ ×ÓÀ ÒÁÚÒÁÂÏÔËÕ PostgreSQL.</P>
+ ÓÅËÃÉÀ <A href="#1.6">1.6</A> Ï ÔÏÍ, ËÁË ÐÏÄËÌÀÞÉÔØÓÑ Ë ÒÁÚÒÁÂÏÔËÅ).
+ üÔÁ ËÏÍÁÎÄÁ ÔÅÐÅÒØ ÏÔ×ÅÞÁÅÔ ÚÁ ×ÓÀ ÒÁÚÒÁÂÏÔËÕ PostgreSQL.</P>
<P>á×ÔÏÒÁÍÉ PostgreSQL 1.01 Ñ×ÌÑÀÔÓÑ üÎÄÒÀ à (Andrew Yu) É äÖÏÌÉ þÅÎ
(Jolly Chen). íÎÏÇÉÅ ÄÒÕÇÉÅ ×ÎÅÓÌÉ Ó×ÏÊ ×ËÌÁÄ × ÐÅÒÅÎÏÓ ÎÁ ÄÒÕÇÉÅ
<P><STRONG>ëÌÉÅÎÔ</STRONG></P>
<P>äÌÑ ÚÁÐÕÓËÁ ÎÁ ÐÌÁÔÆÏÒÍÁÈ MS Windows ×ÏÚÍÏÖÎÁ ËÏÍÐÉÌÑÃÉÑ C
- ÂÉÂÌÉÏÔÅËÉ <I>libpq</I>, psql É ÄÒÕÇÉÈ ÉÎÔÅÒÆÅÓÏ× É ÂÉÎÁÒÎÙÈ ÆÁÊÌÏ×.
+ ÂÉÂÌÉÏÔÅËÉ <I>libpq</I>, psql, ÄÒÕÇÉÈ ÉÎÔÅÒÆÅÓÏ× É ËÌÉÅÎÔÓËÉÈ ÐÒÉÌÏÖÅÎÉÊ.
÷ ÜÔÏÍ ÓÌÕÞÁÅ, ËÌÉÅÎÔ ÚÁÐÕÓËÁÅÔÓÑ ÎÁ MS Windows É Ó×ÑÚÙ×ÁÅÔÓÑ ÐÏ
TCP/IP Ó ÓÅÒ×ÅÒÏÍ, ÚÁÐÕÝÅÎÎÙÍ ÎÁ ÏÄÎÏÊ ÉÚ ÐÏÄÄÅÒÖÉ×ÁÅÍÙÈ Unix
- ÐÌÁÔÆÏÒÍ. ÷ ÄÉÓÔÒÉÂÕÔÉ× ×ËÌÀÞÁÅÔÓÑ ÆÁÊÌ <I>win31.mak</I> ÄÌÑ ÔÏÇÏ,
+ ÐÌÁÔÆÏÒÍ. ÷ ÄÉÓÔÒÉÂÕÔÉ× ×ËÌÀÞÁÅÔÓÑ ÆÁÊÌ <I>win32.mak</I> ÄÌÑ ÔÏÇÏ,
ÞÔÏÂÙ ÍÏÖÎÏ ÂÙÌÏ ÐÒÏ×ÅÓÔÉ ÓÂÏÒËÕ ÂÉÂÌÉÏÔÅËÉ <I>libpq</I> É
<I>psql</I> ÄÌÑ Win32. PostgreSQL ÔÁËÖÅ ÒÁÂÏÔÁÅÔ ÞÅÒÅÚ
<SMALL>ODBC</SMALL>.</P>
<P>óÅÒ×ÅÒ âä ÍÏÖÅÔ ÂÙÔØ ÚÁÐÕÝÅÎ ÎÁ Windows NT É Win2k, ÉÓÐÏÌØÚÕÑ
ÂÉÂÌÉÏÔÅËÕ Cygwin, ÒÁÚÒÁÂÏÔÁÎÎÕÀ ÄÌÑ ÐÅÒÅÎÏÓÁ ÐÒÏÇÒÁÍÍÎÏÇÏ ÏÂÅÓÐÅÞÅÎÉÑ Unix
- × NT. óÍÏÔÒÉÔÅ <I>pgsql/doc/FAQ_MSWIN</I> × ÄÉÓÔÒÉÂÕÔÉ×Å ÉÌÉ <A href=
- "http://www.postgresql.org/docs/faq-mswin.html">MS Windows FAQ</A>
- ÎÁ ÎÁÛÅÍ ÓÁÊÔÅ. íÙ ÎÅ ÐÌÁÎÉÒÕÅÍ ÓÐÅÃÉÁÌØÎÏ ÐÅÒÅÎÏÓÉÔØ PostgreSQL
- ÎÁ ËÁËÕÀ-ÌÉÂÏ ÐÌÁÔÆÏÒÍÕ Microsoft.</P>
+ × NT. óÍÏÔÒÉÔÅ <I>pgsql/doc/FAQ_MSWIN</I> × ÄÉÓÔÒÉÂÕÔÉ×Å ÉÌÉ
+ MS Windows FAQ ÎÁ <A href="http://www.postgresql.org/docs/faq-mswin.html">
+ http://www.PostgreSQL.org/docs/faq-mswin.html</A>.</P>
+
+ <P>PostgreSQL, ÓÐÏÒÔÉÒÏ×ÁÎÎÙÊ ÓÐÅÃÉÁÌØÎÏ ÄÌÑ MS Win NT/2000/XP ×
+ ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ ÎÁÞÁÌ ÒÁÂÏÔÁÔØ.</P>
<H4><A name="1.5">1.5</A>) çÄÅ ÍÏÖÎÏ ×ÚÑÔØ PostgreSQL?</H4>
<P>óÐÉÓÏË ËÏÍÍÅÒÞÅÓËÏÊ ÐÏÄÄÅÒÖËÉ ËÏÍÐÁÎÉÊ ÄÏÓÔÕÐÅÎ ÎÁ
<A href=
- "http://www.postgresql.org/users-lounge/commercial-support.html">http://www.postgresql.org/users-lounge/commercial-support.html</A>.</P>
+ "http://www.postgresql.org/users-lounge/commercial-support.html">http://www.PostgreSQL.org/users-lounge/commercial-support.html</A>.</P>
<H4><A name="1.7">1.7</A>) ëÁËÁÑ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ?</H4>
"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
É <a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a>.
óÐÉÓÏË ËÎÉÇ ÐÏ PostgreSQL, ËÏÔÏÒÙÅ ÍÏÖÎÏ ËÕÐÉÔØ ÄÏÓÔÕÐÅÎ ÐÏ ÁÄÒÅÓÕ
- <a href="http://www.postgresql.org/books/">http://www.postgresql.org/books/</a>.
- ëÒÏÍÅ ÔÏÇÏ, ÐÏ ÁÄÒÅÓÕ <a href="http://techdocs.postgresql.org">http://techdocs.postgresql.org/</a>
+ <a href="http://www.ca.postgresql.org/books/">http://www.ca.PostgreSQL.org/books/</a>.
+ ëÒÏÍÅ ÔÏÇÏ, ÐÏ ÁÄÒÅÓÕ <a href="http://techdocs.postgresql.org">http://techdocs.PostgreSQL.org/</a>
×Ù ÍÏÖÅÔÅ ÎÁÊÔÉ ËÏÌÌÅËÃÉÀ ÔÅÈÎÉÞÅÓËÉÈ ÓÔÁÔÅÊ ÐÏÓ×ÑÝÅÎÎÙÈ PostgreSQL.</p>
<H4><A name="1.13">1.13</A>) ëÁË ÏÔÒÁ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ??</H4>
- <P>ðÏÖÁÌÕÊÓÔÁ ÐÏÓÅÔÉÔÅ ÓÔÒÁÎÉÞËÕ <A href=
- "http://www.postgresql.org/bugs/bugs.php">PostgreSQL BugTool</A>,
+ <P>ðÏÖÁÌÕÊÓÔÁ ÐÏÓÅÔÉÔÅ ÓÔÒÁÎÉÞËÕ PostgreSQL BugTool ÎÁ <A href=
+ "http://www.postgresql.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>,
ÎÁ ËÏÔÏÒÏÊ ÐÒÅÄÏÓÔÁ×ÌÅÎÙ ÄÅÔÁÌØÎÙÅ ÉÎÓÔÒÕËÃÉÉ Ï ÔÏÍ ËÁË ÏÔÐÒÁ×ÉÔØ
ÓÏÏÂÝÅÎÉÅ ÏÂ ÏÛÉÂËÅ.</P>
íÙ ÄÅÌÁÅÍ ÕÐÏÒ ÎÁ ÎÁÄÅÖÎÏÓÔØ É ÒÁÓÛÉÒÅÎÎÙÅ ×ÏÚÍÏÖÎÏÓÔÉ, ÎÏ ÍÙ ÔÁËÖÅ
ÐÒÏÄÏÌÖÁÅÍ Õ×ÅÌÉÞÉ×ÁÔØ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔØ Ó ËÁÖÄÙÍ ×ÙÐÕÓËÏÍ. óÕÝÅÓÔ×ÕÅÔ
ÉÎÔÅÒÅÓÎÁÑ ÓÔÒÁÎÉÞËÁ × éÎÔÅÒÎÅÔ, ÓÒÁ×ÎÉ×ÁÀÝÁÑ PostgreSQL É MySQL ÎÁ
- <A href="http://openacs.org/why-not-mysql.html">
-
- http://openacs.org/why-not-mysql.html</A><BR>
+ <A href="http://openacs.org/philosophy/why-not-mysql.html">
+ http://openacs.org/philosophy/why-not-mysql.html</A><BR>
<BR>
</DD>
<DT><B>ðÏÄÄÅÒÖËÁ</B></DT>
- <DD>îÁÛ ÓÐÉÓÏË ÒÁÓÓÙÌËÉ ÐÒÅÄÓÔÁ×ÌÅÎ ÂÏÌØÛÏÊ ÇÒÕÐÐÏÊ ÒÁÚÒÁÂÏÔÞÉËÏ×
- É ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÐÏÍÏÞØ ÒÅÛÉÔØ ÌÀÂÙÅ ×ÏÚÎÉËÛÉÅ
- ÐÒÏÂÌÅÍÙ. ÷ ÔÏ ÖÅ ×ÒÅÍÑ, ÍÙ ÎÅ ÇÁÒÁÎÔÉÒÕÅÍ ËÁËÉÅ-ÌÉÂÏ ÉÓÐÒÁ×ÌÅÎÉÑ,
- ÎÏ É ÒÁÚÒÁÂÏÔÞÉËÉ ËÏÍÍÅÒÞÅÓËÉÈ <SMALL>óõâä</SMALL> ÎÅ ×ÓÅÇÄÁ ÄÅÌÁÀÔ
- ÉÓÐÒÁ×ÌÅÎÉÑ. ðÒÑÍÏÊ ÄÏÓÔÕÐ Ë ÒÁÚÒÁÂÏÔÞÉËÁÍ, ÓÏÏÂÝÅÓÔ×Õ ÐÏÌØÚÏ×ÁÔÅÌÅÊ,
- ÒÕËÏ×ÏÄÓÔ×ÁÍ É ÉÓÈÏÄÎÙÍ ÔÅËÓÔÁÍ ÞÁÓÔÏ ÄÅÌÁÀÔ ÐÏÄÄÅÒÖËÕ PostgreSQL
- ÐÒÅ×ÏÓÈÏÄÑÝÅÊ ÄÒÕÇÉÅ <SMALL>óõâä</SMALL>. óÕÝÅÓÔ×ÕÅÔ ËÏÍÍÅÒÞÅÓËÁÑ
- ÐÏÄÄÅÒÖËÁ ÐÏ ÒÅÚÕÌØÔÁÍ ×ÏÚÎÉËÛÉÈ ÉÎÃÉÄÅÎÔÏ×, ËÏÔÏÒÁÑ ÄÏÓÔÕÐÎÁ ÄÌÑ
- ÔÅÈ ËÏÍÕ ÏÎÁ ÎÕÖÎÁ. (óÍÏÔÒÉÔÅ <A href="#1.6">ëÁË ÐÏÌÕÞÉÔØ ÐÏÄÄÅÒÖËÕ?</A>.)<BR>
+ <DD>îÁÛ ÓÐÉÓÏË ÒÁÓÓÙÌËÉ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ×ÏÚÍÏÖÍÏÖÎÏÓÔØ ÏÂÝÅÎÉÑ Ó
+ ÂÏÌØÛÏÊ ÇÒÕÐÐÏÊ ÒÁÚÒÁÂÏÔÞÉËÏ× É ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÐÏÍÏÞØ ÒÅÛÉÔØ
+ ÌÀÂÙÅ ×ÏÚÎÉËÛÉÅ ÐÒÏÂÌÅÍÙ. ÷ ÔÏ ÖÅ ×ÒÅÍÑ, ÍÙ ÎÅ ÇÁÒÁÎÔÉÒÕÅÍ ËÁËÉÅ-ÌÉÂÏ
+ ÉÓÐÒÁ×ÌÅÎÉÑ, ÎÏ É ÒÁÚÒÁÂÏÔÞÉËÉ ËÏÍÍÅÒÞÅÓËÉÈ <SMALL>óõâä</SMALL> ÎÅ ×ÓÅÇÄÁ
+ ÄÅÌÁÀÔ ÉÓÐÒÁ×ÌÅÎÉÑ. ðÒÑÍÏÊ ÄÏÓÔÕÐ Ë ÒÁÚÒÁÂÏÔÞÉËÁÍ, ÓÏÏÂÝÅÓÔ×Õ
+ ÐÏÌØÚÏ×ÁÔÅÌÅÊ, ÒÕËÏ×ÏÄÓÔ×ÁÍ É ÉÓÈÏÄÎÙÍ ÔÅËÓÔÁÍ ÞÁÓÔÏ ÄÅÌÁÀÔ ÐÏÄÄÅÒÖËÕ
+ PostgreSQL ÐÒÅ×ÏÓÈÏÄÑÝÅÊ ÄÒÕÇÉÅ <SMALL>óõâä</SMALL>. óÕÝÅÓÔ×ÕÅÔ
+ ËÏÍÍÅÒÞÅÓËÁÑ ÐÏÄÄÅÒÖËÁ ÐÏ ÒÅÚÕÌØÔÁÍ ×ÏÚÎÉËÛÉÈ ÉÎÃÉÄÅÎÔÏ×, ËÏÔÏÒÁÑ
+ ÄÏÓÔÕÐÎÁ ÄÌÑ ÔÅÈ ËÏÍÕ ÏÎÁ ÎÕÖÎÁ. (óÍÏÔÒÉÔÅ <A href="#1.6">óÅËÃÉÀ 1.6</A>.)<BR>
<BR>
</DD>
PostgreSQL?</H4>
<P>PostgreSQL ÉÍÅÅÔ ÏÄÎÏÒÁÎÇÏ×ÕÀ ÉÎÆÒÁÓÔÒÕËÔÕÒÕ Ó ÔÏÇÏ ÓÁÍÏÇÏ ×ÒÅÍÅÎÉ
- ËÁË ÍÙ ÎÁÞÁÌÉ ÒÁÚÒÁÂÏÔËÕ 6 ÌÅÔ ÎÁÚÁÄ. íÙ ÄÏÌÖÎÙ ÂÌÁÇÏÄÁÒÉÔØ ÚÁ
+ ËÁË ÍÙ ÎÁÞÁÌÉ ÒÁÚÒÁÂÏÔËÕ × 1996 ÇÏÄÕ. íÙ ÄÏÌÖÎÙ ÂÌÁÇÏÄÁÒÉÔØ ÚÁ
ÜÔÏ íÁÒËÁ æÏÎÁÑ (Marc Fournier), ËÏÔÏÒÙÊ ÓÏÚÄÁÌ ÜÔÕ ÉÎÆÒÁÓÔÒÕËÔÕÒÕ É
ÕÐÒÁ×ÌÑÅÔ ÅÊ ÎÁ ÐÒÏÔÑÖÅÎÉÉ ÜÔÉÈ ÌÅÔ.</P>
ÎÅËÏÔÏÒÏÅ ËÏÌÉÞÅÓÔ×Ï ÅÖÅÍÅÓÑÞÎÙÈ É ÏÄÎÏÒÁÚÏ×ÙÈ ÒÁÓÈÏÄÏ×, ËÏÔÏÒÙÅ
ÔÒÅÂÕÀÔ ÄÅÎÅÇ. åÓÌÉ ×Ù ÉÌÉ ×ÁÛÁ ËÏÍÐÁÎÉÑ ÉÍÅÅÔ ÄÅÎØÇÉ, ËÏÔÏÒÙÅ
ÍÏÖÎÏ ÐÅÒÅÄÁÔØ × ÐÏÍÏÝØ ÎÁÛÉÍ ÕÓÉÌÉÑÍ, ÐÏÖÁÌÕÊÓÔÁ ÐÏÓÅÔÉÔÅ ÓÔÒÁÎÉÞËÕ
- <A href="https://store.pgsql.com/shopping/index.php?id=1">
- https://store.pgsql.com/shopping/index.php?id=1</A>
+ <A href="https://store.pgsql.com/shopping/">
+ https://store.pgsql.com/shopping/</A>
É ÓÄÅÌÁÊÔÅ Ó×ÏÊ ×ËÌÁÄ.</P>
<P>èÏÔÑ ÎÁ ÓÔÒÁÎÉÞËÅ ÇÏ×ÏÒÉÔÓÑ Ï PostgreSQL, Inc, ÐÕÎËÔ
<P>ðÒÅËÒÁÓÎÏÅ ××ÅÄÅÎÉÅ ×Ï ×ÚÁÉÍÏÄÅÊÓÔ×ÉÅ ÂÁÚ ÄÁÎÎÙÈ É Web ÍÏÖÎÏ ÎÁÊÔÉ ÎÁ:
<A href="http://www.webreview.com">http://www.webreview.com</A></P>
- <P>ôÁËÖÅ ÚÁÇÌÑÎÉÔÅ ÎÁ <A href=
- "http://www.phone.net/home/mwm/hotlist/">http://www.phone.net/home/mwm/hotlist/.</A></P>
-
<P>äÌÑ ÉÎÔÅÇÒÁÃÉÉ Ó Web, ÏÄÎÉÍ ÉÚ ÐÒÅ×ÏÓÈÏÄÎÙÈ ÉÎÓÔÒÕÍÅÎÔÏ× Ñ×ÌÑÅÔÓÑ PHP.
- äÏÍÁÛÎÑÑ ÓÔÁÎÉÞËÁ <A
- href="http://www.php.net">http://www.php.net</A>.</P>
+ äÏÍÁÛÎÑÑ ÓÔÁÎÉÞËÁ <A href="http://www.php.net">http://www.php.net</A>.</P>
- <P>äÌÑ ËÏÍÐÌÅËÓÎÙÈ ÒÅÛÅÎÉÊ, ÍÎÏÇÉÅ ÐÏÌØÚÕÀÔÓÑ Perl ÉÎÔÅÒÆÅÊÓÏÍ É CGI.pm.</P>
+ <P>äÌÑ ËÏÍÐÌÅËÓÎÙÈ ÒÅÛÅÎÉÊ, ÍÎÏÇÉÅ ÐÏÌØÚÕÀÔÓÑ Perl ÉÎÔÅÒÆÅÊÓÏÍ É CGI.pm ÉÌÉ mod_perl.</P>
<H4><A name="2.3">2.3</A>) åÓÔØ ÌÉ Õ PostgreSQL ÇÒÁÆÉÞÅÓËÉÊ ÉÎÔÅÒÆÅÊÓ
ÐÏÌØÚÏ×ÁÔÅÌÑ? çÅÎÅÒÁÔÏÒ ÏÔÞÅÔÏ×? ÷ÓÔÒÏÅÎÎÙÊ ÉÎÔÅÒÆÅÊÓ ÄÌÑ ÑÚÙËÁ
ÚÁÐÒÏÓÏ×?</H4>
<P>õ ÎÁÓ ÅÓÔØ ÐÒÅËÒÁÓÎÙÊ ÇÏÒÁÆÉÞÅÓËÉÊ ÉÎÔÅÒÆÅÊÓ, ÎÁÚÙ×ÁÅÍÙÊ
- <I>pgaccess</I>, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÞÁÓÔØÀ ÄÉÓÔÒÉÂÕÔÉ×Á. <I>pgaccess</I>
- ÔÁËÖÅ ÅÍÅÅÔ ÇÅÎÅÒÁÔÏÒ ÏÔÞÅÔÏ×. åÇÏ ÓÔÒÁÎÉÞËÁ <A href=
- "http://www.flex.ro/pgaccess">http://www.flex.ro/pgaccess</A></P>
+ PgAccess, ËÏÔÏÒÙÊ ÔÁËÖÅ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ ËÁË ÇÅÎÅÒÁÔÏÒ ÏÔÞÅÔÏ×.
+ åÇÏ ÓÔÒÁÎÉÞËÁ <A href="http://www.pgaccess.org">http://www.pgaccess.org/</A></P>
<P>íÙ ÔÁËÖÅ ×ËÌÀÞÁÅÍ <I>ecpg</I>, ËÏÔÏÒÙÊ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ×ÓÔÒÏÅÎÎÙÊ
ÉÎÔÅÒÆÅÊÓ Ë ÑÚÙËÕ ÚÁÐÒÏÓÏ× SQL ÉÚ C.</P>
- <H4><A name="2.4">2.4</A>) ëÁËÉÅ ÑÚÙËÉ ÍÏÇÕÔ ×ÚÁÉÍÏÄÅÊÓÔ×Ï×ÁÔØ Ó
- PostgreSQL?</H4>
+ <H4><A name="2.4">2.4</A>) ëÁËÉÅ ÑÚÙËÉ ÍÏÇÕÔ ×ÚÁÉÍÏÄÅÊÓÔ×Ï×ÁÔØ Ó PostgreSQL?</H4>
<P>÷ÏÔ ÜÔÉ:</P>
<LI>Java (jdbc)</LI>
- <LI>Perl (perl5)</LI>
+ <LI>Perl (DBD::Pg É perl5)</LI>
<LI>ODBC (odbc)</LI>
<LI>C Easy API (libpgeasy)</LI>
- <LI>Embedded <SMALL>HTML</SMALL> (<A href=
- "http://www.php.net">PHP from http://www.php.net</A>)</LI>
+ <LI>PHP ('pg_' functions, Pear::DB)</LI>
</UL>
- <P>äÏÐÏÌÎÉÔÅÌØÎÙÅ ÉÎÔÅÒÆÅÊÓÙ ÄÏÓÔÕÐÎÙ ÐÏ ÁÄÒÅÓÕ <A href="http://www.postgresql.org/interfaces.html">
- http://www.postgresql.org/interfaces.html.</A>
+ <P>äÏÐÏÌÎÉÔÅÌØÎÙÅ ÉÎÔÅÒÆÅÊÓÙ ÄÏÓÔÕÐÎÙ ÐÏ ÁÄÒÅÓÕ
+ <A href="http://www.postgresql.org/interfaces.html">http://www.PostgreSQL.org/interfaces.html.</A>
+ É
+ <A href="http://gborg.postgresql.org/">http://gborg.PostgreSQL.org</a>.
</P>
<HR>
<P>åÓÌÉ ×Ù ×ÙÐÏÌÎÑÅÔÅ ÍÎÏÇÏ ÏÐÅÒÁÔÏÒÏ× <SMALL>INSERT</SMALL>,
ÒÁÓÓÍÏÔÒÉÔÅ ×ÏÚÍÏÖÎÏÓÔØ ×ÙÐÏÌÎÑÔØ ÉÈ × ÂÏÌØÛÏÊ ÐÁÞËÅ, ÉÓÐÏÌØÚÕÑ
ËÏÍÁÎÄÕ <SMALL>COPY</SMALL>. üÔÏ ÚÎÁÞÉÔÅÌØÎÏ ÂÙÓÔÒÅÅ, ÞÅÍ ÏÔÄÅÌØÎÙÅ
- <SMALL>INSERT.</SMALL> ÷Ï-×ÔÏÒÙÈ, ÏÐÅÒÁÔÏÒÙ ×ÎÅ ÂÌÏËÁ ÔÒÁÎÚÁËÃÉÉ
+ <SMALL>INSERT</SMALL>. ÷Ï-×ÔÏÒÙÈ, ÏÐÅÒÁÔÏÒÙ ×ÎÅ ÂÌÏËÁ ÔÒÁÎÚÁËÃÉÉ
<SMALL>BEGIN WORK/COMMIT</SMALL> ÓÁÍÉ ×ÙÐÏÌÎÑÀÔ ÔÒÁÎÚÁËÃÉÀ. ðÏÄÕÍÁÊÔÅ
ÎÁÄ ×ÙÐÏÌÎÅÎÉÅÍ ÎÅÓËÏÌØËÉÈ ÏÐÅÒÁÔÏÒÏ× × ÏÄÎÏÍ ÂÌÏËÅ ÔÒÁÎÚÁËÃÉÉ.
üÔÏ ÕÍÅÎØÛÉÔ ËÏÌÉÞÅÓÔ×Ï ÔÒÁÎÚÁËÃÉÊ. ôÁËÖÅ, ÚÁÄÕÍÁÊÔÅÓØ ÎÁÄ ÕÄÁÌÅÎÉÅÍ
<P>åÓÌÉ <I>postmaster</I> ÚÁÐÕÝÅÎ, ÚÁÐÕÓÔÉÔÅ <I>psql</I> × ÏÄÎÏÍ
ÏËÎÅ, ÚÁÔÅÍ ÎÁÊÄÉÔÅ <SMALL>PID</SMALL> ÐÒÏÃÅÓÓÁ <I>postgres</I>,
ÉÓÐÏÌØÚÕÅÍÙÊ <I>psql</I>. éÓÐÏÌØÚÕÊÔÅ ÏÔÄÁÄÞÉË ÄÌÑ ÐÏÄËÌÀÞÅÎÉÑ Ë
- <I>postgres</I> <SMALL>PID.</SMALL> ÷Ù ÍÏÖÅÔÅ ÕÓÔÁÎÏ×ÉÔØ ÔÏÞËÉ
+ <I>postgres</I> <SMALL>PID</SMALL>. ÷Ù ÍÏÖÅÔÅ ÕÓÔÁÎÏ×ÉÔØ ÔÏÞËÉ
ÐÒÅÒÙ×ÁÎÉÑ × ÏÔÌÁÄÞÉËÅ É ÚÁÐÕÓÔÉÔØ ÚÁÐÒÏÓ ÉÚ <I>psql</I>. åÓÌÉ
×Ù ÐÒÏÉÚ×ÏÄÉÔÅ ÏÔÌÁÄËÕ ÚÁÐÕÓËÁ <I>postgres</I>, ×Ù ÍÏÖÅÔÅ ÕÓÔÁÎÏ×ÉÔØ
PGOPTIONS="-W n", É ÚÁÔÅÍ ÚÁÐÕÓÔÉÔØ <I>psql</I>. üÔÁ ÏÐÃÉÑ ÐÒÉ×ÏÄÉÔ
ÓÅÍÁÆÏÒÏ×, <SMALL>SEMMNS</SMALL> É <SMALL>SEMMNI;</SMALL> ÍÁËÓÉÍÁÌØÎÏÅ
ËÏÌÉÞÅÓÔ×Ï ÐÒÏÃÅÓÓÏ×, <SMALL>NPROC;</SMALL> ÍÁËÓÉÍÁÌØÎÏÅ ËÏÌÉÞÅÓÔ×Ï
ÐÒÏÃÅÓÓÏ× ÎÁ ÐÏÌØÚÏ×ÁÔÅÌÑ, <SMALL>MAXUPRC;</SMALL> É ÍÁËÓÉÍÁÌØÎÏÅ
- ËÏÌÉÞÅÓÔ×Ï ÏÔËÒÙÔÙÈ ÆÁÊÌÏ×, <SMALL>NFILE</SMALL> É <SMALL>NINODE.</SMALL>
+ ËÏÌÉÞÅÓÔ×Ï ÏÔËÒÙÔÙÈ ÆÁÊÌÏ×, <SMALL>NFILE</SMALL> É <SMALL>NINODE</SMALL>.
ðÒÉÞÉÎÁ ÓÏÚÄÁÎÉÑ ÏÇÒÁÎÉÞÅÎÉÑ ÎÁ ËÏÌÉÞÅÓÔ×Ï backend ÐÒÏÃÅÓÓÏ× ËÁË
ÒÁÚ É ÓÏÓÔÏÉÔ × ÔÏÍ, ÞÔÏÂÙ ×ÁÛÅÊ ÓÉÓÔÅÍÅ È×ÁÔÉÌÏ ÒÅÓÕÒÓÏ×.</P>
ÂÙÌÏ 64, É ÉÚÍÅÎÅÎÉÅ ÜÔÏÇÏ ËÏÌÉÞÅÓÔ×Á ÔÒÅÂÏ×ÁÌÏ ÐÅÒÅËÏÍÐÉÌÑÃÉÉ ÐÏÓÌÅ
ÕÓÔÁÎÏ×ËÉ ËÏÎÓÔÁÎÔÙ MaxBackendId × <I>include/storage/sinvaladt.h</I>.</P>
- <H4><A name="3.9">3.9</A>) þÔÏ ÜÔÏ ÚÁ ÆÁÊÌÙ <I>pg_sorttempNNN.NN</I>
- × ÍÏÅÍ ËÁÔÁÌÏÇÅ Ó ÂÁÚÏÊ ÄÁÎÎÙÈ?</H4>
-
- <P>üÔÏ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ, ÇÅÎÅÒÉÒÕÅÍÙÅ ×Ï ×ÒÅÍÑ ×ÙÐÏÌÎÅÎÉÑ ÚÁÐÒÏÓÁ.
- îÁÐÒÉÍÅÒ, ÅÓÌÉ ÄÌÑ ÏÐÅÒÁÔÏÒÁ <SMALL>ORDER BY</SMALL> ÄÏÌÖÎÁ ÂÙÔØ
- ×ÙÐÏÌÎÅÎÁ ÓÏÒÔÉÒÏ×ËÁ, ËÏÔÏÒÁÑ ÔÒÅÂÕÅÔ ÂÏÌØÛÅ ÍÅÓÔÁ ÞÅÍ ×ÙÄÅÌÅÎÎÏ
- ÄÌÑ backend ÐÒÏÃÅÓÓÁ × ÏÐÃÉÉ <I>-S</I>, ÔÏ ÓÏÚÄÁÅÔÓÑ ×ÒÅÍÅÎÎÙÊ ÆÁÊÌ ÄÌÑ
- ÈÒÁÎÅÎÉÑ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÄÁÎÎÙÈ.</P>
+ <H4><A name="3.9">3.9</A>) þÔÏ ÎÁÈÏÄÉÔÓÑ × ËÁÔÁÌÏÇÅ <I>pgsql_tmp</I>?</H4>
- <P>÷ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ ÄÏÌÖÎÙ ÕÄÁÌÑÔØÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ, ÎÏ ÜÔÏÇÏ ÍÏÖÅÔ
- ÎÅ ÐÒÏÉÓÈÏÄÉÔØ, ÅÓÌÉ backend ÐÒÏÃÅÓÓ ÐÁÄÁÅÔ ×Ï ×ÒÅÍÑ ÓÏÒÔÉÒÏ×ËÉ.
- åÓÌÉ Õ ×ÁÓ ÎÅ ÚÁÐÕÝÅÎÏ ÎÉ ÏÄÎÏÇÏ backend ÐÒÏÃÅÓÓÁ, ÔÏ ×Ù ÍÏÖÅÔÅ
- ÓÐÏËÏÊÎÏ ÕÄÁÌÉÔØ ÆÁÊÌÙ pg_tempNNN.NN.</P>
+ <P>äÁÎÎÙÊ ËÁÔÁÌÏÇ ÓÏÄÅÒÖÉÔ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ, ÇÅÎÅÒÉÒÕÅÍÙÅ ÏÂÒÁÂÏÔÞÉËÏÍ
+ ÚÁÐÒÏÓÁ. îÁÐÒÉÍÅÒ, ÅÓÌÉ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ <small>ORDER BY</small> ÎÕÖÎÁ
+ ÓÏÒÔÉÒÏ×ËÁ É ÜÔÁ ÓÏÒÔÉÒÏ×ËÁ ÔÒÅÂÕÅÔ ÐÁÍÑÔÉ ÂÏÌØÛÅ, ÞÅÍ ÄÏÐÕÓËÁÅÔ ÐÁÒÁÍÅÔÒ <i>-S</i>
+ Õ backend'Á, ÔÏ ÄÌÑ ÈÒÁÎÅÎÉÑ ÄÏÐÏÌÎÉÔÅÌØÎÙÈ ÄÁÎÎÙÈ ÓÏÚÄÁÀÔÓÑ ×ÒÅÍÅÎÎÙÅ
+ ÆÁÊÌÙ.</P>
+
+ <P>üÔÉ ×ÒÅÍÅÎÎÙÅ ÆÁÊÌÙ ÄÏÌÖÎÙ ÕÄÁÌÑÔØÓÑ Á×ÔÏÍÁÔÉÞÅÓËÉ, ÎÏ ÜÔÏÇÏ ÍÏÖÅÔ ÎÅ
+ ÐÒÏÉÚÏÊÔÉ, ÅÓÌÉ backend ÒÕÈÎÕÌ ×Ï ×ÒÅÍÑ ÓÏÒÔÉÒÏ×ËÉ. ïÓÔÁÎÏ× É ÚÁÐÕÓË
+ ÓÅÒ×ÅÒÎÏÇÏ ÐÒÏÃÅÓÓÁ ÏÂÅÓÐÅÞÉÔ ÉÈ ÕÄÁÌÅÎÉÅ ÉÚ ËÁÔÁÌÏÇÁ.</P>
- <A name="3.10">3.10</A>) ðÏÞÅÍÕ ÎÅÏÂÈÏÄÉÍÏ ÄÅÌÁÔØ dump É restore ÐÒÉ
- ÏÂÎÏ×ÌÅÎÉÉ ×ÙÐÕÓËÏ× PostgreSQL?<BR>
+ <H4><A name="3.10">3.10</A>) ðÏÞÅÍÕ ÎÅÏÂÈÏÄÉÍÏ ÄÅÌÁÔØ dump É restore ÐÒÉ
+ ÏÂÎÏ×ÌÅÎÉÉ ×ÙÐÕÓËÏ× PostgreSQL?</H4>
<P>òÁÚÒÁÂÏÔÞÉËÉ PostgreSQL ÄÅÌÁÀÔ ÔÏÌØËÏ ÎÅÂÏÌØÛÉÅ ÉÚÍÅÎÅÎÉÑ ÍÅÖÄÕ
ÐÏÄ×ÙÐÕÓËÁÍÉ. ôÁËÉÍ ÏÂÒÁÚÏÍ ÏÂÎÏ×ÌÅÎÉÅ Ó ×ÅÒÓÉÉ 7.2 ÄÏ 7.2.1 ÎÅ ÔÒÅÂÕÅÔ
- ×ÙÐÏÌÎÅÎÉÑ dump É restore. ïÄÎÁËÏ ÐÒÉ ×ÙÈÏÄÅ ÏÞÅÒÅÄÎÏÇÏ ×ÙÐÕÓËÁ ÞÁÓÔÏ
- ÍÅÎÑÅÔÓÑ ×ÎÕÔÒÅÎÎÉÊ ÆÏÒÍÁÔ ÓÉÓÔÅÍÎÙÈ ÔÁÂÌÉÃ É ÆÁÊÌÏ× ÄÁÎÎÙÈ. üÔÉ
- ÉÚÍÅÎÅÎÉÑ ÞÁÓÔÏ ÎÏÓÑÔ ËÏÍÐÌÅËÓÎÙÊ ÈÁÒÁËÔÅÒ, ÔÁË ÞÔÏ ÎÅÔ ×ÏÚÍÏÖÎÏÓÔÉ
- ÏÂÅÓÐÅÞÉÔØ ÏÂÒÁÔÎÕÀ ÓÏ×ÍÅÓÔÉÍÏÓÔØ ÆÁÊÌÏ× ÄÁÎÎÙÈ. ÷ÙÐÏÌÅÎÉÅ dump
- ÐÏÚ×ÏÌÑÅÔ ÐÏÌÕÞÉÔØ ÄÁÎÎÙÅ × ÏÂÝÅÍ ÆÏÒÍÁÔÅ, ËÏÔÏÒÙÊ ÚÁÔÅÍ ÍÏÖÅÔ ÂÙÔØ
- ÚÁÇÒÕÖÅÎ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÎÏ×ÏÇÏ ×ÎÕÔÒÅÎÎÅÇÏ ÆÏÒÍÁÔÁ.</P>
+ ×ÙÐÏÌÎÅÎÉÑ dump É restore. ïÄÎÁËÏ ÐÒÉ ×ÙÈÏÄÅ ÏÞÅÒÅÄÎÏÇÏ ×ÙÐÕÓËÁ
+ (Ô.Å. ÐÒÉ ÏÂÎÏ×ÌÅÎÉÉ ÎÁÐÒÉÍÅÒ, Ó 7.2 ÎÁ 7.3) ÞÁÓÔÏ ÍÅÎÑÅÔÓÑ ×ÎÕÔÒÅÎÎÉÊ
+ ÆÏÒÍÁÔ ÓÉÓÔÅÍÎÙÈ ÔÁÂÌÉÃ É ÆÁÊÌÏ× ÄÁÎÎÙÈ. üÔÉ ÉÚÍÅÎÅÎÉÑ ÞÁÓÔÏ ÎÏÓÑÔ
+ ËÏÍÐÌÅËÓÎÙÊ ÈÁÒÁËÔÅÒ, ÔÁË ÞÔÏ ÎÅÔ ×ÏÚÍÏÖÎÏÓÔÉ ÏÂÅÓÐÅÞÉÔØ ÏÂÒÁÔÎÕÀ
+ ÓÏ×ÍÅÓÔÉÍÏÓÔØ ÆÁÊÌÏ× ÄÁÎÎÙÈ. ÷ÙÐÏÌÅÎÉÅ dump ÐÏÚ×ÏÌÑÅÔ ÐÏÌÕÞÉÔØ ÄÁÎÎÙÅ
+ × ÏÂÝÅÍ ÆÏÒÍÁÔÅ, ËÏÔÏÒÙÊ ÚÁÔÅÍ ÍÏÖÅÔ ÂÙÔØ ÚÁÇÒÕÖÅÎ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ
+ ÎÏ×ÏÇÏ ×ÎÕÔÒÅÎÎÅÇÏ ÆÏÒÍÁÔÁ.</P>
- <P>
- ÷ ÔÅÈ ×ÙÐÕÓËÁÈ, ÇÄÅ ÆÏÒÍÁÔ ÄÁÎÎÙÈ ÎÁ ÄÉÓËÅ ÎÅ ÍÅÎÑÅÔÓÑ, ÄÌÑ ÐÒÏ×ÅÄÅÎÉÑ
+ <P>÷ ÔÅÈ ×ÙÐÕÓËÁÈ, ÇÄÅ ÆÏÒÍÁÔ ÄÁÎÎÙÈ ÎÁ ÄÉÓËÅ ÎÅ ÍÅÎÑÅÔÓÑ, ÄÌÑ ÐÒÏ×ÅÄÅÎÉÑ
ÏÂÎÏ×ÌÅÎÉÑ ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎ ÓÃÅÎÁÒÉÊ <i>pg_upgrade</i> ÂÅÚ
ÉÓÐÏÌØÚÏ×ÁÎÉÑ dump/restore. ëÏÍÍÅÎÔÁÒÉÉ Ë ×ÙÐÕÓËÕ ÇÏ×ÏÒÉÔ ËÏÇÄÁ ÍÏÖÎÏ
- ÉÓÐÏÌØÚÏ×ÁÔØ <i>pg_upgrade</i> ÄÌÑ ÜÔÏÇÏ ×ÙÐÕÓËÁ.
- </P>
+ ÉÓÐÏÌØÚÏ×ÁÔØ <i>pg_upgrade</i> ÄÌÑ ÜÔÏÇÏ ×ÙÐÕÓËÁ.</P>
<HR>
<H2 align="center">÷ÏÐÒÏÓÙ ÜËÓÐÌÕÁÔÁÃÉÉ</H2>
<H4><A name="4.4">4.4</A>) ëÁË ÕÄÁÌÉÔØ ËÏÌÏÎËÕ ÉÚ ÔÁÂÌÉÃÙ?</H4>
- <P>íÙ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÍ <SMALL>ALTER TABLE DROP COLUMN,</SMALL> ÎÏ
+ <P>üÔÁ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔØ ÂÙÌÁ ÄÏÂÁ×ÌÅÎÁ × ×ÙÐÕÓË 7.3 Ó ÏÐÅÒÁÔÏÒÏÍ
+ <small>ALTER TABLE DROP COLUMN</small>. ÷ ÒÁÎÎÉÈ ×ÅÒÓÉÑÈ,
ÍÏÖÎÏ ÓÄÅÌÁÔØ ÔÁË:</P>
<PRE>
BEGIN;
SELECT col
FROM tab
ORDER BY col [ DESC ]
- LIMIT 1
+ LIMIT 1;
</pre>
<P>ëÏÇÄÁ ÉÓÐÏÌØÚÕÀÔÓÑ ÏÐÅÒÁÃÉÉ Ó ÛÁÂÌÏÎÁÍÉ, ÎÁÐÒÉÍÅÒ <SMALL>LIKE</SMALL>
- ÉÌÉ <I>~</I>, ÉÎÄÅËÓÙ ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ × ÓÌÅÄÕÀÝÉÈ ÓÌÕÞÁÑÈ:
- </P><UL>
- <LI>îÁÞÁÌÏ ÓÔÒÏËÉ ÐÏÉÓËÁ ÄÏÌÖÎÏ ÓÏ×ÐÁÄÁÔØ Ó ÎÁÞÁÌÏÍ ÉÓËÏÍÏÊ ÓÔÒÏËÉ, Ô.Å.:</LI>
+ ÉÌÉ <I>~</I>, ÉÎÄÅËÓÙ ÍÏÇÕÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÙ × ÓÌÅÄÕÀÝÉÈ ÓÌÕÞÁÑÈ:</P>
<UL>
- <LI><small>LIKE</small> ÛÁÂÌÏÎÙ ÎÅ ÄÏÌÖÎÙ ÎÁÞÉÎÁÔØÓÑ Ó <i>%.</i><LI>
- <LI><i>~</i> ÛÁÂÌÏÎÙ ÒÅÇÕÌÑÒÎÙÈ ×ÙÒÁÖÅÎÉÊ ÄÏÌÖÎÁ ÎÁÞÉÎÁÔØÓÑ ÎÁ <i>^.</i><LI>
- </UL>
+ <LI>îÁÞÁÌÏ ÓÔÒÏËÉ ÐÏÉÓËÁ ÄÏÌÖÎÏ ÓÏ×ÐÁÄÁÔØ Ó ÎÁÞÁÌÏÍ ÉÓËÏÍÏÊ ÓÔÒÏËÉ, Ô.Å.:
+ <UL>
+ <LI><small>LIKE</small> ÛÁÂÌÏÎÙ ÎÅ ÄÏÌÖÎÙ ÎÁÞÉÎÁÔØÓÑ Ó <i>%.</i>.</LI>
+ <LI><i>~</i> ÛÁÂÌÏÎÙ ÒÅÇÕÌÑÒÎÙÈ ×ÙÒÁÖÅÎÉÊ ÄÏÌÖÎÁ ÎÁÞÉÎÁÔØÓÑ ÎÁ <i>^</i>.</LI>
+ </UL></LI>
<LI>óÔÒÏËÁ ÐÏÉÓËÁ ÎÅ ÄÏÌÖÎÁ ÎÁÞÉÎÁÔØÓÑ Ó ÓÉÍ×ÏÌÁ ËÌÁÓÓÁ, Ô.Å. [a-e].</LI>
- <LI>îÅ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÐÏÉÓË ÎÅÚÁ×ÉÓÉÍÙÊ ÏÔ ÒÅÇÉÓÔÒÁ ÔÁËÏÊ ËÁË
- <small>ILIKE</small> É <i>~</i>. ÷ÍÅÓÔÏ ÎÅÇÏ ÉÓÐÏÌØÚÕÊÔÅ ÆÕÎËÃÉÏÎÁÌØÎÙÅ
- ÉÎÄÅËÓÙ, ËÏÔÏÒÙÅ ÏÐÉÓÁÎÙ × ÜÔÏÍ FAQ ÎÉÖÅ.</LI>
+ <LI>ðÏÉÓË ÎÅÚÁ×ÉÓÉÍÙÊ ÏÔ ÒÅÇÉÓÔÒÁ, ÔÁËÏÊ ËÁË <small>ILIKE</small> É
+ <i>~*</i> ÎÅ ÉÓÐÏÌØÚÕÅÔ ÉÎÄÅËÓÙ. ÷ÍÅÓÔÏ ÎÅÇÏ, ÉÓÐÏÌØÚÕÊÔÅ ÆÕÎËÃÉÏÎÁÌØÎÙÅ
+ ÉÎÄÅËÓÙ, ËÏÔÏÒÙÅ ÏÐÉÓÙ×ÁÀÔÓÑ × ÓÅËÃÉÉ <A href="#4.12">4.12</A>.</LI>
<LI>÷Ï ×ÒÅÍÑ <i>initdb</i> ÄÏÌÖÎÁ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÌÏËÁÌØ ÐÏ ÕÍÏÌÞÁÎÉÀ
<i>C</i>.
</UL>
<PRE>
SELECT *
FROM tab
- WHERE lower(col) = 'abc'
+ WHERE lower(col) = 'abc';
</PRE>
üÔÁ ËÏÎÓÔÒÕËÃÉÑ ÎÅ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÁÎÄÁÒÔÎÙÊ ÉÎÄÅËÓ. ïÄÎÁËÏ, ÅÓÌÉ
×Ù ÓÏÚÄÁÄÉÔÅ ÆÕÎËÃÉÏÎÁÌØÎÙÊ ÉÎÄÅËÓ, ÏÎ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ:
<PRE>
- CREATE INDEX tabindex on tab (lower(col));
+ CREATE INDEX tabindex ON tab (lower(col));
</PRE>
<H4><A name="4.13">4.13</A>) ëÁË Ñ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ, ÞÔÏ ÚÎÁÞÅÎÉÅ ÐÏÌÑ
ôÉÐ ÷ÎÕÔÒÅÎÎÅÅ ÉÍÑ úÁÍÅÞÁÎÉÑ
--------------------------------------------------
"char" char 1 ÓÉÍ×ÏÌ
-CHAR(#) bpchar ÚÁÐÏÌÎÑÅÔÓÑ ÐÕÓÔÏÔÏÊ ÄÏ ÆÉËÓÉÒÏ×ÁÎÎÏÊ ÄÌÉÎÙ
-VARCHAR(#) varchar ÒÁÚÍÅÒ ÚÁÄÁÅÔ ÍÁËÓÉÍÁÌØÎÕÀ ÄÌÉÎÕ, ÎÅÔ ÚÁÐÏÌÎÅÎÉÑ
+CHAR(n) bpchar ÚÁÐÏÌÎÑÅÔÓÑ ÐÕÓÔÏÔÏÊ ÄÏ ÆÉËÓÉÒÏ×ÁÎÎÏÊ ÄÌÉÎÙ
+VARCHAR(n) varchar ÒÁÚÍÅÒ ÚÁÄÁÅÔ ÍÁËÓÉÍÁÌØÎÕÀ ÄÌÉÎÕ, ÎÅÔ ÚÁÐÏÌÎÅÎÉÑ
TEXT text ÎÅÔ ÚÁÄÁ×ÁÅÍÏÇÏ ×ÅÒÈÎÅÇÏ ÏÇÒÁÎÉÞÅÎÉÑ ÉÌÉ ÄÌÉÎÙ
BYTEA bytea ÍÁÓÓÉ× ÂÁÊÔ ÐÅÒÅÍÅÎÎÏÊ ÄÌÉÎÙ (ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ null-ÂÁÊÔ ÂÅÚ ÏÐÁÓËÉ)
</PRE>
ÔÁË ÞÔÏ ÚÁÎÉÍÁÅÍÏÅ ÄÉÓËÏ×ÏÅ ÐÒÏÓÔÒÁÎÓÔ×Ï ÍÏÖÅÔ ÔÁËÖÅ ÂÙÔØ É ÍÅÎØÛÅ,
ÞÅÍ ÏÖÉÄÁÌÏÓØ.</P>
- <P><SMALL>CHAR()</SMALL> - ÜÔÏ ÌÕÞÛÅÅ ÒÅÛÅÎÉÅ ÄÌÑ ÈÒÁÎÅÎÉÑ ÓÔÒÏË, ËÏÔÏÒÙÅ
- ÏÂÙÞÎÏ ÉÍÅÀÔ ÏÄÉÎÁËÏ×ÕÀ ÄÌÉÎÕ. <SMALL>VARCHAR()</SMALL> - ÜÔÏ ÌÕÞÛÅÅ
+ <P><SMALL>CHAR(n)</SMALL> - ÜÔÏ ÌÕÞÛÅÅ ÒÅÛÅÎÉÅ ÄÌÑ ÈÒÁÎÅÎÉÑ ÓÔÒÏË, ËÏÔÏÒÙÅ
+ ÏÂÙÞÎÏ ÉÍÅÀÔ ÏÄÉÎÁËÏ×ÕÀ ÄÌÉÎÕ. <SMALL>VARCHAR(n)</SMALL> - ÜÔÏ ÌÕÞÛÅÅ
ÒÅÛÅÎÉÅ, ËÏÇÄÁ ÎÕÖÎÏ ÈÒÁÎÉÔØ ÓÔÒÏËÉ ÐÅÒÅÍÅÎÎÏÊ ÄÌÉÎÙ, ÎÏ ÎÅ ÐÒÅ×ÙÛÁÀÝÉÅ
ÏÐÒÅÄÅÌÅÎÎÏÇÏ ÒÁÚÍÅÒÁ. <SMALL>TEXT</SMALL> - ÜÔÏ ÌÕÞÛÅÅ ÒÅÛÅÎÉÅ ÄÌÑ ÓÔÒÏË
ÎÅÏÇÒÁÎÉÞÅÎÎÏÊ ÄÌÉÎÙ, Ó ÍÁËÓÉÍÁÌØÎÏ ÄÏÐÕÓÔÉÍÏÊ ÄÌÉÎÏÊ × 1 ÇÉÇÁÂÁÊÔ.
<SMALL>BYTEA</SMALL> ÄÌÑ ÈÒÁÎÅÎÉÑ ÂÉÎÁÒÎÙÈ ÄÁÎÎÙÈ, ÚÎÁÞÅÎÉÑ ËÏÔÏÒÙÈ
- ÍÏÇÕÔ ×ËÌÀÞÁÔØ <SMALL>NULL</SMALL> ÂÁÊÔÙ.</P>
+ ÍÏÇÕÔ ×ËÌÀÞÁÔØ <SMALL>NULL</SMALL> ÂÁÊÔÙ. üÔÉ ÔÉÐÙ ÉÍÅÀÔ ÓÈÏÄÎÙÅ
+ ÈÁÒÁËÔÅÒÉÓÔÉËÉ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ.</P>
<H4><A name="4.15.1">4.15.1</A>) ëÁË ÍÎÅ ÓÏÚÄÁÔØ ÐÏÌÅ
serial/Ó-Á×ÔÏ-Õ×ÅÌÉÞÅÎÉÅÍ?</H4>
<P>ïÄÉÎ ÉÚ ÓÐÏÓÏÂÏ× ÓÏÓÔÏÉÔ × ÐÏÌÕÞÅÎÉÉ ÓÌÅÄÕÀÝÅÇÏ ÚÎÁÞÅÎÉÑ
<SMALL>SERIAL</SMALL> ÉÚ ÏÂßÅËÔÁ sequence Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ
<I>nextval()</I> <I>ÐÅÒÅÄ</I> ×ÓÔÁ×ËÏÊ É ÚÁÔÅÍ ×ÓÔÁ×ÌÑÔØ ÜÔÏ ÚÎÁÞÅÎÉÅ
- Ñ×ÎÏ. éÓÐÏÌØÚÕÊÔÅ ÔÁÂÌÉÃÕ-ÐÒÉÍÅÒ × <A href="#4.15.1">4.15.1</A>, ÞÔÏÂÙ
- Õ×ÉÄÅÔØ ËÁË ÜÔÏ ÄÅÌÁÅÔÓÑ × Perl:</P>
+ Ñ×ÎÏ. éÓÐÏÌØÚÕÊÔÅ ÔÁÂÌÉÃÕ-ÐÒÉÍÅÒ × <A href="#4.15.1">4.15.1</A>, ÐÒÉÍÅÒ
+ × ÐÓÅ×ÄÏÑÚÙËÅ ÐÏËÁÖÅÔ ËÁË ÜÔÏ ÄÅÌÁÅÔÓÑ:</P>
<PRE>
- new_id = output of "SELECT nextval('person_id_seq')"
- INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
+ new_id = execute("SELECT nextval('person_id_seq')");
+ execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
</PRE>
úÁÔÅÍ ×Ù ÄÏÌÖÎÙ ÔÁËÖÅ ÓÏÈÒÁÎÉÔØ ÎÏ×ÏÅ ÚÎÁÞÅÎÉÅ × ÐÅÒÅÍÅÎÎÏÊ
ÉÍÅÎÁÍÉ ×ÁÛÅÊ ÔÁÂÌÉÃÙ É ×ÁÛÅÊ ËÏÌÏÎËÉ <SMALL>SERIAL</SMALL>.
<P>÷ ËÁÞÅÓÔ×Å ÁÌØÔÅÒÎÁÔÉ×Ù, ×Ù ÍÏÖÅÔÅ ÐÏÌÕÞÉÔØ ÎÁÚÎÁÞÅÎÎÏÅ ÚÎÁÞÅÎÉÅ
- <SMALL>SERIAL</SMALL> Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ <I>currval</I>()
+ <SMALL>SERIAL</SMALL> Ó ÐÏÍÏÝØÀ ÆÕÎËÃÉÉ <I>currval()</I>
<I>ÐÏÓÌÅ</I> ÐÒÏ×ÅÄÅÎÉÑ ÏÂÙÞÎÏÊ ÏÐÅÒÁÃÉÉ ×ÓÔÁ×ËÉ, ÎÁÐÒÉÍÅÒ</P>
<PRE>
- INSERT INTO person (name) VALUES ('Blaise Pascal');
- new_id = output of "SELECT currval('person_id_seq')";
+ execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+ new_id = execute("SELECT currval('person_id_seq')");
</PRE>
é ÎÁËÏÎÅÃ, ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÚÎÁÞÅÎÉÅ
ÉÓÐÏÌØÚÏ×ÁÎÉÅ <I>currval()</I> É <I>nextval()</I> ÐÒÉ×ÅÄÅÔ Ë
ÚÁÃÉËÌÉÒÏ×ÁÎÉÀ Ó ÄÒÕÇÉÍÉ ÐÏÌØÚÏ×ÁÔÅÌÑÍÉ?</H4>
- <P>îÅÔ. Currval() ×ÏÚ×ÒÁÝÁÅÔ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ, ÎÁÚÎÁÞÅÎÎÏÅ ×ÁÛÅÍ
+ <P>îÅÔ. <i>currval()</i> ×ÏÚ×ÒÁÝÁÅÔ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ, ÎÁÚÎÁÞÅÎÎÏÅ ×ÁÛÅÍ
backend'ÏÍ, Á ÎÅ ÄÒÕÇÉÍÉ ÐÏÌØÚÏ×ÁÔÅÌÑÍÉ.</P>
<H4><A name="4.15.4">4.15.4</A>) ðÏÞÅÍÕ ÞÉÓÌÁ ÉÚ ÍÏÅÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ
× PostgreSQL. ëÁÖÄÁÑ ÚÁÐÉÓØ, ËÏÔÏÒÁÑ ÓÏÚÄÁ£ÔÓÑ × PostgreSQL ÐÏÌÕÞÁÅÔ
ÕÎÉËÁÌØÎÙÊ <SMALL>OID</SMALL>. ÷ÓÅ ÚÎÁÞÅÎÉÑ <SMALL>OID</SMALL>
ÇÅÎÅÒÉÒÕÅÍÙÅ ×Ï ×ÒÅÍÑ <I>initdb</I> ÉÍÅÀÔ ÚÎÁÞÅÎÉÑ ÍÅÎØÛÅ 16384 (ÉÚ
- <I>backend/access/transam.h</I>). ÷ÓÅ ÓÏÚÄÁÎÎÙÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ
+ <I>include/access/transam.h</I>). ÷ÓÅ ÓÏÚÄÁÎÎÙÅ ÐÏÌØÚÏ×ÁÔÅÌÅÍ
<SMALL>OID</SMALL> ÉÍÅÀÔ ÂïÌØÛÉÅ ÚÎÁÞÅÎÉÅ. ðÏ ÕÍÏÌÞÁÎÉÀ, ×ÓÅ ÜÔÉ
<SMALL>OID</SMALL> Ñ×ÌÑÀÔÓÑ ÕÎÉËÁÌØÎÙÍÉ ÎÅ ÔÏÌØËÏ ×ÎÕÔÒÉ ËÁËÏÊ-ÌÉÂÏ
ÔÁÂÌÉÃÙ ÉÌÉ ÂÁÚÙ ÄÁÎÎÙÈ, ÎÏ É ×ÎÕÔÒÉ ×ÓÅÊ óõâä PostgreSQL.</P>
COPY new TO '/tmp/pgtable';
DELETE FROM new;
COPY new WITH OIDS FROM '/tmp/pgtable';
+</PRE>
<!--
CREATE TABLE new_table (mycol int);
INSERT INTO new_table (oid, mycol) SELECT oid, mycol FROM old_table;
-->
-</PRE>
-
- <P><SMALL>OID</SMALL> ÈÒÁÎÉÔÓÑ ËÁË 4-È ÂÁÊÔÎÏÅ ÃÅÌÏÅ É ÎÅ ÍÏÖÅÔ ÐÒÅ×ÙÛÁÔØ
+ <P>O<SMALL>ID</SMALL> ÈÒÁÎÉÔÓÑ ËÁË 4-È ÂÁÊÔÎÏÅ ÃÅÌÏÅ É ÎÅ ÍÏÖÅÔ ÐÒÅ×ÙÛÁÔØ
ÚÎÁÞÅÎÉÅ × 4 ÍÉÌÌÉÁÒÄÁ. ïÄÎÁËÏ, ÅÝÅ ÎÉËÔÏ ÎÅ ÓÏÏÂÝÉÌ Ï ÔÏÍ, ÞÔÏ ÔÁËÏÅ
ÐÒÏÉÚÏÛÌÏ, ÎÏ ÍÙ ÐÌÁÎÉÒÕÅÍ ÄÏ ÔÏÇÏ ËÁË ÜÔÏ ÓÌÕÞÉÔØÓÑ ÉÚÂÁ×ÉÔÓÑ ÏÔ
ÜÔÏÇÏ ÏÇÒÁÎÉÞÅÎÉÑ.</P>
<LI>range variable, table name, table alias</LI>
</UL>
- <P>óÐÉÓÏË ÏÂÝÉÈ ÔÅÒÍÉÎÏ× ÐÏ ÂÁÚÁÍ ÄÁÎÎÙÈ ÍÏÖÎÏ ÎÁÊÔÉ ÎÁ <A href=
- "http://www.comptechnews.com/~reaster/dbdesign.html">http://www.comptechnews.com/~reaster/dbdesign.html</A></P>
+ <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>
<H4><A name="4.19">4.19</A>) ëÁË ÍÎÅ ÕÚÎÁÔØ, ËÁËÁÑ ×ÅÒÓÉÑ PostgreSQL
ÚÁÐÕÝÅÎÁ?</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>) ðÏÞÅÍÕ ÐÒÉ ÒÁÂÏÔÅ Ó ÍÏÉÍ ÂÏÌØÛÉÍ ÏÂßÅËÔÏÍ
Ñ ÐÏÌÕÞÁÀ ÏÛÉÂËÕ <I>"invalid large obj descriptor"</I>?</H4>
Õ×ÅÌÉÞÉÔØ ÓËÏÒÏÓÔØ × ÄÒÕÇÉÈ ÚÁÐÒÏÓÁÈ, ÚÁÍÅÎÉÔÅ <CODE>IN</CODE> ÎÁ
<CODE>EXISTS</CODE>:</P>
<PRE>
-<CODE>SELECT *
+ SELECT *
FROM tab
- WHERE col IN (SELECT subcol FROM subtab)
-</CODE>
+ WHERE col IN (SELECT subcol FROM subtab);
</PRE>
ÎÁ:
<PRE>
-<CODE>SELECT *
+ SELECT *
FROM tab
- WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
-</CODE>
+ WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
</PRE>
þÔÏÂÙ ÔÁËÁÑ ËÏÎÓÔÒÕËÃÉÑ ÒÁÂÏÔÁÌÁ ÂÙÓÔÒÏ, ËÏÌÏÎËÁ <CODE>subcol</CODE>
ðÏÓËÏÌØËÕ PostgreSQL ÚÁÇÒÕÖÁÅÔ ÓÉÓÔÅÍÎÙÅ ËÁÔÁÌÏÇÉ ÓÐÅÃÉÆÉÞÎÙÅ ÄÌÑ ÂÁÚÙ
ÄÁÎÎÙÈ, ÎÅÐÏÎÑÔÎÏ ÄÁÖÅ, ËÁË ÄÏÌÖÅÎ ÓÅÂÑ ×ÅÓÔÉ ÔÁËÏÊ ÍÅÖÂÁÚÏ×ÙÊ ÚÁÐÒÏÓ.</P>
- <P><I>/contrib/dblink</I> ÐÏÚ×ÏÌÑÅÔ ÚÁÐÒÏÓÙ ÍÅÖÄÕ ÂÁÚÁÍÉ, ÉÓÐÏÌØÚÕÑ
+ <P><I>contrib/dblink</I> ÐÏÚ×ÏÌÑÅÔ ÚÁÐÒÏÓÙ ÍÅÖÄÕ ÂÁÚÁÍÉ, ÉÓÐÏÌØÚÕÑ
×ÙÚÏ×Ù ÆÕÎËÃÉÊ. òÁÚÕÍÅÅÔÓÑ, ËÌÉÅÎÔ ÍÏÖÅÔ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ
ÓÏÅÄÉÅÎÅÎÉÑ Ó ÒÁÚÌÉÞÎÙÍÉ ÂÁÚÁÍÉ ÄÁÎÎÙÈ É ÔÁËÉÈ ÏÂÒÁÚÏÍ ÏÂßÅÄÉÎÑÔØ
ÉÎÆÏÒÍÁÃÉÀ ÉÚ ÎÉÈ.</P>
<P>÷Ù ÍÏÖÅÔÅ ×ÏÚ×ÒÁÝÁÔØ ÉÚ ÆÕÎËÃÉÊ PL/pgSQL ÓÐÉÓËÉ ÒÅÚÕÌØÔÁÔÏ×, ÉÓÐÏÌØÚÕÑ
<i>refcursors</i>. óÍÏÔÒÉÔÅ <A
- href="http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html">
- http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,</a>
+ href="http://www.postgresql.org/idocs/index.php?plpgsql-cursors.html">
+ http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html</a>,
ÓÅËÃÉÀ 23.7.3.3.</P>
<H4><A name="4.26">4.26</A>) ðÏÞÅÍÕ Ñ ÎÅ ÍÏÇÕ ÎÁÄÅÖÎÏ ÓÏÚÄÁ×ÁÔØ/ÕÄÁÌÑÔØ
<H4><A name="4.27">4.27</A>) ëÁËÉÅ ÏÐÃÉÉ ÒÅÐÌÉËÁÃÉÉ ÓÕÝÅÓÔ×ÕÀÔ?</H4>
- <P>åÓÔØ ÎÅÓËÏÌØËÏ ÒÅÛÅÎÉÊ ÄÌÑ ÒÅÐÌÉËÁÃÉÉ ÔÉÐÁ master/slave. ïÎÉ ÄÏÐÕÓËÁÀÔ
- ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÔÏÌØËÏ ÏÄÎÏÇÏ ÓÅÒ×ÅÒÁ ÄÌÑ ×ÎÅÓÅÎÉÑ ÉÚÍÅÎÅÎÉÊ × ÂÁÚÕ ÄÁÎÎÙÈ,
- Á slave ÓÅÒ×ÅÒÙ ÐÒÏÓÔÏ ÐÏÚ×ÏÌÑÀÔ ÞÉÔÁÔØ ÄÁÎÎÙÅ ÉÚ ÂÁÚÙ.</P>
-
+ <P>åÓÔØ ÎÅÓËÏÌØËÏ ÏÐÃÉÊ ÄÌÑ ÒÅÐÌÉËÁÃÉÉ ÔÉÐÁ master/slave. ïÎÉ ÄÏÐÕÓËÁÀÔ
+ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÔÏÌØËÏ master ÓÅÒ×ÅÒÁ ÄÌÑ ×ÎÅÓÅÎÉÑ ÉÚÍÅÎÅÎÉÊ × ÂÁÚÕ ÄÁÎÎÙÈ,
+ Á slave ÓÅÒ×ÅÒÙ ÐÒÏÓÔÏ ÐÏÚ×ÏÌÑÀÔ ÞÉÔÁÔØ ÄÁÎÎÙÅ ÉÚ ÂÁÚÙ. ï ÜÔÏÍ ÞÉÔÁÊÔÅ
+ ÚÄÅÓØ: <A href="http://gborg.postgresql.org/genpage?replication_research">
+ http://gborg.PostgreSQL.org/genpage?replication_research</A>. ï ÒÅÐÌÉËÁÃÉÉ
+ Ó ÎÅÓËÏÌØËÉÍÉ master ÓÅÒ×ÅÒÁÍÉ ÞÉÔÁÊÔÅ ÚÄÅÓØ:
+ <a href="http://gborg.postgresql.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.</P>
+
+ <h4><a name="4.28">4.28</a>) ëÁËÉÅ ÏÐÃÉÉ ÛÉÆÒÏ×ÁÎÉÑ ÓÕÝÅÓÔ×ÕÀÔ?
+ </h4>
+ <ul>
+ <li><i>contrib/pgcrypto</i> ÓÏÄÅÒÖÉÔ ÍÎÏÇÏ ÆÕÎËÃÉÊ ÛÉÆÒÏ×ÁÎÉÑ ÄÌÑ
+ ÉÓÐÏÌØÚÏ×ÁÎÉÑ × <small>SQL</small> ÚÁÐÒÏÓÁÈ.</li>
+ <li>åÓÔØ ÔÏÌØËÏ ÏÄÉÎ ÓÐÏÓÏ ÛÉÆÒÏ×ÁÎÉÑ ÄÁÎÎÙÈ, ÐÅÒÅÄÁ×ÁÅÍÙÈ ÏÔ ËÌÉÅÎÔÁ
+ Ë ÓÅÒ×ÅÒÕ, ÞÅÒÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÅ <i>hostssl</i> × <i>pg_hba.conf</i>.</li>
+ <li>ðÁÒÏÌÉ ÐÏÌØÚÏ×ÁÔÅÌÅÊ Ë ÂÁÚÅ ÄÁÎÎÙÈ Á×ÔÏÍÁÔÉÞÅÓËÉ ÛÉÆÒÕÀÔÓÑ, ÐÒÉ
+ ÓÏÈÒÁÎÅÎÉÉ × ×ÅÒÓÉÉ 7.3. ÷ ÐÒÅÄÙÄÕÝÉÈ ×ÅÒÓÉÑÈ, ×Ù ÄÏÌÖÎÙ ÒÁÚÒÅÛÉÔØ
+ ÏÐÃÉÀ <i>PASSWORD_ENCRYPTION</i> × <i>postgresql.conf</i>.</li>
+ <li>óÅÒ×ÅÒ ÍÏÖÎÏ ÚÁÐÕÓÔÉÔØ, ÉÓÐÏÌØÚÕÑ ÛÉÆÒÏ×ÁÎÎÕÀ ÆÁÊÌÏ×ÕÀ ÓÉÓÔÅÍÕ.</li>
+ </ul>
<HR>
<H2 align="center">òÁÓÛÉÒÅÎÉÑ PostgreSQL</H2>
<H4><A name="5.3">5.3</A>) ëÁË ÍÎÅ ÎÁÐÉÓÁÔØ C ÆÕÎËÃÉÀ, ×ÏÚ×ÒÁÝÁÀÝÕÀ
ÚÁÐÉÓØ?</H4>
- <P>üÔÏ ÔÒÅÂÕÅÔ ÎÅËÏÅÇÏ ÛÁÍÁÎÓÔ×Á ÔÁË ËÁË Á×ÔÏÒÙ ÎÉËÏÇÄÁ ÎÅ ÐÒÏÂÏ×ÁÌÉ
- ÄÅÌÁÔØ ÜÔÏ, ÈÏÔÑ × ÐÒÉÎÉÃÐÅ ÜÔÏ ×ÏÚÍÏÖÎÏ.</P>
+ <P>÷ ×ÅÒÓÉÑÈ PostgreSQL, ÎÁÞÉÎÁÑ Ó 7.3, ÆÕÎËÃÉÉ, ×ÏÚ×ÒÁÝÁÀÝÉÅ ÔÁÂÌÉÃÙ
+ ÐÏÌÎÏÓÔØÀ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ × C, PL/PgSQL É SQL. ðÏÄÒÏÂÎÏÓÔÉ ÓÍÏÔÒÉÔÅ ×
+ òÕËÏ×ÏÄÓÔ×Å ðÒÏÇÒÁÍÍÉÓÔÁ. ðÒÉÍÅÒ ×ÏÚ×ÒÁÝÁÀÝÅÊ ÔÁÂÌÉÃÕ ÆÕÎËÃÉÉ,
+ ÎÁÐÉÓÁÎÎÏÊ ÎÁ C, ÍÏÖÎÏ ÎÁÊÔÉ × <i>contrib/tablefunc</i>.</P>
<H4><A name="5.4">5.4</A>) ñ ÉÚÍÅÎÉÌ ÉÓÈÏÄÎÙÊ ÆÁÊÌ. ðÏÞÅÍÕ ÐÏÓÌÅ
ÐÅÒÅËÏÍÐÉÌÑÃÉÉ Ñ ÎÅ ×ÉÖÕ ÉÚÍÅÎÅÎÉÊ?</H4>