aboutsummaryrefslogtreecommitdiff
path: root/doc/FAQ_czech
diff options
context:
space:
mode:
Diffstat (limited to 'doc/FAQ_czech')
-rw-r--r--doc/FAQ_czech849
1 files changed, 0 insertions, 849 deletions
diff --git a/doc/FAQ_czech b/doc/FAQ_czech
deleted file mode 100644
index 99120e60606..00000000000
--- a/doc/FAQ_czech
+++ /dev/null
@@ -1,849 +0,0 @@
-
- Frequently Asked Questions
-
- Casto kladené dotazy (FAQ) PostgreSQL
-
- Poslední aktualizace: 29. ríjna 2007 (aktualizováno pro PostgreSQL
- 8.3)
-
- Soucasný správce: Bruce Momjian (bruce@momjian.us)
-
- Prelozil: Pavel Stehule (pavel.stehule@gmail.com)
-
- Nejaktuálnejsí verzi tohoto dokumentu naleznete na adrese
- http://www.postgresql.org/files/documentation/faqs/FAQ.html
-
- Odpovedi na otázky vázané na konkrétní platformy naleznete na adrese
- http://www.postgresql.org/docs/faq/.
- _________________________________________________________________
-
- Obecné otázky
-
- 1.1) Co je to PostgreSQL? Jaká je správná výslovnost slova PostgreSQL?
- 1.2) Kdo rídí vývoj PostgreSQL?
- 1.3) Pod jakou licencí je PostgreSQL?
- 1.4) Na kterých platformách lze provozovat PostgreSQL?
- 1.5) Kde mohu získat PostgreSQL?
- 1.6) Jaká je poslední verze?
- 1.7) Kde mohu získat podporu?
- 1.8) Jak a kam hlásit chyby?
- 1.9) Kde najdu informace o známých chybách nebo nepodporovaných
- vlastnostech?
- 1.10) Jaká je dostupná dokumentace?
- 1.11) Jak se mohu naucit SQL?
- 1.12) Jak se mohu pripojit k týmu vývojáru?
- 1.13) Jak je na tom PostgreSQL v porovnání s jinými databázemi?
- 1.14) Je PostgreSQL pripraven na aktuální zavádení letního casu v
- nekterých zemích?
-
- Dotazy na klientská rozhraní
-
- 2.1) Která rozhraní jsou pouzitelná pro PostgreSQL?
- 2.2) Jaké nástroje lze pouzít pro PostgreSQL a web?
- 2.3) Existuje grafické rozhraní pro PostgreSQL?
-
- Administrativní dotazy
-
- 3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
- 3.2) Jak nastavit pravidla pro prístup z jiných stanic?
- 3.3) Jak vyladit databázi na vyssí výkon?
- 3.4) Jaké mám ladící prostredky?
- 3.5) Co znamená "Sorry, too many clients", kdyz se zkousím pripojit?
- 3.6) Proc je nutný dump a obnovení (load) databáze pri upgradu
- PostgreSQL?
- 3.7) Jaký hardware bych mel pouzívat?
-
- Provozní dotazy
-
- 4.1) Jak získat pouze první rádek dotazu? Náhodný rádek?
- 4.2) Jak získám seznam tabulek, indexu, databází, a definovaných
- uzivatelu. Mohu videt dotazy, které pouzívá psql pro zobrazení techto
- informací?
- 4.3) Jak zmenit datový typ sloupce?
- 4.4) Jaká je maximální velikost rádku, tabulky a databáze?
- 4.5) Kolik diskového prostoru je potreba k ulození dat z normálního
- textového souboru?
- 4.6) Muj dotaz je pomalý a nepouzívá vytvorené indexy. Proc?
- 4.7) Jak zjistím, jak se vyhodnocuje muj dotaz?
- 4.8) Jak pouzít case-(in)sensitive regulární výraz? Jak pouzít index
- pro case insensitive hledání?
- 4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit
- dva retezce, pokud mohou obsahovat NULL? Lze trídit podle toho, jestli
- je polozka NULL nebo ne?
- 4.10) Jaké jsou rozdíly mezi ruznými znakovými typy?
- 4.11.1) Jak vytvorit serial/auto-increment polozku?
- 4.11.2) Jak získat hodnotu SERIAL po vlození rádku?
- 4.11.3) Nezpusobí currval() a nextval() problémy ve více uzivatelském
- prostredí?
- 4.11.4) Proc není vygenerované císlo pouzito pri prerusení
- transakce?Proc vznikají díry v císlování prostrednictvím sekvence nebo
- typu SERIAL?
- 4.12) Co to je OID? Co je to CTID?
- 4.13) Co znamená chybové hlásení "ERROR: Memory exhausted in
- AllocSetAlloc()"?
- 4.14) Jak zjistím, kterou verzi PostgreSQL pouzívám?
- 4.15) Jak vytvorit sloupec, který bude implicitne obsahovat aktuální
- cas?
- 4.16) Jak provést vnejsí spojení (outer join)?
- 4.17) Jak provést dotaz napríc nekolika databázemi?
- 4.18) Muze funkce vrátit více rádku nebo sloupcu?
- 4.19) Co je prícinou chyby "relation with OID xxxxx does not exist"?
- 4.20) Jaké jsou moznosti replikace databází?
- 4.21) Proc v dotazu nejsou rozpoznány názvy mých tabulek nebo funkcí?
- Proc jsou velká písmena v názvech automaticky prevedena na malá
- písmena?
- _________________________________________________________________
-
- Obecné otázky
-
- 1.1) Co je to PostgreSQL? Jaká je správná výslovnost slova PostgreSQL?
-
- Výslovnost PostgreSQL je Post-Gres-Q-L , nebo zjednodusene Postgres .
- V rade jazyku je slovo PostgreSQL obtízne vyslovitelný, proto se v
- hovoru casto pouzívá zjednodusená forma názvu. Pro ty, kterí by si
- rádi poslechli výslovnost, je k dispozici audiozáznam v MP3 formátu.
-
- PostgreSQL je relacní databáze s nekterými objektovými rysy, která má
- moznosti tradicních komercních databázových systému s nekolika
- rozsíreními, které lze najít v DBMS systémech prístí generace.
- Pouzívání PostgreSQL není omezené a veskeré zdrojové kódy jsou volne
- dostupné.
-
- Za vývojem PostgreSQL je mezinárodní skupina nezávislých vývojáru
- navzájem komunikujících prostrednictvím internetu. Tento projekt není
- rízen zádnou obchodní organizací. Pokud se chcete pridat k projektu,
- prectete si vývojárské FAQ na adrese
- http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html .
-
- 1.2) Kdo rídí vývoj PostgreSQL?
-
- Pokud budete hledat organizaci rídící vývoj PostgreSQL, budete
- zklamáni. Nic takového neexistuje. Existují pouze "core" a CVS skupiny
- uzivatelu, ale ty existují více z administrátorských duvodu nez z
- organizacních. Projekt je smerován komunitou vývojáru a uzivatelu, ke
- které se kdokoliv muze pripojit. Jediné co potrebuje, je prihlásit se
- do elektronické konference. Více ve vývojárském FAQ.
-
- 1.3) Pod jakou licencí je PostgreSQL?
-
- PostgreSQL je predmetem následujících autorských práv:
-
- Dílcí Copyright (c) 1996-2009, PostgreSQL Global Development Group
- Dílcí Copyright (c) 1994-6, Regents of the University of California
-
- Udeluje se oprávnení k uzití, rozmnozování, provádení úprav a
- rozsirování tohoto softwaru a dokumentace k nemu, pro jakékoli úcely,
- bez licencního poplatku a bez písemné licencní smlouvy, za podmínky,
- ze na vsech jeho kopiích je uvedeno oznámení o výse uvedených právech,
- jakoz i obsah tohoto a dvou následujících odstavcu.
-
- THE UNIVERSITY OF CALIFORNIA ("KALIFORNSKÁ UNIVERZITA") NENÍ V ZÁDNÉM
- PRÍPADE ODPOVEDNA ZÁDNÉ TRETÍ OSOBE ZA PRÍMOU, NEPRÍMOU, ZVLÁSTNÍ,
- NAHODILOU NEBO VÝSLEDNOU SKODU, VCETNE USLÉHO ZISKU, ZPUSOBENOU UZITÍM
- TOHOTO SOFTWARU A DOKUMENTACE K NEMU, A TO I V PRÍPADE, ZE THE
- UNIVERSITY OF CALIFORNIA BYLA INFORMOVÁNA O MOZNOSTI VZNIKU TAKOVÉ
- SKODY.
-
- THE UNIVERSITY OF CALIFORNIA ZEJMÉNA NEPOSKYTUJE JAKÉKOLI ZÁRUKY, A TO
- NEJEN ZÁRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VÝROBKU KE
- SPECIFICKÝM ÚCELUM. NÍZE UVEDENÝ SOFTWARE JE POSKYTNUT "JAK STOJÍ A
- LEZÍ" A THE UNIVERSITY OF CALIFORNIA NENÍ POVINNA ZAJISTIT JEHO
- ÚDRZBU, PODPORU, AKTUALIZACI, VYLEPSENÍ NEBO MODIFIKACI.
-
- Výse uvedené je BSD licence, bezná licence otevreného zdroje. Není zde
- zádné omezení ohledne uzití kódu zdroje. Jsme s tím spokojeni a nemáme
- v úmyslu na této skutecnosti cokoli menit.
-
- 1.4) Na kterých platformách lze provozovat PostgreSQL?
-
- Strucne receno, PostgreSQL bezí na vsech moderních unixových
- systémech. Seznam tech, u kterých probehlo testování, naleznete v
- instalacních instrukcích.
-
- PostreSQL také bezí nativne na vsech Microsof Windows systémech
- odvozených z Microsoft Windows NT jako jsou Windows 2000SP4, WindowsXP
- a Windows2003. Instalacní balícek naleznete na adrese
- http://pgfoundry.org/projects/pginstaller. Na starsích systémech s
- jeste MS-DOS jádrem lze spustit PostgreSQL s emulacním programem
- Cygwin.
-
- Dále existuje port pro Novell Netware 6 port na adrese
- http://forge.novell.com, a pro OS/2 verze (eComStation) na adrese
- http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
- SQL&stype=all&sort=type&dir=%2F .
-
- 1.5) Kde mohu získat PostgreSQL?
-
- Pomocí webového klienta z adresy http://www.postgresql.org/ftp/ nebo
- klienta ftp z adresy ftp://ftp.postgresql.org/pub/.
-
- 1.6) Jaká je poslední verze?
-
- Nejnovejsí verzí PostgreSQL je verze 8.2.5
-
- V plánu je uvolnovat kazdorocne jednu velkou verzi a kazdých nekolik
- mesícu malé verze.
-
- 1.7) Kde mohu získat podporu?
-
- Nejcastejsí forma podpory uzivatelum PostgreSQL komunitou je
- prostrednictvím e-mailu. Na nasem webovém serveru naleznete odkaz na
- stránky,kde se muzete prihlásit do elektronické konference. Pro
- zacátek jsou doporucené konference general nebo bugs.
-
- Dalsí cestou je IRC kanál #postgresql na Freenode (irc.freenode.net).
- K pripojení pouzijte Unixový príkaz irc -x '#postgresql' "$USER"
- irc.freenode.net nebo jakékoholiv jiného IRC klienta. V této síti
- existuje jeste spanelská (#postgresql-es) a francouzská
- (#postgresqlfr) verze. Dalsí PostgreSQL kanál naleznete na EFNet.
-
- Seznam spolecností poskytující komercní podporu naleznete na adrese
- http://techdocs.postgresql.org/companies.php.
-
- 1.8) Jak a kam hlásit chyby?
-
- Vyplnte formulár na adrese
- http://www.postgresql.org/support/submitbug. Na nasem ftp serveru
- ftp://ftp.postgresql.org/pub/ si overte, ze pouzíváte aktuální verzi
- PostreSQL.
-
- Chyby reportované prostrednictvím chybového formuláre nebo zasláním
- mailu do PostgreSQL konference obvykle generuje následující odezvu:
- * Nejedná se o chybu, a proc
- * Jedná se o známou chybu, která je jiz v seznamu úkolu TODO
- * Tato chyba byla opravena v aktuální verzi
- * Tato chyba byla jiz opravena ve verzi, která zatím nebyla
- oficiálne uvolnena
- * Pozadavek na dalsí doplnující informace:
- + Operacní systém
- + Verze PostgreSQL
- + Test reprodukující chybu
- + Ladící informace
- + Backtrace výstup debuggeru
- * Jedná se o zatím nezjistenou chybu, pak muzete cekat
- + Záplatu odstranující chybu, která bude vlozena do dalsí velké
- nebo malé verze
- + Informaci, ze se jedná o chybu, kterou nelze okamzite resit a
- je proto pridána do TODO
-
- 1.9) Kde najdu informace o známých chybách nebo nepodporovaných vlastnostech?
-
- PostgreSQL podporuje rozsírenou podmnozinu SQL:2003. V nasem TODO
- naleznete seznam známých chyb, chybejících vlastností, a plány do
- budoucna.
-
- Odezva na pozadavek na novou vlastnost PostgreSQL je obvykle:
- * Pozadavek je jiz v TODO
- * Pozadovaná funkce není chtená protoze
- + Duplikuje jiz existující funkci, která respektuje SQL
- standard
- + Implementací funkce by se prílis zkomplikoval kód bez
- relevantního prínosu
- + Funkce by mohla být nebezpecná nebo nespolehlivá
- * Pozadavek je pridán do TODO
-
- PostgreSQL nepozívá systém pro sledování chyb, protoze jsme zjistili,
- ze je efektivnejsí prímo reagovat na maily a udrzovat aktuální TODO. V
- praxi je snaha o co nejrychlejsí resení chyb, a chyby, které by se
- mohly projevit u mnoha uzivatelu jsou opravovány velice rychle. Jediné
- místo, kde lze dohledat vsechny zmeny, rozsírení a opravy v PostgreSQL
- je CVS log. Poznámky k verzi "Release notes" nezachycují vsechny
- zmeny, k nemz doslo.
-
- 1.10) Jaká je dostupná dokumentace?
-
- PostgreSQL obsahuje vynikající dokumentaci zahrnující manuál,
- manuálové stránky a testovací príklady. Podívejte se do adresáre /doc.
- Manuál je prístupný online na http://www.postgresql.org/docs.
-
- K dispozici jsou zdarma dve online knihy na adresách
- http://www.postgresql.org/docs/books/awbook.html a
- http://www.commandprompt.com/ppbook/. Dalsí literaturu lze zakoupit.
- Nejpopulárnejsí je od Kerryho Douglase. Seznam dostupné literatury je
- na http://techdocs.postgresql.org/techdocs/bookreviews.php. Jeste je
- kolekce technicky orientovaných clánku tematicky spojených s
- PostgreSQL na adrese http://techdocs.postgresql.org/.
-
- Rádkový klient psql má \d príkazy pro zobrazení informací o typech,
- operátorech, funkcích, agregacních funkcí, atd. Pouzijte \? pro
- zobrazení dostupných príkazu.
-
- Dalsí dokumentaci najdete na nasem webu.
-
- 1.11) Jak se mohu naucit SQL?
-
- Podívejte se do výse uvedené dokumentace. Dalsí online knihou je
- "Teach Yourself SQL in 21 Days, Second Edition" na adrese
- http://members.tripod.com/er4ebus/sql/index.htm. Mnoho nasich
- uzivatelu doporucuje knihu The Practical SQL Handbook, Bowman, Judith
- S., et al., Addison-Wesley. Dalsí The Complete Reference SQL, Groff et
- al., McGraw-Hill.
-
- Dalsí online tutoriály jsou dostupné na adresách:
- * http://www.intermedia.net/support/sql/sqltut.shtm
- * http://sqlcourse.com
- * http://www.w3schools.com/sql/default.asp
- * http://mysite.verizon.net/Graeme_Birchall/id1.html
-
- 1.12) Jak se mohu pripojit k týmu vývojáru?
-
- Prostudujte si Developer's FAQ.
-
- 1.13) Jak je na tom PostgreSQL v porovnání s jinými databázemi?
-
- Software muzeme porovnávat z nekolika ruzných pohledu: vlastnosti,
- výkon, spolehlivost, podpora a cena.
-
- Vlastnosti
-
- PostgreSQL nabízí vetsinu funkcí funkcionality velkých komercních DBMS
- systému jako jsou: transakce, vnorené dotazy, spouste, referencní
- integrita a sofistikovaný systém zamykání. Poskytujeme urcité funkce,
- které ostatní systémy bezne nepodporují. Napr. uzivatelem definované
- typy, dedicnost, pravidla (rules), a MVCC architekturu.
-
- Výkon
-
- Výkon PostgreSQL je srovnatelný s ostatními komercními nebo Open
- Source databázemi. V nekterých prípadech je rychlejsí, jindy
- pomalejsí. Nás výkon je obvykle +/-10% vuci ostatním databázím.
-
- Spolehlivost
-
- Uvedomujeme si, ze databáze musí být stoprocentne spolehlivá, jinak je
- nepouzitelná. Snazíme se, aby kazdá verze byla dobre otestována a
- obsahovala minimum chyb. Kazdá verze je minimálne nekolik mesícu v
- beta testovacím rezimu. Do produkcního rezimu se dostane, az kdyz
- nedochází k dalsím zmenám nebo opravám. Veríme, ze jsem více nez
- srovnatelní s ostatními databázemi v této oblasti.
-
- Podpora
-
- Na nasich internetových konferencích se setkává velká skupina vývojáru
- a uzivatelu pri resení vyskytujících se problému. Nase internetové
- konference umoznují kontakt velké skupiny vývojáru a uzivatelu.
- Nemuzeme garantovat opravu chyby, ale komercní DBMSs také vzdy
- negarantují resení problému. Veríme ale, ze díky prímému kontaktu na
- vývojáre, nasi uzivatelskou komunitu, manuálum, a dostupným zdrojovým
- kódum máme lepsí podporu nez ostatní DBMSs. Pro ty, kterí preferují
- komercní "per-incident" podporu, existuje spolecností, kterí ji
- nabízejí (FAQ sekce 1.7.)
-
- Cena
-
- PostgreSQL lze pouzívat bezplatne (a to i pro komercní pouzití). Také
- muzete neomezene pouzívat nás kód ve svých produktech s výjimkami
- specifikovanými v nasí licenci (prebíráme BSD licenci).
-
- 1.14) Je PostgreSQL pripraven na aktuální zavádení letního casu v nekterých
- zemích?
-
- Pocínaje verzí 8.0.[4+] podporuje PostgreSQL letní cas také pro USA.
- Podpora letního casu (daylight saving time) pro Kanadu a Západní
- Austrálii je obsazena ve verzích 8.0.[10+] a 8.1.[6+] a vsech
- následujících verzích. Starsí verze pouzívaly systémovou databázi
- casových zón obsahující, krome jiného, informaci o tom, zda se pro
- danou casovou zónu rozlisuje mezi letním a zimním casem.
- _________________________________________________________________
-
- Dotazy na klientská rozhraní
-
- 2.1) Která rozhraní jsou pouzitelná pro PostgreSQL?
-
- PostgreSQL se distribuuje pouze s rozhraním pro jazyk C a embedded C.
- Vsechna dalsí rozhraní predstavují nezávislé projekty, které je treba
- stáhnout z internetu samostatne. Osamostatnení techto projektu
- umoznuje nezávislost vývojových týmu a moznost vydávat nové verze bez
- ohledu na vydání nové verze PostgreSQL.
-
- Nekteré programovací jazyky jako je napr. PHP obsahují rozhraní pro
- PostgreSQL. Rozhraní pro jazyky jako je Perl, Tcl, Python a mnoho
- dalsích jsou dostupné na adrese: http://gborg.postgresql.org v sekci
- Drivers/Interfaces.
-
- 2.2) Jaké nástroje lze pouzít pro PostgreSQL a web?
-
- Dobrým úvodem do problematiky databází v prostredí webových stránek
- muze být web http://www.webreview.com.
-
- PHP (http://www.php.net) je vynikajícím rozhraním pro tvorbu webu.
-
- Pro slozitejsí úlohy se casto pouzívá Perl a jeho BDB:Pg rozhraní s
- podporou CGI - CGI.pm nebo mod_perl(u).
-
- 2.3) Existuje grafické rozhraní pro PostgreSQL?
-
- K dispozici je rada grafických nástroju podporujících PostgreSQL a to
- od komercních nebo open source vývojáru. Podrobný seznam naleznete na
- adrese http://www.postgresql.org/docs/techdocs.54.
- _________________________________________________________________
-
- Administrativní dotazy
-
- 3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
-
- Pri spoustení configure nastavte parametr --prefix
-
- 3.2) Jak nastavit pravidla pro prístup z jiných stanic?
-
- Ve výchozí konfiguraci, PostgreSQL umoznuje pouze pripojení z
- lokálního uzivatele prostrednictvím Unix domain sockets nebo TCP/IP
- spojení. Bez modifikace listen_addresses v souboru postgresql.conf, a
- povolení adresy v souboru $PGDATA/pg_hba.conf se nelze pripojit k
- PostgreSQL z ostatních stanic. Zmena výse zmínených parametru vyzaduje
- restart databázového serveru.
-
- 3.3) Jak vyladit databázi na vyssí výkon?
-
- Výkon systému muzete ovlivnit ve trech oblastech:
-
- Zmeny dotazu
-
- * Pouzitím indexu vcetne cástecných a funkcionálních
- * Pouzitím COPY místo opakovaných INSERTu
- * Sloucením mnoha SQL príkazu do jedné transakce snízením rezie na
- commit
- * Pouzíváním CLUSTERU, pokud nacítáte vetsí pocet rádek podle indexu
- * Pouzitím klauzule LIMIT v poddotazech
- * Pouzitím predpripravených dotazu
- * Pouzíváním ANALYZE. Tento príkaz aktualizuje statistiky, které se
- pouzívají pri optimalizaci dotazu
- * Pravidelné pouzití VACUUM nebo pouzívání pg_autovacuum
- * Odstranením indexu pred rozsáhlými zmenami v datech
-
- Konfigurace serveru
-
- Urcité parametry v souboru postgresql.conf mají vliv na výkon serveru.
- Detaily naleznete v prírucce Administrátora v Server Run-time
- Environment/Run-time Configuration. Dalsí komentáre naleznete v
- http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.ht
- ml a http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
-
- Výber hardware
-
- Vliv hardware na výkon serveru je popsán v dokumentech
- http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html
- a http://www.powerpostgresql.com/PerfList/.
-
- 3.4) Jaké mám ladící prostredky?
-
- Nastavením log_* promenných v konfiguraci serveru si vynutíte logování
- dotazu a procesních statistik, které Vám mohou pomoci pri ladení a
- optimalizaci výkonu.
-
- 3.5) Co znamená "Sorry, too many clients", kdyz se zkousím pripojit?
-
- Prekrocil jste výchozí limit, který je 100 soucasne pripojených
- uzivatelu. V konfiguraci serveru v postgresql.conf tuto hodnotu muzete
- zvetsit zmenou hodnoty max_connection. Nezapomente restartovat server.
-
- 3.6) Proc je nutný dump a obnovení (load) databáze pri upgradu PostgreSQL?
-
- Zpusob císlování je popsán v dokumentaci na
- http://www.postgresql.org/support/versioning. Instrukce k provedení
- migrace na vyssí verzi jsou taktéz v dokumentaci na adrese
- http://www.postgresql.org/docs/current/static/install-upgrading.html.
-
- 3.7) Jaký hardware bych mel pouzívat?
-
- Jelikoz PC jsou vetsinou kompatibilní, lidé mají tendence verit, ze
- vsechna PC jsou stejne kvalitní. Coz není pravda. Pameti ECC, SCSI a
- kvalitní základní desky jsou mnohem spolehlivejsí a výkonnejsí nez
- lacinejsí hardware. PostgreSQL pobezí na vetsine hardwaru, nicméne
- pokud je pro Vás spolehlivost a výkon systému dulezitá, je dobré
- venovat cas nalezení vhodné hardwarové konfigurace. Na nasich
- elektronických konferencích muzete diskutovat o vhodných konfiguracích
- a znackách.
- _________________________________________________________________
-
- Provozní dotazy
-
- 4.1) Jak získat pouze první rádek dotazu? Náhodný rádek?
-
- Pokud potrebujete pouze nekolik rádku a pokud víte kolik, pouzijte
- SELECT LIMIT. Pokud bude mozné pouzít index shodující se s ORDER BY,
- je mozné, ze se nebude provádet celý dotaz. Pokud neznáte pocet
- záznamu, pouzijte kurzor a príkaz FETCH.
-
- Pro výber náhodného rádku pouzijte príkaz ve tvaru:
-SELECT col
-FROM tab
-ORDER BY random()
-LIMIT 1;
-
- 4.2) Jak získám seznam tabulek, indexu, databází, a definovaných uzivatelu.
- Mohu videt dotazy, které pouzívá psql pro zobrazení techto informací?
-
- V psql príkazem \dt získáte seznam tabulek. Úplný seznam príkazu psql
- získáte príkazem \?. Alternativne si muzete prostudovat zdrojový kód
- psql - soubor pgsql/src/bin/psql/describe.c, který obsahuje SQL
- príkazy, které jsou generovány pro získání výstupu psql "backslash"
- príkazu. Také muzete nastartovat psql s parametrem -E, který zpusobí
- zobrazení vsech SQL príkazu, které se odesílají na server. PostgreSQL
- také podporuje SQL standard INFORMACNÍ SCHÉMATA (standardní systémové
- tabulky). Klasickým dotazem do systémových tabulek získáte pozadované
- informace o strukture databáze.
-
- Systémové tabulky PostgreSQL (mimo rámec SQL standardu) pouzívají
- prefix pg_. Pro zjistení struktury databáze je muzete pouzít také, i
- kdyz preferovány jsou dotazy do informacního schématu.
-
- Seznam vsech databází získáte príkazem psql -l
-
- Dalsí inspiraci najdete v souboru pgsql/src/tutorial/syscat.source.
- Obsahuje ilustracní SELECTy potrebné k získání informací z systémových
- tabulek databáze.
-
- 4.3) Jak zmenit datový typ sloupce?
-
- Ve verzích 8.0 a pozdejsích jednoduse:
-ALTER TABLE ALTER COLUMN TYPE
-
- V starsích verzích:
-BEGIN;
-ALTER TABLE tab ADD COLUMN new_col new_data_type;
-UPDATE tab SET new_col = CAST(old_col AS new_data_type);
-ALTER TABLE tab DROP COLUMN old_col;
-COMMIT;
-
- Po zmene spustte príkaz VACUUM FULL, aby doslo k uvolnení diskového
- prostoru pouzitého v tu chvíli jiz neplatnými záznamy.
-
- 4.4) Jaká je maximální velikost rádku, tabulky a databáze?
-
- PostgreSQL má tato omezení:
-
- Maximální velikost databáze: neomezena (existují 32TB db)
- Maximální velikost tabulky: 32 TB
- Maximální velikost rádky: 480GB
- Maximální velikost polozky 1 GB
- Maximální pocet rádku v tabulce: neomezeno
- Maximální pocet sloupcu v tabulce: 250-1600 podle typu
- Maximální pocet indexu na tabulce: neomezeno
-
- Ve skutecnosti nic není neomezeno, limitem bývá vzdy dostupná disková
- pamet nebo velikost operacní pameti. Pokud máte nekterou z techto
- hodnot neobvykle velkou, muze dojít ke snízení výkonu.
-
- Maximální velikost tabulky je 32 TB a nevyzaduje podporu velkých
- souboru operacním systémem. Velké tabulky se ukládají do nekolika 1 GB
- souboru takze limity souborového systému nejsou podstatné.
-
- Maximální velikost tabulky a maximální pocet sloupcu muzeme
- zectyrnásobit nastavením velikosti bloku na 32K.
-
- Indexy jsou povolené pouze na sloupcích jejichz délka je mensí nez
- 2000 znaku. Pokud tuto délku prekrocíme a index potrebujeme pro
- zajistení jednoznacnosti, je vhodnejsí pouzít funkcionální index nad
- MD5 funkcí nebo fulltextový index.
-
- 4.5) Kolik diskového prostoru je potreba k ulození dat z normálního textového
- souboru?
-
- PostgreSQL vyzaduje az petinásobek diskového prostoru k ulození dat z
- textového souboru.
-
- Napríklad, uvazujme soubor se 100 tisíci rádky obsahující na kazdé
- rádce celé císlo a textový popis. Text je v prumerne dvacet bytu
- dlouhý. Textový soubor bude 2.8 MB dlouhý. Velikost databáze
- obsahující odpovídající data bude zhruba 5.2 MB.
- 24 bytu: hlavicka rádku (priblizne)
- 24 bytu: jedna celocíselná polozka a jedna textová
- + 4 byty: ukazatel na stránku k entici
- ------------------------------------------------------
- 52 bytu na rádek
-
- Velikost datové stránky PostgreSQL je 8192 bytu (8KB)
- 8192 bytu na stránce
----------------------- = 158 rádek na stránku
- 52 bytu za rádek
-
-100000 rádek
------------------------ = 633 stránek (zaokrouhleno nahoru)
- 158 rádek na stránce
-
-633 datových stránek * 8192 bytu na kazdou stránku = 5,185,536 bytu (5.2 MB)
-
- Indexy nemají tak velkou rezii, ale mohou být také velké, protoze
- obsahují indexovaná data.
-
- Hodnoty NULL jsou ulozeny v bitmapách, takze zabírají jen velmi málo
- diskového prostoru.
-
- 4.6) Muj dotaz je pomalý a nepouzívá vytvorené indexy. Proc?
-
- Kazdý dotaz nemusí nutne pouzít existující indexy. Index se pouzije
- tehdy, kdyz je tabulka vetsí nez urcitá minimální velikost, a dotaz
- vybírá pouze procentuálne malou cást rádku tabulky. To proto, ze
- náhodný prístup k disku daný ctením indexu muze být pomalejsí nez
- lineární ctení tabulky nebo sekvencní ctení.
-
- PostgreSQL rozhoduje o pouzití indexu na základe statistiky prístupu k
- tabulce. Tyto statistiky se shromazdují príkazy VACUUM ANALYZE nebo
- ANALYZE. Díky statistikám má optimizer informaci o poctu rádek v
- tabulce a muze lépe rozhodnout o pouzití indexu. Statistiky se uplatní
- pri urcení optimálního poradí a metody spojení tabulek. Statistiky by
- se meli aktualizovat opakovane, tak jak se mení obsah tabulek.
-
- Indexy nejsou obycejne pouzity pro setrídení nebo spojení tabulek.
- Sekvencní zpracování následované explicitním trídením je obycejne
- rychlejsí nez pouzití indexu na velké tabulce.
-
- Jinak je tomu v prípade pouzití LIMIT a ORDER BY, pri kterém se
- vetsinou index pouzije, jelikoz je výsledkem pouze malá cást tabulky.
-
- Pokud si myslíte, ze optimizer mylne zvolil sekvencní prohledávání
- tabulky, pouzijte príkaz SET enable_seqscan TO 'off' a zkuste zda je
- prohledávání s indexem rychlejsí.
-
- Pri vyhledávání na základe vzoru jako je napr. operátor LIKE nebo ~ se
- indexy pouzijí pouze za urcitých skutecností:
- * zacátek hledaného vzoru musí být ukotven k zacátku, tj.
- + vzor LIKE nesmí zacínat %
- + ~ regulární výraz musí zacínat ^
- * vzor nesmí zacínat intervalem, napr. [a-e]
- * vyhledávaní, které není Case sensitiv jako je ILIKE nebo ~*
- nepouzívá indexy. Muzete ale pouzít funkcionální indexy, které
- jsou popsány v sekci 4.8
- * pri inicializaci databáze (initdb) musí být pouzito C locale nebo
- vytvorte speciální text_pattern_index, který umozní, pri
- respektování zmínených podmínek pouzití indexu operací LIKE. Pro
- vyhledávání celých slov je mozné a výhodné pouzít fulltext.
-
- 4.7) Jak zjistím, jak se vyhodnocuje muj dotaz?
-
- Podívejte se do nápovedy k príkazu EXPLAIN.
-
- 4.8) Jak pouzít case-(in)sensitive regulární výraz? Jak pouzít index pro case
- insensitive hledání?
-
- Vyhledávání prostrednictvím regulárních vzoru zajistuje operátor ~,
- který je case-sensitive. Jeho case-insensitive varianta je operátor
- ~*. Case-insensitive variací operátoru LIKE je operátor ILIKE.
-
- Case-insensitive vyhledání se resí:
-SELECT *
-FROM tab
-WHERE lower(col) = 'abc';
-
- Tento dotaz nepouzije standardní index. Musíte pouzít tzv.
- funkcionální index:
-CREATE INDEX tabindex ON tab (lower(col));
-
- Pokud index vytvoríme jako unikátní, tak muzeme ukládat retezce
- obsahující malá i velká písmena, ale nikoliv retezce, které se od sebe
- odlisují jen v malých a velkých písmenech. K zajistení zápisu retezce
- obsahující pouze malá nebo pouze velká písmena pouzijte CHECK kontroly
- nebo triggery.
-
- 4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit dva
- retezce, pokud mohou obsahovat NULL? Lze trídit podle toho, jestli je polozka
- NULL nebo ne?
-
- Pokud chcete testovat hodnotu NULL pouzijte operátor IS:
- SELECT *
- FROM tab
- WHERE col IS NULL;
-
- K spojení retezcu, které mohou obsahovat hodnotu NULL, pouzívejte
- funkci COALESCE(), napr.:
- SELECT COALESCE(col1, '') || COALESCE(col2, '')
- FROM tab
-
- Pokud chcete trídit podle hodnoty NULL, pouzijte výraz IS NULL nebo IS
- NOT NULL v klauzuli ORDER. Hodnota pravda má prednost pred hodnotou
- false a tedy pokud pouzijete:
- SELECT *
- FROM tab
- ORDER BY (col IS NOT NULL)
-
- tak záznamy s NULL budou na zacátku setrídených dat.
-
- 4.10) Jaké jsou rozdíly mezi ruznými znakovými typy?
-
- Typ Interní název Poznámky
- VARCHAR(n) varchar n urcuje maximální délku
- CHAR(n) bpchar retezec je do dané délky rozsíren mezerami
- TEXT text bez omezení délky
- BYTEA bytea pole bytu nespecifikované délky
- "char" char jeden znak
-
- Na interní názvy muzete narazit v systémovém katalogu nebo v nekterých
- chybových hláseních.
-
- Ctyri první typy jsou tzv. varlena typy (první ctyri byty na disku
- jsou obsahují délku, ostatní obsahují vlastní data). Skutecne obsazený
- prostor je tedy o neco málo vetsí nez deklarovaná velikost. Na druhou
- stranu, delsí retezce jsou komprimovány, takze obsazený prostor na
- disku muze být mensí nez se ceká.
-
- VARCHAR(n) je vhodný pro ukládání ruzne dlouhých retezcu u kterých
- známe délkové omezení, TEXT pro retezce bez omezení délky (maximum je
- jeden gigabyte).
-
- CHAR(n) se pouzívá pro ulození stejne dlouhých retezcu. CHAR(n) doplní
- mezerami na specifikovanou délku, VARCHAR(n) hodnoty se ukládají tak
- jak jsou. BYTEA je pro ukládání binárních dat - non ASCII hodnot.
- Vsechny zmínené typy mají podobné výkonové charakteristiky.
-
- 4.11.1) Jak vytvorit serial/auto-increment polozku?
-
- V PostgreSQL muzete pouzít datový typ SERIAL. Jeho pouzitím se
- automaticky vytvorí sekvence. Napríklad:
-CREATE TABLE person (
- id SERIAL,
- name TEXT
-);
-
- je automaticky transformováno na:
-CREATE SEQUENCE person_id_seq;
-CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
-);
-
- Podrobnejsí informace najdete v manuálu v popisu príkazu
- create_sequence.
-
- 4.11.2) Jak získat hodnotu SERIAL po vlození rádku?
-
- Nejjednodussím zpusob, jak získat vygenerovanou hodnotu typu SERIAL,
- je vyuzít klauzuli RETURNING. Pro tabulku z 4.11.1 vypadá takto:
-INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
-
- Také muzete pouzít funkci nextvall() a její výsledek pouzít v príkazu
- INSERT, nebo zavolat currval() po provedení príkazu INSERT.
-
- 4.11.3) Nezpusobí currval() a nextval() problémy ve více uzivatelském
- prostredí?
-
- Ne, currval vrací vzdy hodnotu, která byla vygenerována pro vás.
-
- 4.11.4) Proc není vygenerované císlo pouzito pri prerusení transakce?Proc
- vznikají díry v císlování prostrednictvím sekvence nebo typu SERIAL?
-
- Poté co sekvence vygeneruje nové císlo, tak se nedochází k zamcení
- sekvence a neceká se na úspesné nebo neúspesné dokoncení transakce.
- Odvoláním transakce, která si vyzádala císla sekvence se tato císla
- nenávratne ztratí.
-
- 4.12) Co to je OID? Co je to CTID?
-
- V prípade, ze tabulku nezalozíme s atributem WITHOUT OIDS, tak má
- kazdý rádek unikátní identifikacní císlo OID. Toto císlo je 4 bajtové
- celé císlo, které je jedinecné v celé instalaci. Pretece po 4
- miliardách rádku. PostgreSQL pouzívá OIDs jako interní linky v
- interních systémových tabulkách.
-
- K získání unikátního císla v nesystémových tabulkách je vhodnejsí
- pouzití typu SERIAL nez OID, jelikoz sekvence SERIAL se pouzívá pouze
- pro jednu tabulku a je tudíz méne náchylná na pretecení. Pokud byste
- se toho obávali, pouzijte typ SERIAL8.
-
- CTID se pouzívá k identifikaci konkrétního fyzického rádku. CTID se
- mení pokud je rádek modifikován nebo znovu nacten. Pouzívají ho indexy
- jako adresaci fyzických rádku.
-
- 4.13) Co znamená chybové hlásení "ERROR: Memory exhausted in
- AllocSetAlloc()"?
-
- Pravdepodobne jste vycerpal dostupnou virtuální pamet, nebo tvuj
- kernel má prílis nízké limity u urcitých zdroju. Pred startem
- PostgreSQL vyzkousejte:
-ulimit -d 262144
-limit datasize 256m
-
- Mozná, ze se projde pouze jeden príkaz - zálezí to na vasem shellu.
- Mel by zvednout limity datových segmentu vasich procesu na dostatecne
- velkou hodnotu a snad umoznit dokoncení dotazu. Zmena limitu se bude
- aplikovat pouze na aktuální proces a na vsechny nove vytvorené
- procesy. Jestlize máte problém s SQL klientem, protoze vám server
- vrátil prílis dat, zkuste to pred startem klienta.
-
- 4.14) Jak zjistím, kterou verzi PostgreSQL pouzívám?
-
- V psql napiste:
-SELECT version();
-
- 4.15) Jak vytvorit sloupec, který bude implicitne obsahovat aktuální cas?
-
- Pouzijte CURRENT_TIMESTAMP:
-CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
- 4.16) Jak provést vnejsí spojení (outer join)?
-
- PostgreSQL podporuje standardní SQL syntaxi pro vnejsí spojení. Zde
- jsou dva príklady:
-SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
- nebo
-SELECT *
-FROM t1 LEFT OUTER JOIN t2 USING (col);
-
- Tyto identické dotazy spojí sloupec t1.col k sloupci t2.col, a jeste
- vrátí vsechny nespárované rádky t2 (ty, které nedohledá v t2). RIGHT
- JOIN by pripojil vsechny nespárované rádky z t2. FULL JOIN vrátí
- vsechny spárované rádky i vsechny zbývající rádky z obou tabulek.
- Klícové slovo OUTER je volitelné. Bezná operace JOIN se také oznacuje
- jako vnitrní spojení.
-
- 4.17) Jak provést dotaz napríc nekolika databázemi?
-
- Neexistuje zádný zpusob, jak se v dotazu odkazovat na tabulky z jiné
- nez aktuální databáze. A to protoze má systémové tabulky ulozené
- nezávisle v kazdé databázi a není tak úplne zrejmé, jak by se dotaz
- provedený napríc databázemi mel chovat.
-
- Jeden z doplnku dblink umoznuje dotaz nad nekolika tabulkami pomocí
- funkcí. Druhý zpusob je simultální pripojení klienta ke vsem
- relevantním databázím a sloucení výsledku na strane klienta.
-
- 4.18) Muze funkce vrátit více rádku nebo sloupcu?
-
- Jde to jednoduse pomocí set-returning funkce. Více na
- http://www.postgresql.org/docs/techdocs.17.
-
- 4.19) Co je prícinou chyby "relation with OID xxxxx does not exist"?
-
- Nechteným vedlejsím efektem kesování SQL dotazu v PL/pgSQL funkci je
- problém s neplatnými odkazy na docasné tabulky, které byly od prvního
- spustení funkce zruseny a znovu vytvoreny pred dalsím spustením
- PL/pgSQL funkce. Resením je pouzít príkaz EXECUTE a to proto, ze
- provádecí plán SQL príkazu spousteného príkazem EXECUTE se vytvárí
- pokazdé znovu (neukládá se do cache).
-
- Tento problém by se nemel vyskytovat u PostgreSQL verze 8.3 a vyssích
- verzích.
-
- 4.20) Jaké jsou moznosti replikace databází?
-
- Replikaci databáze umoznuje nekolik technoligií. Kazdá má urcité
- výhody a nevýhody.
-
- Master/Slave replikaci podporuje jeden hlavní server, který prijímá
- pozadavky na zápis a ctení, a nekolik podrízených serveru, které
- umoznují pouze ctení (SELECT). Nejrozsírenejsím volne dostupným
- resením tohoto typu je Slony-I.
-
- Replikace typu Multi-master podporuje existenci nekolika serveru s
- povoleným zápisem na více replikovaných serverech. Toto resení zvysuje
- zátez serveru, protoze je nutná synchronizace serveru.
- Nejrozsírenejsím volne dostupným resením je PGCluster.
-
- Jeste existuje nekolik komercních a hardware resení replikací
- podporujících ruzné modely replikace.
-
- 4.21) Proc v dotazu nejsou rozpoznány názvy mých tabulek nebo funkcí? Proc
- jsou velká písmena v názvech automaticky prevedena na malá písmena?
-
- Nejcastejsím duvodem nerozpoznání názvu objektu bylo pouzití vlození
- názvu sloupce nebo tabulky mezi uvozovky pri zakládání tabulky. Pokud
- se název zapíse mezi uvozovky, pak je case sensitive, a v dusledku
- toho je nutné názvy techto sloupcu nebo tabulek v SQL príkazech také
- vkládat mezi uvozovky (pokud obsahují velká písmena). Nekteré
- programy, jako je napríklad pgAdmin, automaticky pouzívají uvozovky.
- Takze pokud chcete, aby systém identifikoval identifikátor, musíte:
- * nepouzívat uvozovky v príkazu CREATE TABLE
- * v identifikátoru pouzít pouze malá písmena
- * v dotazech vkládat identifikátory do uvozovek