|
|
|
|
<EFBFBD>asto kladen<EFBFBD> dotazy (FAQ) PostgreSQL
|
|
|
|
|
=====================================
|
|
|
|
|
|
|
|
|
|
Obecn<EFBFBD> ot<EFBFBD>zky
|
|
|
|
|
=============
|
|
|
|
|
1.1 Co je PostgreSQL? Jak se vyslovuje?
|
|
|
|
|
1.2 Jak<EFBFBD> je licence na PostgreSQL?
|
|
|
|
|
1.3 Na kter<EFBFBD>ch Unixex lze spustit PostgreSQL?
|
|
|
|
|
1.4 Kter<EFBFBD> ne-unixov<EFBFBD> platformy jsou podporovan<EFBFBD>?
|
|
|
|
|
1.5 Kde mohu z<EFBFBD>skat PostgreSQL?
|
|
|
|
|
1.6 Kde mohu z<EFBFBD>skat podporu?
|
|
|
|
|
1.7 Kde je posledn<EFBFBD> verze?
|
|
|
|
|
1.8 Jak<EFBFBD> je dostupn<EFBFBD> dokumentace?
|
|
|
|
|
1.9 Kde najdu seznam zn<EFBFBD>m<EFBFBD>ch chyb nebo nepodporovan<EFBFBD>ch vlastnost<EFBFBD>?
|
|
|
|
|
1.10 Jak se mohu nau<EFBFBD>it SQL?
|
|
|
|
|
|
|
|
|
|
1.11 Nem<EFBFBD> PostgreSQL probl<EFBFBD>my s rokem 2000?
|
|
|
|
|
1.12 Jak se p<EFBFBD>ipojit k v<EFBFBD>voj<EFBFBD><EFBFBD>sk<EFBFBD>mu t<EFBFBD>mu?
|
|
|
|
|
1.13 Kam podat report o chyb<EFBFBD>?
|
|
|
|
|
1.14 Jak je na tom PostgreSQL v porovn<EFBFBD>n<EFBFBD> s jin<EFBFBD>mi datab<EFBFBD>zemi?
|
|
|
|
|
1.15 Jak lze finan<EFBFBD>n<EFBFBD> pomoci PostgreSQL?
|
|
|
|
|
|
|
|
|
|
User client dotazy
|
|
|
|
|
==================
|
|
|
|
|
2.1 Kde naleznu ODBC ovlada<EFBFBD>e pro PostgreSQL?
|
|
|
|
|
2.2 Jak<EFBFBD> n<EFBFBD>stroje lze pou<EFBFBD><EFBFBD>t pro PostgreSQL a web?
|
|
|
|
|
2.3 Existuje grafick<EFBFBD> rozhran<EFBFBD> pro PostgreSQL?
|
|
|
|
|
2.4 Kter<EFBFBD> programovac<EFBFBD> jazyky maj<EFBFBD> podporu pro PostgreSQL?
|
|
|
|
|
|
|
|
|
|
Administrativn<EFBFBD> dotazy
|
|
|
|
|
======================
|
|
|
|
|
3.1 Jak nainstalovat PostgreSQL jinam ne<EFBFBD> do /usr/local/pgsql?
|
|
|
|
|
3.2 P<EFBFBD>i startu postmaster, dostanu chybov<EFBFBD> hl<EFBFBD><EFBFBD>en<EFBFBD> Bad System Call nebo
|
|
|
|
|
core dump. Pro<EFBFBD>? 3.3 P<EFBFBD>i startu postmastera dostanu hl<EFBFBD><EFBFBD>en<EFBFBD> o chyb<EFBFBD>
|
|
|
|
|
IpcMemoryCreate. Pro<EFBFBD>? 3.4 P<EFBFBD>i startu postmastera dostanu hl<EFBFBD><EFBFBD>en<EFBFBD> o
|
|
|
|
|
chyb<EFBFBD> IpcSemaphoreCreate. Pro<EFBFBD>? 3.5 Jak povolit nebo zak<EFBFBD>zat p<EFBFBD><EFBFBD>stup z
|
|
|
|
|
jin<EFBFBD>ch stanic? 3.6 Jak ladit datab<EFBFBD>zov<EFBFBD> stroj na lep<EFBFBD><EFBFBD> v<EFBFBD>kon?
|
|
|
|
|
|
|
|
|
|
3.7 Jak<EFBFBD> jsou mo<EFBFBD>nosti lad<EFBFBD>n<EFBFBD>?
|
|
|
|
|
3.8 Pro<EFBFBD> dostanu "Sorry, too many clients", kdy<EFBFBD> se zkou<EFBFBD><EFBFBD>m p<EFBFBD>ipojit?
|
|
|
|
|
3.9 K <EFBFBD>emu slou<EFBFBD><EFBFBD> adres<EFBFBD><EFBFBD> pgsql_tmp?
|
|
|
|
|
|
|
|
|
|
3.10 Pro<EFBFBD> je po<EFBFBD>adov<EFBFBD>no dump a obnoven<EFBFBD> (load) datab<EFBFBD>ze b<EFBFBD>hem upgrade
|
|
|
|
|
mezi velk<EFBFBD>mi verzemi PostgreSQL?
|
|
|
|
|
|
|
|
|
|
Provozn<EFBFBD> dotazy
|
|
|
|
|
===============
|
|
|
|
|
4.1 <EFBFBD><EFBFBD>m se li<EFBFBD><EFBFBD> bin<EFBFBD>rn<EFBFBD> a norm<EFBFBD>ln<EFBFBD> kurzor?
|
|
|
|
|
4.2 Jak z<EFBFBD>skat pouze prvn<EFBFBD> <EFBFBD><EFBFBD>dek dotazu? N<EFBFBD>hodn<EFBFBD> <EFBFBD><EFBFBD>dek?
|
|
|
|
|
4.3 Jak z<EFBFBD>sk<EFBFBD>m seznam tabulek nebo jinak jak jej z<EFBFBD>sk<EFBFBD> psql?
|
|
|
|
|
4.4 Jak odstran<EFBFBD>m sloupec tabulky, jak zm<EFBFBD>n<EFBFBD>m jeho typ?
|
|
|
|
|
4.5 Jak<EFBFBD> je maxim<EFBFBD>ln<EFBFBD> velikost <EFBFBD><EFBFBD>dku, tabulky a datab<EFBFBD>ze?
|
|
|
|
|
4.6 Kolik diskov<EFBFBD>ho prostoru je pot<EFBFBD>eba k ulo<EFBFBD>en<EFBFBD> dat z norm<EFBFBD>ln<EFBFBD>ho
|
|
|
|
|
textov<EFBFBD>ho souboru? 4.7 Jak z<EFBFBD>sk<EFBFBD>m seznam vytvo<EFBFBD>en<EFBFBD>ch tabulek, index<EFBFBD>,
|
|
|
|
|
datab<EFBFBD>z<EFBFBD>? 4.8 M<EFBFBD>j dotaz je pomal<EFBFBD> a nepou<EFBFBD><EFBFBD>v<EFBFBD> vytvo<EFBFBD>en<EFBFBD> indexy. Pro<EFBFBD>?
|
|
|
|
|
4.9 Jak zjist<EFBFBD>m, jak optimizer dotazu vyhodnocuje m<EFBFBD>j dotaz?
|
|
|
|
|
|
|
|
|
|
4.10 Co to je R-tree index?
|
|
|
|
|
4.11 Co je Genetic Query Optimizer?
|
|
|
|
|
4.12 Jak prov<EFBFBD>st vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> regul<EFBFBD>rn<EFBFBD>ho v<EFBFBD>razu case sensitiv,
|
|
|
|
|
insensitiv? Jak pou<EFBFBD><EFBFBD>t index pro case insensitive vyhled<EFBFBD>v<EFBFBD>n<EFBFBD>? 4.13 Jak
|
|
|
|
|
v dotazu detekovat, <EFBFBD>e polo<EFBFBD>ka je NULL? 4.14 Jak<EFBFBD> jsou rozd<EFBFBD>ly mezi
|
|
|
|
|
r<EFBFBD>zn<EFBFBD>mi znakov<EFBFBD>mi typy? 4.15.1 Jak vytvo<EFBFBD>it serial/auto-increment pole?
|
|
|
|
|
4.15.2 Jak z<EFBFBD>skat hodnotu SERIAL po vlo<EFBFBD>en<EFBFBD> <EFBFBD><EFBFBD>dku?
|
|
|
|
|
|
|
|
|
|
4.15.3 Nepovede currval() a nextval() k rozhozen<EFBFBD> podm<EFBFBD>nek p<EFBFBD>i soub<EFBFBD>hu s
|
|
|
|
|
jin<EFBFBD>mi u<EFBFBD>ivateli? 4.15.4 Pro<EFBFBD> nen<EFBFBD> vygenerovan<EFBFBD> <EFBFBD><EFBFBD>slo pou<EFBFBD>ito p<EFBFBD>i
|
|
|
|
|
p<EFBFBD>eru<EFBFBD>en<EFBFBD> transakce? Pro<EFBFBD> vznikaj<EFBFBD> d<EFBFBD>ry v <EFBFBD><EFBFBD>slov<EFBFBD>n<EFBFBD> vlastn<EFBFBD>
|
|
|
|
|
sekvenc<EFBFBD>/SERIAL sloupce? 4.16 Co to je OID? Co je to TID?
|
|
|
|
|
|
|
|
|
|
4.17 Jak<EFBFBD> je v<EFBFBD>znam n<EFBFBD>kter<EFBFBD>ch v<EFBFBD>raz<EFBFBD> pou<EFBFBD>it<EFBFBD>ch v PostgreSQL?
|
|
|
|
|
4.18 Pro<EFBFBD> jsem z<EFBFBD>skal chybov<EFBFBD> hl<EFBFBD><EFBFBD>en<EFBFBD> "ERROR: Memory exhausted in
|
|
|
|
|
AllocSetAlloc()"? 4.19 Jak se dozv<EFBFBD>m, kterou verzi PostgreSQL pou<EFBFBD><EFBFBD>v<EFBFBD>m?
|
|
|
|
|
4.20 Pro<EFBFBD> operace s velk<EFBFBD>mi objekty kon<EFBFBD><EFBFBD> "invalid large obj
|
|
|
|
|
descriptor"? 4.21 Jak vytvo<EFBFBD>it sloupec obsahuj<EFBFBD>c<EFBFBD> implicitn<EFBFBD> aktu<EFBFBD>ln<EFBFBD>
|
|
|
|
|
datum? 4.22 Pro<EFBFBD> jsou moje vno<EFBFBD>en<EFBFBD> dotazy pou<EFBFBD><EFBFBD>vaj<EFBFBD>c<EFBFBD> IN tak pomal<EFBFBD>?
|
|
|
|
|
4.23 Jak prov<EFBFBD>st vn<EFBFBD>j<EFBFBD><EFBFBD> spojen<EFBFBD> (outer join)?
|
|
|
|
|
|
|
|
|
|
4.24 Jak prov<EFBFBD>st dotaz nap<EFBFBD><EFBFBD><EFBFBD> n<EFBFBD>kolika datab<EFBFBD>zemi?
|
|
|
|
|
4.25 M<EFBFBD><EFBFBD>e funkce vr<EFBFBD>tit v<EFBFBD>ce <EFBFBD><EFBFBD>dk<EFBFBD> nebo sloupc<EFBFBD>?
|
|
|
|
|
4.26 Pro<EFBFBD> nelze spolehliv<EFBFBD> vytv<EFBFBD><EFBFBD>et a ru<EFBFBD>it do<EFBFBD>asn<EFBFBD> tabulky v PL/pgSQL
|
|
|
|
|
funkc<EFBFBD>ch? 4.27 Jak<EFBFBD> jsou mo<EFBFBD>nosti replikace datab<EFBFBD>z<EFBFBD>?
|
|
|
|
|
|
|
|
|
|
4.28 Jak<EFBFBD> jsou mo<EFBFBD>nosti <EFBFBD>ifrov<EFBFBD>n<EFBFBD> datab<EFBFBD>z<EFBFBD>?
|
|
|
|
|
|
|
|
|
|
Roz<EFBFBD>i<EFBFBD>ov<EFBFBD>n<EFBFBD> PostgreSQL
|
|
|
|
|
======================
|
|
|
|
|
5.1 Napsal jsem UDF funkci, PostgreSQL v<EFBFBD>ak kon<EFBFBD><EFBFBD> dump core?
|
|
|
|
|
5.2 Jak mohu p<EFBFBD>isp<EFBFBD>t n<EFBFBD>jak<EFBFBD>mi <EFBFBD>ikovn<EFBFBD>mi datov<EFBFBD>mi typy a funkcemi do
|
|
|
|
|
PostgreSQL? 5.3 Jak napsat funkci v C vracej<EFBFBD>c<EFBFBD> ntici?
|
|
|
|
|
|
|
|
|
|
5.4 Modifikoval jsem zdrojov<EFBFBD> soubory. Tato zm<EFBFBD>na nebyla p<EFBFBD>i rekompilaci
|
|
|
|
|
vzata v potaz. Pro<EFBFBD>?
|
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Obecn<EFBFBD> ot<EFBFBD>zky
|
|
|
|
|
=============
|
|
|
|
|
|
|
|
|
|
1.1 Co je PostgreSQL? Jak se vyslovuje?
|
|
|
|
|
---------------------------------------
|
|
|
|
|
|
|
|
|
|
PostgreSQL se vyslovuje Post-Gres-Q-L.
|
|
|
|
|
|
|
|
|
|
PostgreSQL vych<EFBFBD>z<EFBFBD> z datab<EFBFBD>ze POSTGRES - v<EFBFBD>zkumn<EFBFBD>ho prototypu DBMS nov<EFBFBD>
|
|
|
|
|
generace. Z postgresu byl p<EFBFBD>evzat siln<EFBFBD> datov<EFBFBD> model a bohat<EFBFBD> soubor
|
|
|
|
|
datov<EFBFBD>ch typ<EFBFBD> a jeho dotazovac<EFBFBD> jazyk PostQuel byl nahrazen roz<EFBFBD><EFBFBD><EFBFBD>enou
|
|
|
|
|
podmno<EFBFBD>inou jazyka SQL. PostgreSQL lze pou<EFBFBD><EFBFBD>vat bez omezen<EFBFBD> a jeho
|
|
|
|
|
zdrojov<EFBFBD> k<EFBFBD>dy jsou voln<EFBFBD> k dispozici.
|
|
|
|
|
|
|
|
|
|
PostgreSQL vyv<EFBFBD>j<EFBFBD> t<EFBFBD>m v<EFBFBD>voj<EFBFBD><EFBFBD><EFBFBD> p<EFBFBD>ihl<EFBFBD><EFBFBD>en<EFBFBD>ch do v<EFBFBD>voj<EFBFBD><EFBFBD>sk<EFBFBD> konference
|
|
|
|
|
PostgreSQL. Sou<EFBFBD>asn<EFBFBD>m koordin<EFBFBD>torem je Marc G. Fournier. (Odpov<EFBFBD><EFBFBD> 1.6. -
|
|
|
|
|
jak se zapojit). Tento t<EFBFBD>m je zodpov<EFBFBD>dn<EFBFBD> za ve<EFBFBD>ker<EFBFBD> v<EFBFBD>voj PostgreSQL.
|
|
|
|
|
|
|
|
|
|
Autory prvn<EFBFBD> verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
|
|
|
|
|
portace, testov<EFBFBD>n<EFBFBD>, lad<EFBFBD>n<EFBFBD> a roz<EFBFBD>i<EFBFBD>ov<EFBFBD>n<EFBFBD> k<EFBFBD>du se zapojilo mnoho dal<EFBFBD><EFBFBD>ch
|
|
|
|
|
v<EFBFBD>voj<EFBFBD><EFBFBD><EFBFBD> . P<EFBFBD>vodni k<EFBFBD>d Postgresu, ze kter<EFBFBD>ho PostgreSQL vych<EFBFBD>z<EFBFBD>, je
|
|
|
|
|
v<EFBFBD>sledkem <EFBFBD>sil<EFBFBD> mnoha student<EFBFBD> a program<EFBFBD>tor<EFBFBD> pracuj<EFBFBD>c<EFBFBD>ch pod veden<EFBFBD>m
|
|
|
|
|
prof. Michaela Stonebrakera na University of California v Berkley.
|
|
|
|
|
|
|
|
|
|
P<EFBFBD>vodn<EFBFBD> n<EFBFBD>zev software z Berkley byl Postgres. Po p<EFBFBD>id<EFBFBD>n<EFBFBD> jazyka SQL se
|
|
|
|
|
n<EFBFBD>zev zm<EFBFBD>nil na Postgres95. Koncem roku 1996 byl RDBMS p<EFBFBD>ejmenov<EFBFBD>n na
|
|
|
|
|
PostgreSQL.
|
|
|
|
|
|
|
|
|
|
1.2 Jak<EFBFBD> je licence na PostgreSQL?
|
|
|
|
|
----------------------------------
|
|
|
|
|
|
|
|
|
|
PostgreSQL je p<EFBFBD>edm<EFBFBD>tem n<EFBFBD>sleduj<EFBFBD>c<EFBFBD>ch autorsk<EFBFBD>ch pr<EFBFBD>v:
|
|
|
|
|
|
|
|
|
|
D<EFBFBD>l<EFBFBD><EFBFBD> copyright (c) 1996-2002, PostgreSQL Global Development Group
|
|
|
|
|
|
|
|
|
|
D<EFBFBD>l<EFBFBD><EFBFBD> copyright (c) 1994-6, Regents of the University of California
|
|
|
|
|
|
|
|
|
|
Ud<EFBFBD>luje se opr<EFBFBD>vn<EFBFBD>n<EFBFBD> k u<EFBFBD>it<EFBFBD>, rozmno<EFBFBD>ov<EFBFBD>n<EFBFBD>, prov<EFBFBD>d<EFBFBD>n<EFBFBD> <EFBFBD>prav a
|
|
|
|
|
roz<EFBFBD>i<EFBFBD>ov<EFBFBD>n<EFBFBD> tohoto softwaru a dokumentace k n<EFBFBD>mu, pro jak<EFBFBD>koli <EFBFBD><EFBFBD>ely,
|
|
|
|
|
bez licen<EFBFBD>n<EFBFBD>ho poplatku a bez p<EFBFBD>semn<EFBFBD> licen<EFBFBD>n<EFBFBD> smlouvy, za podm<EFBFBD>nky, <EFBFBD>e
|
|
|
|
|
na v<EFBFBD>ech jeho kopi<EFBFBD>ch je uvedeno ozn<EFBFBD>men<EFBFBD> o v<EFBFBD><EFBFBD>e uveden<EFBFBD>ch pr<EFBFBD>vech,
|
|
|
|
|
jako<EFBFBD> i obsah tohoto a dvou n<EFBFBD>sleduj<EFBFBD>c<EFBFBD>ch odstavc<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK<EFBFBD> UNIVERZITA") NEN<EFBFBD> V <EFBFBD><EFBFBD>DN<EFBFBD>M
|
|
|
|
|
P<EFBFBD><EFBFBD>PAD<EFBFBD> ODPOV<EFBFBD>DNA <EFBFBD><EFBFBD>DN<EFBFBD> T<EFBFBD>ET<EFBFBD> OSOB<EFBFBD> ZA P<EFBFBD><EFBFBD>MOU, NEP<EFBFBD><EFBFBD>MOU, ZVL<EFBFBD><EFBFBD>TN<EFBFBD>,
|
|
|
|
|
NAHODILOU NEBO V<EFBFBD>SLEDNOU <EFBFBD>KODU, V<EFBFBD>ETN<EFBFBD> U<EFBFBD>L<EFBFBD>HO ZISKU, ZP<EFBFBD>SOBENOU U<EFBFBD>IT<EFBFBD>M
|
|
|
|
|
TOHOTO SOFTWARU A DOKUMENTACE K N<EFBFBD>MU, A TO I V P<EFBFBD><EFBFBD>PAD<EFBFBD>, <EFBFBD>E THE
|
|
|
|
|
UNIVERSITY OF CALIFORNIA BYLA INFORMOV<EFBFBD>NA O MO<EFBFBD>NOSTI VZNIKU TAKOV<EFBFBD>
|
|
|
|
|
<EFBFBD>KODY.
|
|
|
|
|
|
|
|
|
|
THE UNIVERSITY OF CALIFORNIA ZEJM<EFBFBD>NA NEPOSKYTUJE JAK<EFBFBD>KOLI Z<EFBFBD>RUKY, A TO
|
|
|
|
|
NEJEN Z<EFBFBD>RUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO V<EFBFBD>ROBKU KE SPECIFICK<EFBFBD>M
|
|
|
|
|
<EFBFBD><EFBFBD>EL<EFBFBD>M. NͮE UVEDEN<EFBFBD> SOFTWARE JE POSKYTNUT "JAK STOJ<EFBFBD> A LE<EFBFBD><EFBFBD>" A THE
|
|
|
|
|
UNIVERSITY OF CALIFORNIA NEN<EFBFBD> POVINNA ZAJISTIT JEHO <EFBFBD>DR<EFBFBD>BU, PODPORU,
|
|
|
|
|
AKTUALIZACI, VYLEP<EFBFBD>EN<EFBFBD> NEBO MODIFIKACI.
|
|
|
|
|
|
|
|
|
|
V<EFBFBD><EFBFBD>e uveden<EFBFBD> je BSD licence, b<EFBFBD><EFBFBD>n<EFBFBD> licence otev<EFBFBD>en<EFBFBD>ho zdroje. Nen<EFBFBD> zde
|
|
|
|
|
<EFBFBD><EFBFBD>dn<EFBFBD> omezen<EFBFBD> ohledn<EFBFBD> u<EFBFBD>it<EFBFBD> k<EFBFBD>du zdroje. Jsme s t<EFBFBD>m spokojeni a nem<EFBFBD>me v
|
|
|
|
|
<EFBFBD>myslu na t<EFBFBD>to skute<EFBFBD>nosti cokoli m<EFBFBD>nit.
|
|
|
|
|
|
|
|
|
|
1.3 Na kter<EFBFBD>ch Unixex lze spustit PostgreSQL?
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
|
|
|
|
|
PostgreSQL b<EFBFBD><EFBFBD><EFBFBD> na v<EFBFBD>ech modern<EFBFBD>ch unixov<EFBFBD>ch platform<EFBFBD>ch. V instala<EFBFBD>n<EFBFBD>ch
|
|
|
|
|
instrukc<EFBFBD>ch naleznete aktu<EFBFBD>ln<EFBFBD> seznam v<EFBFBD>ech platforem na kter<EFBFBD>ch byla
|
|
|
|
|
testov<EFBFBD>n<EFBFBD>m ov<EFBFBD><EFBFBD>ena funkcionalita PostgreSQL.
|
|
|
|
|
|
|
|
|
|
1.4 Kter<EFBFBD> ne-unixov<EFBFBD> platformy jsou podporovan<EFBFBD>?
|
|
|
|
|
------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Klient
|
|
|
|
|
------
|
|
|
|
|
|
|
|
|
|
Knihovna libpq, psql a n<EFBFBD>kter<EFBFBD> dal<EFBFBD><EFBFBD> moduly byly p<EFBFBD>elo<EFBFBD>eny pro MS
|
|
|
|
|
Windows. Klienta lze provozovat na MS Windows, ten prost<EFBFBD>ednictv<EFBFBD>m
|
|
|
|
|
TCP/IP protokolu komunikuje se serverem b<EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>m na n<EFBFBD>kter<EFBFBD> z
|
|
|
|
|
podporovan<EFBFBD>ch Unixov<EFBFBD>ch platforem. K p<EFBFBD>ekladu lze pou<EFBFBD><EFBFBD>t win32.mak a
|
|
|
|
|
Win32 knihovny libpq a psql. K datab<EFBFBD>zi PostgerSQL lze p<EFBFBD>istupovat skrze
|
|
|
|
|
rozhran<EFBFBD> ODBC.
|
|
|
|
|
|
|
|
|
|
Server
|
|
|
|
|
------
|
|
|
|
|
|
|
|
|
|
Server m<EFBFBD><EFBFBD>e b<EFBFBD>t na WindowsNT a Win2k provozov<EFBFBD>n pouze s knihovnou
|
|
|
|
|
Cygwin, Cygnus Unix/NT porting library. Na nativn<EFBFBD>m portu pro MS Win
|
|
|
|
|
NT/2000/XP se pracuje. Existuj<EFBFBD>c<EFBFBD> port pro Novell Netware 6 naleznete na
|
|
|
|
|
http://forge.novell.com.
|
|
|
|
|
|
|
|
|
|
1.5 Kde mohu z<EFBFBD>skat PostgreSQL?
|
|
|
|
|
-------------------------------
|
|
|
|
|
|
|
|
|
|
Prim<EFBFBD>rn<EFBFBD>m anonymn<EFBFBD>m ftp serverem pro PostgreSQL je
|
|
|
|
|
ftp://ftp.PostgreSQL.org/pub . Seznam zrcadel naleznete na na<EFBFBD>ich
|
|
|
|
|
webov<EFBFBD>ch str<EFBFBD>nk<EFBFBD>ch.
|
|
|
|
|
|
|
|
|
|
1.6 Kde mohu z<EFBFBD>skat podporu?
|
|
|
|
|
----------------------------
|
|
|
|
|
|
|
|
|
|
Hlavn<EFBFBD>m mailov<EFBFBD> konference je pgsql-general@PostgreSQL.org. Slou<EFBFBD><EFBFBD> k
|
|
|
|
|
diskuz<EFBFBD>m ohledn<EFBFBD> PostgreSQL. P<EFBFBD>ihl<EFBFBD>s<EFBFBD>te se zasl<EFBFBD>n<EFBFBD>m mailu obsahuj<EFBFBD>c<EFBFBD>
|
|
|
|
|
n<EFBFBD>sleduj<EFBFBD>c<EFBFBD> <EFBFBD><EFBFBD>dky v t<EFBFBD>le dopisu (nikoliv v z<EFBFBD>hlav<EFBFBD> - subjectu)
|
|
|
|
|
|
|
|
|
|
subscribe
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
na adresu mailto:pgsql-general-request@PostgreSQL.org.
|
|
|
|
|
|
|
|
|
|
M<EFBFBD><EFBFBD>ete si vy<EFBFBD><EFBFBD>dat denn<EFBFBD> p<EFBFBD>ehled (diggest), kter<EFBFBD> m<EFBFBD> zhruba 30K denn<EFBFBD>
|
|
|
|
|
zpr<EFBFBD>v.
|
|
|
|
|
|
|
|
|
|
Konference psql-bugs je ur<EFBFBD>ena k zas<EFBFBD>l<EFBFBD>n<EFBFBD> zpr<EFBFBD>v o chyb<EFBFBD>ch. Pro
|
|
|
|
|
p<EFBFBD>ihl<EFBFBD><EFBFBD>en<EFBFBD> po<EFBFBD>lete mail se stejn<EFBFBD>m obsahem jako v p<EFBFBD>edchoz<EFBFBD>m p<EFBFBD><EFBFBD>pad<EFBFBD> na
|
|
|
|
|
adresu mailto:pgsql-bugs-request@PostgreSQL.org.
|
|
|
|
|
|
|
|
|
|
Do v<EFBFBD>voj<EFBFBD><EFBFBD>sk<EFBFBD> konference se p<EFBFBD>ihl<EFBFBD>s<EFBFBD>te odesl<EFBFBD>n<EFBFBD>m dopisu s ji<EFBFBD> zmi<EFBFBD>ovan<EFBFBD>m
|
|
|
|
|
obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.
|
|
|
|
|
|
|
|
|
|
Seznam dal<EFBFBD><EFBFBD>ch konferenc<EFBFBD> naleznete na str<EFBFBD>nk<EFBFBD>ch PostgreSQL
|
|
|
|
|
http://www.postgresql.org
|
|
|
|
|
|
|
|
|
|
1.7 Kde je posledn<EFBFBD> verze?
|
|
|
|
|
--------------------------
|
|
|
|
|
|
|
|
|
|
Posledn<EFBFBD> verz<EFBFBD> je PostgreSQL 7.4.. Pl<EFBFBD>nujeme uvolnit velkou verzi
|
|
|
|
|
ka<EFBFBD>d<EFBFBD>ch <EFBFBD>est a<EFBFBD> osm m<EFBFBD>s<EFBFBD>c<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
1.8 Jak<EFBFBD> je dostupn<EFBFBD> dokumentace?
|
|
|
|
|
---------------------------------
|
|
|
|
|
|
|
|
|
|
R<EFBFBD>zn<EFBFBD> manu<EFBFBD>ly, manu<EFBFBD>lov<EFBFBD> str<EFBFBD>nky a n<EFBFBD>kolik mal<EFBFBD>ch testovac<EFBFBD>ch p<EFBFBD><EFBFBD>klad<EFBFBD>
|
|
|
|
|
jsou sou<EFBFBD><EFBFBD>sti distribuce. Pod<EFBFBD>vejte se do adres<EFBFBD><EFBFBD>e /doc. Manu<EFBFBD>ly jsou
|
|
|
|
|
p<EFBFBD><EFBFBD>stupn<EFBFBD> online na http://www.PostgreSQL.org/docs.
|
|
|
|
|
|
|
|
|
|
Na adres<EFBFBD>ch http://www.PostgreSQL.org/docs/awbook.html a
|
|
|
|
|
http://www.commandprompt.com/ppbook/ naleznezte dv<EFBFBD> online knihy o
|
|
|
|
|
PostgreSQL. Seznam dostupn<EFBFBD> literatury je na
|
|
|
|
|
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Soubor
|
|
|
|
|
technick<EFBFBD>ch <EFBFBD>l<EFBFBD>nk<EFBFBD> s tematikou PostgresQL najdete na
|
|
|
|
|
http://techdocs.PostgreSQL.org/.
|
|
|
|
|
|
|
|
|
|
psql m<EFBFBD> u<EFBFBD>ite<EFBFBD>n<EFBFBD> metap<EFBFBD><EFBFBD>kaz \d slou<EFBFBD><EFBFBD>c<EFBFBD> k zobrazen<EFBFBD> informac<EFBFBD> o typech,
|
|
|
|
|
oper<EFBFBD>torech, funkc<EFBFBD>, agrega<EFBFBD>n<EFBFBD>ch funkc<EFBFBD> atd.
|
|
|
|
|
|
|
|
|
|
V<EFBFBD>ce dokumentace naleznete na na<EFBFBD>ich webov<EFBFBD>ch str<EFBFBD>nk<EFBFBD>ch.
|
|
|
|
|
|
|
|
|
|
1.9 Kde najdu seznam zn<EFBFBD>m<EFBFBD>ch chyb nebo nepodporovan<EFBFBD>ch vlastnost<EFBFBD>?
|
|
|
|
|
------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
PostgreSQL podporuje roz<EFBFBD><EFBFBD><EFBFBD>enou podmno<EFBFBD>inu SQL-92. V na<EFBFBD>em TODO [1]
|
|
|
|
|
najdete seznam zn<EFBFBD>m<EFBFBD>ch chyb, chyb<EFBFBD>j<EFBFBD>c<EFBFBD>ch vlastnost<EFBFBD> a seznam vlastnost<EFBFBD>,
|
|
|
|
|
kter<EFBFBD> budou do syst<EFBFBD>mu implementov<EFBFBD>ny v budoucnu (v<EFBFBD>etn<EFBFBD> priorit).
|
|
|
|
|
|
|
|
|
|
1.10 Jak se mohu nau<EFBFBD>it SQL?
|
|
|
|
|
----------------------------
|
|
|
|
|
|
|
|
|
|
V knize The PostgreSQL book na
|
|
|
|
|
http://www.PostgreSQL.org/docs/awbook.html je vysv<EFBFBD>tlen jazyk SQL (vy<EFBFBD>la
|
|
|
|
|
<EFBFBD>esky). Dal<EFBFBD><EFBFBD> dostupnou knihou je http://www.commandprompt.com/ppbook.
|
|
|
|
|
Kvalitn<EFBFBD> n<EFBFBD>vody naleznete na
|
|
|
|
|
http://www.intermedia.net/support/sql/sqltut.shtm, na
|
|
|
|
|
http://www.intermedia.net/support/sql/sqltut.shtm [2] , a na
|
|
|
|
|
http://sqlcourse.com.
|
|
|
|
|
|
|
|
|
|
Dal<EFBFBD><EFBFBD> je Teach Yourself SQL in 21 days, Second Edition na
|
|
|
|
|
http://members.tripod.com/er4ebus/sql/index.htm.
|
|
|
|
|
|
|
|
|
|
Mnoho u<EFBFBD>ivatel<EFBFBD> doporu<EFBFBD>uje The Practical SQL Handbook, Bowman, Judith
|
|
|
|
|
S., et al., Addison-Wesley. Jin<EFBFBD> preferuj<EFBFBD> The Complete Reference SQL,
|
|
|
|
|
Groff et al., McGraw-Hill.
|
|
|
|
|
|
|
|
|
|
1.11 Nem<EFBFBD> PostgreSQL probl<EFBFBD>my s rokem 2000?
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
|
|
|
|
Nem<EFBFBD>, m<EFBFBD><EFBFBD>eme pracovat s datumy po roce 2000 na<EFBFBD>eho letopo<EFBFBD>tu i p<EFBFBD>ed
|
|
|
|
|
rokem 2000 p<EFBFBD>.n.l.
|
|
|
|
|
|
|
|
|
|
1.12 Jak se p<EFBFBD>ipojit k v<EFBFBD>voj<EFBFBD><EFBFBD>sk<EFBFBD>mu t<EFBFBD>mu?
|
|
|
|
|
-----------------------------------------
|
|
|
|
|
|
|
|
|
|
Nejd<EFBFBD><EFBFBD>ve si st<EFBFBD>hn<EFBFBD>te nejnov<EFBFBD>j<EFBFBD><EFBFBD> zdroje a p<EFBFBD>e<EFBFBD>t<EFBFBD>te si v<EFBFBD>voj<EFBFBD><EFBFBD>skou
|
|
|
|
|
dokumentaci na na<EFBFBD>em webu nebo v distribuci. Pak se p<EFBFBD>ihla<EFBFBD>te do
|
|
|
|
|
konferenc<EFBFBD> pgsql-hackers a pgsql-patches. Kvalitn<EFBFBD> z<EFBFBD>platy pos<EFBFBD>lejte do
|
|
|
|
|
pgsql-patches.
|
|
|
|
|
|
|
|
|
|
Pr<EFBFBD>vo commit m<EFBFBD> v cvs archivu asi t<EFBFBD>in<EFBFBD>cti lid<EFBFBD>. Ka<EFBFBD>d<EFBFBD> z nich poslal
|
|
|
|
|
mnoho kvalitn<EFBFBD>ch z<EFBFBD>plat, tak<EFBFBD>e tehdej<EFBFBD><EFBFBD> commiters m<EFBFBD>li jistotu, <EFBFBD>e budou
|
|
|
|
|
p<EFBFBD>edkl<EFBFBD>dat jenom kvalitn<EFBFBD> z<EFBFBD>platy a mohli jim p<EFBFBD>ed<EFBFBD>lit v<EFBFBD>t<EFBFBD><EFBFBD> pr<EFBFBD>va.
|
|
|
|
|
|
|
|
|
|
1.13 Kam podat report o chyb<EFBFBD>?
|
|
|
|
|
------------------------------
|
|
|
|
|
|
|
|
|
|
Nav<EFBFBD>tivte na<EFBFBD>i PostgreSQL BugTool str<EFBFBD>nku na
|
|
|
|
|
http://www.PostgreSQL.org/bugs/bugs.php, kter<EFBFBD> obsahuje n<EFBFBD>vod a sm<EFBFBD>rnice
|
|
|
|
|
jak podat chybov<EFBFBD> report.
|
|
|
|
|
|
|
|
|
|
Ov<EFBFBD><EFBFBD>te si na na<EFBFBD>em ftp serveru ftp://ftp.PostgreSQL.org/pub, zda-li m<EFBFBD>te
|
|
|
|
|
nejnov<EFBFBD>j<EFBFBD><EFBFBD> verzi PostgreSQL a zda-li k n<EFBFBD> neexistuj<EFBFBD> n<EFBFBD>jak<EFBFBD> z<EFBFBD>platy.
|
|
|
|
|
|
|
|
|
|
1.14 Jak je na tom PostgreSQL v porovn<EFBFBD>n<EFBFBD> s jin<EFBFBD>mi datab<EFBFBD>zemi?
|
|
|
|
|
--------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Existuje n<EFBFBD>kolik hledisek jak porovn<EFBFBD>vat software: vlastnosti, v<EFBFBD>kon,
|
|
|
|
|
spolehlivost, podpora a cena.
|
|
|
|
|
|
|
|
|
|
Vlastnosti
|
|
|
|
|
----------
|
|
|
|
|
|
|
|
|
|
PostgreSQL m<EFBFBD> hodn<EFBFBD> spole<EFBFBD>n<EFBFBD>ch vlastnost<EFBFBD> s velk<EFBFBD>mi komer<EFBFBD>n<EFBFBD>mi DBMS,
|
|
|
|
|
nap<EFBFBD>. transakce, vno<EFBFBD>en<EFBFBD> dotazy, spou<EFBFBD>t<EFBFBD>, pohledy, kontrolu referen<EFBFBD>n<EFBFBD>
|
|
|
|
|
integrity a sofistikovan<EFBFBD> zamyk<EFBFBD>n<EFBFBD>. Podporuje n<EFBFBD>kter<EFBFBD> vlastnosti, kter<EFBFBD>
|
|
|
|
|
tyto syst<EFBFBD>my nemaj<EFBFBD>, u<EFBFBD>ivatelem definovan<EFBFBD> typy, d<EFBFBD>di<EFBFBD>nost, pravidla,
|
|
|
|
|
MVCC redukuj<EFBFBD>c<EFBFBD> zamyk<EFBFBD>n<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
V<EFBFBD>kon
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
V<EFBFBD>konnostn<EFBFBD> je na tom PostgreSQL podobn<EFBFBD> jako dal<EFBFBD><EFBFBD> komer<EFBFBD>n<EFBFBD> ale i open
|
|
|
|
|
source datab<EFBFBD>ze, v n<EFBFBD><EFBFBD>em je rychlej<EFBFBD><EFBFBD>, jindy pomalej<EFBFBD><EFBFBD>. V porovn<EFBFBD>n<EFBFBD> s
|
|
|
|
|
MySQL a podobn<EFBFBD>mi datab<EFBFBD>zov<EFBFBD>mi syst<EFBFBD>my je PostgreSQL rychlej<EFBFBD><EFBFBD> p<EFBFBD>i
|
|
|
|
|
v<EFBFBD>ceu<EFBFBD>ivatelsk<EFBFBD>m p<EFBFBD><EFBFBD>stupu, slo<EFBFBD>it<EFBFBD>j<EFBFBD><EFBFBD>ch dotazech a zat<EFBFBD><EFBFBD>en<EFBFBD> read/write
|
|
|
|
|
dotazy. MySQL je rychlej<EFBFBD><EFBFBD> v jednodu<EFBFBD><EFBFBD><EFBFBD>ch dotazech s mal<EFBFBD>m po<EFBFBD>tem
|
|
|
|
|
u<EFBFBD>ivatel<EFBFBD>. Nav<EFBFBD>c, MySQL nepodporuje mnoh<EFBFBD> vlatnosti zm<EFBFBD>n<EFBFBD>n<EFBFBD> v sekci
|
|
|
|
|
vlastnosti. Zapracovali jsme na spolehlivosti a podporovan<EFBFBD>ch
|
|
|
|
|
vlastnostech, a v<EFBFBD>kon zvy<EFBFBD>ujeme v ka<EFBFBD>d<EFBFBD> verzi. Zaj<EFBFBD>mavou str<EFBFBD>nku
|
|
|
|
|
porovn<EFBFBD>vaj<EFBFBD>c<EFBFBD> PostgreSQL a MySQL naleznete na
|
|
|
|
|
http://openacs.org/philosophy/why-not-mysql.html. Za v<EFBFBD>vojem MySQL nen<EFBFBD>
|
|
|
|
|
Open Source komunita, ale komer<EFBFBD>n<EFBFBD> spole<EFBFBD>nost, p<EFBFBD>esto<EFBFBD>e svoje produkty
|
|
|
|
|
distribuuje jako Open Source.
|
|
|
|
|
|
|
|
|
|
Spolehlivost
|
|
|
|
|
------------
|
|
|
|
|
|
|
|
|
|
Jsme si v<EFBFBD>domi, <EFBFBD>e datab<EFBFBD>ze mus<EFBFBD> b<EFBFBD>t spolehliv<EFBFBD>, jinak je nepou<EFBFBD>iteln<EFBFBD>.
|
|
|
|
|
Sna<EFBFBD><EFBFBD>me se zve<EFBFBD>ej<EFBFBD>ovat dob<EFBFBD>e otestovan<EFBFBD>, stabiln<EFBFBD> k<EFBFBD>d s minimem chyb.
|
|
|
|
|
Ka<EFBFBD>d<EFBFBD> verze je v<EFBFBD>ce ne<EFBFBD> m<EFBFBD>s<EFBFBD>c v beta testov<EFBFBD>n<EFBFBD>, a na<EFBFBD>e historie verz<EFBFBD>
|
|
|
|
|
ukazuje, <EFBFBD>e m<EFBFBD><EFBFBD>eme nab<EFBFBD>dnout stabiln<EFBFBD>, solidn<EFBFBD> verze, kter<EFBFBD> jsou
|
|
|
|
|
p<EFBFBD>ipraveny pro re<EFBFBD>ln<EFBFBD> nasazen<EFBFBD>. V t<EFBFBD>to oblasti jsme srovnateln<EFBFBD> s
|
|
|
|
|
dal<EFBFBD><EFBFBD>mi datab<EFBFBD>zemi.
|
|
|
|
|
|
|
|
|
|
Podpora
|
|
|
|
|
-------
|
|
|
|
|
|
|
|
|
|
Na na<EFBFBD><EFBFBD> mailov<EFBFBD> konferenci m<EFBFBD><EFBFBD>ete kontaktovat velkou skupinu v<EFBFBD>voj<EFBFBD><EFBFBD><EFBFBD> a
|
|
|
|
|
u<EFBFBD>ivatel<EFBFBD>.probl<EFBFBD>m<EFBFBD>. Nem<EFBFBD><EFBFBD>eme garantovat opravu, nicm<EFBFBD>n<EFBFBD> komer<EFBFBD>n<EFBFBD>
|
|
|
|
|
datab<EFBFBD>ze tak<EFBFBD> ne v<EFBFBD>dy nab<EFBFBD>dnou opravu. Podle ohlas<EFBFBD> je na<EFBFBD>e podpora
|
|
|
|
|
hodnocena l<EFBFBD>pe ne<EFBFBD> u jin<EFBFBD>ch DBMS a to d<EFBFBD>ky p<EFBFBD><EFBFBD>m<EFBFBD>mu kontaktu s v<EFBFBD>voj<EFBFBD><EFBFBD>i,
|
|
|
|
|
velkou komunitou u<EFBFBD>ivatel<EFBFBD>, kvalitn<EFBFBD>mi manu<EFBFBD>ly a p<EFBFBD><EFBFBD>stupn<EFBFBD>m zdrojov<EFBFBD>m
|
|
|
|
|
k<EFBFBD>dem. Pro u<EFBFBD>ivatele, kte<EFBFBD><EFBFBD> vy<EFBFBD>aduj<EFBFBD> podporu ke konkr<EFBFBD>tn<EFBFBD>m p<EFBFBD><EFBFBD>pad<EFBFBD>m,
|
|
|
|
|
existuje placen<EFBFBD> podpora (FAQ sekce 1.6).
|
|
|
|
|
|
|
|
|
|
Cena
|
|
|
|
|
----
|
|
|
|
|
|
|
|
|
|
PosgreSQL lze voln<EFBFBD> pou<EFBFBD><EFBFBD>vat pro nekomer<EFBFBD>n<EFBFBD> i komer<EFBFBD>n<EFBFBD> pou<EFBFBD>it<EFBFBD>. M<EFBFBD><EFBFBD>ete
|
|
|
|
|
do sv<EFBFBD>ch produkt<EFBFBD> p<EFBFBD>idat n<EFBFBD><EFBFBD> k<EFBFBD>d bez omezen<EFBFBD>, respektive v souladu s
|
|
|
|
|
podm<EFBFBD>nkami na<EFBFBD><EFBFBD> licen<EFBFBD>n<EFBFBD> smlouvy (v duchu BSD licence).
|
|
|
|
|
|
|
|
|
|
1.15 Jak lze finan<EFBFBD>n<EFBFBD> pomoci PostgreSQL?
|
|
|
|
|
----------------------------------------
|
|
|
|
|
|
|
|
|
|
PosgreSQL m<EFBFBD> prvot<EFBFBD><EFBFBD>dn<EFBFBD> infrastrukturu od na<EFBFBD>eho za<EFBFBD><EFBFBD>tku v roce 1996.
|
|
|
|
|
Vd<EFBFBD><EFBFBD><EFBFBD>me za to Marku Fournierovi, kter<EFBFBD> zalo<EFBFBD>il a spravoval tuto
|
|
|
|
|
infrastrukturu n<EFBFBD>kolik let.
|
|
|
|
|
|
|
|
|
|
Kvalitn<EFBFBD> infrastruktura je velice d<EFBFBD>le<EFBFBD>it<EFBFBD> pro ka<EFBFBD>d<EFBFBD> open source
|
|
|
|
|
projekt. P<EFBFBD>edch<EFBFBD>z<EFBFBD> nedorozum<EFBFBD>n<EFBFBD>m, kter<EFBFBD> velice zdr<EFBFBD>uj<EFBFBD> pokrok v
|
|
|
|
|
projektu.
|
|
|
|
|
|
|
|
|
|
Tato infrastruktura nen<EFBFBD> lacin<EFBFBD>. K jej<EFBFBD>mu zaji<EFBFBD>t<EFBFBD>n<EFBFBD> je t<EFBFBD>eba st<EFBFBD>le
|
|
|
|
|
hradit ur<EFBFBD>it<EFBFBD> m<EFBFBD>s<EFBFBD><EFBFBD>n<EFBFBD> a jednor<EFBFBD>zov<EFBFBD> <EFBFBD><EFBFBD>stky. Pokud m<EFBFBD>te Vy nebo Va<EFBFBD>e
|
|
|
|
|
spole<EFBFBD>nost pen<EFBFBD>ze, kter<EFBFBD> n<EFBFBD>m m<EFBFBD><EFBFBD>ete darovat, obra<EFBFBD>e se na
|
|
|
|
|
http://store.pgsql.com/shopping/ a darujte je.
|
|
|
|
|
|
|
|
|
|
A<EFBFBD>koliv webov<EFBFBD> str<EFBFBD>nka zmi<EFBFBD>uje PostgreSQL, Inc. vklady jsou ur<EFBFBD>eny pouze
|
|
|
|
|
k podpo<EFBFBD>e projektu PostgreSQL a nepodporuj<EFBFBD> <EFBFBD><EFBFBD>dnou existuj<EFBFBD>c<EFBFBD>
|
|
|
|
|
spole<EFBFBD>nost. Pokud to vy<EFBFBD>adujete, m<EFBFBD><EFBFBD>ete poslat kontrolu na na<EFBFBD>i
|
|
|
|
|
kontaktn<EFBFBD> adresu.
|
|
|
|
|
|
|
|
|
|
Pokud m<EFBFBD>te p<EFBFBD><EFBFBD>klad <EFBFBD>sp<EFBFBD><EFBFBD>n<EFBFBD>ho nasazen<EFBFBD> PostgreSQL, p<EFBFBD>ihla<EFBFBD>t<EFBFBD> se na n<EFBFBD><EFBFBD>
|
|
|
|
|
advocacy site na http://advocacy.postgresql.org.
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
User client dotazy
|
|
|
|
|
==================
|
|
|
|
|
|
|
|
|
|
2.1 Kde naleznu ODBC ovlada<EFBFBD>e pro PostgreSQL?
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
|
|
|
|
|
Pro PostgreSQL existuj<EFBFBD> dva ODBC ovlada<EFBFBD>e - PsqlODBC a OpenLink ODBC.
|
|
|
|
|
|
|
|
|
|
PsqlODBC je ke sta<EFBFBD>en<EFBFBD> na
|
|
|
|
|
http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
|
|
|
|
|
|
|
|
|
|
OpenLink m<EFBFBD><EFBFBD>ete z<EFBFBD>skat na http://www.openlinksw.com. Spolupracuje s
|
|
|
|
|
jejich klientsk<EFBFBD>m programov<EFBFBD>m vybaven<EFBFBD>m a je dostupn<EFBFBD> pro v<EFBFBD>echny jimi
|
|
|
|
|
podporovan<EFBFBD> platformy (Win, Mac, Unix, VMS).
|
|
|
|
|
|
|
|
|
|
Tento ovlada<EFBFBD> je ur<EFBFBD>en pro ty, kte<EFBFBD><EFBFBD> vy<EFBFBD>aduj<EFBFBD> podporu komer<EFBFBD>n<EFBFBD> kvality,
|
|
|
|
|
nicm<EFBFBD>n<EFBFBD> freeware verze je dostupn<EFBFBD> a funk<EFBFBD>n<EFBFBD>. Dotazy zas<EFBFBD>lejte na
|
|
|
|
|
postgres95@openlink.co.uk.
|
|
|
|
|
|
|
|
|
|
2.2 Jak<EFBFBD> n<EFBFBD>stroje lze pou<EFBFBD><EFBFBD>t pro PostgreSQL a web?
|
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
|
|
P<EFBFBD>kn<EFBFBD> <EFBFBD>vod do datab<EFBFBD>zov<EFBFBD>ch technologi<EFBFBD> zabezpe<EFBFBD>uj<EFBFBD>c<EFBFBD>ch chod webov<EFBFBD>ch
|
|
|
|
|
str<EFBFBD>nek najdete na http://www.webreview.com.
|
|
|
|
|
|
|
|
|
|
Pro tvorbu webu existuje excelentn<EFBFBD> rozhran<EFBFBD> PHP, kter<EFBFBD> naleznete na
|
|
|
|
|
http://www.php.net.
|
|
|
|
|
|
|
|
|
|
Pro slo<EFBFBD>it<EFBFBD>j<EFBFBD><EFBFBD> p<EFBFBD><EFBFBD>pady se <EFBFBD>asto pou<EFBFBD><EFBFBD>v<EFBFBD> Perl a CGI.pm nebo mod_perl.
|
|
|
|
|
|
|
|
|
|
2.3 Existuje grafick<EFBFBD> rozhran<EFBFBD> pro PostgreSQL?
|
|
|
|
|
----------------------------------------------
|
|
|
|
|
|
|
|
|
|
Pro PostgreSQL existuje n<EFBFBD>kolik grafick<EFBFBD>ch rozhran<EFBFBD>: PgAccess
|
|
|
|
|
(http://www.php.net), PgAdmin (http://www.php.net), RHDB Admin
|
|
|
|
|
(http://sources.redhat.com/rhdb/) a Rekall (
|
|
|
|
|
http://www.thekompany.com/products/rekall/). D<EFBFBD>le existuje PHPPgAdmin
|
|
|
|
|
(http://phppgadmin.sourceforge.net/) rozhran<EFBFBD> PostgreSQL zalo<EFBFBD>en<EFBFBD> na web
|
|
|
|
|
technologii.
|
|
|
|
|
|
|
|
|
|
<EFBFBD>pln<EFBFBD>j<EFBFBD><EFBFBD> seznam najdete na
|
|
|
|
|
http://techdocs.postgresql.org/guides/GUITools.
|
|
|
|
|
|
|
|
|
|
2.4 Kter<EFBFBD> programovac<EFBFBD> jazyky maj<EFBFBD> podporu pro PostgreSQL?
|
|
|
|
|
----------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
V<EFBFBD>t<EFBFBD>ina programovac<EFBFBD>ch jazyk<EFBFBD> obsahuje rozhran<EFBFBD> pro PostgreSQL.
|
|
|
|
|
Pod<EFBFBD>vejte se do roz<EFBFBD>i<EFBFBD>uj<EFBFBD>c<EFBFBD>ch modul<EFBFBD> Va<EFBFBD>eho programovac<EFBFBD>ho jazyka.
|
|
|
|
|
|
|
|
|
|
Distribuce PostgreSQL obsahuje tato rozhran<EFBFBD>:
|
|
|
|
|
|
|
|
|
|
- C (libpq)
|
|
|
|
|
- Embbedded C (ecpg)
|
|
|
|
|
- Java (jdbc)
|
|
|
|
|
- Python (PyGreSQL)
|
|
|
|
|
- TCL (libpgtcl)
|
|
|
|
|
|
|
|
|
|
Dal<EFBFBD><EFBFBD> rozhran<EFBFBD> jsou dostupn<EFBFBD> na http://gborg.postgresql.org v sekci
|
|
|
|
|
Drivers/Interfaces.
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Administrativn<EFBFBD> dotazy
|
|
|
|
|
======================
|
|
|
|
|
|
|
|
|
|
3.1 Jak nainstalovat PostgreSQL jinam ne<EFBFBD> do /usr/local/pgsql?
|
|
|
|
|
--------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Pou<EFBFBD>ijte volbu --prefix p<EFBFBD>i spu<EFBFBD>t<EFBFBD>n<EFBFBD> configure
|
|
|
|
|
|
|
|
|
|
3.2 P<EFBFBD>i startu postmaster, dostanu chybov<EFBFBD> hl<EFBFBD><EFBFBD>en<EFBFBD> Bad System Call nebo core dump. Pro<EFBFBD>?
|
|
|
|
|
----------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
D<EFBFBD>vody mohou b<EFBFBD>t r<EFBFBD>zn<EFBFBD>, ale nejprve zkontrolujte, zda V<EFBFBD><EFBFBD> syst<EFBFBD>m
|
|
|
|
|
podporuje System V extensions. PostgreSQL vy<EFBFBD>aduje v j<EFBFBD>d<EFBFBD>e podporu
|
|
|
|
|
sd<EFBFBD>len<EFBFBD> pam<EFBFBD>ti a semafor<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
3.3 P<EFBFBD>i startu postmastera dostanu hl<EFBFBD><EFBFBD>en<EFBFBD> o chyb<EFBFBD> IpcMemoryCreate. Pro<EFBFBD>?
|
|
|
|
|
-------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Bu<EFBFBD>to nem<EFBFBD>te spr<EFBFBD>vn<EFBFBD> nakonfigurovanou sd<EFBFBD>lenou pam<EFBFBD><EFBFBD> v j<EFBFBD>d<EFBFBD>e nebo musite
|
|
|
|
|
zv<EFBFBD>t<EFBFBD>it jej<EFBFBD> velikost. Pot<EFBFBD>ebn<EFBFBD> velikost je z<EFBFBD>visl<EFBFBD> na architektu<EFBFBD>e a na
|
|
|
|
|
tom, kolik pam<EFBFBD><EFBFBD>ov<EFBFBD>ch buffer<EFBFBD> a backend<EFBFBD> m<EFBFBD>te povoleno pro postmastera.
|
|
|
|
|
Pro v<EFBFBD>t<EFBFBD>inu syst<EFBFBD>m<EFBFBD> s p<EFBFBD>eddefinovan<EFBFBD>m po<EFBFBD>tem backend<EFBFBD> a pam<EFBFBD><EFBFBD>ov<EFBFBD>ch
|
|
|
|
|
buffer<EFBFBD> je minimum zhruba 1MB. V
|
|
|
|
|
http://www.postgresql.org/docs/view.php?version=current&idoc=1&file=kern
|
|
|
|
|
el-resources.html [3] naleznete podrobn<EFBFBD>j<EFBFBD><EFBFBD> informace o sd<EFBFBD>len<EFBFBD> pam<EFBFBD>ti a
|
|
|
|
|
semaforech.
|
|
|
|
|
|
|
|
|
|
3.4 P<EFBFBD>i startu postmastera dostanu hl<EFBFBD><EFBFBD>en<EFBFBD> o chyb<EFBFBD> IpcSemaphoreCreate. Pro<EFBFBD>?
|
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Pokud dostane chybovou zpr<EFBFBD>vu IpcSemaphoreCreate: semget failed (No
|
|
|
|
|
space left on device), pak va<EFBFBD>e j<EFBFBD>dro nem<EFBFBD> dost voln<EFBFBD>ch semafor<EFBFBD>.
|
|
|
|
|
PostgreSQL vy<EFBFBD>aduje jeden semafor pro ka<EFBFBD>d<EFBFBD> backend v pozad<EFBFBD>. Do<EFBFBD>asn<EFBFBD>m
|
|
|
|
|
<EFBFBD>e<EFBFBD>en<EFBFBD>m je start postmastera s limitem backend<EFBFBD>. Pou<EFBFBD>ijte p<EFBFBD>ep<EFBFBD>na<EFBFBD> -N s
|
|
|
|
|
hodnotou men<EFBFBD><EFBFBD> ne<EFBFBD> 32. <EFBFBD>pln<EFBFBD>m <EFBFBD>e<EFBFBD>en<EFBFBD>m je zv<EFBFBD><EFBFBD>en<EFBFBD> hodnot SEMMNS a SEMMNI
|
|
|
|
|
jadra.
|
|
|
|
|
|
|
|
|
|
Nefunk<EFBFBD>n<EFBFBD> semafory mohou zp<EFBFBD>sobit p<EFBFBD>d b<EFBFBD>hem intenzivn<EFBFBD>ch datab<EFBFBD>zov<EFBFBD>ch
|
|
|
|
|
operac<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
Pokud se tato chyba vyskytuje je<EFBFBD>t<EFBFBD> n<EFBFBD>kde jinde, mo<EFBFBD>n<EFBFBD> nem<EFBFBD>te v<EFBFBD>bec
|
|
|
|
|
nakonfigurov<EFBFBD>ny semafory ve va<EFBFBD>em j<EFBFBD>d<EFBFBD>e. V PostgreSQL Administrator's
|
|
|
|
|
Guide najdete podrobn<EFBFBD>j<EFBFBD><EFBFBD> popis po<EFBFBD>adavk<EFBFBD> na sd<EFBFBD>lenou pam<EFBFBD>t a semafory.
|
|
|
|
|
|
|
|
|
|
3.5 Jak povolit nebo zak<EFBFBD>zat p<EFBFBD><EFBFBD>stup z jin<EFBFBD>ch stanic?
|
|
|
|
|
-----------------------------------------------------
|
|
|
|
|
|
|
|
|
|
P<EFBFBD>i v<EFBFBD>choz<EFBFBD>m nastaven<EFBFBD> PostgreSQL odep<EFBFBD>e p<EFBFBD><EFBFBD>stup z jin<EFBFBD>ch stanic ne<EFBFBD>
|
|
|
|
|
lok<EFBFBD>ln<EFBFBD> s pou<EFBFBD>it<EFBFBD>m UDP. Datab<EFBFBD>ze se zp<EFBFBD><EFBFBD>stupn<EFBFBD> jin<EFBFBD>m stanic<EFBFBD>m nastaven<EFBFBD>m
|
|
|
|
|
p<EFBFBD>ep<EFBFBD>na<EFBFBD>e -i postmastera a povolen<EFBFBD>m stanice a ur<EFBFBD>en<EFBFBD>m re<EFBFBD>imu
|
|
|
|
|
autentifikace v $PGDATA/pg_hba.conf. T<EFBFBD>m se povol<EFBFBD> TCP/IP spojen<EFBFBD>.
|
|
|
|
|
ZASTARAL<EFBFBD>
|
|
|
|
|
|
|
|
|
|
3.6 Jak ladit datab<EFBFBD>zov<EFBFBD> stroj na lep<EFBFBD><EFBFBD> v<EFBFBD>kon?
|
|
|
|
|
----------------------------------------------
|
|
|
|
|
|
|
|
|
|
Ur<EFBFBD>it<EFBFBD> pomohou indexy. P<EFBFBD><EFBFBD>kaz EXPLAIN zobraz<EFBFBD> zp<EFBFBD>sob interpretace Va<EFBFBD>eho
|
|
|
|
|
dotazu a pou<EFBFBD>it<EFBFBD> index<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
P<EFBFBD>i v<EFBFBD>t<EFBFBD><EFBFBD> d<EFBFBD>vce INSERT<EFBFBD> uva<EFBFBD>ujte o n<EFBFBD>hrad<EFBFBD> p<EFBFBD><EFBFBD>kazem COPY. Ten je mnohem
|
|
|
|
|
rychlej<EFBFBD><EFBFBD> ne<EFBFBD>li samotn<EFBFBD> INSERT. Ka<EFBFBD>d<EFBFBD> p<EFBFBD><EFBFBD>kaz mimo blok BEGIN WORK/COMMIT
|
|
|
|
|
se prov<EFBFBD>d<EFBFBD> ve vlastn<EFBFBD> transakci. Zva<EFBFBD>te, zda-li by se nedalo n<EFBFBD>kolik
|
|
|
|
|
p<EFBFBD><EFBFBD>kaz<EFBFBD> spojit do jedn<EFBFBD> transakce. T<EFBFBD>m se sn<EFBFBD><EFBFBD><EFBFBD> re<EFBFBD>ie na transakce. P<EFBFBD>ed
|
|
|
|
|
proveden<EFBFBD>m rozs<EFBFBD>hl<EFBFBD>ch zm<EFBFBD>n zru<EFBFBD>te indexy, kter<EFBFBD> po dokon<EFBFBD>en<EFBFBD> zm<EFBFBD>n op<EFBFBD>t
|
|
|
|
|
vytvo<EFBFBD>te.
|
|
|
|
|
|
|
|
|
|
M<EFBFBD>te n<EFBFBD>kolik dal<EFBFBD><EFBFBD>ch mo<EFBFBD>nost<EFBFBD>, jak zlep<EFBFBD>it v<EFBFBD>kon. M<EFBFBD><EFBFBD>ete zak<EFBFBD>zat fsyn()
|
|
|
|
|
p<EFBFBD>i startu postmastera p<EFBFBD>ep<EFBFBD>na<EFBFBD>i -o -F. Tyto p<EFBFBD>ep<EFBFBD>na<EFBFBD>e zabr<EFBFBD>n<EFBFBD> fsync(),
|
|
|
|
|
tj. z<EFBFBD>pisu na disk po ka<EFBFBD>d<EFBFBD> transakci.
|
|
|
|
|
|
|
|
|
|
M<EFBFBD><EFBFBD>ete zv<EFBFBD><EFBFBD>it velikost pam<EFBFBD><EFBFBD>ov<EFBFBD>ch buffer<EFBFBD> pou<EFBFBD>it<EFBFBD>ch backendy tj.
|
|
|
|
|
parametr -B postmasteru. Pokud ale tato hodnota bude p<EFBFBD><EFBFBD>li<EFBFBD> velk<EFBFBD>, tak
|
|
|
|
|
mo<EFBFBD>n<EFBFBD> nespust<EFBFBD>te postmastera jeliko<EFBFBD> dos<EFBFBD>hnete limitu sd<EFBFBD>len<EFBFBD> pam<EFBFBD>ti.
|
|
|
|
|
Ka<EFBFBD>d<EFBFBD> buffer m<EFBFBD> 8K a implicitn<EFBFBD> je 64 buffer<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
D<EFBFBD>le m<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t p<EFBFBD>ep<EFBFBD>na<EFBFBD> -S k zv<EFBFBD><EFBFBD>en<EFBFBD> limitu pam<EFBFBD>ti pro backendy na
|
|
|
|
|
do<EFBFBD>asn<EFBFBD> t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD>. Hodnota je m<EFBFBD>n<EFBFBD>na v kilobytech a v<EFBFBD>choz<EFBFBD> nastaven<EFBFBD> je
|
|
|
|
|
512, tj. 512K.
|
|
|
|
|
|
|
|
|
|
M<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t p<EFBFBD><EFBFBD>kaz CLUSTER, kter<EFBFBD> uspo<EFBFBD><EFBFBD>d<EFBFBD> fyzicky data v tabulk<EFBFBD>ch
|
|
|
|
|
podle indexu. V<EFBFBD>ce na manu<EFBFBD>lov<EFBFBD>ch str<EFBFBD>nk<EFBFBD>ch p<EFBFBD><EFBFBD>kazu CLUSTER.
|
|
|
|
|
|
|
|
|
|
3.7 Jak<EFBFBD> jsou mo<EFBFBD>nosti lad<EFBFBD>n<EFBFBD>?
|
|
|
|
|
------------------------------
|
|
|
|
|
|
|
|
|
|
M<EFBFBD>te n<EFBFBD>kolik mo<EFBFBD>nost<EFBFBD> jak se dostat k u<EFBFBD>ite<EFBFBD>n<EFBFBD>m stavov<EFBFBD>m informac<EFBFBD>m.
|
|
|
|
|
|
|
|
|
|
Zaprv<EFBFBD>, p<EFBFBD>i p<EFBFBD>ekladu pou<EFBFBD>ijte p<EFBFBD>ep<EFBFBD>na<EFBFBD> --enable-cassert, t<EFBFBD>m se zapne
|
|
|
|
|
monitorov<EFBFBD>n<EFBFBD> a n<EFBFBD>sledn<EFBFBD> zastaven<EFBFBD> aplikace, kdy<EFBFBD> se proces v backendu
|
|
|
|
|
dostane do neo<EFBFBD>ek<EFBFBD>van<EFBFBD>ho stavu.
|
|
|
|
|
|
|
|
|
|
Jak postmaster tak postgres m<EFBFBD> n<EFBFBD>kolik p<EFBFBD>ep<EFBFBD>na<EFBFBD><EFBFBD> umo<EFBFBD><EFBFBD>uj<EFBFBD>c<EFBFBD>ch lad<EFBFBD>n<EFBFBD>.
|
|
|
|
|
Postmaster nastartujte tak, abyste si byli jisti, <EFBFBD>e je standartn<EFBFBD>
|
|
|
|
|
v<EFBFBD>stup a standartn<EFBFBD> chybov<EFBFBD> v<EFBFBD>stup p<EFBFBD>esm<EFBFBD>rov<EFBFBD>n do souboru logu,
|
|
|
|
|
nap<EFBFBD><EFBFBD>klad:
|
|
|
|
|
|
|
|
|
|
cd /usr/local/pgsql
|
|
|
|
|
./bin/postmaster > server.log 2>&1 &
|
|
|
|
|
|
|
|
|
|
T<EFBFBD>m se vytvo<EFBFBD><EFBFBD> log v adres<EFBFBD><EFBFBD>i PostgreSQL, Tento soubor obsahuje u<EFBFBD>ite<EFBFBD>n<EFBFBD>
|
|
|
|
|
informace o probl<EFBFBD>mech a chyb<EFBFBD>ch vyskytl<EFBFBD>ch se na serveru. Postmaster m<EFBFBD>
|
|
|
|
|
p<EFBFBD>ep<EFBFBD>na<EFBFBD> -d ur<EFBFBD>uj<EFBFBD>c<EFBFBD>, jak podrobn<EFBFBD> maj<EFBFBD> b<EFBFBD>t reportovan<EFBFBD> informace, tj.
|
|
|
|
|
debug level. Pozor, p<EFBFBD>i velk<EFBFBD> hodnot<EFBFBD> debug levelu rychle roste velikost
|
|
|
|
|
souboru logu.
|
|
|
|
|
|
|
|
|
|
Pokud neb<EFBFBD><EFBFBD><EFBFBD> postmaster, m<EFBFBD><EFBFBD>ete spustit backend PostgreSQL z p<EFBFBD><EFBFBD>kazov<EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD>dky a napsat sv<EFBFBD>j SQL dotaz p<EFBFBD><EFBFBD>mo v backendu (doporu<EFBFBD>eno pouze pro
|
|
|
|
|
lad<EFBFBD>n<EFBFBD>). Dotaz je v tomto p<EFBFBD><EFBFBD>pad<EFBFBD> ukon<EFBFBD>en novou <EFBFBD><EFBFBD>dkou, nikoliv
|
|
|
|
|
st<EFBFBD>edn<EFBFBD>kem. Pokud m<EFBFBD>te aplikaci p<EFBFBD>elo<EFBFBD>enou s lad<EFBFBD>c<EFBFBD>mi symboly, m<EFBFBD><EFBFBD>ete
|
|
|
|
|
pou<EFBFBD><EFBFBD>t debbuger k monitorov<EFBFBD>n<EFBFBD> procesu. Pokud nen<EFBFBD> backend spu<EFBFBD>t<EFBFBD>n
|
|
|
|
|
postmasterem, pak neb<EFBFBD><EFBFBD><EFBFBD> ve sv<EFBFBD>m obvykl<EFBFBD>m prost<EFBFBD>ed<EFBFBD> a tud<EFBFBD><EFBFBD> n<EFBFBD>kter<EFBFBD>
|
|
|
|
|
probl<EFBFBD>my dan<EFBFBD> interakc<EFBFBD> mezi backendy nemohou b<EFBFBD>t nasimulov<EFBFBD>ny.
|
|
|
|
|
|
|
|
|
|
Pokud b<EFBFBD><EFBFBD><EFBFBD> postmaster, spus<EFBFBD>e psql v jednom okn<EFBFBD> a pak si zjist<EFBFBD>te PID
|
|
|
|
|
procesu postgres pou<EFBFBD>it<EFBFBD>ho psql. V debuggeru sep<EFBFBD>ipojte k postgresql
|
|
|
|
|
PID. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql. Pokud
|
|
|
|
|
lad<EFBFBD>te startup postgresu, pak nastavte PGOPTIONS="-W n" a spus<EFBFBD>e psql.
|
|
|
|
|
Tento p<EFBFBD>ep<EFBFBD>na<EFBFBD> zp<EFBFBD>sob<EFBFBD> pauzu n sekund, tak<EFBFBD>e budete m<EFBFBD>t <EFBFBD>as se p<EFBFBD>ipojit
|
|
|
|
|
k procesu, a nastavit breakpointy a pokra<EFBFBD>ovat v startup posloupnosti.
|
|
|
|
|
|
|
|
|
|
Pro lad<EFBFBD>n<EFBFBD> a m<EFBFBD><EFBFBD>en<EFBFBD> v<EFBFBD>konu mohou b<EFBFBD>t u<EFBFBD>ite<EFBFBD>n<EFBFBD> p<EFBFBD>ep<EFBFBD>na<EFBFBD>e -s, -A a -t
|
|
|
|
|
programu postgres (backend).
|
|
|
|
|
|
|
|
|
|
M<EFBFBD><EFBFBD>ete prov<EFBFBD>st p<EFBFBD>eklad s profilac<EFBFBD>, tak abyste vid<EFBFBD>li kolik <EFBFBD>asu
|
|
|
|
|
zab<EFBFBD>raj<EFBFBD> jednotliv<EFBFBD> funkce. Soubory s profily backend<EFBFBD> jsou ulo<EFBFBD>eny v
|
|
|
|
|
adres<EFBFBD><EFBFBD>i pgsql/data/base/dbname. Profil klienta pak v jeho aktu<EFBFBD>ln<EFBFBD>m
|
|
|
|
|
adres<EFBFBD><EFBFBD>i. Korektn<EFBFBD> profilace v prost<EFBFBD>ed<EFBFBD> Linux po<EFBFBD>aduje konfiguraci
|
|
|
|
|
syst<EFBFBD>mu s parametrem -DLINUX_PROFILE.
|
|
|
|
|
|
|
|
|
|
3.8 Pro<EFBFBD> dostanu "Sorry, too many clients", kdy<EFBFBD> se zkou<EFBFBD><EFBFBD>m p<EFBFBD>ipojit?
|
|
|
|
|
---------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Zvy<EFBFBD>te limit postmastera na maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et sou<EFBFBD>asn<EFBFBD> spu<EFBFBD>t<EFBFBD>n<EFBFBD>ch
|
|
|
|
|
backend<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
V<EFBFBD>choz<EFBFBD> hodnota je 32 backend<EFBFBD>. Tuto hodnotu zv<EFBFBD><EFBFBD><EFBFBD>te zastaven<EFBFBD>m a
|
|
|
|
|
op<EFBFBD>tovn<EFBFBD>m spu<EFBFBD>t<EFBFBD>n<EFBFBD>m postmastera s parametrem -N nebo <EFBFBD>pravou
|
|
|
|
|
postgresql.conf.
|
|
|
|
|
|
|
|
|
|
P<EFBFBD>i zv<EFBFBD><EFBFBD>en<EFBFBD> hodnoty -N nad 32 mus<EFBFBD>te zv<EFBFBD><EFBFBD>it hodnotu -B nad v<EFBFBD>choz<EFBFBD> 64,
|
|
|
|
|
-B mus<EFBFBD> b<EFBFBD>t minim<EFBFBD>ln<EFBFBD> dvakr<EFBFBD>t v<EFBFBD>t<EFBFBD><EFBFBD>, nebo je<EFBFBD>t<EFBFBD> l<EFBFBD>pe v<EFBFBD>ce. Pravd<EFBFBD>podobn<EFBFBD>
|
|
|
|
|
zjist<EFBFBD>te, <EFBFBD>e pro velk<EFBFBD> po<EFBFBD>et proces<EFBFBD> backendu je nutn<EFBFBD> zv<EFBFBD><EFBFBD>it n<EFBFBD>kter<EFBFBD>
|
|
|
|
|
parametry j<EFBFBD>dra. Jsou to p<EFBFBD>edev<EFBFBD><EFBFBD>m maxim<EFBFBD>ln<EFBFBD> velikost sd<EFBFBD>len<EFBFBD> pam<EFBFBD>ti
|
|
|
|
|
SHMMAX, maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et semaf<EFBFBD>r<EFBFBD> SEMMNS a SEMMNI, maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et
|
|
|
|
|
proces<EFBFBD> NPROC, maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et proces<EFBFBD> u<EFBFBD>ivatele MAXUPRC a maxim<EFBFBD>ln<EFBFBD>
|
|
|
|
|
po<EFBFBD>et otev<EFBFBD>en<EFBFBD>ch soubor<EFBFBD> NFILE a NINODE. D<EFBFBD>vod pro omezen<EFBFBD> maxim<EFBFBD>ln<EFBFBD>ho
|
|
|
|
|
po<EFBFBD>tu backend<EFBFBD> je fakt, <EFBFBD>e by mohlo doj<EFBFBD>t k vy<EFBFBD>erp<EFBFBD>n<EFBFBD> zdroj<EFBFBD> Va<EFBFBD>eho
|
|
|
|
|
syst<EFBFBD>mu.
|
|
|
|
|
|
|
|
|
|
3.9 K <EFBFBD>emu slou<EFBFBD><EFBFBD> adres<EFBFBD><EFBFBD> pgsql_tmp?
|
|
|
|
|
------------------------------------
|
|
|
|
|
|
|
|
|
|
Tento adres<EFBFBD><EFBFBD> obsahuje do<EFBFBD>asn<EFBFBD> soubory vytvo<EFBFBD>en<EFBFBD> exekutorem dotaz<EFBFBD>.
|
|
|
|
|
Nap<EFBFBD><EFBFBD>klad, kdy<EFBFBD> je nutn<EFBFBD> t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD> k zaji<EFBFBD>t<EFBFBD>n<EFBFBD> ORDER BY a t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD> m<EFBFBD> v<EFBFBD>t<EFBFBD><EFBFBD>
|
|
|
|
|
n<EFBFBD>roky na prostor ne<EFBFBD> povoluje parametr -S backendu, pak je vytvo<EFBFBD>en
|
|
|
|
|
do<EFBFBD>asn<EFBFBD> soubor k ulo<EFBFBD>en<EFBFBD> extra <EFBFBD>daj<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
Do<EFBFBD>asn<EFBFBD> soubory jsou obvykle maz<EFBFBD>ny automaticky, ale m<EFBFBD><EFBFBD>e se st<EFBFBD>t, <EFBFBD>e
|
|
|
|
|
b<EFBFBD>hem t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD> server spadne. Zastaven<EFBFBD> a dal<EFBFBD><EFBFBD> start postmastera zajist<EFBFBD>
|
|
|
|
|
odstran<EFBFBD>n<EFBFBD> soubor<EFBFBD> s t<EFBFBD>chto adres<EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
3.10 Pro<EFBFBD> je po<EFBFBD>adov<EFBFBD>no dump a obnoven<EFBFBD> (load) datab<EFBFBD>ze b<EFBFBD>hem upgrade mezi velk<EFBFBD>mi verzemi PostgreSQL?
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
PostgreSQL se minim<EFBFBD>ln<EFBFBD> m<EFBFBD>n<EFBFBD> b<EFBFBD>hem mal<EFBFBD>ch verz<EFBFBD>, tak<EFBFBD>e nap<EFBFBD>. p<EFBFBD>i upgrade
|
|
|
|
|
z 7.2 na 7.2.1 nen<EFBFBD> nutn<EFBFBD> dump a load datab<EFBFBD>ze. Ale velk<EFBFBD> verze <EFBFBD>asto
|
|
|
|
|
m<EFBFBD>n<EFBFBD> intern<EFBFBD> form<EFBFBD>t syst<EFBFBD>mov<EFBFBD>ch tabulek a datov<EFBFBD>ch soubor<EFBFBD>. Tyto zm<EFBFBD>ny
|
|
|
|
|
jsou natolik rozs<EFBFBD>hl<EFBFBD>, <EFBFBD>e nelze zajistit zp<EFBFBD>tnou kompatibilitu pro
|
|
|
|
|
datov<EFBFBD> soubory. Dump ulo<EFBFBD><EFBFBD> data v obecn<EFBFBD>m form<EFBFBD>tu, tak<EFBFBD>e mohou b<EFBFBD>t
|
|
|
|
|
na<EFBFBD>tena a pou<EFBFBD><EFBFBD>v<EFBFBD>na v nov<EFBFBD>m intern<EFBFBD>m form<EFBFBD>tu.
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Provozn<EFBFBD> dotazy
|
|
|
|
|
===============
|
|
|
|
|
|
|
|
|
|
4.1 <EFBFBD><EFBFBD>m se li<EFBFBD><EFBFBD> bin<EFBFBD>rn<EFBFBD> a norm<EFBFBD>ln<EFBFBD> kurzor?
|
|
|
|
|
------------------------------------------
|
|
|
|
|
|
|
|
|
|
Popis najdete v manu<EFBFBD>lov<EFBFBD> str<EFBFBD>nce DECLARE
|
|
|
|
|
|
|
|
|
|
4.2 Jak z<EFBFBD>skat pouze prvn<EFBFBD> <EFBFBD><EFBFBD>dek dotazu? N<EFBFBD>hodn<EFBFBD> <EFBFBD><EFBFBD>dek?
|
|
|
|
|
-------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Pod<EFBFBD>vejte se do man. str<EFBFBD>nky p<EFBFBD><EFBFBD>kazu FETCH, nebo pou<EFBFBD>ijte SELECT ...
|
|
|
|
|
LIMIT ...
|
|
|
|
|
|
|
|
|
|
Nen<EFBFBD> nutn<EFBFBD> zpracov<EFBFBD>vat cel<EFBFBD> dotaz, kdy<EFBFBD> pot<EFBFBD>ebujete pouze n<EFBFBD>kolik
|
|
|
|
|
prvn<EFBFBD>ch <EFBFBD><EFBFBD>dk<EFBFBD>. Pokud existuje index ORDER BY, PostgreSQL je schopen
|
|
|
|
|
p<EFBFBD>eru<EFBFBD>it zpracov<EFBFBD>n<EFBFBD> dotazu po z<EFBFBD>sk<EFBFBD>n<EFBFBD> po<EFBFBD>adovan<EFBFBD>ho po<EFBFBD>tu <EFBFBD><EFBFBD>dk<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
K z<EFBFBD>sk<EFBFBD>n<EFBFBD> n<EFBFBD>hodn<EFBFBD>ho <EFBFBD><EFBFBD>dku pou<EFBFBD>ijte:
|
|
|
|
|
|
|
|
|
|
SELECT col FROM tab
|
|
|
|
|
ORDER BY random() LIMIT 1;
|
|
|
|
|
|
|
|
|
|
4.3 Jak z<EFBFBD>sk<EFBFBD>m seznam tabulek nebo jinak jak jej z<EFBFBD>sk<EFBFBD> psql?
|
|
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Pod<EFBFBD>vejte se do zdrojov<EFBFBD>ch k<EFBFBD>d<EFBFBD> psql do souboru
|
|
|
|
|
pgsql/src/bin/psql/describe.c. Ten obsahuje SQL p<EFBFBD><EFBFBD>kazy, kter<EFBFBD> se
|
|
|
|
|
pou<EFBFBD><EFBFBD>vaj<EFBFBD> v psql metap<EFBFBD><EFBFBD>kazech. D<EFBFBD>le m<EFBFBD><EFBFBD>ete spustit psql s p<EFBFBD>ep<EFBFBD>na<EFBFBD>em
|
|
|
|
|
-E, kter<EFBFBD> zp<EFBFBD>sob<EFBFBD> zobrazen<EFBFBD> ka<EFBFBD>d<EFBFBD>ho dotazu, kter<EFBFBD> zpracov<EFBFBD>n<EFBFBD> metap<EFBFBD><EFBFBD>kazu
|
|
|
|
|
vyvol<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
4.4 Jak odstran<EFBFBD>m sloupec tabulky, jak zm<EFBFBD>n<EFBFBD>m jeho typ?
|
|
|
|
|
-------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Po<EFBFBD><EFBFBD>naje verz<EFBFBD> 7.3 m<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t p<EFBFBD><EFBFBD>kaz ALTER TABLE DROP COLUMN. Ve
|
|
|
|
|
star<EFBFBD><EFBFBD>ch verz<EFBFBD>ch m<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t n<EFBFBD>sleduj<EFBFBD>c<EFBFBD> postup:
|
|
|
|
|
|
|
|
|
|
BEGIN;
|
|
|
|
|
LOCK TABLE old_table;
|
|
|
|
|
SELECT ... -- mimo sloupec, kter<EFBFBD> chceme odstranit
|
|
|
|
|
INTO TABLE new_table;
|
|
|
|
|
DROP TABLE old_table;
|
|
|
|
|
ALTER TABLE new_table RENAME TO old_table;
|
|
|
|
|
COMMIT;
|
|
|
|
|
|
|
|
|
|
Pro zm<EFBFBD>nu typu sloupce je t<EFBFBD>eba prov<EFBFBD>st:
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
Pot<EFBFBD> prove<EFBFBD>te VACUUM FULL tab - uvoln<EFBFBD>te t<EFBFBD>m diskov<EFBFBD> prostor zabran<EFBFBD>
|
|
|
|
|
nyn<EFBFBD> ji<EFBFBD> neplatn<EFBFBD>mi <EFBFBD><EFBFBD>dky.
|
|
|
|
|
|
|
|
|
|
4.5 Jak<EFBFBD> je maxim<EFBFBD>ln<EFBFBD> velikost <EFBFBD><EFBFBD>dku, tabulky a datab<EFBFBD>ze?
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
PostgreSQL m<EFBFBD> tato omezen<EFBFBD>:
|
|
|
|
|
|
|
|
|
|
Maxim<EFBFBD>ln<EFBFBD> velikost datab<EFBFBD>ze: neomezena (existuj<EFBFBD> 32TB db)
|
|
|
|
|
|
|
|
|
|
Maxim<EFBFBD>ln<EFBFBD> velikost tabulky: 32 TB
|
|
|
|
|
|
|
|
|
|
Maxim<EFBFBD>ln<EFBFBD> velikost <EFBFBD><EFBFBD>dky: 1.6 TB
|
|
|
|
|
|
|
|
|
|
Maxim<EFBFBD>ln<EFBFBD> velikost polo<EFBFBD>ky 1 GB
|
|
|
|
|
|
|
|
|
|
Maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et <EFBFBD><EFBFBD>dk<EFBFBD> v tabulce: neomezeno
|
|
|
|
|
|
|
|
|
|
Maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et sloupc<EFBFBD> v tabulce: 250-1600 podle typ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
Maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et index<EFBFBD> na tabulce: neomezeno
|
|
|
|
|
|
|
|
|
|
Ve skute<EFBFBD>nosti nic nen<EFBFBD> neomezeno, limitem b<EFBFBD>v<EFBFBD> v<EFBFBD>dy dostupn<EFBFBD> diskov<EFBFBD>
|
|
|
|
|
pam<EFBFBD><EFBFBD> nebo velikost opera<EFBFBD>n<EFBFBD> pam<EFBFBD>ti. Pokud m<EFBFBD>te n<EFBFBD>kterou z t<EFBFBD>chto hodnot
|
|
|
|
|
neobvykle velkou, m<EFBFBD><EFBFBD>e doj<EFBFBD>t ke sn<EFBFBD><EFBFBD>en<EFBFBD> v<EFBFBD>konu.
|
|
|
|
|
|
|
|
|
|
Maxim<EFBFBD>ln<EFBFBD> velikost tabulky je 32 TB a nevy<EFBFBD>aduje podporu velk<EFBFBD>ch soubor<EFBFBD>
|
|
|
|
|
opera<EFBFBD>n<EFBFBD>m syst<EFBFBD>mem. Velk<EFBFBD> tabulky se ukl<EFBFBD>daj<EFBFBD> do n<EFBFBD>kolika 1 GB soubor<EFBFBD>
|
|
|
|
|
tak<EFBFBD>e limity souborov<EFBFBD>ho syst<EFBFBD>mu nejsou podstatn<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
Maxim<EFBFBD>ln<EFBFBD> velikost tabulky a maxim<EFBFBD>ln<EFBFBD> po<EFBFBD>et sloupc<EFBFBD> m<EFBFBD><EFBFBD>eme
|
|
|
|
|
ze<EFBFBD>ty<EFBFBD>n<EFBFBD>sobit nastaven<EFBFBD>m velikosti bloku na 32K.
|
|
|
|
|
|
|
|
|
|
4.6 Kolik diskov<EFBFBD>ho prostoru je pot<EFBFBD>eba k ulo<EFBFBD>en<EFBFBD> dat z norm<EFBFBD>ln<EFBFBD>ho textov<EFBFBD>ho souboru?
|
|
|
|
|
-------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
PostgreSQL vy<EFBFBD>aduje a<EFBFBD> p<EFBFBD>tin<EFBFBD>sobek diskov<EFBFBD>ho prostoru k ulo<EFBFBD>en<EFBFBD> dat z
|
|
|
|
|
textov<EFBFBD>ho souboru.
|
|
|
|
|
|
|
|
|
|
Nap<EFBFBD><EFBFBD>klad, uva<EFBFBD>ujme soubor se 100 tis<EFBFBD>ci <EFBFBD><EFBFBD>dky obsahuj<EFBFBD>c<EFBFBD> na ka<EFBFBD>d<EFBFBD> <EFBFBD><EFBFBD>dce
|
|
|
|
|
cel<EFBFBD> <EFBFBD><EFBFBD>slo a textov<EFBFBD> popis. Text je v pr<EFBFBD>m<EFBFBD>ru dvacet byt<EFBFBD> dlouh<EFBFBD>.
|
|
|
|
|
Textov<EFBFBD> soubor bude 2.8 MB dlouh<EFBFBD>. Velikost datab<EFBFBD>ze obsahuj<EFBFBD>c<EFBFBD>
|
|
|
|
|
odpov<EFBFBD>daj<EFBFBD>c<EFBFBD> data bude zhruba 6.4 MB.
|
|
|
|
|
|
|
|
|
|
36 byt<EFBFBD>: hlavi<EFBFBD>ka <EFBFBD><EFBFBD>dku (p<EFBFBD>ibli<EFBFBD>n<EFBFBD>)
|
|
|
|
|
24 byt<EFBFBD>: jedna celo<EFBFBD><EFBFBD>seln<EFBFBD> polo<EFBFBD>ka a jedna textov<EFBFBD>
|
|
|
|
|
4 byty: ukazatel na str<EFBFBD>nku k ntici
|
|
|
|
|
------------------------------------------------------
|
|
|
|
|
64 byt<EFBFBD> na <EFBFBD><EFBFBD>dek
|
|
|
|
|
|
|
|
|
|
Velikost datov<EFBFBD> str<EFBFBD>nky PostgreSQL je 8KB
|
|
|
|
|
|
|
|
|
|
8192 byt<EFBFBD> na str<EFBFBD>nce
|
|
|
|
|
---------------------- = 128 <EFBFBD><EFBFBD>dek na str<EFBFBD>nku
|
|
|
|
|
64 byt<EFBFBD> za <EFBFBD><EFBFBD>dek
|
|
|
|
|
|
|
|
|
|
100000 <EFBFBD><EFBFBD>dek
|
|
|
|
|
-------------------- = 782 str<EFBFBD>nek (zaokrouhleno nahoru)
|
|
|
|
|
128 <EFBFBD><EFBFBD>dek na str<EFBFBD>nce
|
|
|
|
|
|
|
|
|
|
782 * 8192 = 6, 406, 144 byt<EFBFBD> (6.4 MB)
|
|
|
|
|
|
|
|
|
|
Indexy nemaj<EFBFBD> tak velkou re<EFBFBD>ii, ale mohou b<EFBFBD>t tak<EFBFBD> velk<EFBFBD>, proto<EFBFBD>e
|
|
|
|
|
obsahuj<EFBFBD> indexovan<EFBFBD> data.
|
|
|
|
|
|
|
|
|
|
Hodnoty NULL jsou ulo<EFBFBD>eny v bitmap<EFBFBD>ch, tak<EFBFBD>e spot<EFBFBD>ebuj<EFBFBD> jen velmi m<EFBFBD>lo
|
|
|
|
|
diskov<EFBFBD>ho prostoru.
|
|
|
|
|
|
|
|
|
|
4.7 Jak z<EFBFBD>sk<EFBFBD>m seznam vytvo<EFBFBD>en<EFBFBD>ch tabulek, index<EFBFBD>, datab<EFBFBD>z<EFBFBD>?
|
|
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
psql m<EFBFBD> sadu metap<EFBFBD><EFBFBD>kaz<EFBFBD> k zobrazen<EFBFBD> t<EFBFBD>chto informac<EFBFBD>. Jejich seznam
|
|
|
|
|
z<EFBFBD>sk<EFBFBD>te p<EFBFBD><EFBFBD>kazem \?. D<EFBFBD>le se m<EFBFBD><EFBFBD>ete pod<EFBFBD>vat na obsah syst<EFBFBD>mov<EFBFBD>ch tabulek
|
|
|
|
|
za<EFBFBD><EFBFBD>naj<EFBFBD>c<EFBFBD>ch pg_. Spu<EFBFBD>t<EFBFBD>n<EFBFBD> psql s parametrem -l provede v<EFBFBD>pis n<EFBFBD>zv<EFBFBD>
|
|
|
|
|
v<EFBFBD>ech datab<EFBFBD>z<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
Soubor pgsql/src/tutorial/syscat.source obsahuje SELECTy p<EFBFBD>istupuj<EFBFBD>c<EFBFBD> k
|
|
|
|
|
syst<EFBFBD>mov<EFBFBD>m tabulk<EFBFBD>mm.
|
|
|
|
|
|
|
|
|
|
4.8 M<EFBFBD>j dotaz je pomal<EFBFBD> a nepou<EFBFBD><EFBFBD>v<EFBFBD> vytvo<EFBFBD>en<EFBFBD> indexy. Pro<EFBFBD>?
|
|
|
|
|
-----------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Ka<EFBFBD>d<EFBFBD> dotaz nemus<EFBFBD> nutn<EFBFBD> pou<EFBFBD><EFBFBD>t existuj<EFBFBD>c<EFBFBD> indexy. Index se pou<EFBFBD>ije
|
|
|
|
|
tehdy, kdy<EFBFBD> je tabulka v<EFBFBD>t<EFBFBD><EFBFBD> ne<EFBFBD> ur<EFBFBD>it<EFBFBD> minim<EFBFBD>ln<EFBFBD> velikost, a dotaz
|
|
|
|
|
vyb<EFBFBD>r<EFBFBD> pouze procentu<EFBFBD>ln<EFBFBD> malou <EFBFBD><EFBFBD>st <EFBFBD><EFBFBD>dk<EFBFBD> tabulky. To proto, <EFBFBD>e n<EFBFBD>hodn<EFBFBD>
|
|
|
|
|
p<EFBFBD><EFBFBD>stup k disku dan<EFBFBD> <EFBFBD>ten<EFBFBD>m indexu m<EFBFBD><EFBFBD>e b<EFBFBD>t pomalej<EFBFBD><EFBFBD> ne<EFBFBD> line<EFBFBD>rn<EFBFBD> <EFBFBD>ten<EFBFBD>
|
|
|
|
|
tabulky nebo sekven<EFBFBD>n<EFBFBD> <EFBFBD>ten<EFBFBD>,
|
|
|
|
|
|
|
|
|
|
PostgreSQL rozhoduje o pou<EFBFBD>it<EFBFBD> index<EFBFBD> na z<EFBFBD>klad<EFBFBD> statistiky p<EFBFBD><EFBFBD>stup<EFBFBD> k
|
|
|
|
|
tabulce. Tyto statistiky se shroma<EFBFBD><EFBFBD>uj<EFBFBD> p<EFBFBD><EFBFBD>kazy VACUUM ANALYZE nebo
|
|
|
|
|
ANALYZE. D<EFBFBD>ky statistik<EFBFBD>m m<EFBFBD> optimizer informaci o po<EFBFBD>tu <EFBFBD><EFBFBD>dek v tabulce
|
|
|
|
|
a m<EFBFBD><EFBFBD>e l<EFBFBD>pe rozhodnout o pou<EFBFBD>it<EFBFBD> index<EFBFBD>. Statistiky se uplatn<EFBFBD> p<EFBFBD>i
|
|
|
|
|
ur<EFBFBD>en<EFBFBD> optim<EFBFBD>ln<EFBFBD>ho po<EFBFBD>ad<EFBFBD> a metody spojen<EFBFBD> tabulek. Statistiky by se
|
|
|
|
|
m<EFBFBD>li aktualizovat opakovan<EFBFBD>, tak jak se m<EFBFBD>n<EFBFBD> obsah tabulek.
|
|
|
|
|
|
|
|
|
|
Indexy nejsou oby<EFBFBD>ejn<EFBFBD> pou<EFBFBD>ity pro set<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD> nebo spojen<EFBFBD> tabulek.
|
|
|
|
|
Sekven<EFBFBD>n<EFBFBD> zpracov<EFBFBD>n<EFBFBD> n<EFBFBD>sledovan<EFBFBD> explicitn<EFBFBD>m t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD>m je oby<EFBFBD>ejn<EFBFBD>
|
|
|
|
|
rychlej<EFBFBD><EFBFBD> ne<EFBFBD> indexn<EFBFBD> <EFBFBD>ten<EFBFBD> na velk<EFBFBD> tabulce.
|
|
|
|
|
|
|
|
|
|
Jinak je tomu v p<EFBFBD><EFBFBD>pad<EFBFBD> pou<EFBFBD>it<EFBFBD> LIMIT a ORDER BY, p<EFBFBD>i kter<EFBFBD>m se v<EFBFBD>t<EFBFBD>inou
|
|
|
|
|
index pou<EFBFBD>ije, v<EFBFBD>sledkem je pouze mal<EFBFBD> <EFBFBD><EFBFBD>st tabulky. Funkce MAX() a
|
|
|
|
|
MIN() nepou<EFBFBD><EFBFBD>vaj<EFBFBD> indexy, ale je mo<EFBFBD>n<EFBFBD> tut<EFBFBD><EFBFBD> hodnotu z<EFBFBD>skat
|
|
|
|
|
|
|
|
|
|
SELECT col FROM tab
|
|
|
|
|
ORDER BY col [ DESC ] LIMIT 1;
|
|
|
|
|
|
|
|
|
|
Pokud si mysl<EFBFBD>te, <EFBFBD>e optimizer myln<EFBFBD> zvolil sekven<EFBFBD>n<EFBFBD> prohled<EFBFBD>v<EFBFBD>n<EFBFBD>
|
|
|
|
|
tabulky, pou<EFBFBD>ijte p<EFBFBD><EFBFBD>kaz SET enable_seqscan TO 'off' a zkuste zda je
|
|
|
|
|
indexn<EFBFBD> prohled<EFBFBD>v<EFBFBD>n<EFBFBD> rychlej<EFBFBD><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
P<EFBFBD>i vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> na z<EFBFBD>klad<EFBFBD> vzoru jako je nap<EFBFBD>. oper<EFBFBD>tor LIKE nebo ~ se
|
|
|
|
|
indexy pou<EFBFBD><EFBFBD>j<EFBFBD> pouze za ur<EFBFBD>it<EFBFBD>ch skute<EFBFBD>nost<EFBFBD>:
|
|
|
|
|
|
|
|
|
|
- za<EFBFBD><EFBFBD>tek hledan<EFBFBD>ho vzoru mus<EFBFBD> b<EFBFBD>t ukotven k za<EFBFBD><EFBFBD>tku, tj.
|
|
|
|
|
|
|
|
|
|
* vzor LIKE nesm<EFBFBD> za<EFBFBD><EFBFBD>nat %
|
|
|
|
|
* regul<EFBFBD>rn<EFBFBD> v<EFBFBD>raz mus<EFBFBD> za<EFBFBD><EFBFBD>nat ^
|
|
|
|
|
|
|
|
|
|
- vzor nesm<EFBFBD> za<EFBFBD><EFBFBD>nat intervalem, nap<EFBFBD>. [a-e]
|
|
|
|
|
|
|
|
|
|
- vyhled<EFBFBD>van<EFBFBD>, kter<EFBFBD> nen<EFBFBD> Case sensitiv nepou<EFBFBD><EFBFBD>v<EFBFBD> indexy.
|
|
|
|
|
M<EFBFBD><EFBFBD>ete ale pou<EFBFBD><EFBFBD>t funkcion<EFBFBD>ln<EFBFBD> indexy, kter<EFBFBD> jsou pos<EFBFBD>ny v sekci
|
|
|
|
|
4.12
|
|
|
|
|
- p<EFBFBD>i inicializaci datab<EFBFBD>ze (initdb) mus<EFBFBD> b<EFBFBD>t pou<EFBFBD>ito C locale
|
|
|
|
|
(pozn. p<EFBFBD>ekladatele - tud<EFBFBD><EFBFBD> v na<EFBFBD>ich podm<EFBFBD>nk<EFBFBD>ch nepou<EFBFBD>iteln<EFBFBD>,
|
|
|
|
|
nepracovalo by <EFBFBD>esk<EFBFBD> t<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD>).
|
|
|
|
|
|
|
|
|
|
4.9 Jak zjist<EFBFBD>m, jak optimizer dotazu vyhodnocuje m<EFBFBD>j dotaz?
|
|
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Pod<EFBFBD>vejte se do manu<EFBFBD>lov<EFBFBD> str<EFBFBD>nky p<EFBFBD><EFBFBD>kazu EXPLAIN.
|
|
|
|
|
|
|
|
|
|
4.10 Co to je R-tree index?
|
|
|
|
|
---------------------------
|
|
|
|
|
|
|
|
|
|
R-tree index se pou<EFBFBD><EFBFBD>v<EFBFBD> pro indexov<EFBFBD>n<EFBFBD> prostorov<EFBFBD>ch dat. Hash index
|
|
|
|
|
nem<EFBFBD><EFBFBD>e obslou<EFBFBD>it prohled<EFBFBD>v<EFBFBD>n<EFBFBD> oblast<EFBFBD>. B-tree index m<EFBFBD><EFBFBD>e <EFBFBD><EFBFBD>dit vyhled<EFBFBD>n<EFBFBD>
|
|
|
|
|
oblast<EFBFBD> v jedn<EFBFBD> dimenzi. R-tree index m<EFBFBD><EFBFBD>e podporovat hled<EFBFBD>n<EFBFBD> v
|
|
|
|
|
multidimenzion<EFBFBD>ln<EFBFBD>ch datech. Pou<EFBFBD>ijeme-li nap<EFBFBD><EFBFBD>klad R-tree index na
|
|
|
|
|
atributy typu point, pak syst<EFBFBD>m m<EFBFBD><EFBFBD>e efektivn<EFBFBD> odpov<EFBFBD>d<EFBFBD>t na dotaz -
|
|
|
|
|
vyber v<EFBFBD>echny body uvnit<EFBFBD> obd<EFBFBD>ln<EFBFBD>k<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
P<EFBFBD>vodn<EFBFBD> n<EFBFBD>vrh R-tree je 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
|
|
|
|
|
|
|
|
|
|
Tyto materi<EFBFBD>ly naleznete v Stonebraker's "Readings in Database Systems".
|
|
|
|
|
|
|
|
|
|
Vestav<EFBFBD>n<EFBFBD> R-tree m<EFBFBD><EFBFBD>e slou<EFBFBD>it k indexaci polygon<EFBFBD> a oblast<EFBFBD>. Teoreticky
|
|
|
|
|
m<EFBFBD><EFBFBD>eme R-tree pou<EFBFBD><EFBFBD>t i pro v<EFBFBD>ce dimenz<EFBFBD> (jin<EFBFBD> ne<EFBFBD> 3D). Ve skute<EFBFBD>nosti
|
|
|
|
|
ale takov<EFBFBD> roz<EFBFBD><EFBFBD><EFBFBD>en<EFBFBD> R-tree vy<EFBFBD>aduje trochu pr<EFBFBD>ce a ve sou<EFBFBD>astnosti
|
|
|
|
|
chyb<EFBFBD> dokumentace jak na to.
|
|
|
|
|
|
|
|
|
|
4.11 Co je Genetic Query Optimizer?
|
|
|
|
|
-----------------------------------
|
|
|
|
|
|
|
|
|
|
GEQO modul urychluje optimalizaci dotaz<EFBFBD> p<EFBFBD>i spojov<EFBFBD>n<EFBFBD> mno<EFBFBD>stv<EFBFBD> tabulek
|
|
|
|
|
metodou Genetick<EFBFBD>ch algoritm<EFBFBD> (GA). To umo<EFBFBD><EFBFBD>uje z<EFBFBD>skat velk<EFBFBD>ho mno<EFBFBD>stv<EFBFBD>
|
|
|
|
|
variant spojen<EFBFBD> p<EFBFBD>i ne<EFBFBD>pln<EFBFBD>m prohled<EFBFBD>v<EFBFBD>n<EFBFBD>m.
|
|
|
|
|
|
|
|
|
|
4.12 Jak prov<EFBFBD>st vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> regul<EFBFBD>rn<EFBFBD>ho v<EFBFBD>razu case sensitiv,
|
|
|
|
|
insensitiv? Jak pou<EFBFBD><EFBFBD>t index pro case insensitive vyhled<EFBFBD>v<EFBFBD>n<EFBFBD>?
|
|
|
|
|
|
|
|
|
|
Oper<EFBFBD>tor ~ slou<EFBFBD><EFBFBD> k porov<EFBFBD>n<EFBFBD> s regul<EFBFBD>rn<EFBFBD>m v<EFBFBD>razem, jeho modifikace *~
|
|
|
|
|
p<EFBFBD>edstavuje case insensitive vyhled<EFBFBD>v<EFBFBD>n<EFBFBD>. Jedn<EFBFBD> se o obdobu LIKE a
|
|
|
|
|
ILIKE.
|
|
|
|
|
|
|
|
|
|
Pro vyhled<EFBFBD>v<EFBFBD>n<EFBFBD> bez ohledu na velk<EFBFBD> mal<EFBFBD> p<EFBFBD>smena pou<EFBFBD>ijeme
|
|
|
|
|
|
|
|
|
|
SELECT * FROM tab
|
|
|
|
|
WHERE lower(col) = 'abc';
|
|
|
|
|
|
|
|
|
|
V tomto p<EFBFBD><EFBFBD>pad<EFBFBD> se nepou<EFBFBD>ije standardn<EFBFBD> index. Nicm<EFBFBD>n<EFBFBD>, pou<EFBFBD>ije se
|
|
|
|
|
funkcion<EFBFBD>ln<EFBFBD> index, pokud jej vytvo<EFBFBD><EFBFBD>te
|
|
|
|
|
|
|
|
|
|
CREATE INDEX tabindex ON tab (lower(col));
|
|
|
|
|
|
|
|
|
|
4.13 Jak v dotazu detekovat, <EFBFBD>e polo<EFBFBD>ka je NULL?
|
|
|
|
|
------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Ur<EFBFBD><EFBFBD>te pomoc<EFBFBD> IS NULL nebo IS NOT NULL
|
|
|
|
|
|
|
|
|
|
4.14 Jak<EFBFBD> jsou rozd<EFBFBD>ly mezi r<EFBFBD>zn<EFBFBD>mi znakov<EFBFBD>mi typy?
|
|
|
|
|
---------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Typ Intern<EFBFBD> n<EFBFBD>zev Pozn<EFBFBD>mka
|
|
|
|
|
--------------------------------------------------------------------------
|
|
|
|
|
VARCHAR(n) varchar omezeno maxim<EFBFBD>ln<EFBFBD> d<EFBFBD>lkou, bez dopln<EFBFBD>n<EFBFBD> mezerami
|
|
|
|
|
CHAR(n) bpchar <EFBFBD>et<EFBFBD>zec je dopln<EFBFBD>n mezerami do dan<EFBFBD> d<EFBFBD>lky
|
|
|
|
|
TEXT text bez horn<EFBFBD>ho limitu na d<EFBFBD>lku
|
|
|
|
|
BYTEA bytea pole byt<EFBFBD> (bezpe<EFBFBD>n<EFBFBD> lze ulo<EFBFBD>it i znak NULL)
|
|
|
|
|
"char" char jeden znak
|
|
|
|
|
|
|
|
|
|
S intern<EFBFBD>mi n<EFBFBD>zvy se setk<EFBFBD>te v syst<EFBFBD>mov<EFBFBD>m katalogu a v n<EFBFBD>kter<EFBFBD>ch
|
|
|
|
|
chybov<EFBFBD>ch hl<EFBFBD><EFBFBD>en<EFBFBD>ch.
|
|
|
|
|
|
|
|
|
|
Prvn<EFBFBD> <EFBFBD>ty<EFBFBD>i uveden<EFBFBD> typy jsou tzv. varlena typy (tj. prvn<EFBFBD> <EFBFBD>ty<EFBFBD>i byty na
|
|
|
|
|
disku nesou <EFBFBD>daj o d<EFBFBD>lce, n<EFBFBD>sleduj<EFBFBD> samotn<EFBFBD> data). Proto skute<EFBFBD>n<EFBFBD>
|
|
|
|
|
pou<EFBFBD>it<EFBFBD> prostor je v<EFBFBD>dy o n<EFBFBD>co m<EFBFBD>lo v<EFBFBD>t<EFBFBD><EFBFBD> ne<EFBFBD> deklarovan<EFBFBD> d<EFBFBD>lka. Naopak,
|
|
|
|
|
tyto datov<EFBFBD> typy jsou komprimov<EFBFBD>nty TOASTem, tak<EFBFBD>e prostor na disku m<EFBFBD><EFBFBD>e
|
|
|
|
|
b<EFBFBD>t ni<EFBFBD><EFBFBD><EFBFBD> ne<EFBFBD> je o<EFBFBD>ek<EFBFBD>v<EFBFBD>no.
|
|
|
|
|
|
|
|
|
|
VARCHAR(n) je vhodn<EFBFBD> pro ukl<EFBFBD>d<EFBFBD>n<EFBFBD> text<EFBFBD> promm<EFBFBD>n<EFBFBD> d<EFBFBD>lky s pevn<EFBFBD>
|
|
|
|
|
stanovenou maxim<EFBFBD>ln<EFBFBD> d<EFBFBD>lkou. TEXT je pro <EFBFBD>et<EFBFBD>zce bez omezen<EFBFBD> d<EFBFBD>lky s
|
|
|
|
|
maximem jeden gigabajt.
|
|
|
|
|
|
|
|
|
|
CHAR(n) slou<EFBFBD><EFBFBD> k ukl<EFBFBD>d<EFBFBD>n<EFBFBD> <EFBFBD>et<EFBFBD>zc<EFBFBD> stejn<EFBFBD> d<EFBFBD>lky. CHAR(n) dopln<EFBFBD> pr<EFBFBD>zdn<EFBFBD>
|
|
|
|
|
znaky do specifikovan<EFBFBD> d<EFBFBD>lky, zat<EFBFBD>mco VARCHAR(n) ulo<EFBFBD><EFBFBD> pouze p<EFBFBD>edan<EFBFBD>
|
|
|
|
|
znaky. BYTEA je ur<EFBFBD>eno pro ukl<EFBFBD>d<EFBFBD>n<EFBFBD> bin<EFBFBD>rn<EFBFBD>ch dat, v<EFBFBD>etn<EFBFBD> NULL byte.
|
|
|
|
|
V<EFBFBD>echny zde popsan<EFBFBD> typy maj<EFBFBD> podobn<EFBFBD> v<EFBFBD>konnostn<EFBFBD> charakteristiky.
|
|
|
|
|
|
|
|
|
|
4.15.1 Jak vytvo<EFBFBD>it serial/auto-increment pole?
|
|
|
|
|
-----------------------------------------------
|
|
|
|
|
|
|
|
|
|
PostgreSQL podporuje typ SERIAL. P<EFBFBD>i jeho pou<EFBFBD>it<EFBFBD> se automaticky vytvo<EFBFBD><EFBFBD>
|
|
|
|
|
SEQUENCE a index na sloupci (Pro vy<EFBFBD><EFBFBD><EFBFBD> verze to neplat<EFBFBD> OV<EFBFBD><EFBFBD>IT).
|
|
|
|
|
Nap<EFBFBD><EFBFBD>klad:
|
|
|
|
|
|
|
|
|
|
CREATE TABLE person (
|
|
|
|
|
id SERIAL,
|
|
|
|
|
name TEXT
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
je automaticky p<EFBFBD>evedeno do
|
|
|
|
|
|
|
|
|
|
CREATE SEQUENCE person_id_seq;
|
|
|
|
|
CREATE TABLE person (
|
|
|
|
|
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
|
|
|
|
|
name TEXT
|
|
|
|
|
);
|
|
|
|
|
CREATE UNIQUE INDEX person_id_key ON person(id);
|
|
|
|
|
|
|
|
|
|
Viz dokumentace create_sequence v manu<EFBFBD>lov<EFBFBD>ch str<EFBFBD>nk<EFBFBD>ch. D<EFBFBD>le m<EFBFBD><EFBFBD>ete
|
|
|
|
|
pou<EFBFBD><EFBFBD>t unik<EFBFBD>tn<EFBFBD> hodnotu OID ka<EFBFBD>d<EFBFBD>ho <EFBFBD><EFBFBD>dku. Potom ale mus<EFBFBD>te spou<EFBFBD>t<EFBFBD>t
|
|
|
|
|
pg_dump s p<EFBFBD>ep<EFBFBD>na<EFBFBD>em -o, tak aby z<EFBFBD>staly zachov<EFBFBD>ny hodnoty OID (u
|
|
|
|
|
p<EFBFBD><EFBFBD>kazu copy COPY WITH OIDS).
|
|
|
|
|
|
|
|
|
|
4.15.2 Jak z<EFBFBD>skat hodnotu SERIAL po vlo<EFBFBD>en<EFBFBD> <EFBFBD><EFBFBD>dku?
|
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Jednou z mo<EFBFBD>nost<EFBFBD> je z<EFBFBD>skat budouc<EFBFBD> hodnotu SERIAL funkc<EFBFBD> nextval p<EFBFBD>ed
|
|
|
|
|
samotn<EFBFBD>m vlo<EFBFBD>en<EFBFBD>m a pak ji vlo<EFBFBD>it explicitn<EFBFBD>. Nap<EFBFBD><EFBFBD>klad v jak<EFBFBD>msi
|
|
|
|
|
pseudojazyku
|
|
|
|
|
|
|
|
|
|
newid = execute("SELECT nextval('person_id_seq')");
|
|
|
|
|
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
|
|
|
|
|
|
|
|
|
|
M<EFBFBD><EFBFBD>ete pak je<EFBFBD>t<EFBFBD> pou<EFBFBD><EFBFBD>t hodnotu newid v dal<EFBFBD><EFBFBD>ch dotazech, nap<EFBFBD>. jako
|
|
|
|
|
hodnotu ciz<EFBFBD>ho kl<EFBFBD><EFBFBD>e. N<EFBFBD>zev automaticky vytvo<EFBFBD>en<EFBFBD> sekvence je
|
|
|
|
|
tabulka_sloupec_seq.
|
|
|
|
|
|
|
|
|
|
Alternativn<EFBFBD> m<EFBFBD><EFBFBD>ete z<EFBFBD>skat hodnotu posledn<EFBFBD> generovou sekvenc<EFBFBD> funkc<EFBFBD>
|
|
|
|
|
currval() po vlo<EFBFBD>en<EFBFBD>
|
|
|
|
|
|
|
|
|
|
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
|
|
|
|
|
new_id = execute("SELECT currval('person_id_seq')");
|
|
|
|
|
|
|
|
|
|
Kone<EFBFBD>n<EFBFBD> m<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t OID hodnotu vr<EFBFBD>cenou p<EFBFBD><EFBFBD>kazem INSERT, ale to je
|
|
|
|
|
pravd<EFBFBD>podobn<EFBFBD> nejm<EFBFBD>n<EFBFBD> p<EFBFBD>enositeln<EFBFBD> <EFBFBD>e<EFBFBD>en<EFBFBD>. V Perlu p<EFBFBD>i pou<EFBFBD>it<EFBFBD> DBI
|
|
|
|
|
modulu Edmunda Mergleho DBD:Pg oid hodnotu z<EFBFBD>sk<EFBFBD>me $sth->{pg_oid_status}
|
|
|
|
|
po ka<EFBFBD>d<EFBFBD>m $sth->execute().
|
|
|
|
|
|
|
|
|
|
4.15.3 Nepovede currval() a nextval() k rozhozen<EFBFBD> podm<EFBFBD>nek p<EFBFBD>i soub<EFBFBD>hu s jin<EFBFBD>mi u<EFBFBD>ivateli?
|
|
|
|
|
------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Nikoliv, currval() vrac<EFBFBD> hodnotu naposledy generovanou ve va<EFBFBD>em
|
|
|
|
|
backendu, a ta tud<EFBFBD><EFBFBD> nen<EFBFBD> spole<EFBFBD>n<EFBFBD> v<EFBFBD>em u<EFBFBD>ivatel<EFBFBD>m.
|
|
|
|
|
|
|
|
|
|
4.15.4 Pro<EFBFBD> nen<EFBFBD> vygenerovan<EFBFBD> <EFBFBD><EFBFBD>slo pou<EFBFBD>ito p<EFBFBD>i p<EFBFBD>eru<EFBFBD>en<EFBFBD> transakce?
|
|
|
|
|
Pro<EFBFBD> vznikaj<EFBFBD> d<EFBFBD>ry v <EFBFBD><EFBFBD>slov<EFBFBD>n<EFBFBD> vlastn<EFBFBD> sekvenc<EFBFBD>/SERIAL sloupce?
|
|
|
|
|
|
|
|
|
|
K zaji<EFBFBD>t<EFBFBD>n<EFBFBD> efektivnosti soub<EFBFBD>hu, jsou hodnoty posloupnosti, kdy<EFBFBD> se o
|
|
|
|
|
n<EFBFBD> po<EFBFBD><EFBFBD>d<EFBFBD>, a sekvence nen<EFBFBD> zam<EFBFBD>ena do ukon<EFBFBD>en<EFBFBD> transakce. To zp<EFBFBD>sobuje
|
|
|
|
|
d<EFBFBD>ry v <EFBFBD><EFBFBD>slov<EFBFBD>n<EFBFBD> ze zru<EFBFBD>en<EFBFBD>ch transakc<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
4.16 Co to je OID? Co je to TID?
|
|
|
|
|
--------------------------------
|
|
|
|
|
|
|
|
|
|
Ka<EFBFBD>d<EFBFBD> <EFBFBD><EFBFBD>dek vytvo<EFBFBD>en<EFBFBD> v PostgreSQL z<EFBFBD>sk<EFBFBD> jedine<EFBFBD>n<EFBFBD> OID. V<EFBFBD>echna OID
|
|
|
|
|
generovan<EFBFBD> b<EFBFBD>hem inicializace datab<EFBFBD>ze jsou men<EFBFBD><EFBFBD> ne<EFBFBD> 16384
|
|
|
|
|
(include/access/transam.h). V<EFBFBD>echna OID generovan<EFBFBD> na po<EFBFBD>adavek
|
|
|
|
|
u<EFBFBD>ivatele jsou rovna nebo vy<EFBFBD><EFBFBD><EFBFBD> t<EFBFBD>to hodnot<EFBFBD>. Norm<EFBFBD>ln<EFBFBD>, v<EFBFBD>echna OID jsou
|
|
|
|
|
jedine<EFBFBD>n<EFBFBD> nejen uvnit<EFBFBD> tabulky nebo datab<EFBFBD>ze, ale v r<EFBFBD>mci cel<EFBFBD> instalace
|
|
|
|
|
PostgreSQL
|
|
|
|
|
|
|
|
|
|
PostgreSQL pou<EFBFBD><EFBFBD>v<EFBFBD> OID ve sv<EFBFBD>m intern<EFBFBD>m syst<EFBFBD>mu tabulek k vytvo<EFBFBD>en<EFBFBD>
|
|
|
|
|
relac<EFBFBD>. Tato OID mohou b<EFBFBD>t pou<EFBFBD>ita k identifikaci konkr<EFBFBD>tn<EFBFBD>ho u<EFBFBD>ivatele
|
|
|
|
|
a pou<EFBFBD>ita v spojen<EFBFBD>. Pro OID hodnoty je doporu<EFBFBD>en typ OID. Nad t<EFBFBD>mto
|
|
|
|
|
sloupcem m<EFBFBD><EFBFBD>ete vytvo<EFBFBD>it index pro urychlen<EFBFBD> p<EFBFBD><EFBFBD>stupu.
|
|
|
|
|
|
|
|
|
|
OID jsou d<EFBFBD>na v<EFBFBD>em <EFBFBD><EFBFBD>dk<EFBFBD>m z centr<EFBFBD>ln<EFBFBD> oblasti a jsou pou<EFBFBD>ita v ka<EFBFBD>d<EFBFBD>
|
|
|
|
|
datab<EFBFBD>zi. Pokud pot<EFBFBD>ebujete zm<EFBFBD>nit OID, nebo chcete zkop<EFBFBD>rovat tabulku s
|
|
|
|
|
p<EFBFBD>vodn<EFBFBD>mi OID, lze pou<EFBFBD><EFBFBD>t
|
|
|
|
|
|
|
|
|
|
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 jsou ulo<EFBFBD>ena jako 4bajtov<EFBFBD> integer a p<EFBFBD>ete<EFBFBD>ou po <EFBFBD>ty<EFBFBD>ech miliard<EFBFBD>ch.
|
|
|
|
|
Nebylo hl<EFBFBD><EFBFBD>eno, <EFBFBD>e by se tak n<EFBFBD>kdy stalo, p<EFBFBD>esto ale pl<EFBFBD>nujeme odstranit
|
|
|
|
|
tento limit d<EFBFBD><EFBFBD>v ne<EFBFBD> se tak stane.
|
|
|
|
|
|
|
|
|
|
TID se pou<EFBFBD><EFBFBD>vaj<EFBFBD> i identifikaci fyzick<EFBFBD>ch <EFBFBD><EFBFBD>dk<EFBFBD> s hodnotou bloku a
|
|
|
|
|
offsetu. TIDs se m<EFBFBD>n<EFBFBD> modifikac<EFBFBD> <EFBFBD><EFBFBD>dk<EFBFBD> (pou<EFBFBD><EFBFBD>v<EFBFBD> se jako ukazatel indexu
|
|
|
|
|
fyzick<EFBFBD>ho <EFBFBD><EFBFBD>dku).
|
|
|
|
|
|
|
|
|
|
4.17 Jak<EFBFBD> je v<EFBFBD>znam n<EFBFBD>kter<EFBFBD>ch v<EFBFBD>raz<EFBFBD> pou<EFBFBD>it<EFBFBD>ch v PostgreSQL?
|
|
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
V n<EFBFBD>kter<EFBFBD>ch zdrojov<EFBFBD>ch k<EFBFBD>dech nebo star<EFBFBD><EFBFBD> dokumentaci se m<EFBFBD><EFBFBD>ete setkat s
|
|
|
|
|
n<EFBFBD>sleduj<EFBFBD>c<EFBFBD>mi v<EFBFBD>razy, kter<EFBFBD> maj<EFBFBD> <EFBFBD>ir<EFBFBD><EFBFBD> v<EFBFBD>znam. Zde je p<EFBFBD><EFBFBD>klad nekter<EFBFBD>ch:
|
|
|
|
|
|
|
|
|
|
- tabulka, relace, t<EFBFBD><EFBFBD>da (table, relation, class)
|
|
|
|
|
- <EFBFBD><EFBFBD>dek, z<EFBFBD>znam, ntice (row, record, tuple)
|
|
|
|
|
- sloupec, polo<EFBFBD>ka, atribut (column, field, attribute)
|
|
|
|
|
- vyhled<EFBFBD>n<EFBFBD>, v<EFBFBD>b<EFBFBD>r (retrieve, select)
|
|
|
|
|
|
|
|
|
|
- n<EFBFBD>hrada, <EFBFBD>prava (replace, update)
|
|
|
|
|
- p<EFBFBD>id<EFBFBD>n<EFBFBD>, vkl<EFBFBD>d<EFBFBD>n<EFBFBD> (append, insert)
|
|
|
|
|
- OID, serial value (OID, serial value)
|
|
|
|
|
- portal, kurzor (portal, cursor)
|
|
|
|
|
- range variable, jm<EFBFBD>no tabulky, alias tabulky (range
|
|
|
|
|
variable, table name, table alias)
|
|
|
|
|
|
|
|
|
|
seznam t<EFBFBD>chto v<EFBFBD>raz<EFBFBD> m<EFBFBD><EFBFBD>ete nal<EFBFBD>zt na
|
|
|
|
|
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/g
|
|
|
|
|
lossary.html.
|
|
|
|
|
|
|
|
|
|
4.18 Pro<EFBFBD> jsem z<EFBFBD>skal chybov<EFBFBD> hl<EFBFBD><EFBFBD>en<EFBFBD> "ERROR: Memory exhausted in AllocSetAlloc()"?
|
|
|
|
|
-----------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Pravd<EFBFBD>podobn<EFBFBD> do<EFBFBD>lo k vy<EFBFBD>erp<EFBFBD>n<EFBFBD> virtu<EFBFBD>ln<EFBFBD> pam<EFBFBD><EFBFBD>i na Va<EFBFBD>em syst<EFBFBD>mu, nebo
|
|
|
|
|
j<EFBFBD>dro m<EFBFBD> n<EFBFBD>zk<EFBFBD> limit pro ur<EFBFBD>it<EFBFBD> zdroje. Vyzkou<EFBFBD>ejte p<EFBFBD>ed startem
|
|
|
|
|
posmatera
|
|
|
|
|
|
|
|
|
|
ulimit -d 262144
|
|
|
|
|
limit datasize 256m
|
|
|
|
|
|
|
|
|
|
Z<EFBFBD>le<EFBFBD><EFBFBD> na Va<EFBFBD>em shellu, zda budou tyto p<EFBFBD><EFBFBD>kazy <EFBFBD>sp<EFBFBD><EFBFBD>n<EFBFBD>, m<EFBFBD>ly by zv<EFBFBD><EFBFBD>it
|
|
|
|
|
limit datov<EFBFBD>ho segmentu pro Va<EFBFBD>e procesy a umo<EFBFBD>nit tak dokon<EFBFBD>en<EFBFBD> dotazu.
|
|
|
|
|
Tyto p<EFBFBD><EFBFBD>kazy se aplikuj<EFBFBD> na aktu<EFBFBD>ln<EFBFBD> proces a v<EFBFBD>echny synovsk<EFBFBD> procesy
|
|
|
|
|
vytvo<EFBFBD>en<EFBFBD> po proveden<EFBFBD> p<EFBFBD><EFBFBD>kazu. Pokud m<EFBFBD>te probl<EFBFBD>my s SQL klientem
|
|
|
|
|
proto<EFBFBD>e backend vrac<EFBFBD> p<EFBFBD><EFBFBD>li<EFBFBD> mnoho dat, zkuste zv<EFBFBD><EFBFBD>it limity p<EFBFBD>ed
|
|
|
|
|
startem klienta.
|
|
|
|
|
|
|
|
|
|
4.19 Jak se dozv<EFBFBD>m, kterou verzi PostgreSQL pou<EFBFBD><EFBFBD>v<EFBFBD>m?
|
|
|
|
|
-----------------------------------------------------
|
|
|
|
|
|
|
|
|
|
V psql spus<EFBFBD>te
|
|
|
|
|
|
|
|
|
|
SELECT version();
|
|
|
|
|
|
|
|
|
|
4.20 Pro<EFBFBD> operace s velk<EFBFBD>mi objekty kon<EFBFBD><EFBFBD> "invalid large obj descriptor"?
|
|
|
|
|
-------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
V<EFBFBD>echny operace s velk<EFBFBD>mi objekty - lo_open, lo_close, ... mus<EFBFBD>te
|
|
|
|
|
spou<EFBFBD>t<EFBFBD>t v transakci, tj. mezi p<EFBFBD><EFBFBD>kazy BEGIN WORK a COMMIT.
|
|
|
|
|
|
|
|
|
|
PostgreSQL uvol<EFBFBD>uje handle velk<EFBFBD>ch objekt<EFBFBD> p<EFBFBD>i skon<EFBFBD>en<EFBFBD> transakce. Pokud
|
|
|
|
|
budete pracovat s velk<EFBFBD>mi objekty mimo transakci, pravd<EFBFBD>podobn<EFBFBD>
|
|
|
|
|
dostanete toto chybov<EFBFBD> hl<EFBFBD><EFBFBD>en<EFBFBD>, proto<EFBFBD>e handle ji<EFBFBD> budou neplatn<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
Pokud pou<EFBFBD><EFBFBD>v<EFBFBD>te interface podobn<EFBFBD> ODBC mus<EFBFBD>te nastavit set auto_commit
|
|
|
|
|
off
|
|
|
|
|
|
|
|
|
|
4.21 Jak vytvo<EFBFBD>it sloupec obsahuj<EFBFBD>c<EFBFBD> implicitn<EFBFBD> aktu<EFBFBD>ln<EFBFBD> datum?
|
|
|
|
|
---------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Pou<EFBFBD>ijte CURRENT_TIMESTAMP
|
|
|
|
|
|
|
|
|
|
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
|
|
|
|
|
|
|
|
|
|
4.22 Pro<EFBFBD> jsou moje vno<EFBFBD>en<EFBFBD> dotazy pou<EFBFBD><EFBFBD>vaj<EFBFBD>c<EFBFBD> IN tak pomal<EFBFBD>?
|
|
|
|
|
-------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Aktu<EFBFBD>ln<EFBFBD> spojujeme tabulky se sekven<EFBFBD>n<EFBFBD>m skenov<EFBFBD>n<EFBFBD>m v<EFBFBD>sledku pro ka<EFBFBD>d<EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD>dek vn<EFBFBD>j<EFBFBD><EFBFBD>ho dotazu. Pokud vno<EFBFBD>en<EFBFBD> dotaz m<EFBFBD> pouze n<EFBFBD>kolik <EFBFBD><EFBFBD>dk<EFBFBD> a
|
|
|
|
|
vn<EFBFBD>j<EFBFBD><EFBFBD> dotaz vrac<EFBFBD> hodn<EFBFBD> <EFBFBD><EFBFBD>dek, IN je rychl<EFBFBD>. V jin<EFBFBD>ch p<EFBFBD><EFBFBD>padech
|
|
|
|
|
nahra<EFBFBD>te IN EXISTS:
|
|
|
|
|
|
|
|
|
|
SELECT * FROM tab
|
|
|
|
|
WHERE col IN (SELECT subcol FROM subtab);
|
|
|
|
|
|
|
|
|
|
takto
|
|
|
|
|
|
|
|
|
|
SELECT * FROM tab
|
|
|
|
|
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
|
|
|
|
|
|
|
|
|
|
Pro urychlen<EFBFBD> vytvo<EFBFBD>ete index pro subcol. Tento v<EFBFBD>konnostn<EFBFBD> probl<EFBFBD>m byl
|
|
|
|
|
odstran<EFBFBD>n ve verzi 7.4.
|
|
|
|
|
|
|
|
|
|
4.23 Jak prov<EFBFBD>st vn<EFBFBD>j<EFBFBD><EFBFBD> spojen<EFBFBD> (outer join)?
|
|
|
|
|
---------------------------------------------
|
|
|
|
|
|
|
|
|
|
PostgreSQL podporuje vn<EFBFBD>j<EFBFBD><EFBFBD> spojen<EFBFBD> tabulek standardn<EFBFBD>mi SQL p<EFBFBD><EFBFBD>kazy.
|
|
|
|
|
Zde jsou dva p<EFBFBD><EFBFBD>klady:
|
|
|
|
|
|
|
|
|
|
SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
|
|
|
|
|
|
|
|
|
|
nebo
|
|
|
|
|
|
|
|
|
|
SELECT * FROM t1 LEFT OUTER JOIN USING (col);
|
|
|
|
|
|
|
|
|
|
Tyto identick<EFBFBD> dotazy napoj<EFBFBD> t1.col na t2.col a je<EFBFBD>t<EFBFBD> p<EFBFBD>id<EFBFBD> nep<EFBFBD>ipojen<EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD>dky z t1 (kter<EFBFBD> nemaj<EFBFBD> obdoby v t2). Prav<EFBFBD> spojen<EFBFBD> (RIGHT JOIN) p<EFBFBD>id<EFBFBD>
|
|
|
|
|
nep<EFBFBD>ipojen<EFBFBD> <EFBFBD><EFBFBD>dky z t2. FULL JOIN vr<EFBFBD>t<EFBFBD> v<EFBFBD>echny <EFBFBD><EFBFBD>dky, v<EFBFBD>etn<EFBFBD>
|
|
|
|
|
nep<EFBFBD>ipojen<EFBFBD>ch z tbulek t1 a t2. Kl<EFBFBD><EFBFBD>ov<EFBFBD> slovo OUTER je nepovinn<EFBFBD> a v<EFBFBD><EFBFBD>e
|
|
|
|
|
se na LEFT, RIGHT a FULL join. B<EFBFBD><EFBFBD>n<EFBFBD> spojen<EFBFBD> se naz<EFBFBD>v<EFBFBD> INNER JOIN.
|
|
|
|
|
|
|
|
|
|
V d<EFBFBD><EFBFBD>v<EFBFBD>j<EFBFBD><EFBFBD>ch verz<EFBFBD>ch se vn<EFBFBD>j<EFBFBD><EFBFBD> spojen<EFBFBD> tabulek mohlo simulovat pomoc<EFBFBD>
|
|
|
|
|
UNION a NOT IN. Nap<EFBFBD><EFBFBD>klad pro spojen<EFBFBD> tabulek tab1 a tab2, je
|
|
|
|
|
n<EFBFBD>sleduj<EFBFBD>c<EFBFBD> dotaz ekvivalentn<EFBFBD> k vn<EFBFBD>j<EFBFBD><EFBFBD>mu spojen<EFBFBD> dvou tabulek:
|
|
|
|
|
|
|
|
|
|
SELECT tab1.col2, tab2.col2 FROM tab1, tab2
|
|
|
|
|
WHERE tab1.col1 = tab2.col1
|
|
|
|
|
UNION ALL
|
|
|
|
|
SELECT tab1.col2, NULL FROM tab1
|
|
|
|
|
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
|
|
|
|
|
ORDER BY col1;
|
|
|
|
|
|
|
|
|
|
4.24 Jak prov<EFBFBD>st dotaz nap<EFBFBD><EFBFBD><EFBFBD> n<EFBFBD>kolika datab<EFBFBD>zemi?
|
|
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
|
|
PostgreSQL nenab<EFBFBD>z<EFBFBD> <EFBFBD><EFBFBD>dn<EFBFBD> zp<EFBFBD>sob, jak se dot<EFBFBD>zat do jin<EFBFBD> datab<EFBFBD>ze ne<EFBFBD> do
|
|
|
|
|
aktu<EFBFBD>ln<EFBFBD>. Dopln<EFBFBD>k contrib/dblink umo<EFBFBD><EFBFBD>uje dotaz do ciz<EFBFBD> datab<EFBFBD>ze
|
|
|
|
|
prost<EFBFBD>ednictv<EFBFBD>m funkce. Na stran<EFBFBD> klienta nen<EFBFBD> probl<EFBFBD>m si otev<EFBFBD><EFBFBD>t v<EFBFBD>ce
|
|
|
|
|
simult<EFBFBD>ln<EFBFBD>ch p<EFBFBD><EFBFBD>stup<EFBFBD> do r<EFBFBD>zn<EFBFBD>ch datab<EFBFBD>z<EFBFBD> a spojovat v<EFBFBD>sledek na stran<EFBFBD>
|
|
|
|
|
klienta.
|
|
|
|
|
|
|
|
|
|
4.25 M<EFBFBD><EFBFBD>e funkce vr<EFBFBD>tit v<EFBFBD>ce <EFBFBD><EFBFBD>dk<EFBFBD> nebo sloupc<EFBFBD>?
|
|
|
|
|
------------------------------------------------
|
|
|
|
|
|
|
|
|
|
V PostgreSQL 7.3 m<EFBFBD><EFBFBD>ete jednodu<EFBFBD>e vracet v<EFBFBD>ce <EFBFBD><EFBFBD>dk<EFBFBD> nebo sloupc<EFBFBD> z
|
|
|
|
|
funkce, viz:
|
|
|
|
|
http://techdocs.postgresql.org/guides/SetReturningFunctions.
|
|
|
|
|
|
|
|
|
|
4.26 Pro<EFBFBD> nelze spolehliv<EFBFBD> vytv<EFBFBD><EFBFBD>et a ru<EFBFBD>it do<EFBFBD>asn<EFBFBD> tabulky v PL/pgSQL funkc<EFBFBD>ch?
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
P<EFBFBD>elo<EFBFBD>en<EFBFBD> k<EFBFBD>d PL/pgSQL funkce je ulo<EFBFBD>en ve vyrovn<EFBFBD>vac<EFBFBD> pam<EFBFBD>ti, tj.
|
|
|
|
|
funkce je p<EFBFBD>ekl<EFBFBD>d<EFBFBD>na pouze p<EFBFBD>i zm<EFBFBD>n<EFBFBD> k<EFBFBD>du, nikoliv p<EFBFBD>ed ka<EFBFBD>d<EFBFBD>m vol<EFBFBD>n<EFBFBD>m
|
|
|
|
|
funkce. Necht<EFBFBD>n<EFBFBD>m vedlej<EFBFBD><EFBFBD>m efektem je, <EFBFBD>e vol<EFBFBD>n<EFBFBD> funkce sel<EFBFBD>e, kdy<EFBFBD> se
|
|
|
|
|
funkce odkazuje na do<EFBFBD>asnou tabulku, pokud tato tabulka byla od p<EFBFBD>ekladu
|
|
|
|
|
funkce zru<EFBFBD>ena (a<EFBFBD>koliv ji<EFBFBD> byla znovu vytvo<EFBFBD>ena a existuje). Jedin<EFBFBD>m
|
|
|
|
|
<EFBFBD>e<EFBFBD>en<EFBFBD>m probl<EFBFBD>mu je p<EFBFBD><EFBFBD>stup k do<EFBFBD>asn<EFBFBD> tabulce pomoc<EFBFBD> EXECUTE, tj.
|
|
|
|
|
dynamick<EFBFBD> prov<EFBFBD>d<EFBFBD>n<EFBFBD> dotazu. Tento p<EFBFBD><EFBFBD>kaz zajist<EFBFBD> opakovan<EFBFBD> p<EFBFBD>eklad
|
|
|
|
|
dotazu p<EFBFBD>i ka<EFBFBD>d<EFBFBD>m vol<EFBFBD>n<EFBFBD> funkce.
|
|
|
|
|
|
|
|
|
|
4.27 Jak<EFBFBD> jsou mo<EFBFBD>nosti replikace datab<EFBFBD>z<EFBFBD>?
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
|
|
|
|
|
Existuje n<EFBFBD>kolik dostupn<EFBFBD>ch <EFBFBD>e<EFBFBD>en<EFBFBD> master/slave replikac<EFBFBD>. Ty povoluj<EFBFBD>
|
|
|
|
|
modifikace master datab<EFBFBD>ze a slave datab<EFBFBD>z<EFBFBD>m umo<EFBFBD><EFBFBD>uj<EFBFBD> pouze <EFBFBD>ten<EFBFBD>. Na
|
|
|
|
|
konci http://gborg.PostgreSQL.org/genpage?replication_research najdete
|
|
|
|
|
jejich seznam. Na <EFBFBD>e<EFBFBD>en<EFBFBD> multi-master replikaci se pracuje na
|
|
|
|
|
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
|
|
|
|
|
|
|
|
|
|
4.28 Jak<EFBFBD> jsou mo<EFBFBD>nosti <EFBFBD>ifrov<EFBFBD>n<EFBFBD> datab<EFBFBD>z<EFBFBD>?
|
|
|
|
|
-------------------------------------------
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
contrib/pgcrypto obsahuje <EFBFBD>ifrovac<EFBFBD> funkce pou<EFBFBD>iteln<EFBFBD> v SQL
|
|
|
|
|
dotazech.
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
K <EFBFBD>ifrov<EFBFBD>n<EFBFBD> p<EFBFBD>enosu dat z klienta na server, mus<EFBFBD> b<EFBFBD>t server
|
|
|
|
|
p<EFBFBD>elo<EFBFBD>en s podporou ssl a p<EFBFBD>ep<EFBFBD>na<EFBFBD> sslv postgresql.conf mus<EFBFBD> b<EFBFBD>t
|
|
|
|
|
nastaven na hodnotu true. Klient mus<EFBFBD> m<EFBFBD>t vytvo<EFBFBD>en z<EFBFBD>znam hostssl v
|
|
|
|
|
pg_hba.conf a tak<EFBFBD> m<EFBFBD>t povolen re<EFBFBD>im ssl. Lze pou<EFBFBD><EFBFBD>t i jin<EFBFBD>
|
|
|
|
|
prost<EFBFBD>edky, nejen nativn<EFBFBD> podporu ssl v PostgreSQL, nap<EFBFBD>. stunel a
|
|
|
|
|
ssh.
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
Hesla u<EFBFBD>ivatel<EFBFBD> datab<EFBFBD>ze jsou za<EFBFBD>ifrov<EFBFBD>na po<EFBFBD><EFBFBD>naje verz<EFBFBD> 7.3. Ve
|
|
|
|
|
star<EFBFBD><EFBFBD>ch verz<EFBFBD>ch toto chov<EFBFBD>n<EFBFBD> muselo b<EFBFBD>t vynuceno volbou
|
|
|
|
|
PASSWORD_ENCRYPTION v postgresql.conf
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
Server m<EFBFBD><EFBFBD>e b<EFBFBD><EFBFBD>et na <EFBFBD>ifrovan<EFBFBD>m souborov<EFBFBD>m syst<EFBFBD>mu.
|
|
|
|
|
|
|
|
|
|
------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Roz<EFBFBD>i<EFBFBD>ov<EFBFBD>n<EFBFBD> PostgreSQL
|
|
|
|
|
======================
|
|
|
|
|
|
|
|
|
|
5.1 Napsal jsem UDF funkci, PostgreSQL v<EFBFBD>ak kon<EFBFBD><EFBFBD> dump core?
|
|
|
|
|
------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Probl<EFBFBD>m m<EFBFBD><EFBFBD>e b<EFBFBD>t zp<EFBFBD>soben mnoha okolnostmi. Vyzkou<EFBFBD>ejte si svoji funkci
|
|
|
|
|
nejd<EFBFBD><EFBFBD>ve v n<EFBFBD>jak<EFBFBD> jednoduch<EFBFBD> aplikaci.
|
|
|
|
|
|
|
|
|
|
5.2 Jak mohu p<EFBFBD>isp<EFBFBD>t n<EFBFBD>jak<EFBFBD>mi <EFBFBD>ikovn<EFBFBD>mi datov<EFBFBD>mi typy a funkcemi do PostgreSQL?
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Po<EFBFBD>lete sv<EFBFBD> roz<EFBFBD><EFBFBD><EFBFBD>en<EFBFBD> do konference pgsql-hackers, a ono pak mo<EFBFBD>n<EFBFBD>
|
|
|
|
|
skon<EFBFBD><EFBFBD> v podadres<EFBFBD><EFBFBD>i contrib.
|
|
|
|
|
|
|
|
|
|
5.3 Jak napsat funkci v C vracej<EFBFBD>c<EFBFBD> ntici?
|
|
|
|
|
------------------------------------------
|
|
|
|
|
|
|
|
|
|
Funkce vracej<EFBFBD>c<EFBFBD> tabulky jsou podporovan<EFBFBD> PostgreSQL 7.3 a vy<EFBFBD><EFBFBD><EFBFBD> pro
|
|
|
|
|
jazyky C, PL/PgSQL a SQL. V<EFBFBD>ce naleznete v The Programmer's Guide.
|
|
|
|
|
P<EFBFBD><EFBFBD>klady t<EFBFBD>chto funkc<EFBFBD> pro C naleznete v contrib/tablefunc.
|
|
|
|
|
|
|
|
|
|
5.4 Modifikoval jsem zdrojov<EFBFBD> soubory. Tato zm<EFBFBD>na nebyla p<EFBFBD>i rekompilaci vzata v potaz. Pro<EFBFBD>?
|
|
|
|
|
---------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
Makefile nem<EFBFBD> informace o z<EFBFBD>vislostech mezi hlavi<EFBFBD>kov<EFBFBD>mi soubory. Mus<EFBFBD>te
|
|
|
|
|
prov<EFBFBD>st make clean a pak make. Pokud pou<EFBFBD><EFBFBD>v<EFBFBD>te gcc, m<EFBFBD><EFBFBD>ete pou<EFBFBD><EFBFBD>t
|
|
|
|
|
p<EFBFBD>ep<EFBFBD>na<EFBFBD> --enable-depend p<EFBFBD><EFBFBD>kazu configure k automatick<EFBFBD>mu <EFBFBD>e<EFBFBD>en<EFBFBD>
|
|
|
|
|
z<EFBFBD>vislost<EFBFBD> p<EFBFBD>eklada<EFBFBD>em.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[1] http://developer.postgresql.org/todo.php
|
|
|
|
|
[2] http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
|
|
|
|
|
[3] http://postgresql.ok.cz/PostgreSQL%20Administrator%27sGuide
|
|
|
|
|
|