change content (at least not supposed to).
Magnus Hagander
Frequently Asked Questions (FAQ) for PostgreSQL
- Last updated: Thu Feb 24 23:18:31 EST 2005
+ Last updated: Fri Mar 11 16:42:06 EST 2005
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
4.19) How do I return multiple rows or columns from a function?
It is easy using set-returning functions,
- http://techdocs.postgresql.org/guides/SetReturningFunctions.
+ http://techdocs.postgresql.org/guides/SetReturningFunctions
+ .
4.20) Why do I get "relation with OID ##### does not exist" errors when
accessing temporary tables in PL/PgSQL functions?
Developer's Frequently Asked Questions (FAQ) for PostgreSQL
- Last updated: Fri Mar 11 08:09:23 EST 2005
+ Last updated: Fri Mar 11 16:43:05 EST 2005
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html.
_________________________________________________________________
- General Questions
-
+General Questions
+
1.1) How do I get involved in PostgreSQL development?
1.2) What development environment is required to develop code?
1.3) What areas need work?
1.17) Where can I get technical assistance?
1.18) How do I get involved in PostgreSQL web site development?
- Technical Questions
-
+Technical Questions
+
2.1) How do I efficiently access information in tables from the
backend code?
2.2) Why are table, column, type, function, view names sometimes
contribute to that. A temporary todo list for current website
development issues is available at http://xzilla.postgresql.org/todo
- Technical Questions
-
+Technical Questions
+
2.1) How do I efficiently access information in tables from the backend code?
You first need to find the tuples(rows) you are interested in. There
Se o postmaster está sendo executado, inicie o psql em uma janela, e
então encontre o PID do processo postgres utilizado pelo psql
- utilizando
-SELECT pg_backend_pid()
-
- . Utilize um depurador para anexar ao PID do postgres. Você pode
- definir pontos de parada (breakpoints) no depurador e digitar
- consultas no psql. Se você está depurando a inicialização do postgres,
- você pode definir PGOPTIONS="-W n" e então iniciar o psql. Isto
- retardará a inicialização por n segundos então você pode anexar o
- depurador ao processo, definir quaisquer pontos de parada e continuar
- pela sequência de inicialização.
-
- Há várias variáveis de configuração do servidor
-log_*
-
- que habilitam a exibição de estatísticas que podem ser muito úteis
- para depuração e medidas de performance.
+ utilizando SELECT pg_backend_pid(). Utilize um depurador para anexar
+ ao PID do postgres. Você pode definir pontos de parada (breakpoints)
+ no depurador e digitar consultas no psql. Se você está depurando a
+ inicialização do postgres, você pode definir PGOPTIONS="-W n" e então
+ iniciar o psql. Isto retardará a inicialização por n segundos então
+ você pode anexar o depurador ao processo, definir quaisquer pontos de
+ parada e continuar pela sequência de inicialização.
+
+ Há várias variáveis de configuração do servidor log_* que habilitam a
+ exibição de estatísticas que podem ser muito úteis para depuração e
+ medidas de performance.
Você também pode compilar com perfil para ver que funções estão
demandando tempo de execução. Os arquivo de perfil do núcleo (backend)
3.11) Que tipo de hardware eu devo usar?
Por causa do hardware de PC ser em sua maioria compatível, pessoas
- tendem a acreditar que todos os hardwares de PC são de mesma
- qualidade. Não é verdade. ECC RAM, SCSI e placas mãe de qualidade são
- mais confiáveis e têm uma melhor performance do que hardwares mais
- baratos. O PostgreSQL executará em quase todo hardware, mas se a
- confiabilidade e a performance forem importantes é prudente pesquisar
- sobre as opções de hardware. Nossas listas de discussão podem ser
- usadas para discutir opções de hardware e dilemas.
+ tendem a acreditar que todos os hardwares de PC satilde;o de mesma
+ qualidade. Natilde;o é verdade. ECC RAM, SCSI e placas mãe de
+ qualidade são mais confiáveis e têm uma melhor performance do que
+ hardwares mais baratos. O PostgreSQL executará em quase todo hardware,
+ mas se a confiabilidade e a performance forem importantes é prudente
+ pesquisar sobre as opções de hardware. Nossas listas de discussão
+ podem ser usadas para discutir opções de hardware e dilemas.
_________________________________________________________________
Perguntas Operacionais
dados?
Estes são os limites:
-Tamanho máximo de um banco de dados? ilimitado (existem bancos de dad
-os de 32 TB)
+Tamanho máximo de um banco de dados? ilimitado (existem bancos de dados de 32 TB)
Tamanho máximo de uma tabela? 32 TB
Tamanho máximo de um registro? 1.6TB
Tamanho máximo de um campo? 1 GB
Número máximo de registros em uma tabela? ilimitado
-Número máximo de colunas em uma tabela? 250-1600 dependendo dos tipos da
-s colunas
+Número máximo de colunas em uma tabela? 250-1600 dependendo dos tipos das colunas
Número máximo de índices em uma tabela? ilimitado
É claro, que eles não são ilimitados, mas limitados ao espaço em disco
O tamanho de uma página de dados no PostgreSQL é 8192 bytes (8 KB), então:
8192 bytes por página
- ------------------------ = 136 registros por página do banco de dados (ar
-redondado para baixo)
+ ------------------------ = 136 registros por página do banco de dados (arredondado para baixo)
60 bytes por registro
100000 registros de dados
- ---------------------------- = 735 páginas do banco de dados (arredondado
-para cima)
+ ---------------------------- = 735 páginas do banco de dados (arredondadopara cima)
128 registros por página
-735 páginas do banco de dados * 8192 bytes por página = 6,021,120 bytes (6 MB
-)
+735 páginas do banco de dados * 8192 bytes por página = 6,021,120 bytes (6 MB)
Índices não requerem muito espaço, mas contém dados que foram
indexados, então eles podem ocupar algum espaço.
* A localidade padrão C deve ser utilizada durante o initdb porque
não é possível saber o próximo/maior caracter em uma localidade
que não seja a C. Você pode criar um índice especial
-text_pattern_ops
- para tais casos que funcionam somente para indexação utilizando
-LIKE
- .
+ text_pattern_ops para tais casos que funcionam somente para
+ indexação utilizando LIKE.
Em versões anteriores a 8.0, índices frequentemente não podiam ser
usados a menos que os tipos de dados correspodessem aos tipos da
Tipo Nome Interno Notas
--------------------------------------------------
-VARCHAR(n) varchar tamanho especifica o comprimento máximo, sem pr
-eenchimento
-CHAR(n) bpchar preenchimento em branco para comprimento fixo e
-specífico
-TEXT text nenhum limite superior específico no compriment
-o
-BYTEA bytea vetor de bytes de comprimento variável (null-by
-te safe)
+VARCHAR(n) varchar tamanho especifica o comprimento máximo, sem preenchimento
+CHAR(n) bpchar preenchimento em branco para comprimento fixo específico
+TEXT text nenhum limite superior específico no comprimento
+BYTEA bytea vetor de bytes de comprimento variável (null-byte safe)
"char" char um caracter
Você verá o nome interno quando examinar o catálogo do sistema e em
de alguma coisa, ou se você quer fazer uma cópia da tabela, com os
OIDs, não há razão para que você não possa fazê-la:
CREATE TABLE nova_tabela(minha_coluna int);
- SELECT oid as oid_antigo, minha_coluna INTO tabela_tmp FROM tabela_anti
-ga;
+ SELECT oid as oid_antigo, minha_coluna INTO tabela_tmp FROM tabela_antiga;
COPY tabela_tmp TO '/tmp/pgtable';
DROP TABLE tabela_tmp;
COPY nova_tabela WITH OIDS FROM '/tmp/pgtable';
-Èasto kladené dotazy (FAQ) PostgreSQL
-=====================================
-
-Obecné otázky
-=============
-1.1 Co je PostgreSQL? Jak se vyslovuje?
-1.2 Jaká je licence na PostgreSQL?
-1.3 Na kterých Unixex lze spustit PostgreSQL?
-1.4 Které ne-unixové platformy jsou podporované?
-1.5 Kde mohu získat PostgreSQL?
-1.6 Kde mohu získat podporu?
-1.7 Kde je poslední verze?
-1.8 Jaká je dostupná dokumentace?
-1.9 Kde najdu seznam známých chyb nebo nepodporovaných vlastností?
-1.10 Jak se mohu nauèit SQL?
-
-1.11 Nemá PostgreSQL problémy s rokem 2000?
-1.12 Jak se pøipojit k vývojáøskému týmu?
-1.13 Kam podat report o chybì?
-1.14 Jak je na tom PostgreSQL v porovnání s jinými databázemi?
-1.15 Jak lze finanènì pomoci PostgreSQL?
-
-User client dotazy
-==================
-2.1 Kde naleznu ODBC ovladaèe pro PostgreSQL?
-2.2 Jaké nástroje lze pou¾ít pro PostgreSQL a web?
-2.3 Existuje grafické rozhraní pro PostgreSQL?
-2.4 Které programovací jazyky mají podporu pro PostgreSQL?
-
-Administrativní dotazy
-======================
-3.1 Jak nainstalovat PostgreSQL jinam ne¾ do /usr/local/pgsql?
-3.2 Pøi startu postmaster, dostanu chybové hlá¹ení Bad System Call nebo
-core dump. Proè? 3.3 Pøi startu postmastera dostanu hlá¹ení o chybì
-IpcMemoryCreate. Proè? 3.4 Pøi startu postmastera dostanu hlá¹ení o
-chybì IpcSemaphoreCreate. Proè? 3.5 Jak povolit nebo zakázat pøístup z
-jiných stanic? 3.6 Jak ladit databázový stroj na lep¹í výkon?
-
-3.7 Jaké jsou mo¾nosti ladìní?
-3.8 Proè dostanu "Sorry, too many clients", kdy¾ se zkou¹ím pøipojit?
-3.9 K èemu slou¾í adresáø pgsql_tmp?
-
-3.10 Proè je po¾adováno dump a obnovení (load) databáze bìhem upgrade
-mezi velkými verzemi PostgreSQL?
-
-Provozní dotazy
-===============
-4.1 Èím se li¹í binární a normální kurzor?
-4.2 Jak získat pouze první øádek dotazu? Náhodný øádek?
-4.3 Jak získám seznam tabulek nebo jinak jak jej získá psql?
-4.4 Jak odstraním sloupec tabulky, jak zmìním jeho typ?
-4.5 Jaká je maximální velikost øádku, tabulky a databáze?
-4.6 Kolik diskového prostoru je potøeba k ulo¾ení dat z normálního
-textového souboru? 4.7 Jak získám seznam vytvoøených tabulek, indexù,
-databází? 4.8 Mùj dotaz je pomalý a nepou¾ívá vytvoøené indexy. Proè?
-4.9 Jak zjistím, jak optimizer dotazu vyhodnocuje mùj dotaz?
-
-4.10 Co to je R-tree index?
-4.11 Co je Genetic Query Optimizer?
-4.12 Jak provést vyhledávání regulárního výrazu case sensitiv,
-insensitiv? Jak pou¾ít index pro case insensitive vyhledávání? 4.13 Jak
-v dotazu detekovat, ¾e polo¾ka je NULL? 4.14 Jaké jsou rozdíly mezi
-rùznými znakovými typy? 4.15.1 Jak vytvoøit serial/auto-increment pole?
-4.15.2 Jak získat hodnotu SERIAL po vlo¾ení øádku?
-
-4.15.3 Nepovede currval() a nextval() k rozhození podmínek pøi soubìhu s
-jinými u¾ivateli? 4.15.4 Proè není vygenerované èíslo pou¾ito pøi
-pøeru¹ení transakce? Proè vznikají díry v èíslování vlastní
-sekvencí/SERIAL sloupce? 4.16 Co to je OID? Co je to TID?
-
-4.17 Jaký je význam nìkterých výrazù pou¾itých v PostgreSQL?
-4.18 Proè jsem získal chybové hlá¹ení "ERROR: Memory exhausted in
-AllocSetAlloc()"? 4.19 Jak se dozvím, kterou verzi PostgreSQL pou¾ívám?
-4.20 Proè operace s velkými objekty konèí "invalid large obj
-descriptor"? 4.21 Jak vytvoøit sloupec obsahující implicitnì aktuální
-datum? 4.22 Proè jsou moje vnoøené dotazy pou¾ívající IN tak pomalé?
-4.23 Jak provést vnìj¹í spojení (outer join)?
-
-4.24 Jak provést dotaz napøíè nìkolika databázemi?
-4.25 Mù¾e funkce vrátit více øádkù nebo sloupcù?
-4.26 Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky v PL/pgSQL
-funkcích? 4.27 Jaké jsou mo¾nosti replikace databází?
-
-4.28 Jaké jsou mo¾nosti ¹ifrování databází?
-
-Roz¹iøování PostgreSQL
-======================
-5.1 Napsal jsem UDF funkci, PostgreSQL v¹ak konèí dump core?
-5.2 Jak mohu pøispìt nìjakými ¹ikovnými datovými typy a funkcemi do
-PostgreSQL? 5.3 Jak napsat funkci v C vracející ntici?
-
-5.4 Modifikoval jsem zdrojové soubory. Tato zmìna nebyla pøi rekompilaci
-vzata v potaz. Proè?
-------------------------------------------------------------------------
-
-Obecné otázky
-=============
-
-1.1 Co je PostgreSQL? Jak se vyslovuje?
----------------------------------------
-
-PostgreSQL se vyslovuje Post-Gres-Q-L.
-
-PostgreSQL vychází z databáze POSTGRES - výzkumného prototypu DBMS nové
-generace. Z postgresu byl pøevzat silný datový model a bohatý soubor
-datových typù a jeho dotazovací jazyk PostQuel byl nahrazen roz¹íøenou
-podmno¾inou jazyka SQL. PostgreSQL lze pou¾ívat bez omezení a jeho
-zdrojové kódy jsou volnì k dispozici.
-
-PostgreSQL vyvýjí tým vývojáøù pøihlá¹ených do vývojáøské konference
-PostgreSQL. Souèasným koordinátorem je Marc G. Fournier. (Odpovìï 1.6. -
-jak se zapojit). Tento tým je zodpovìdný za ve¹kerý vývoj PostgreSQL.
-
-Autory první verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
-portace, testování, ladìní a roz¹iøování kódu se zapojilo mnoho dal¹ích
-vývojáøù . Pùvodni kód Postgresu, ze kterého PostgreSQL vychází, je
-výsledkem úsilí mnoha studentù a programátorù pracujících pod vedením
-prof. Michaela Stonebrakera na University of California v Berkley.
-
-Pùvodní název software z Berkley byl Postgres. Po pøidání jazyka SQL se
-název zmìnil na Postgres95. Koncem roku 1996 byl RDBMS pøejmenován na
-PostgreSQL.
-
-1.2 Jaká je licence na PostgreSQL?
-----------------------------------
-
-PostgreSQL je pøedmìtem následujících autorských práv:
-
-Dílèí copyright (c) 1996-2002, PostgreSQL Global Development Group
-
-Dílèí copyright (c) 1994-6, Regents of the University of California
-
-Udìluje se oprávnìní k u¾ití, rozmno¾ování, provádìní úprav a
-roz¹iøování tohoto softwaru a dokumentace k nìmu, pro jakékoli úèely,
-bez licenèního poplatku a bez písemné licenèní smlouvy, za podmínky, ¾e
-na v¹ech jeho kopiích je uvedeno oznámení o vý¹e uvedených právech,
-jako¾ i obsah tohoto a dvou následujících odstavcù.
-
-THE UNIVERSITY OF CALIFORNIA ("KALIFORNSKÁ UNIVERZITA") NENÍ V ®ÁDNÉM
-PØÍPADÌ ODPOVÌDNA ®ÁDNÉ TØETÍ OSOBÌ ZA PØÍMOU, NEPØÍMOU, ZVLÁ©TNÍ,
-NAHODILOU NEBO VýSLEDNOU ©KODU, VÈETNÌ U©LÉHO ZISKU, ZPùSOBENOU U®ITÍM
-TOHOTO SOFTWARU A DOKUMENTACE K NÌMU, A TO I V PØÍPADÌ, ®E THE
-UNIVERSITY OF CALIFORNIA BYLA INFORMOVÁNA O MO®NOSTI VZNIKU TAKOVÉ
-©KODY.
-
-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
-ÚÈELùM. NÍ®E UVEDENý SOFTWARE JE POSKYTNUT "JAK STOJÍ A LE®Í" A THE
-UNIVERSITY OF CALIFORNIA NENÍ POVINNA ZAJISTIT JEHO ÚDR®BU, PODPORU,
-AKTUALIZACI, VYLEP©ENÍ NEBO MODIFIKACI.
-
-Vý¹e uvedené je BSD licence, bì¾ná licence otevøeného zdroje. Není zde
-¾ádné omezení ohlednì u¾ití kódu zdroje. Jsme s tím spokojeni a nemáme v
-úmyslu na této skuteènosti cokoli mìnit.
-
-1.3 Na kterých Unixex lze spustit PostgreSQL?
----------------------------------------------
-
-PostgreSQL bì¾í na v¹ech moderních unixových platformách. V instalaèních
-instrukcích naleznete aktuální seznam v¹ech platforem na kterých byla
-testováním ovìøena funkcionalita PostgreSQL.
-
-1.4 Které ne-unixové platformy jsou podporované?
-------------------------------------------------
-
-Klient
-------
-
-Knihovna libpq, psql a nìkteré dal¹í moduly byly pøelo¾eny pro MS
-Windows. Klienta lze provozovat na MS Windows, ten prostøednictvím
-TCP/IP protokolu komunikuje se serverem bì¾ícím na nìkteré z
-podporovaných Unixových platforem. K pøekladu lze pou¾ít win32.mak a
-Win32 knihovny libpq a psql. K databázi PostgerSQL lze pøistupovat skrze
-rozhraní ODBC.
-
-Server
-------
-
-Server mù¾e být na WindowsNT a Win2k provozován pouze s knihovnou
-Cygwin, Cygnus Unix/NT porting library. Na nativním portu pro MS Win
-NT/2000/XP se pracuje. Existující port pro Novell Netware 6 naleznete na
-http://forge.novell.com.
-
-1.5 Kde mohu získat PostgreSQL?
--------------------------------
-
-Primárním anonymním ftp serverem pro PostgreSQL je
-ftp://ftp.PostgreSQL.org/pub . Seznam zrcadel naleznete na na¹ich
-webových stránkách.
-
-1.6 Kde mohu získat podporu?
-----------------------------
-
-Hlavním mailová konference je pgsql-general@PostgreSQL.org. Slou¾í k
-diskuzím ohlednì PostgreSQL. Pøihlásíte se zasláním mailu obsahující
-následující øádky v tìle dopisu (nikoliv v záhlaví - subjectu)
-
-subscribe
-end
-
-na adresu mailto:pgsql-general-request@PostgreSQL.org.
-
-Mù¾ete si vy¾ádat denní pøehled (diggest), který má zhruba 30K dennì
-zpráv.
-
-Konference psql-bugs je urèena k zasílání zpráv o chybách. Pro
-pøihlá¹ení po¹lete mail se stejným obsahem jako v pøedchozím pøípadì na
-adresu mailto:pgsql-bugs-request@PostgreSQL.org.
-
-Do vývojáøské konference se pøihlásíte odesláním dopisu s ji¾ zmiòovaným
-obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.
-
-Seznam dal¹ích konferencí naleznete na stránkách PostgreSQL
-http://www.postgresql.org
-
-1.7 Kde je poslední verze?
---------------------------
-
-Poslední verzí je PostgreSQL 7.4.. Plánujeme uvolnit velkou verzi
-ka¾dých ¹est a¾ osm mìsícù.
-
-1.8 Jaká je dostupná dokumentace?
----------------------------------
-
-Rùzné manuály, manuálové stránky a nìkolik malých testovacích pøíkladù
-jsou souèásti distribuce. Podívejte se do adresáøe /doc. Manuály jsou
-pøístupné online na http://www.PostgreSQL.org/docs.
-
-Na adresách http://www.PostgreSQL.org/docs/awbook.html a
-http://www.commandprompt.com/ppbook/ naleznezte dvì online knihy o
-PostgreSQL. Seznam dostupné literatury je na
-http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Soubor
-technických èlánkù s tematikou PostgresQL najdete na
-http://techdocs.PostgreSQL.org/.
-
-psql má u¾iteèný metapøíkaz \d slou¾ící k zobrazení informací o typech,
-operátorech, funkcí, agregaèních funkcí atd.
-
-Více dokumentace naleznete na na¹ich webových stránkách.
-
-1.9 Kde najdu seznam známých chyb nebo nepodporovaných vlastností?
-------------------------------------------------------------------
-
-PostgreSQL podporuje roz¹íøenou podmno¾inu SQL-92. V na¹em TODO [1]
-najdete seznam známých chyb, chybìjících vlastností a seznam vlastností,
-které budou do systému implementovány v budoucnu (vèetnì priorit).
-
-1.10 Jak se mohu nauèit SQL?
-----------------------------
-
-V knize The PostgreSQL book na
-http://www.PostgreSQL.org/docs/awbook.html je vysvìtlen jazyk SQL (vy¹la
-èesky). Dal¹í dostupnou knihou je http://www.commandprompt.com/ppbook.
-Kvalitní ná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¹í je Teach Yourself SQL in 21 days, Second Edition na
-http://members.tripod.com/er4ebus/sql/index.htm.
-
-Mnoho u¾ivatelù doporuèuje The Practical SQL Handbook, Bowman, Judith
-S., et al., Addison-Wesley. Jiní preferují The Complete Reference SQL,
-Groff et al., McGraw-Hill.
-
-1.11 Nemá PostgreSQL problémy s rokem 2000?
--------------------------------------------
-
-Nemá, mù¾eme pracovat s datumy po roce 2000 na¹eho letopoètu i pøed
-rokem 2000 pø.n.l.
-
-1.12 Jak se pøipojit k vývojáøskému týmu?
------------------------------------------
-
-Nejdøíve si stáhnìte nejnovìj¹í zdroje a pøeètìte si vývojáøskou
-dokumentaci na na¹em webu nebo v distribuci. Pak se pøihla¹te do
-konferencí pgsql-hackers a pgsql-patches. Kvalitní záplaty posílejte do
-pgsql-patches.
-
-Právo commit má v cvs archivu asi tøinácti lidí. Ka¾dý z nich poslal
-mnoho kvalitních záplat, tak¾e tehdej¹í commiters mìli jistotu, ¾e budou
-pøedkládat jenom kvalitní záplaty a mohli jim pøedìlit vìt¹í práva.
-
-1.13 Kam podat report o chybì?
-------------------------------
-
-Nav¹tivte na¹i PostgreSQL BugTool stránku na
-http://www.PostgreSQL.org/bugs/bugs.php, která obsahuje návod a smìrnice
-jak podat chybový report.
-
-Ovìøte si na na¹em ftp serveru ftp://ftp.PostgreSQL.org/pub, zda-li máte
-nejnovìj¹í verzi PostgreSQL a zda-li k ní neexistují nìjaké záplaty.
-
-1.14 Jak je na tom PostgreSQL v porovnání s jinými databázemi?
---------------------------------------------------------------
-
-Existuje nìkolik hledisek jak porovnávat software: vlastnosti, výkon,
-spolehlivost, podpora a cena.
-
-Vlastnosti
-----------
-
-PostgreSQL má hodnì spoleèných vlastností s velkými komerèními DBMS,
-napø. transakce, vnoøené dotazy, spou¹tì, pohledy, kontrolu referenèní
-integrity a sofistikované zamykání. Podporuje nìkteré vlastnosti, které
-tyto systémy nemají, u¾ivatelem definované typy, dìdiènost, pravidla,
-MVCC redukující zamykání.
-
-Výkon
------
-
-Výkonnostnì je na tom PostgreSQL podobnì jako dal¹í komerèní ale i open
-source databáze, v nìèem je rychlej¹í, jindy pomalej¹í. V porovnání s
-MySQL a podobnými databázovými systémy je PostgreSQL rychlej¹í pøi
-víceu¾ivatelském pøístupu, slo¾itìj¹ích dotazech a zatí¾ení read/write
-dotazy. MySQL je rychlej¹í v jednodu¹¹ích dotazech s malým poètem
-u¾ivatelù. Navíc, MySQL nepodporuje mnohé vlatnosti zmínìné v sekci
-vlastnosti. Zapracovali jsme na spolehlivosti a podporovaných
-vlastnostech, a výkon zvy¹ujeme v ka¾dé verzi. Zajímavou stránku
-porovnávající PostgreSQL a MySQL naleznete na
-http://openacs.org/philosophy/why-not-mysql.html. Za vývojem MySQL není
-Open Source komunita, ale komerèní spoleènost, pøesto¾e svoje produkty
-distribuuje jako Open Source.
-
-Spolehlivost
-------------
-
-Jsme si vìdomi, ¾e databáze musí být spolehlivá, jinak je nepou¾itelná.
-Sna¾íme se zveøejòovat dobøe otestovaný, stabilní kód s minimem chyb.
-Ka¾dá verze je více ne¾ mìsíc v beta testování, a na¹e historie verzí
-ukazuje, ¾e mù¾eme nabídnout stabilní, solidní verze, které jsou
-pøipraveny pro reálné nasazení. V této oblasti jsme srovnatelní s
-dal¹ími databázemi.
-
-Podpora
--------
-
-Na na¹í mailové konferenci mù¾ete kontaktovat velkou skupinu vývojáøù a
-u¾ivatelù.problémù. Nemù¾eme garantovat opravu, nicménì komerèní
-databáze také ne v¾dy nabídnou opravu. Podle ohlasù je na¹e podpora
-hodnocena lépe ne¾ u jiných DBMS a to díky pøímému kontaktu s vývojáøi,
-velkou komunitou u¾ivatelù, kvalitními manuály a pøístupným zdrojovým
-kódem. Pro u¾ivatele, kteøí vy¾adují podporu ke konkrétním pøípadùm,
-existuje placená podpora (FAQ sekce 1.6).
-
-Cena
-----
-
-PosgreSQL lze volnì pou¾ívat pro nekomerèní i komerèní pou¾ití. Mù¾ete
-do svých produktù pøidat ná¹ kód bez omezení, respektive v souladu s
-podmínkami na¹í licenèní smlouvy (v duchu BSD licence).
-
-1.15 Jak lze finanènì pomoci PostgreSQL?
-----------------------------------------
-
-PosgreSQL má prvotøídní infrastrukturu od na¹eho zaèátku v roce 1996.
-Vdìèíme za to Marku Fournierovi, který zalo¾il a spravoval tuto
-infrastrukturu nìkolik let.
-
-Kvalitní infrastruktura je velice dùle¾itá pro ka¾dý open source
-projekt. Pøedchází nedorozumìním, která velice zdr¾ují pokrok v
-projektu.
-
-Tato infrastruktura není laciná. K jejímu zaji¹tìní je tøeba stále
-hradit urèité mìsíèní a jednorázové èástky. Pokud máte Vy nebo Va¹e
-spoleènost peníze, které nám mù¾ete darovat, obra»e se na
-http://store.pgsql.com/shopping/ a darujte je.
-
-Aèkoliv webová stránka zmiòuje PostgreSQL, Inc. vklady jsou urèeny pouze
-k podpoøe projektu PostgreSQL a nepodporují ¾ádnou existující
-spoleènost. Pokud to vy¾adujete, mù¾ete poslat kontrolu na na¹i
-kontaktní adresu.
-
-Pokud máte pøíklad úspì¹ného nasazení PostgreSQL, pøihla¹tì se na ná¹
-advocacy site na http://advocacy.postgresql.org.
-
-------------------------------------------------------------------------
-
-User client dotazy
-==================
-
-2.1 Kde naleznu ODBC ovladaèe pro PostgreSQL?
----------------------------------------------
-
-Pro PostgreSQL existují dva ODBC ovladaèe - PsqlODBC a OpenLink ODBC.
-
-PsqlODBC je ke sta¾ení na
-http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
-
-OpenLink mù¾ete získat na http://www.openlinksw.com. Spolupracuje s
-jejich klientským programovým vybavením a je dostupný pro v¹echny jimi
-podporované platformy (Win, Mac, Unix, VMS).
-
-Tento ovladaè je urèen pro ty, kteøí vy¾adují podporu komerèní kvality,
-nicménì freeware verze je dostupná a funkèní. Dotazy zasílejte na
-postgres95@openlink.co.uk.
-
-2.2 Jaké nástroje lze pou¾ít pro PostgreSQL a web?
---------------------------------------------------
-
-Pìkný úvod do databázových technologií zabezpeèujících chod webových
-stránek najdete na http://www.webreview.com.
-
-Pro tvorbu webu existuje excelentní rozhraní PHP, které naleznete na
-http://www.php.net.
-
-Pro slo¾itìj¹í pøípady se èasto pou¾ívá Perl a CGI.pm nebo mod_perl.
-
-2.3 Existuje grafické rozhraní pro PostgreSQL?
-----------------------------------------------
-
-Pro PostgreSQL existuje nìkolik grafických rozhraní: 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ále existuje PHPPgAdmin
-(http://phppgadmin.sourceforge.net/) rozhraní PostgreSQL zalo¾ené na web
-technologii.
-
-Úplnìj¹í seznam najdete na
-http://techdocs.postgresql.org/guides/GUITools.
-
-2.4 Které programovací jazyky mají podporu pro PostgreSQL?
-----------------------------------------------------------
-
-Vìt¹ina programovacích jazykù obsahuje rozhraní pro PostgreSQL.
-Podívejte se do roz¹iøujících modulù Va¹eho programovacího jazyka.
-
-Distribuce PostgreSQL obsahuje tato rozhraní:
-
- - C (libpq)
- - Embbedded C (ecpg)
- - Java (jdbc)
- - Python (PyGreSQL)
- - TCL (libpgtcl)
-
-Dal¹í rozhraní jsou dostupná na http://gborg.postgresql.org v sekci
-Drivers/Interfaces.
-
-------------------------------------------------------------------------
-
-Administrativní dotazy
-======================
-
-3.1 Jak nainstalovat PostgreSQL jinam ne¾ do /usr/local/pgsql?
---------------------------------------------------------------
-
-Pou¾ijte volbu --prefix pøi spu¹tìní configure
-
-3.2 Pøi startu postmaster, dostanu chybové hlá¹ení Bad System Call nebo core dump. Proè?
-----------------------------------------------------------------------------------------
-
-Dùvody mohou být rùzné, ale nejprve zkontrolujte, zda Vá¹ systém
-podporuje System V extensions. PostgreSQL vy¾aduje v jádøe podporu
-sdílené pamìti a semaforù.
-
-3.3 Pøi startu postmastera dostanu hlá¹ení o chybì IpcMemoryCreate. Proè?
--------------------------------------------------------------------------
-
-Buïto nemáte správnì nakonfigurovanou sdílenou pamì» v jádøe nebo musite
-zvìt¹it její velikost. Potøebná velikost je závislá na architektuøe a na
-tom, kolik pamì»ových bufferù a backendù máte povoleno pro postmastera.
-Pro vìt¹inu systémù s pøeddefinovaným poètem backendù a pamì»ových
-bufferù je minimum zhruba 1MB. V
-http://www.postgresql.org/docs/view.php?version=current&idoc=1&file=kern
-el-resources.html [3] naleznete podrobnìj¹í informace o sdílené pamìti a
-semaforech.
-
-3.4 Pøi startu postmastera dostanu hlá¹ení o chybì IpcSemaphoreCreate. Proè?
-----------------------------------------------------------------------------
-
-Pokud dostane chybovou zprávu IpcSemaphoreCreate: semget failed (No
-space left on device), pak va¹e jádro nemá dost volných semaforù.
-PostgreSQL vy¾aduje jeden semafor pro ka¾dý backend v pozadí. Doèasným
-øe¹ením je start postmastera s limitem backendù. Pou¾ijte pøepínaè -N s
-hodnotou men¹í ne¾ 32. Úplným øe¹ením je zvý¹ení hodnot SEMMNS a SEMMNI
-jadra.
-
-Nefunkèní semafory mohou zpùsobit pád bìhem intenzivních databázových
-operací.
-
-Pokud se tato chyba vyskytuje je¹tì nìkde jinde, mo¾ná nemáte vùbec
-nakonfigurovány semafory ve va¹em jádøe. V PostgreSQL Administrator's
-Guide najdete podrobnìj¹í popis po¾adavkù na sdílenou pamìt a semafory.
-
-3.5 Jak povolit nebo zakázat pøístup z jiných stanic?
------------------------------------------------------
-
-Pøi výchozím nastavení PostgreSQL odepøe pøístup z jiných stanic ne¾
-lokální s pou¾itím UDP. Databáze se zpøístupní jiným stanicím nastavením
-pøepínaèe -i postmastera a povolením stanice a urèením re¾imu
-autentifikace v $PGDATA/pg_hba.conf. Tím se povolí TCP/IP spojení.
-ZASTARALÉ
-
-3.6 Jak ladit databázový stroj na lep¹í výkon?
-----------------------------------------------
-
-Urèitì pomohou indexy. Pøíkaz EXPLAIN zobrazí zpùsob interpretace Va¹eho
-dotazu a pou¾ití indexù.
-
-Pøi vìt¹í dávce INSERTù uva¾ujte o náhradì pøíkazem COPY. Ten je mnohem
-rychlej¹í ne¾li samotný INSERT. Ka¾dý pøíkaz mimo blok BEGIN WORK/COMMIT
-se provádí ve vlastní transakci. Zva¾te, zda-li by se nedalo nìkolik
-pøíkazù spojit do jedné transakce. Tím se sní¾í re¾ie na transakce. Pøed
-provedením rozsáhlých zmìn zru¹te indexy, které po dokonèení zmìn opìt
-vytvoøte.
-
-Máte nìkolik dal¹ích mo¾ností, jak zlep¹it výkon. Mù¾ete zakázat fsyn()
-pøi startu postmastera pøepínaèi -o -F. Tyto pøepínaèe zabrání fsync(),
-tj. zápisu na disk po ka¾dé transakci.
-
-Mù¾ete zvý¹it velikost pamì»ových bufferù pou¾itých backendy tj.
-parametr -B postmasteru. Pokud ale tato hodnota bude pøíli¹ velká, tak
-mo¾ná nespustíte postmastera jeliko¾ dosáhnete limitu sdílené pamìti.
-Ka¾dý buffer má 8K a implicitnì je 64 bufferù.
-
-Dále mù¾ete pou¾ít pøepínaè -S k zvý¹ení limitu pamìti pro backendy na
-doèasné tøídìní. Hodnota je mínìna v kilobytech a výchozí nastavení je
-512, tj. 512K.
-
-Mù¾ete pou¾ít pøíkaz CLUSTER, který uspoøádá fyzicky data v tabulkách
-podle indexu. Více na manuálových stránkách pøíkazu CLUSTER.
-
-3.7 Jaké jsou mo¾nosti ladìní?
-------------------------------
-
-Máte nìkolik mo¾ností jak se dostat k u¾iteèným stavovým informacím.
-
-Zaprvé, pøi pøekladu pou¾ijte pøepínaè --enable-cassert, tím se zapne
-monitorování a následné zastavení aplikace, kdy¾ se proces v backendu
-dostane do neoèekávaného stavu.
-
-Jak postmaster tak postgres má nìkolik pøepínaèù umo¾òujících ladìní.
-Postmaster nastartujte tak, abyste si byli jisti, ¾e je standartní
-výstup a standartní chybový výstup pøesmìrován do souboru logu,
-napøíklad:
-
-cd /usr/local/pgsql
-./bin/postmaster > server.log 2>&1 &
-
-Tím se vytvoøí log v adresáøi PostgreSQL, Tento soubor obsahuje u¾iteèné
-informace o problémech a chybách vyskytlých se na serveru. Postmaster má
-pøepínaè -d urèující, jak podrobné mají být reportované informace, tj.
-debug level. Pozor, pøi velké hodnotì debug levelu rychle roste velikost
-souboru logu.
-
-Pokud nebì¾í postmaster, mù¾ete spustit backend PostgreSQL z pøíkazové
-øádky a napsat svùj SQL dotaz pøímo v backendu (doporuèeno pouze pro
-ladìní). Dotaz je v tomto pøípadì ukonèen novou øádkou, nikoliv
-støedníkem. Pokud máte aplikaci pøelo¾enou s ladícími symboly, mù¾ete
-pou¾ít debbuger k monitorování procesu. Pokud není backend spu¹tìn
-postmasterem, pak nebì¾í ve svém obvyklém prostøedí a tudí¾ nìkteré
-problémy dané interakcí mezi backendy nemohou být nasimulovány.
-
-Pokud bì¾í postmaster, spus»e psql v jednom oknì a pak si zjistìte PID
-procesu postgres pou¾itého psql. V debuggeru sepøipojte k postgresql
-PID. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql. Pokud
-ladíte startup postgresu, pak nastavte PGOPTIONS="-W n" a spus»e psql.
-Tento pøepínaè zpùsobí pauzu n sekund, tak¾e budete mít èas se pøipojit
-k procesu, a nastavit breakpointy a pokraèovat v startup posloupnosti.
-
-Pro ladìní a mìøení výkonu mohou být u¾iteèné pøepínaèe -s, -A a -t
-programu postgres (backend).
-
-Mù¾ete provést pøeklad s profilací, tak abyste vidìli kolik èasu
-zabírají jednotlivé funkce. Soubory s profily backendù jsou ulo¾eny v
-adresáøi pgsql/data/base/dbname. Profil klienta pak v jeho aktuálním
-adresáøi. Korektní profilace v prostøedí Linux po¾aduje konfiguraci
-systému s parametrem -DLINUX_PROFILE.
-
-3.8 Proè dostanu "Sorry, too many clients", kdy¾ se zkou¹ím pøipojit?
----------------------------------------------------------------------
-
-Zvy¹te limit postmastera na maximální poèet souèasnì spu¹tìných
-backendù.
-
-Výchozí hodnota je 32 backendù. Tuto hodnotu zvý¹íte zastavením a
-opìtovným spu¹tìním postmastera s parametrem -N nebo úpravou
-postgresql.conf.
-
-Pøi zvý¹ení hodnoty -N nad 32 musíte zvý¹it hodnotu -B nad výchozí 64,
--B musí být minimálnì dvakrát vìt¹í, nebo je¹tì lépe více. Pravdìpodobnì
-zjistíte, ¾e pro velký poèet procesù backendu je nutné zvý¹it nìkteré
-parametry jádra. Jsou to pøedev¹ím maximální velikost sdílené pamìti
-SHMMAX, maximální poèet semafórù SEMMNS a SEMMNI, maximální poèet
-procesù NPROC, maximální poèet procesù u¾ivatele MAXUPRC a maximální
-poèet otevøených souborù NFILE a NINODE. Dùvod pro omezení maximálního
-poètu backendù je fakt, ¾e by mohlo dojít k vyèerpání zdrojù Va¹eho
-systému.
-
-3.9 K èemu slou¾í adresáø pgsql_tmp?
-------------------------------------
-
-Tento adresáø obsahuje doèasné soubory vytvoøené exekutorem dotazù.
-Napøíklad, kdy¾ je nutné tøídìní k zaji¹tìní ORDER BY a tøídìní má vìt¹í
-nároky na prostor ne¾ povoluje parametr -S backendu, pak je vytvoøen
-doèasný soubor k ulo¾ení extra údajù.
-
-Doèasné soubory jsou obvykle mazány automaticky, ale mù¾e se stát, ¾e
-bìhem tøídìní server spadne. Zastavení a dal¹í start postmastera zajistí
-odstranìní souborù s tìchto adresáøù.
-
-3.10 Proè je po¾adováno dump a obnovení (load) databáze bìhem upgrade mezi velkými verzemi PostgreSQL?
-------------------------------------------------------------------------------------------------------
-
-PostgreSQL se minimálnì mìní bìhem malých verzí, tak¾e napø. pøi upgrade
-z 7.2 na 7.2.1 není nutné dump a load databáze. Ale velké verze èasto
-mìní interní formát systémových tabulek a datových souborù. Tyto zmìny
-jsou natolik rozsáhlé, ¾e nelze zajistit zpìtnou kompatibilitu pro
-datové soubory. Dump ulo¾í data v obecném formátu, tak¾e mohou být
-naètena a pou¾ívána v novém interním formátu.
-
-------------------------------------------------------------------------
-
-Provozní dotazy
-===============
-
-4.1 Èím se li¹í binární a normální kurzor?
-------------------------------------------
-
-Popis najdete v manuálové stránce DECLARE
-
-4.2 Jak získat pouze první øádek dotazu? Náhodný øádek?
--------------------------------------------------------
-
-Podívejte se do man. stránky pøíkazu FETCH, nebo pou¾ijte SELECT ...
-LIMIT ...
-
-Není nutné zpracovávat celý dotaz, kdy¾ potøebujete pouze nìkolik
-prvních øádkù. Pokud existuje index ORDER BY, PostgreSQL je schopen
-pøeru¹it zpracování dotazu po získání po¾adovaného poètu øádkù.
-
-K získání náhodného øádku pou¾ijte:
-
-SELECT col FROM tab
- ORDER BY random() LIMIT 1;
-
-4.3 Jak získám seznam tabulek nebo jinak jak jej získá psql?
-------------------------------------------------------------
-
-Podívejte se do zdrojových kódù psql do souboru
-pgsql/src/bin/psql/describe.c. Ten obsahuje SQL pøíkazy, které se
-pou¾ívají v psql metapøíkazech. Dále mù¾ete spustit psql s pøepínaèem
--E, který zpùsobí zobrazení ka¾dého dotazu, které zpracování metapøíkazu
-vyvolá.
-
-4.4 Jak odstraním sloupec tabulky, jak zmìním jeho typ?
--------------------------------------------------------
-
-Poèínaje verzí 7.3 mù¾ete pou¾ít pøíkaz ALTER TABLE DROP COLUMN. Ve
-star¹ích verzích mù¾ete pou¾ít následující postup:
-
-BEGIN;
-LOCK TABLE old_table;
-SELECT ... -- mimo sloupec, který chceme odstranit
- INTO TABLE new_table;
-DROP TABLE old_table;
-ALTER TABLE new_table RENAME TO old_table;
-COMMIT;
-
-Pro zmìnu typu sloupce je tøeba prové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é proveïte VACUUM FULL tab - uvolníte tím diskový prostor zabraný
-nyní ji¾ neplatnými øádky.
-
-4.5 Jaká je maximální velikost øá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 øádky: 1.6 TB
-
- Maximální velikost polo¾ky 1 GB
-
- Maximální poèet øádkù v tabulce: neomezeno
-
- Maximální poèet sloupcù v tabulce: 250-1600 podle typù
-
- Maximální poèet indexù na tabulce: neomezeno
-
-Ve skuteènosti nic není neomezeno, limitem bývá v¾dy dostupná disková
-pamì» nebo velikost operaèní pamìti. Pokud máte nìkterou z tìchto hodnot
-neobvykle velkou, mù¾e dojít ke sní¾ení výkonu.
-
-Maximální velikost tabulky je 32 TB a nevy¾aduje podporu velkých souborù
-operaèním systémem. Velké tabulky se ukládají do nìkolika 1 GB souborù
-tak¾e limity souborového systému nejsou podstatné.
-
-Maximální velikost tabulky a maximální poèet sloupcù mù¾eme
-zeètyønásobit nastavením velikosti bloku na 32K.
-
-4.6 Kolik diskového prostoru je potøeba k ulo¾ení dat z normálního textového souboru?
--------------------------------------------------------------------------------------
-
-PostgreSQL vy¾aduje a¾ pìtinásobek diskového prostoru k ulo¾ení dat z
-textového souboru.
-
-Napøíklad, uva¾ujme soubor se 100 tisíci øádky obsahující na ka¾dé øádce
-celé èíslo a textový popis. Text je v prùmìru dvacet bytù dlouhý.
-Textový soubor bude 2.8 MB dlouhý. Velikost databáze obsahující
-odpovídající data bude zhruba 6.4 MB.
-
- 36 bytù: hlavièka øádku (pøibli¾nì)
- 24 bytù: jedna celoèíselná polo¾ka a jedna textová
- 4 byty: ukazatel na stránku k ntici
-------------------------------------------------------
- 64 bytù na øádek
-
-Velikost datové stránky PostgreSQL je 8KB
-
- 8192 bytù na stránce
----------------------- = 128 øádek na stránku
- 64 bytù za øádek
-
-100000 øádek
--------------------- = 782 stránek (zaokrouhleno nahoru)
-128 øádek na stránce
-
-782 * 8192 = 6, 406, 144 bytù (6.4 MB)
-
-Indexy nemají tak velkou re¾ii, ale mohou být také velké, proto¾e
-obsahují indexovaná data.
-
-Hodnoty NULL jsou ulo¾eny v bitmapách, tak¾e spotøebují jen velmi málo
-diskového prostoru.
-
-4.7 Jak získám seznam vytvoøených tabulek, indexù, databází?
-------------------------------------------------------------
-
-psql má sadu metapøíkazù k zobrazení tìchto informací. Jejich seznam
-získáte pøíkazem \?. Dále se mù¾ete podívat na obsah systémových tabulek
-zaèínajících pg_. Spu¹tìní psql s parametrem -l provede výpis názvù
-v¹ech databází.
-
-Soubor pgsql/src/tutorial/syscat.source obsahuje SELECTy pøistupující k
-systémovým tabulkámm.
-
-4.8 Mùj dotaz je pomalý a nepou¾ívá vytvoøené indexy. Proè?
------------------------------------------------------------
-
-Ka¾dý dotaz nemusí nutnì pou¾ít existující indexy. Index se pou¾ije
-tehdy, kdy¾ je tabulka vìt¹í ne¾ urèitá minimální velikost, a dotaz
-vybírá pouze procentuálnì malou èást øádkù tabulky. To proto, ¾e náhodný
-pøístup k disku daný ètením indexu mù¾e být pomalej¹í ne¾ lineární ètení
-tabulky nebo sekvenèní ètení,
-
-PostgreSQL rozhoduje o pou¾ití indexù na základì statistiky pøístupù k
-tabulce. Tyto statistiky se shroma¾ïují pøíkazy VACUUM ANALYZE nebo
-ANALYZE. Díky statistikám má optimizer informaci o poètu øádek v tabulce
-a mù¾e lépe rozhodnout o pou¾ití indexù. Statistiky se uplatní pøi
-urèení optimálního poøadí a metody spojení tabulek. Statistiky by se
-mìli aktualizovat opakovanì, tak jak se mìní obsah tabulek.
-
-Indexy nejsou obyèejnì pou¾ity pro setøídìní nebo spojení tabulek.
-Sekvenèní zpracování následované explicitním tøídìním je obyèejnì
-rychlej¹í ne¾ indexní ètení na velké tabulce.
-
-Jinak je tomu v pøípadì pou¾ití LIMIT a ORDER BY, pøi kterém se vìt¹inou
-index pou¾ije, výsledkem je pouze malá èást tabulky. Funkce MAX() a
-MIN() nepou¾ívají indexy, ale je mo¾né tuté¾ hodnotu získat
-
-SELECT col FROM tab
- ORDER BY col [ DESC ] LIMIT 1;
-
-Pokud si myslíte, ¾e optimizer mylnì zvolil sekvenèní prohledávání
-tabulky, pou¾ijte pøíkaz SET enable_seqscan TO 'off' a zkuste zda je
-indexní prohledávání rychlej¹í.
-
-Pøi vyhledávání na základì vzoru jako je napø. operátor LIKE nebo ~ se
-indexy pou¾íjí pouze za urèitých skuteèností:
-
- - zaèátek hledaného vzoru musí být ukotven k zaèátku, tj.
-
- * vzor LIKE nesmí zaèínat %
- * regulární výraz musí zaèínat ^
-
- - vzor nesmí zaèínat intervalem, napø. [a-e]
-
- - vyhledávaní, které není Case sensitiv nepou¾ívá indexy.
- Mù¾ete ale pou¾ít funkcionální indexy, které jsou posány v sekci
- 4.12
- - pøi inicializaci databáze (initdb) musí být pou¾ito C locale
- (pozn. pøekladatele - tudí¾ v na¹ich podmínkách nepou¾itelné,
- nepracovalo by èeské tøídìní).
-
-4.9 Jak zjistím, jak optimizer dotazu vyhodnocuje mùj dotaz?
-------------------------------------------------------------
-
-Podívejte se do manuálové stránky pøíkazu EXPLAIN.
-
-4.10 Co to je R-tree index?
----------------------------
-
-R-tree index se pou¾ívá pro indexování prostorových dat. Hash index
-nemù¾e obslou¾it prohledávání oblastí. B-tree index mù¾e øídit vyhledání
-oblastí v jedné dimenzi. R-tree index mù¾e podporovat hledání v
-multidimenzionálních datech. Pou¾ijeme-li napøíklad R-tree index na
-atributy typu point, pak systém mù¾e efektivnì odpovìdìt na dotaz -
-vyber v¹echny body uvnitø obdélníkù.
-
-Pùvodní ná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ály naleznete v Stonebraker's "Readings in Database Systems".
-
-Vestavìné R-tree mù¾e slou¾it k indexaci polygonù a oblastí. Teoreticky
-mù¾eme R-tree pou¾ít i pro více dimenzí (jiné ne¾ 3D). Ve skuteènosti
-ale takové roz¹íøení R-tree vy¾aduje trochu práce a ve souèastnosti
-chybí dokumentace jak na to.
-
-4.11 Co je Genetic Query Optimizer?
------------------------------------
-
-GEQO modul urychluje optimalizaci dotazù pøi spojování mno¾ství tabulek
-metodou Genetických algoritmù (GA). To umo¾òuje získat velkého mno¾ství
-variant spojení pøi neúplném prohledáváním.
-
-4.12 Jak provést vyhledávání regulárního výrazu case sensitiv,
-insensitiv? Jak pou¾ít index pro case insensitive vyhledávání?
-
-Operátor ~ slou¾í k porování s regulárním výrazem, jeho modifikace *~
-pøedstavuje case insensitive vyhledávání. Jedná se o obdobu LIKE a
-ILIKE.
-
-Pro vyhledávání bez ohledu na velká malá písmena pou¾ijeme
-
-SELECT * FROM tab
- WHERE lower(col) = 'abc';
-
-V tomto pøípadì se nepou¾ije standardní index. Nicménì, pou¾ije se
-funkcionální index, pokud jej vytvoøíte
-
-CREATE INDEX tabindex ON tab (lower(col));
-
-4.13 Jak v dotazu detekovat, ¾e polo¾ka je NULL?
-------------------------------------------------
-
-Urèíte pomocí IS NULL nebo IS NOT NULL
-
-4.14 Jaké jsou rozdíly mezi rùznými znakovými typy?
----------------------------------------------------
+ Èasto kladené dotazy (FAQ) PostgreSQL
+
+ Poslední aktualizace: Støeda 23. èervna 21:10:00 EST 2004
+
+ Souèasný správce: Bruce Momjian (pgman@candle.pha.pa.us)
+
+ Pøelo¾il: Pavel Stìhule (stehule@kix.fsv.cvut.cz)
+
+ Aktuální verzi tohoto dokumentu naleznete na adrese:
+ http://www.PostgreSQL.org/docs/faqs/FAQ.html. Èeský pøeklad na adrese:
+ http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html.
+
+ Odpovìdi na dotazy relevantní ke konkrétním platformám lze nalézt na
+ adrese: http://www.PostgreSQL.org/docs/index.html.
+ _________________________________________________________________
+
+ Obecné otázky
+
+ 1.1) Co je PostgreSQL? Jak se vyslovuje?
+ 1.2) Jaká je licence na PostgreSQL?
+ 1.3) Na kterých Unixex lze spustit PostgreSQL?
+ 1.4) Které ne-unixové platformy jsou podporované?
+ 1.5) Kde mohu získat PostgreSQL?
+ 1.6) Kde mohu získat podporu?
+ 1.7) Kde je poslední verze?
+ 1.8) Jaká je dostupná dokumentace?
+ 1.9) Kde najdu seznam známých chyb nebo nepodporovaných vlastností?
+ 1.10) Jak se mohu nauèit SQL?
+ 1.11) Nemá PostgreSQL problémy s rokem 2000?
+ 1.12) Jak se pøipojit k vývojáøskému týmu?
+ 1.13) Kam podat report o chybì?
+ 1.14) Jak je na tom PostgreSQL v porovnání s jinými databázemi?
+ 1.15) Jak lze finanènì pomoci PostgreSQL?
+
+ User client dotazy
+
+ 2.1) Kde naleznu ODBC ovladaèe pro PostgreSQL?
+ 2.2) Jaké nástroje lze pou¾ít pro PostgreSQL a web?
+ 2.3) Existuje grafické rozhraní pro PostgreSQL?
+ 2.4) Které programovací jazyky mají podporu pro PostgreSQL?
+
+ Administrativní dotazy
+
+ 3.1) Jak nainstalovat PostgreSQL jinam ne¾ do /usr/local/pgsql?
+ 3.2) Pøi startu postmaster, dostanu chybové hlá¹ení Bad System Call
+ nebo core dump. Proè?
+ 3.3) Pøi startu postmastera dostanu hlá¹ení o chybì IpcMemoryCreate.
+ Proè?
+ 3.4) Pøi startu postmastera dostanu hlá¹ení o chybì
+ IpcSemaphoreCreate. Proè?
+ 3.5) Jak povolit nebo zakázat pøístup z jiných stanic?
+ 3.6) Jak ladit databázový stroj na lep¹í výkon?
+ 3.7) Jaké jsou mo¾nosti ladìní?
+ 3.8) Proè dostanu "Sorry, too many clients", kdy¾ se zkou¹ím pøipojit?
+ 3.9) K èemu slou¾í adresáø pgsql_tmp?
+ 3.10) Proè je po¾adováno dump a obnovení (load) databáze bìhem upgrade
+ mezi velkými verzemi PostgreSQL?
+
+ Provozní dotazy
+
+ 4.1) Èím se li¹í binární a normální kurzor?
+ 4.2) Jak získat pouze první øádek dotazu? Náhodný øádek?
+ 4.3) Jak získám seznam tabulek nebo jinak jak jej získá psql?
+ 4.4) Jak odstraním sloupec tabulky, jak zmìním jeho typ?
+ 4.5) Jaká je maximální velikost øádku, tabulky a databáze?
+ 4.6) Kolik diskového prostoru je potøeba k ulo¾ení dat z normálního
+ textového souboru?
+ 4.7) Jak získám seznam vytvoøených tabulek, indexù, databází?
+ 4.8) Mùj dotaz je pomalý a nepou¾ívá vytvoøené indexy. Proè?
+ 4.9) Jak zjistím, jak optimizer dotazu vyhodnocuje mùj dotaz?
+ 4.10) Co to je R-tree index?
+ 4.11) Co je Genetic Query Optimizer?
+ 4.12) Jak provést vyhledávání regulárního výrazu case sensitiv,
+ insensitiv? Jak pou¾ít index pro case insensitive vyhledávání?
+ 4.13) Jak v dotazu detekovat, ¾e polo¾ka je NULL?
+ 4.14) Jaké jsou rozdíly mezi rùznými znakovými typy?
+ 4.15.1) Jak vytvoøit serial/auto-increment pole?
+ 4.15.2) Jak získat hodnotu SERIAL po vlo¾ení øádku?
+ 4.15.3) Nepovede currval() a nextval() k rozhození podmínek pøi
+ soubìhu s jinými u¾ivateli?
+ 4.15.4) Proè není vygenerované èíslo pou¾ito pøi pøeru¹ení transakce?
+ Proè vznikají díry v èíslování vlastní sekvencí/SERIAL sloupce?
+ 4.16) Co to je OID? Co je to TID?
+ 4.17) Jaký je význam nìkterých výrazù pou¾itých v PostgreSQL?
+ 4.18) Proè jsem získal chybové hlá¹ení "ERROR: Memory exhausted in
+ AllocSetAlloc()"?
+ 4.19) Jak se dozvím, kterou verzi PostgreSQL pou¾ívám?
+ 4.20) Proè operace s velkými objekty konèí "invalid large obj
+ descriptor"?
+ 4.21) Jak vytvoøit sloupec obsahující implicitnì aktuální datum?
+ 4.22) Proè jsou moje vnoøené dotazy pou¾ívající IN tak pomalé?
+ 4.23) Jak provést vnìj¹í spojení (outer join)?
+ 4.24) Jak provést dotaz napøíè nìkolika databázemi?
+ 4.25) Mù¾e funkce vrátit více øádkù nebo sloupcù?
+ 4.26) Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky v
+ PL/pgSQL funkcích?
+ 4.27) Jaké jsou mo¾nosti replikace databází?
+ 4.28) Jaké jsou mo¾nosti ¹ifrování databází?
+
+ Roz¹iøování PostgreSQL
+
+ 5.1) Napsal jsem UDF funkci, PostgreSQL v¹ak konèí dump core?
+ 5.2) Jak mohu pøispìt nìjakými ¹ikovnými datovými typy a funkcemi do
+ PostgreSQL?
+ 5.3) Jak napsat funkci v C vracející ntici?
+ 5.4) Modifikoval jsem zdrojové soubory. Tato zmìna nebyla pøi
+ rekompilaci vzata v potaz. Proè?
+ _________________________________________________________________
+
+ Obecné otázky
+
+ 1.1) Co je PostgreSQL? Jak se vyslovuje?
+
+ PostgreSQL se vyslovuje Post-Gres-Q-L. Zvukový záznam je dostupný na
+ adrese .
+
+ PostgreSQL vychází z databáze POSTGRES (a stále je nìkdy oznaèován
+ zjednodu¹enì jako Postgres) - výzkumného prototypu DBMS nové generace.
+ Z postgresu byl pøevzat silný datový model a bohatý soubor datových
+ typù a jeho dotazovací jazyk PostQuel byl nahrazen roz¹íøenou
+ podmno¾inou jazyka SQL. PostgreSQL lze pou¾ívat bez omezení a jeho
+ zdrojové kódy jsou volnì k dispozici.
+
+ PostgreSQL vyvýjí tým vývojáøù pøihlá¹ených do vývojáøské konference
+ PostgreSQL. Souèasným koordinátorem je Marc G. Fournier
+ (scrappy@PostgreSQL.org). (viz 1.6 - jak se zapojit). Tento tým je
+ zodpovìdný za ve¹kerý vývoj PostgreSQL. Jedná se o veøejný projekt,
+ který není øízen ¾ádnou firmou. Pokud se chcete zapojit, pøeètìte si
+ developer's FAQ na adrese
+ http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
+
+ Autory první verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
+ portace, testování, ladìní a roz¹iøování kódu se zapojilo mnoho
+ dal¹ích vývojáøù . Pùvodni kód Postgresu, ze kterého PostgreSQL
+ vychází, je výsledkem úsilí mnoha studentù a programátorù pracujících
+ pod vedením prof. Michaela Stonebrakera na University of California v
+ Berkley.
+
+ Pùvodní název software z Berkley byl Postgres. Po pøidání jazyka SQL
+ se název zmìnil na Postgres95. Koncem roku 1996 byl RDBMS pøejmenován
+ na PostgreSQL.
+
+ 1.2) Jaká je licence na PostgreSQL?
+
+ PostgreSQL je pøedmìtem následujících autorských práv:
+
+ Dílèí Copyright (c) 1996-2005, PostgreSQL Global Development Group
+ Dílèí Copyright (c) 1994-6, Regents of the University of California
+
+ Udìluje se oprávnìní k u¾ití, rozmno¾ování, provádìní úprav a
+ roz¹iøování tohoto softwaru a dokumentace k nìmu, pro jakékoli úèely,
+ bez licenèního poplatku a bez písemné licenèní smlouvy, za podmínky,
+ ¾e na v¹ech jeho kopiích je uvedeno oznámení o vý¹e uvedených právech,
+ jako¾ i obsah tohoto a dvou následujících odstavcù.
+
+ THE UNIVERSITY OF CALIFORNIA ("KALIFORNSKÁ UNIVERZITA") NENÍ V ®ÁDNÉM
+ PØÍPADÌ ODPOVÌDNA ®ÁDNÉ TØETÍ OSOBÌ ZA PØÍMOU, NEPØÍMOU, ZVLÁ©TNÍ,
+ NAHODILOU NEBO VÝSLEDNOU ©KODU, VÈETNÌ U©LÉHO ZISKU, ZPùSOBENOU U®ITÍM
+ TOHOTO SOFTWARU A DOKUMENTACE K NÌMU, A TO I V PØÍPADÌ, ®E THE
+ UNIVERSITY OF CALIFORNIA BYLA INFORMOVÁNA O MO®NOSTI VZNIKU TAKOVÉ
+ ©KODY.
+
+ HE UNIVERSITY OF CALIFORNIA ZEJMÉNA NEPOSKYTUJE JAKÉKOLI ZÁRUKY, A TO
+ NEJEN ZÁRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VýROBKU KE
+ SPECIFICKýM ÚÈELùM. NÍ®E UVEDENý SOFTWARE JE POSKYTNUT "JAK STOJÍ A
+ LE®Í" A THE UNIVERSITY OF CALIFORNIA NENÍ POVINNA ZAJISTIT JEHO
+ ÚDR®BU, PODPORU, AKTUALIZACI, VYLEP©ENÍ NEBO MODIFIKACI.
+
+ Vý¹e uvedené je BSD licence, bì¾ná licence otevøeného zdroje. Není zde
+ ¾ádné omezení ohlednì u¾ití kódu zdroje. Jsme s tím spokojeni a nemáme
+ v úmyslu na této skuteènosti cokoli mìnit.
+
+ 1.3) Na kterých Unixex lze spustit PostgreSQL?
+
+ PostgreSQL bì¾í na v¹ech moderních unixových platformách. V
+ instalaèních instrukcích naleznete aktuální seznam v¹ech platforem na
+ kterých byla testováním ovìøena funkcionalita PostgreSQL.
+
+ 1.4) Které ne-unixové platformy jsou podporované?
+
+ Klient
+
+ Knihovna libpq, psql a nìkteré dal¹í moduly byly pøelo¾eny pro MS
+ Windows. Klienta lze provozovat na MS Windows, ten prostøednictvím
+ TCP/IP protokolu komunikuje se serverem bì¾ícím na nìkteré z
+ podporovaných Unixových platforem. K pøekladu lze pou¾ít win32.mak a
+ Win32 knihovny libpq a psql. K databázi PostgerSQL lze pøistupovat
+ skrze rozhraní ODBC.
+
+ Server
+
+ Server mù¾e být na WindowsNT a Win2k provozován pouze s knihovnou
+ Cygwin, Cygnus Unix/NT porting library. Více pgsql/doc/FAQ_MSWIN v
+ distribuci nebo MS Windows FAQ na adrese
+ http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
+
+ Na nativním portu pro MS Win NT/2000/XP se pracuje. Dal¹í informace o
+ aktuálním stavu PostgreSQL pro Windows naleznet na adrese
+ http://techdocs.postgresql.org/guides/Windows a
+ http://momjian.postgresql.org/main/writings/pgsql/win32.html.
+
+ Existující port pro Novell Netware 6 naleznete na
+ http://forge.novell.com.
+
+ 1.5) Kde mohu získat PostgreSQL?
+
+ Primárním anonymním ftp serverem pro PostgreSQL je
+ ftp://ftp.PostgreSQL.org/pub. Seznam zrcadel naleznete na na¹ich
+ webových stránkách.
+
+ 1.6) Kde mohu získat podporu?
+
+ Hlavní mailová konference je: pgsql-general@PostgreSQL.org. Slou¾í k
+ diskuzím ohlednì PostgreSQL. Pøihlásíte se zasláním mailu obsahující
+ následující øádky v tìle dopisu (nikoliv v záhlaví - subjectu):
+ subscribe
+ end
+
+ na adresu pgsql-general-request@PostgreSQL.org.
+
+ Mù¾ete si vy¾ádat denní pøehled (diggest), který má zhruba 30K dennì
+ zpráv.
+
+ Konference psql-bugs je urèena k zasílání zpráv o chybách. Pro
+ pøihlá¹ení po¹lete mail se stejným obsahem jako v pøedchozím pøípadì
+ na adresu pgsql-bugs-request@PostgreSQL.org.
+
+ Do vývojáøské konference se pøihlásíte odesláním dopisu s ji¾
+ zmiòovaným obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.
+
+ Seznam dal¹ích konferencí naleznete na stránkách PostgreSQL:
+
+ http://www.postgresql.org
+
+ 1.7) Jaká je poslední verze?
+
+ Poslední verze PostgreSQL je 7.4.3. Plánujeme uvolnit významnou verzi
+ ka¾dých ¹est a¾ osm mìsícù.
+
+ 1.8) Jaká je dostupná dokumentace?
+
+ Rùzné manuály, manuálové stránky a nìkolik malých testovacích pøíkladù
+ jsou souèásti distribuce. Podívejte se do adresáøe /doc. Manuály jsou
+ pøístupné online na http://www.PostgreSQL.org/docs.
+
+ Na adresách http://www.PostgreSQL.org/docs/awbook.html a
+ http://www.commandprompt.com/ppbook/ naleznezte dvì online knihy o
+ PostgreSQL. Seznam dostupné literatury je na
+ http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Soubor
+ technických èlánkù s tematikou PostgresQL najdete na
+ http://techdocs.PostgreSQL.org/.
+
+ psql má u¾iteèný metapøíkaz \d slou¾ící k zobrazení informací o
+ typech, operátorech, funkcí, agregaèních funkcí atd.
+
+ Více dokumentace naleznete na na¹ich webových stránkách.
+
+ 1.9) Kde najdu seznam známých chyb nebo nepodporovaných vlastností?
+
+ PostgreSQL podporuje roz¹íøenou podmno¾inu SQL-92. V na¹em TODO
+ najdete seznam známých chyb, chybìjících vlastností a seznam
+ vlastností, které budou do systému implementovány v budoucnu (vèetnì
+ priorit).
+
+ 1.10) Jak se mohu nauèit SQL?
+
+ V knize The PostgreSQL book na
+ http://www.PostgreSQL.org/docs/awbook.html je vysvìtlen jazyk SQL
+ (vy¹la èesky). Dal¹í dostupnou knihou je
+ http://www.commandprompt.com/ppbook. Kvalitní návody naleznete na
+ http://www.intermedia.net/support/sql/sqltut.shtm, a na
+ http://sqlcourse.com.
+
+ Dal¹í je Teach Yourself SQL in 21 days, Second Edition na
+ http://members.tripod.com/er4ebus/sql/index.htm.
+
+ Mnoho u¾ivatelù doporuèuje The Practical SQL Handbook, Bowman, Judith
+ S., et al., Addison-Wesley. Jiní preferují The Complete Reference SQL,
+ Groff et al., McGraw-Hill.
+
+ 1.11) Nemá PostgreSQL problémy s rokem 2000?
+
+ Nemá, mù¾eme pracovat s datumy po roce 2000 na¹eho letopoètu i pøed
+ rokem 2000 pø.n.l.
+
+ 1.12) Jak se pøipojit k vývojáøskému týmu?
+
+ Nejdøíve si stáhnìte nejnovìj¹í zdroje a pøeètìte si vývojáøskou
+ dokumentaci na na¹em webu nebo v distribuci. Pak se pøihla¹te do
+ konferencí pgsql-hackers a pgsql-patches. Kvalitní záplaty posílejte
+ do pgsql-patches.
+
+ Právo commit má v CVS archivu asi tøinácti lidí. Ka¾dý z nich poslal
+ mnoho kvalitních záplat, tak¾e tehdej¹í commiters mìli jistotu, ¾e
+ budou pøedkládat jenom kvalitní záplaty a mohli jim pøedìlit vìt¹í
+ práva.
+
+ 1.13) Kam podat report o chybì?
+
+ Nav¹tivte na¹i PostgreSQL BugTool stránku na
+ http://www.PostgreSQL.org/bugs/bugs.php, která obsahuje návod a
+ smìrnice jak podat chybový report.
+
+ Ovìøte si na na¹em ftp serveru ftp://ftp.PostgreSQL.org/pub, zda-li
+ máte nejnovìj¹í verzi PostgreSQL a zda-li k ní neexistují nìjaké
+ záplaty.
+
+ 1.14) Jak je na tom PostgreSQL v porovnání s jinými databázemi?
+
+ Existuje nìkolik hledisek jak porovnávat software: vlastnosti, výkon,
+ spolehlivost, podpora a cena.
+
+ Vlastnosti
+ PostgreSQL má hodnì spoleèných vlastností s velkými komerèními
+ DBMS, napø. transakce, vnoøené dotazy, spou¹tì, pohledy,
+ kontrolu referenèní integrity a sofistikované zamykání.
+ Podporuje nìkteré vlastnosti, které tyto systémy nemají,
+ u¾ivatelem definované typy, dìdiènost, pravidla, MVCC
+ redukující zamykání.
+
+ Výkon
+ Výkonnostnì je na tom PostgreSQL podobnì jako dal¹í komerèní
+ ale i open source databáze, v nìèem je rychlej¹í, jindy
+ pomalej¹í. V porovnání s MySQL a podobnými databázovými systémy
+ je PostgreSQL rychlej¹í pøi víceu¾ivatelském pøístupu,
+ slo¾itìj¹ích dotazech a zatí¾ení read/write dotazy. MySQL je
+ rychlej¹í v jednodu¹¹ích dotazech s malým poètem u¾ivatelù.
+ Navíc, MySQL nepodporuje mnohé vlatnosti zmínìné v sekci
+ vlastnosti. Zapracovali jsme na spolehlivosti a podporovaných
+ vlastnostech, a výkon zvy¹ujeme v ka¾dé verzi. Zajímavou
+ stránku porovnávající PostgreSQL a MySQL naleznete na
+ http://openacs.org/philosophy/why-not-mysql.html. Za vývojem
+ MySQL není Open Source komunita, ale komerèní spoleènost,
+ pøesto¾e svoje produkty distribuuje jako Open Source.
+
+ Spolehlivost
+ Jsme si vìdomi, ¾e databáze musí být spolehlivá, jinak je
+ nepou¾itelná. Sna¾íme se zveøejòovat dobøe otestovaný, stabilní
+ kód s minimem chyb. Ka¾dá verze je více ne¾ mìsíc v beta
+ testování, a na¹e historie verzí ukazuje, ¾e mù¾eme nabídnout
+ stabilní, solidní verze, které jsou pøipraveny pro reálné
+ nasazení. V této oblasti jsme srovnatelní s dal¹ími databázemi.
+
+ Podpora
+ Na na¹í mailové konferenci mù¾ete kontaktovat velkou skupinu
+ vývojáøù a u¾ivatelù.problémù. Nemù¾eme garantovat opravu,
+ nicménì komerèní databáze také ne v¾dy nabídnou opravu. Podle
+ ohlasù je na¹e podpora hodnocena lépe ne¾ u jiných DBMS a to
+ díky pøímému kontaktu s vývojáøi, velkou komunitou u¾ivatelù,
+ kvalitními manuály a pøístupným zdrojovým kódem. Pro u¾ivatele,
+ kteøí vy¾adují podporu ke konkrétním pøípadùm, existuje placená
+ podpora (FAQ sekce 1.6).
+
+ Cena
+ PosgreSQL lze volnì pou¾ívat pro nekomerèní i komerèní pou¾ití.
+ Mù¾ete do svých produktù pøidat ná¹ kód bez omezení, respektive
+ v souladu s podmínkami na¹í licenèní smlouvy (v duchu BSD
+ licence).
+
+ 1.15) Jak lze finanènì pomoci PostgreSQL?
+
+ PosgreSQL má prvotøídní infrastrukturu od na¹eho zaèátku v roce 1996.
+ Vdìèíme za to Marku Fournierovi, který zalo¾il a spravoval tuto
+ infrastrukturu nìkolik let.
+
+ Kvalitní infrastruktura je velice dùle¾itá pro ka¾dý open source
+ projekt. Pøedchází nedorozumìním, která velice zdr¾ují pokrok v
+ projektu.
+
+ Tato infrastruktura není laciná. K jejímu zaji¹tìní je tøeba stále
+ hradit urèité mìsíèní a jednorázové èástky. Pokud máte Vy nebo Va¹e
+ spoleènost peníze, které nám mù¾ete darovat, obra»e se na
+ http://store.pgsql.com/shopping/ a darujte je.
+
+ Aèkoliv webová stránka zmiòuje PostgreSQL, Inc. vklady jsou urèeny
+ pouze k podpoøe projektu PostgreSQL a nepodporují ¾ádnou existující
+ spoleènost. Pokud to vy¾adujete, mù¾ete poslat kontrolu na na¹i
+ kontaktní adresu.
+ _________________________________________________________________
+
+ Pokud máte pøíklad úspì¹ného nasazení PostgreSQL, pøihla¹tì se na ná¹
+ advocacy site na http://advocacy.postgresql.org.
+
+ User client dotazy
+
+ 2.1) Kde naleznu ODBC ovladaèe pro PostgreSQL?
+
+ Pro PostgreSQL existují dva ODBC ovladaèe - PsqlODBC a OpenLink ODBC.
+
+ PsqlODBC je ke sta¾ení na
+ http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
+
+ OpenLink mù¾ete získat na http://www.openlinksw.com. Spolupracuje s
+ jejich klientským programovým vybavením a je dostupný pro v¹echny jimi
+ podporované platformy (Win, Mac, Unix, VMS).
+
+ Tento ovladaè je urèen pro ty, kteøí vy¾adují podporu komerèní
+ kvality, nicménì freeware verze je dostupná a funkèní. Dotazy
+ zasílejte na postgres95@openlink.co.uk.
+
+ 2.2) Jaké nástroje lze pou¾ít pro PostgreSQL a web?
+
+ Pìkný úvod do databázových technologií zabezpeèujících chod webových
+ stránek najdete na http://www.webreview.com.
+
+ Pro tvorbu webu existuje excelentní rozhraní PHP, které naleznete na
+ http://www.php.net.
+
+ Pro slo¾itìj¹í pøípady se èasto pou¾ívá Perl a CGI.pm nebo mod_perl.
+
+ 2.3) Existuje grafické rozhraní pro PostgreSQL?
+
+ Pro PostgreSQL existuje nìkolik grafických rozhraní: PgAccess
+ (http://www.php.net), PgAdmin III (http://www.php.net), RHDB Admin
+ (http://sources.redhat.com/rhdb/) a Rekall (
+ http://www.thekompany.com/products/rekall/). Dále je¹tì PhpPgAdmin
+ (http://phppgadmin.sourceforge.net/) co¾ je rozhraní PostgreSQL
+ zalo¾ené na web technologii.
+
+ Úplnìj¹í seznam najdete na
+ http://techdocs.postgresql.org/guides/GUITools.
+
+ 2.4) Které programovací jazyky mají podporu pro PostgreSQL?
+
+ Vìt¹ina programovacích jazykù obsahuje rozhraní pro PostgreSQL.
+ Podívejte se do roz¹iøujících modulù Va¹eho programovacího jazyka.
+
+ Distribuce PostgreSQL obsahuje tato rozhraní:
+ * C (libpq)
+ * Embbedded C (ecpg)
+ * Java (jdbc)
+ * Python (PyGreSQL)
+ * TCL (libpgtcl)
+
+ Dal¹í rozhraní jsou dostupná na http://gborg.postgresql.org v sekci
+ Drivers/Interfaces.
+ _________________________________________________________________
+
+ Administrativní dotazy
+
+ 3.1) Jak nainstalovat PostgreSQL jinam ne¾ do /usr/local/pgsql?
+
+ Pou¾ijte volbu --prefix pøi spu¹tìní configure.
+
+ 3.2) Pøi startu postmaster, dostanu chybové hlá¹ení Bad System Call nebo
+ core dump. Proè?
+
+ Dùvody mohou být rùzné, ale nejprve zkontrolujte, zda Vá¹ systém
+ podporuje System V extensions. PostgreSQL vy¾aduje v jádøe podporu
+ sdílené pamìti a semaforù.
+
+ 3.3) Pøi startu postmastera dostanu hlá¹ení o chybì IpcMemoryCreate. Proè?
+
+ Buïto nemáte správnì nakonfigurovanou sdílenou pamì» v jádøe nebo
+ musite zvìt¹it její velikost. Potøebná velikost je závislá na
+ architektuøe a na tom, kolik pamì»ových bufferù a backendù máte
+ povoleno pro postmastera. Pro vìt¹inu systémù s pøeddefinovaným poètem
+ backendù a pamì»ových bufferù je minimum zhruba 1MB. V PostgreSQL
+ Administrator's Guide naleznete podrobnìj¹í informace o sdílené pamìti
+ a semaforech.
+
+ 3.4) Pøi startu postmastera dostanu hlá¹ení o chybì IpcSemaphoreCreate.
+ Proè?
+
+ Pokud dostane chybovou zprávu IpcSemaphoreCreate: semget failed (No
+ space left on device), pak va¹e jádro nemá dost volných semaforù.
+ PostgreSQL vy¾aduje jeden semafor pro ka¾dý backend v pozadí. Doèasným
+ øe¹ením je start postmaster s limitem backendù. Pou¾ijte pøepínaè -N s
+ hodnotou men¹í ne¾ 32. Úplným øe¹ením je zvý¹ení hodnot SEMMNS a
+ SEMMNI jadra.
+
+ Nefunkèní semafory mohou zpùsobit pád bìhem intenzivních databázových
+ operací.
+
+ Pokud se tato chyba vyskytuje je¹tì nìkde jinde, mo¾ná nemáte vùbec
+ nakonfigurovány semafory ve va¹em jádøe. V PostgreSQL Administrator's
+ Guide najdete podrobnìj¹í popis po¾adavkù na sdílenou pamìt a
+ semafory.
+
+ 3.5) Jak povolit nebo zakázat pøístup z jiných stanic?
+
+ Pøi výchozím nastavení PostgreSQL odepøe pøístup z jiných stanic ne¾
+ lokální s pou¾itím UDP. Pøístup z jiných strojù není mo¾ný dokud jej
+ nepovolíte nastavením tcpip_socket v postgresql.conf a urèením zpùsobu
+ autentifikace v $PGDATA/pg_hba.conf.
+
+ 3.6) Jak ladit databázový stroj na lep¹í výkon?
+
+ Urèitì pomohou indexy. Pøíkaz EXPLAIN ANALYZE Vám umo¾ní sledovat jak
+ PostgreSQL interpretuje Vá¹ dotaz a které indexy pou¾ívá.
+
+ Pøi vìt¹í dávce INSERTù uva¾ujte o náhradì pøíkazem COPY. Ten je
+ mnohem rychlej¹í ne¾li samotný INSERT. Ka¾dý pøíkaz mimo blok BEGIN
+ WORK/COMMIT se provádí ve vlastní transakci. Zva¾te, zda-li by se
+ nedalo nìkolik pøíkazù spojit do jedné transakce. Tím se sní¾í re¾ie
+ na transakce. Pøed provedením rozsáhlých zmìn zru¹te indexy, které po
+ dokonèení zmìn opìt vytvoøte.
+
+ Máte nìkolik dal¹ích mo¾ností, jak zlep¹it výkon. Mù¾ete zakázat
+ fsyn() pøi startu postmastera pøepínaèi -o -F. Tyto pøepínaèe zabrání
+ fsync(), tj. zápisu na disk po ka¾dé transakci.
+
+ Mù¾ete zvý¹it velikost pamì»ových bufferù pou¾itých backendy tj.
+ parametr -B postmasteru. Pokud ale tato hodnota bude pøíli¹ velká, tak
+ mo¾ná nespustíte postmastera jeliko¾ dosáhnete limitu sdílené pamìti.
+ Ka¾dý buffer má 8K a implicitnì je 64 bufferù.
+
+ Dále mù¾ete pou¾ít pøepínaè -S k zvý¹ení limitu pamìti pro backendy na
+ doèasné tøídìní. Hodnota je mínìna v kilobytech a výchozí nastavení je
+ 512, tj. 512K.
+
+ Mù¾ete pou¾ít pøíkaz CLUSTER, který uspoøádá fyzicky data v tabulkách
+ podle indexu. Více na manuálových stránkách pøíkazu CLUSTER.
+
+ 3.7) Jaké jsou mo¾nosti ladìní?
+
+ Máte nìkolik mo¾ností jak se dostat k u¾iteèným stavovým informacím.
+
+ Zaprvé, pøi pøekladu pou¾ijte pøepínaè --enable-cassert, tím se zapne
+ monitorování a následné zastavení aplikace, kdy¾ se proces v backendu
+ dostane do neoèekávaného stavu.
+
+ Jak postmaster tak postgres má nìkolik pøepínaèù umo¾òujících ladìní.
+ Postmaster nastartujte tak, abyste si byli jisti, ¾e je standartní
+ výstup a standartní chybový výstup pøesmìrován do souboru logu,
+ napøíklad:
+ cd /usr/local/pgsql
+ ./bin/postmaster > server.log 2>&1 &
+
+ Tím se vytvoøí log v adresáøi PostgreSQL, Tento soubor obsahuje
+ u¾iteèné informace o problémech a chybách vyskytlých se na serveru.
+ Postmaster má pøepínaè -d urèující, jak podrobné mají být reportované
+ informace, tj. debug level. Pozor, pøi velké hodnotì debug levelu
+ rychle roste velikost souboru logu.
+
+ Pokud nebì¾í postmaster, mù¾ete spustit backend PostgreSQL z pøíkazové
+ øádky a napsat svùj SQL dotaz pøímo v backendu (doporuèeno pouze pro
+ ladìní). Dotaz je v tomto pøípadì ukonèen novou øádkou, nikoliv
+ støedníkem. Pokud máte aplikaci pøelo¾enou s ladícími symboly, mù¾ete
+ pou¾ít debbuger k monitorování procesu. Pokud není backend spu¹tìn
+ postmasterem, pak nebì¾í ve svém obvyklém prostøedí a tudí¾ nìkteré
+ problémy dané interakcí mezi backendy nemohou být nasimulovány.
+
+ Pokud bì¾í postmaster, spus»e psql v jednom oknì a pak si zjistìte PID
+ procesu postgres pou¾itého psql. V debuggeru sepøipojte k postgresql
+ PID. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql.
+ Pokud ladíte startup postgresu, pak nastavte PGOPTIONS="-W n" a spus»e
+ psql. Tento pøepínaè zpùsobí pauzu n sekund, tak¾e budete mít èas se
+ pøipojit k procesu, a nastavit breakpointy a pokraèovat v startup
+ posloupnosti.
+
+ Pro ladìní a mìøení výkonu mohou být u¾iteèné pøepínaèe -s, -A a -t
+ programu postgres (backend).
+
+ Mù¾ete provést pøeklad s profilací, tak abyste vidìli kolik èasu
+ zabírají jednotlivé funkce. Soubory s profily backendù jsou ulo¾eny v
+ adresáøi pgsql/data/base/dbname. Profil klienta pak v jeho aktuálním
+ adresáøi. Korektní profilace v prostøedí Linux po¾aduje konfiguraci
+ systému s parametrem -DLINUX_PROFILE.
+
+ 3.8) Proè dostanu "Sorry, too many clients", kdy¾ se zkou¹ím pøipojit?
+
+ Zvy¹te limit postmastera na maximální poèet souèasnì spu¹tìných
+ backendù.
+
+ Výchozí hodnota je 32 backendù. Tuto hodnotu zvý¹íte zastavením a
+ opìtovným spu¹tìním postmastera s parametrem -N nebo úpravou
+ postgresql.conf.
+
+ Pøi zvý¹ení hodnoty -N nad 32 musíte zvý¹it hodnotu -B nad výchozí 64,
+ -B musí být minimálnì dvakrát vìt¹í, nebo je¹tì lépe více.
+ Pravdìpodobnì zjistíte, ¾e pro velký poèet procesù backendu je nutné
+ zvý¹it nìkteré parametry jádra. Jsou to pøedev¹ím maximální velikost
+ sdílené pamìti SHMMAX, maximální poèet semafórù SEMMNS a SEMMNI,
+ maximální poèet procesù NPROC, maximální poèet procesù u¾ivatele
+ MAXUPRC a maximální poèet otevøených souborù NFILE a NINODE. Dùvod pro
+ omezení maximálního poètu backendù je fakt, ¾e by mohlo dojít k
+ vyèerpání zdrojù Va¹eho systému.
+
+ 3.9) K èemu slou¾í adresáø pgsql_tmp?
+
+ Tento adresáø obsahuje doèasné soubory vytvoøené exekutorem dotazù.
+ Napøíklad, kdy¾ je nutné tøídìní k zaji¹tìní ORDER BY a tøídìní má
+ vìt¹í nároky na prostor ne¾ povoluje parametr -S backendu, pak je
+ vytvoøen doèasný soubor k ulo¾ení extra údajù.
+
+ Doèasné soubory jsou obvykle mazány automaticky, ale mù¾e se stát, ¾e
+ bìhem tøídìní server spadne. Zastavení a dal¹í start postmastera
+ zajistí odstranìní souborù s tìchto adresáøù.
+
+ 3.10) Proè je po¾adováno dump a obnovení (load) databáze bìhem upgrade mezi
+ velkými verzemi PostgreSQL?
+
+ PostgreSQL se minimálnì mìní bìhem malých verzí, tak¾e napø. pøi
+ upgrade z 7.2 na 7.2.1 není nutné dump a load databáze. Ale výynamné
+ verze èasto mìní interní formát systémových tabulek a datových
+ souborù. Tyto zmìny jsou natolik rozsáhlé, ¾e nelze zajistit zpìtnou
+ kompatibilitu pro datové soubory. Dump ulo¾í data v obecném formátu,
+ tak¾e mohou být naètena a pou¾ívána v novém interním formátu.
+ _________________________________________________________________
+
+ Provozní dotazy
+
+ 4.1) Èím se li¹í binární a normální kurzor?
+
+ Popis najdete v manuálové stránce DECLARE
+
+ 4.2) Jak získat pouze první øádek dotazu? Náhodný øádek?
+
+ Podívejte se do man. stránky pøíkazu FETCH, nebo pou¾ijte SELECT ...
+ LIMIT ...
+
+ I kdy¾ potøebujete získat pouze prvních nìkolik øádkù, je tøeba
+ zpracovat v¹echna data, napø. pokud dotaz má ORDER BY. Pokud v¹ak
+ existuje index, který odpovídá ORDER BY, PostgreSQL mù¾e získat pouze
+ prvních n øádkù a ukonèit zpracování dotazu.
+
+ K získání náhodného øádku pou¾ijte:
+ SELECT col
+ FROM tab
+ ORDER BY random()
+ LIMIT 1;
+
+ 4.3) Jak získám seznam tabulek nebo jinak jak jej získá psql?
+
+ Pøíkaz \dt v psql zobrazí seznam tabulek. Úplný seznam pøíkazù psql
+ dostanete pøíkazem \?. Také se mù¾ete podívat do zdrojových kódù psql
+ do souboru pgsql/src/bin/psql/describe.c. Ten obsahuje SQL pøíkazy,
+ které se pou¾ívají v psql metapøíkazech. Dále mù¾ete spustit psql s
+ pøepínaèem -E, který zpùsobí zobrazení ka¾dého dotazu, které
+ zpracování metapøíkazu vyvolá. PostgreSQL nabízí SQLi INFORMATION
+ SCHEMA s tabulkami obsahující informace o databázi.
+
+ 4.4) Jak odstraním sloupec tabulky, jak zmìním jeho typ?
+
+ Poèínaje verzí 7.3 mù¾ete pou¾ít pøíkaz ALTER TABLE DROP COLUMN. Ve
+ star¹ích verzích mù¾ete pou¾ít následující postup:
+ BEGIN;
+ LOCK TABLE old_table;
+ SELECT ... -- mimo sloupec, který chceme odstranit
+ INTO TABLE new_table;
+ DROP TABLE old_table;
+ ALTER TABLE new_table RENAME TO old_table;
+ COMMIT;
+
+ Pro zmìnu typu sloupce je tøeba prové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é proveïte VACUUM FULL tab - uvolníte tím diskový prostor zabraný
+ nyní ji¾ neplatnými øádky.
+
+ 4.5) Jaká je maximální velikost øá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 øádky: 1.6 TB
+ Maximální velikost polo¾ky 1 GB
+ Maximální poèet øádkù v tabulce: neomezeno
+ Maximální poèet sloupcù v tabulce: 250-1600 podle typù
+ Maximální poèet indexù na tabulce: neomezeno
+
+ Ve skuteènosti nic není neomezeno, limitem bývá v¾dy dostupná disková
+ pamì» nebo velikost operaèní pamìti. Pokud máte nìkterou z tìchto
+ hodnot neobvykle velkou, mù¾e dojít ke sní¾ení výkonu.
+
+ Maximální velikost tabulky je 32 TB a nevy¾aduje podporu velkých
+ souborù operaèním systémem. Velké tabulky se ukládají do nìkolika 1 GB
+ souborù tak¾e limity souborového systému nejsou podstatné.
+
+ Maximální velikost tabulky a maximální poèet sloupcù mù¾eme
+ zeètyønásobit nastavením velikosti bloku na 32K.
+
+ 4.6) Kolik diskového prostoru je potøeba k ulo¾ení dat z
+
+ normálního textového souboru?
+
+ PostgreSQL vy¾aduje a¾ pìtinásobek diskového prostoru k ulo¾ení dat z
+ textového souboru.
+
+ Napøíklad, uva¾ujme soubor se 100 tisíci øádky obsahující na ka¾dé
+ øádce celé èíslo a textový popis. Text je v prùmìru dvacet bytù
+ dlouhý. Textový soubor bude 2.8 MB dlouhý. Velikost databáze
+ obsahující odpovídající data bude zhruba 6.4 MB.
+ 36 bytù: hlavièka øádku (pøibli¾nì)
+ 24 bytù: jedna celoèíselná polo¾ka a jedna textová
+ + 4 byty: ukazatel na stránku k ntici
+ ------------------------------------------------------
+ 64 bytù na øádek
+
+ Velikost datové stránky PostgreSQL je 8KB
+
+ 8192 bytù na stránce
+ ---------------------- = 128 øádek na stránku
+ 64 bytù za øádek
+
+ 100000 øádek
+ -------------------- = 782 stránek (zaokrouhleno nahoru)
+ 128 øádek na stránce
+
+ 782 * 8192 = 6, 406, 144 bytù (6.4 MB)
+
+ Indexy nemají tak velkou re¾ii, ale mohou být také velké, proto¾e
+ obsahují indexovaná data.
+
+ Hodnoty NULL jsou ulo¾eny v bitmapách, tak¾e spotøebují jen velmi málo
+ diskového prostoru.
+
+ 4.7) Jak získám seznam vytvoøených tabulek, indexù, databází?
+
+ psql má sadu metapøíkazù k zobrazení tìchto informací. Jejich seznam
+ získáte pøíkazem \?. Dále se mù¾ete podívat na obsah systémových
+ tabulek zaèínajících pg_. Spu¹tìní psql s parametrem -l provede výpis
+ názvù v¹ech databází.
+
+ Soubor pgsql/src/tutorial/syscat.source obsahuje SELECTy pøistupující
+ k systémovým tabulkámm.
+
+ 4.8) Mùj dotaz je pomalý a nepou¾ívá vytvoøené indexy. Proè?
+
+ Ka¾dý dotaz nemusí nutnì pou¾ít existující indexy. Index se pou¾ije
+ tehdy, kdy¾ je tabulka vìt¹í ne¾ urèitá minimální velikost, a dotaz
+ vybírá pouze procentuálnì malou èást øádkù tabulky. To proto, ¾e
+ náhodný pøístup k disku daný ètením indexu mù¾e být pomalej¹í ne¾
+ lineární ètení tabulky nebo sekvenèní ètení.
+
+ PostgreSQL rozhoduje o pou¾ití indexù na základì statistiky pøístupù k
+ tabulce. Tyto statistiky se shroma¾ïují pøíkazy VACUUM ANALYZE nebo
+ ANALYZE. Díky statistikám má optimizer informaci o poètu øádek v
+ tabulce a mù¾e lépe rozhodnout o pou¾ití indexù. Statistiky se uplatní
+ pøi urèení optimálního poøadí a metody spojení tabulek. Statistiky by
+ se mìli aktualizovat opakovanì, tak jak se mìní obsah tabulek.
+
+ Indexy nejsou obyèejnì pou¾ity pro setøídìní nebo spojení tabulek.
+ Sekvenèní zpracování následované explicitním tøídìním je obyèejnì
+ rychlej¹í ne¾ indexní ètení na velké tabulce.
+
+ Jinak je tomu v pøípadì pou¾ití LIMIT a ORDER BY, pøi kterém se
+ vìt¹inou index pou¾ije, výsledkem je pouze malá èást tabulky. Funkce
+ MAX() a MIN() nepou¾ívají indexy, ale je mo¾né tuté¾ hodnotu získat:
+ SELECT col
+ FROM tab
+ ORDER BY col [ DESC ]
+ LIMIT 1;
+
+ Pokud si myslíte, ¾e optimizer mylnì zvolil sekvenèní prohledávání
+ tabulky, pou¾ijte pøíkaz SET enable_seqscan TO 'off' a zkuste zda je
+ indexní prohledávání rychlej¹í.
+
+ Pøi vyhledávání na základì vzoru jako je napø. operátor LIKE nebo ~ se
+ indexy pou¾íjí pouze za urèitých skuteèností:
+ * zaèátek hledaného vzoru musí být ukotven k zaèátku, tj.
+ + vzor LIKE nesmí zaèínat %
+ + ~ regulární výraz musí zaèínat ^
+ * vzor nesmí zaèínat intervalem, napø. [a-e]
+ * vyhledávaní, které není Case sensitiv jako je ILIKE nebo ~*
+ nepou¾ívá indexy. Mù¾ete ale pou¾ít funkcionální indexy, které
+ jsou posány v sekci 4.12
+ * pøi inicializaci databáze (initdb) musí být pou¾ito C locale
+ (pozn. pøekladatele - tudí¾ v na¹ich podmínkách nepou¾itelné,
+ nepracovalo by èeské tøídìní).
+
+ 4.9) Jak zjistím, jak optimizer dotazu vyhodnocuje mùj dotaz?
+
+ Podívejte se do manuálové stránky pøíkazu EXPLAIN.
+
+ 4.10) Co to je R-tree index?
+
+ R-tree index se pou¾ívá pro indexování prostorových dat. Hash index
+ nemù¾e obslou¾it prohledávání oblastí. B-tree index mù¾e øídit
+ vyhledání oblastí v jedné dimenzi. R-tree index mù¾e podporovat
+ hledání v multidimenzionálních datech. Pou¾ijeme-li napøíklad R-tree
+ index na atributy typu point, pak systém mù¾e efektivnì odpovìdìt na
+ dotaz - vyber v¹echny body uvnitø obdélníkù.
+
+ Pùvodní ná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ály naleznete v Stonebraker's "Readings in Database
+ Systems".
+
+ Vestavìné R-tree mù¾e slou¾it k indexaci polygonù a oblastí.
+ Teoreticky mù¾eme R-tree pou¾ít i pro více dimenzí (jiné ne¾ 3D). Ve
+ skuteènosti ale takové roz¹íøení R-tree vy¾aduje trochu práce a ve
+ souèastnosti chybí dokumentace jak na to.
+
+ 4.11) Co je Genetic Query Optimizer?
+
+ GEQO modul urychluje optimalizaci dotazù pøi spojování mno¾ství
+ tabulek metodou Genetických algoritmù (GA). To umo¾òuje získat velkého
+ mno¾ství variant spojení pøi neúplném prohledáváním.
+
+ 4.12) Jak provést vyhledávání regulárního výrazu case sensitiv, insensitiv?
+ Jak pou¾ít index pro case insensitive vyhledávání?
+
+ Operátor ~ slou¾í k porování s regulárním výrazem, jeho modifikace *~
+ pøedstavuje case insensitive vyhledávání. Jedná se o obdobu LIKE a
+ ILIKE.
+
+ Pro vyhledávání bez ohledu na velká malá písmena pou¾ijeme:
+ SELECT *
+ FROM tab
+ WHERE lower(col) = 'abc';
+
+ V tomto pøípadì se nepou¾ije standardní index. Nicménì, pou¾ije se
+ funkcionální index, pokud jej vytvoøíte:
+ CREATE INDEX tabindex ON tab (lower(col));
+
+ 4.13) Jak v dotazu detekovat, ¾e polo¾ka je NULL?
+
+ Urèíte pomocí IS NULL nebo IS NOT NULL
+
+ 4.14) Jaké jsou rozdíly mezi rùznými znakovými typy?
+
Typ Interní název Poznámka
--------------------------------------------------------------------------
VARCHAR(n) varchar omezeno maximální délkou, bez doplnìní mezerami
BYTEA bytea pole bytù (bezpeènì lze ulo¾it i znak NULL)
"char" char jeden znak
-S interními názvy se setkáte v systémovém katalogu a v nìkterých
-chybových hlá¹eních.
-
-První ètyøi uvedené typy jsou tzv. varlena typy (tj. první ètyøi byty na
-disku nesou údaj o délce, následují samotná data). Proto skuteèný
-pou¾itý prostor je v¾dy o nìco málo vìt¹í ne¾ deklarovaná délka. Naopak,
-tyto datové typy jsou komprimovánty TOASTem, tak¾e prostor na disku mù¾e
-být ni¾¹í ne¾ je oèekáváno.
-
-VARCHAR(n) je vhodný pro ukládání textù prommìné délky s pevnì
-stanovenou maximální délkou. TEXT je pro øetìzce bez omezení délky s
-maximem jeden gigabajt.
-
-CHAR(n) slou¾í k ukládání øetìzcù stejné délky. CHAR(n) doplní prázdné
-znaky do specifikované délky, zatímco VARCHAR(n) ulo¾í pouze pøedané
-znaky. BYTEA je urèeno pro ukládání binárních dat, vèetnì NULL byte.
-V¹echny zde popsané typy mají podobné výkonnostní charakteristiky.
-
-4.15.1 Jak vytvoøit serial/auto-increment pole?
------------------------------------------------
-
-PostgreSQL podporuje typ SERIAL. Pøi jeho pou¾ití se automaticky vytvoøí
-SEQUENCE a index na sloupci (Pro vy¹¹í verze to neplatí OVÌØIT).
-Napøíklad:
-
-CREATE TABLE person (
- id SERIAL,
- name TEXT
-);
-
-je automaticky pø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álových stránkách. Dále mù¾ete
-pou¾ít unikátní hodnotu OID ka¾dého øádku. Potom ale musíte spou¹tìt
-pg_dump s pøepínaèem -o, tak aby zùstaly zachovány hodnoty OID (u
-pøíkazu copy COPY WITH OIDS).
-
-4.15.2 Jak získat hodnotu SERIAL po vlo¾ení øádku?
---------------------------------------------------
-
-Jednou z mo¾ností je získat budoucí hodnotu SERIAL funkcí nextval pøed
-samotným vlo¾ením a pak ji vlo¾it explicitnì. Napøíklad v jakémsi
-pseudojazyku
-
-newid = execute("SELECT nextval('person_id_seq')");
-execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
-Mù¾ete pak je¹tì pou¾ít hodnotu newid v dal¹ích dotazech, napø. jako
-hodnotu cizího klíèe. Název automaticky vytvoøené sekvence je
-tabulka_sloupec_seq.
-
-Alternativnì mù¾ete získat hodnotu poslednì generovou sekvencí funkcí
-currval() po vlo¾ení
-
-execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-new_id = execute("SELECT currval('person_id_seq')");
-
-Koneènì mù¾ete pou¾ít OID hodnotu vrácenou pøíkazem INSERT, ale to je
-pravdìpodobnì nejménì pøenositelné øe¹ení. V Perlu pøi pou¾ití DBI
-modulu Edmunda Mergleho DBD:Pg oid hodnotu získáme $sth->{pg_oid_status}
-po ka¾dém $sth->execute().
-
-4.15.3 Nepovede currval() a nextval() k rozhození podmínek pøi soubìhu s jinými u¾ivateli?
-------------------------------------------------------------------------------------------
-
-Nikoliv, currval() vrací hodnotu naposledy generovanou ve va¹em
-backendu, a ta tudí¾ není spoleèná v¹em u¾ivatelùm.
-
-4.15.4 Proè není vygenerované èíslo pou¾ito pøi pøeru¹ení transakce?
-Proè vznikají díry v èíslování vlastní sekvencí/SERIAL sloupce?
-
-K zaji¹tìní efektivnosti soubìhu, jsou hodnoty posloupnosti, kdy¾ se o
-nì po¾ádá, a sekvence není zamèena do ukonèení transakce. To zpùsobuje
-díry v èíslování ze zru¹ených transakcí.
-
-4.16 Co to je OID? Co je to TID?
---------------------------------
-
-Ka¾dý øádek vytvoøený v PostgreSQL získá jedineèné OID. V¹echna OID
-generovaná bìhem inicializace databáze jsou men¹í ne¾ 16384
-(include/access/transam.h). V¹echna OID generovaná na po¾adavek
-u¾ivatele jsou rovna nebo vy¹¹í této hodnotì. Normálnì, v¹echna OID jsou
-jedineèná nejen uvnitø tabulky nebo databáze, ale v rámci celé instalace
-PostgreSQL
-
-PostgreSQL pou¾ívá OID ve svém interním systému tabulek k vytvoøení
-relací. Tato OID mohou být pou¾ita k identifikaci konkrétního u¾ivatele
-a pou¾ita v spojení. Pro OID hodnoty je doporuèen typ OID. Nad tímto
-sloupcem mù¾ete vytvoøit index pro urychlení pøístupu.
-
-OID jsou dána v¹em øádkùm z centrální oblasti a jsou pou¾ita v ka¾dé
-databázi. Pokud potøebujete zmìnit OID, nebo chcete zkopírovat tabulku s
-pùvodními OID, lze pou¾í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¾ena jako 4bajtový integer a pøeteèou po ètyøech miliardách.
-Nebylo hlá¹eno, ¾e by se tak nìkdy stalo, pøesto ale plánujeme odstranit
-tento limit døív ne¾ se tak stane.
-
-TID se pou¾ívají i identifikaci fyzických øádkù s hodnotou bloku a
-offsetu. TIDs se mìní modifikací øádkù (pou¾ívá se jako ukazatel indexu
-fyzického øádku).
-
-4.17 Jaký je význam nìkterých výrazù pou¾itých v PostgreSQL?
-------------------------------------------------------------
-
-V nìkterých zdrojových kódech nebo star¹í dokumentaci se mù¾ete setkat s
-následujícími výrazy, které mají ¹ir¹í význam. Zde je pøíklad nekterých:
-
- - tabulka, relace, tøída (table, relation, class)
- - øádek, záznam, ntice (row, record, tuple)
- - sloupec, polo¾ka, atribut (column, field, attribute)
- - vyhledání, výbìr (retrieve, select)
-
- - náhrada, úprava (replace, update)
- - pøidání, vkládání (append, insert)
- - OID, serial value (OID, serial value)
- - portal, kurzor (portal, cursor)
- - range variable, jméno tabulky, alias tabulky (range
- variable, table name, table alias)
-
-seznam tìchto výrazù mù¾ete nalézt na
-http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/g
-lossary.html.
-
-4.18 Proè jsem získal chybové hlá¹ení "ERROR: Memory exhausted in AllocSetAlloc()"?
------------------------------------------------------------------------------------
-
-Pravdìpodobnì do¹lo k vyèerpání virtuální pamì»i na Va¹em systému, nebo
-jádro má nízký limit pro urèité zdroje. Vyzkou¹ejte pøed startem
-posmatera
-
-ulimit -d 262144
-limit datasize 256m
-
-Zále¾í na Va¹em shellu, zda budou tyto pøíkazy úspì¹né, mìly by zvý¹it
-limit datového segmentu pro Va¹e procesy a umo¾nit tak dokonèení dotazu.
-Tyto pøíkazy se aplikují na aktuální proces a v¹echny synovské procesy
-vytvoøené po provedení pøíkazu. Pokud máte problémy s SQL klientem
-proto¾e backend vrací pøíli¹ mnoho dat, zkuste zvý¹it limity pøed
-startem klienta.
-
-4.19 Jak se dozvím, kterou verzi PostgreSQL pou¾ívám?
------------------------------------------------------
-
-V psql spus»te
-
-SELECT version();
-
-4.20 Proè operace s velkými objekty konèí "invalid large obj descriptor"?
--------------------------------------------------------------------------
-
-V¹echny operace s velkými objekty - lo_open, lo_close, ... musíte
-spou¹tìt v transakci, tj. mezi pøíkazy BEGIN WORK a COMMIT.
-
-PostgreSQL uvolòuje handle velkých objektù pøi skonèení transakce. Pokud
-budete pracovat s velkými objekty mimo transakci, pravdìpodobnì
-dostanete toto chybové hlá¹ení, proto¾e handle ji¾ budou neplatné.
-
-Pokud pou¾íváte interface podobné ODBC musíte nastavit set auto_commit
-off
-
-4.21 Jak vytvoøit sloupec obsahující implicitnì aktuální datum?
----------------------------------------------------------------
-
-Pou¾ijte CURRENT_TIMESTAMP
+ S interními názvy se setkáte v systémovém katalogu a v nìkterých
+ chybových hlá¹eních.
+
+ První ètyøi uvedené typy jsou tzv. varlena typy (tj. první ètyøi byty
+ na disku nesou údaj o délce, následují samotná data). Proto skuteèný
+ pou¾itý prostor je v¾dy o nìco málo vìt¹í ne¾ deklarovaná délka.
+ Naopak, tyto datové typy jsou komprimovánty TOASTem, tak¾e prostor na
+ disku mù¾e být ni¾¹í ne¾ je oèekáváno.
+
+ VARCHAR(n) je vhodný pro ukládání textù prommìné délky s pevnì
+ stanovenou maximální délkou. TEXT je pro øetìzce bez omezení délky s
+ maximem jeden gigabajt.
+
+ CHAR(n) slou¾í k ukládání øetìzcù stejné délky. CHAR(n) doplní prázdné
+ znaky do specifikované délky, zatímco VARCHAR(n) ulo¾í pouze pøedané
+ znaky. BYTEA je urèeno pro ukládání binárních dat, vèetnì NULL byte.
+ V¹echny zde popsané typy mají podobné výkonnostní charakteristiky.
+
+ 4.15.1) Jak vytvoøit serial/auto-increment pole?
+
+ PostgreSQL podporuje typ SERIAL. Pøi jeho pou¾ití se automaticky
+ vytvoøí SEQUENCE. Napøíklad:
+ CREATE TABLE person (
+ id SERIAL,
+ name TEXT
+ );
+
+ je automaticky pø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álových stránkách. Dále mù¾ete
+ pou¾ít unikátní hodnotu OID ka¾dého øádku. Potom ale musíte spou¹tìt
+ pg_dump s pøepínaèem -o, tak aby zùstaly zachovány hodnoty OID (u
+ pøíkazu copy COPY WITH OIDS).
+
+ 4.15.2) Jak získat hodnotu SERIAL po vlo¾ení øádku?
+
+ Jednou z mo¾ností je získat budoucí hodnotu SERIAL funkcí nextval()
+ pøed samotným vlo¾ením a pak ji vlo¾it explicitnì. Napøíklad v jakémsi
+ pseudojazyku:
+ newid = execute("SELECT nextval('person_id_seq')");
+ execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
+
+ Mù¾ete pak je¹tì pou¾ít hodnotu newid v dal¹ích dotazech, napø. jako
+ hodnotu cizího klíèe. Název automaticky vytvoøené sekvence je
+ tabulka_sloupec_seq.
+
+ Alternativnì mù¾ete získat hodnotu poslednì generovou sekvencí funkcí
+ currval() po vlo¾ení:
+ execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+ new_id = execute("SELECT currval('person_id_seq')");
+
+ Koneènì mù¾ete pou¾ít OID hodnotu vrácenou pøíkazem INSERT, ale to je
+ pravdìpodobnì nejménì pøenositelné øe¹ení. V Perlu pøi pou¾ití DBI
+ modulu Edmunda Mergleho DBD:Pg oid hodnotu získáme
+ $sth->{pg_oid_status} po ka¾dém $sth->execute().
+
+ 4.15.3) Nepovede currval() a nextval() k rozhození podmínek pøi soubìhu s
+ jinými u¾ivateli?
+
+ Nikoliv, currval() vrací hodnotu naposledy generovanou ve va¹em
+ backendu, a ta tudí¾ není spoleèná v¹em u¾ivatelùm.
+
+ 4.15.4) Proè není vygenerované èíslo pou¾ito pøi pøeru¹ení transakce? Proè
+ vznikají díry v èíslování vlastní sekvencí/SERIAL sloupce?
+
+ K zaji¹tìní efektivnosti soubìhu, jsou hodnoty posloupnosti, kdy¾ se o
+ nì po¾ádá, a sekvence není zamèena do ukonèení transakce. To zpùsobuje
+ díry v èíslování ze zru¹ených transakcí.
+
+ 4.16) Co to je OID? Co je to TID?
+
+ Ka¾dý øádek vytvoøený v PostgreSQL získá jedineèné OID. V¹echna OID
+ generovaná bìhem inicializace databáze jsou men¹í ne¾ 16384
+ (include/access/transam.h). V¹echna OID generovaná na po¾adavek
+ u¾ivatele jsou rovna nebo vy¹¹í této hodnotì. Normálnì, v¹echna OID
+ jsou jedineèná nejen uvnitø tabulky nebo databáze, ale v rámci celé
+ instalace PostgreSQL
+
+ PostgreSQL pou¾ívá OID ve svém interním systému tabulek k vytvoøení
+ relací. Tato OID mohou být pou¾ita k identifikaci konkrétního
+ u¾ivatele a pou¾ita v spojení. Pro OID hodnoty je doporuèen typ OID.
+ Nad tímto sloupcem mù¾ete vytvoøit index pro urychlení pøístupu.
+
+ OID jsou dána v¹em øádkùm z centrální oblasti a jsou pou¾ita v ka¾dé
+ databázi. Pokud potøebujete zmìnit OID, nebo chcete zkopírovat tabulku
+ s pùvodními OID, lze pou¾í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¾ena jako 4bajtový integer a pøeteèou po ètyøech
+ miliardách. Nebylo hlá¹eno, ¾e by se tak nìkdy stalo, pøesto ale
+ plánujeme odstranit tento limit døív ne¾ se tak stane.
+
+ TID se pou¾ívají i identifikaci fyzických øádkù s hodnotou bloku a
+ offsetu. TIDs se mìní modifikací øádkù (pou¾ívá se jako ukazatel
+ indexu fyzického øádku).
+
+ 4.17) Jaký je význam nìkterých výrazù pou¾itých v PostgreSQL?
+
+ V nìkterých zdrojových kódech nebo star¹í dokumentaci se mù¾ete setkat
+ s následujícími výrazy, které mají ¹ir¹í význam. Zde je pøíklad
+ nekterých:
+ * tabulka, relace, tøída (table, relation, class)
+ * øádek, záznam, ntice (row, record, tuple)
+ * sloupec, polo¾ka, atribut (column, field, attribute)
+ * vyhledání, výbìr (retrieve, select)
+ * náhrada, úprava (replace, update)
+ * pøidání, vkládání (append, insert)
+ * OID, serial value (OID, serial value)
+ * portal, kurzor (portal, cursor)
+ * range variable, jméno tabulky, alias tabulky (range variable,
+ table name, table alias)
+
+ seznam tìchto výrazù mù¾ete nalézt na
+ http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
+ /glossary.html.
+
+ 4.18) Proè jsem získal chybové hlá¹ení "ERROR: Memory exhausted in
+ AllocSetAlloc()"?
+
+ Pravdìpodobnì do¹lo k vyèerpání virtuální pamì»i na Va¹em systému,
+ nebo jádro má nízký limit pro urèité zdroje. Vyzkou¹ejte pøed startem
+ posmatera
+ ulimit -d 262144
+ limit datasize 256m
+
+ Zále¾í na Va¹em shellu, zda budou tyto pøíkazy úspì¹né, mìly by zvý¹it
+ limit datového segmentu pro Va¹e procesy a umo¾nit tak dokonèení
+ dotazu. Tyto pøíkazy se aplikují na aktuální proces a v¹echny synovské
+ procesy vytvoøené po provedení pøíkazu. Pokud máte problémy s SQL
+ klientem proto¾e backend vrací pøíli¹ mnoho dat, zkuste zvý¹it limity
+ pøed startem klienta.
+
+ 4.19) Jak se dozvím, kterou verzi PostgreSQL pou¾ívám?
+
+ V psql spus»te SELECT version();
+
+ 4.20) Proè operace s velkými objekty konèí "invalid large obj descriptor"?
+
+ V¹echny operace s velkými objekty - lo_open, lo_close, ... musíte
+ spou¹tìt v transakci, tj. mezi pøíkazy BEGIN WORK a COMMIT.
+
+ PostgreSQL uvolòuje handle velkých objektù pøi skonèení transakce.
+ Pokud budete pracovat s velkými objekty mimo transakci, pravdìpodobnì
+ dostanete toto chybové hlá¹ení, proto¾e handle ji¾ budou neplatné.
+ Pokud pou¾íváte interface podobné ODBC musíte nastavit set auto_commit
+ off.
+
+ 4.21) Jak vytvoøit sloupec obsahující implicitnì aktuální datum?
+
+ Pou¾ijte CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-4.22 Proè jsou moje vnoøené dotazy pou¾ívající IN tak pomalé?
--------------------------------------------------------------
-
-Aktuálnì spojujeme tabulky se sekvenèním skenováním výsledku pro ka¾dý
-øádek vnìj¹ího dotazu. Pokud vnoøený dotaz má pouze nìkolik øádkù a
-vnìj¹í dotaz vrací hodnì øádek, IN je rychlé. V jiných pøípadech
-nahraï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í vytvoøete index pro subcol. Tento výkonnostní problém byl
-odstranìn ve verzi 7.4.
-
-4.23 Jak provést vnìj¹í spojení (outer join)?
----------------------------------------------
-
-PostgreSQL podporuje vnìj¹í spojení tabulek standardními SQL pøíkazy.
-Zde jsou dva pøíklady:
-
-SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-nebo
-
-SELECT * FROM t1 LEFT OUTER JOIN USING (col);
-
-Tyto identické dotazy napojí t1.col na t2.col a je¹tì pøidá nepøipojené
-øádky z t1 (které nemají obdoby v t2). Pravé spojení (RIGHT JOIN) pøidá
-nepøipojené øádky z t2. FULL JOIN vrátí v¹echny øádky, vèetnì
-nepøipojených z tbulek t1 a t2. Klíèové slovo OUTER je nepovinné a vá¾e
-se na LEFT, RIGHT a FULL join. Bì¾né spojení se nazývá INNER JOIN.
-
-V døívìj¹ích verzích se vnìj¹í spojení tabulek mohlo simulovat pomocí
-UNION a NOT IN. Napøíklad pro spojení tabulek tab1 a tab2, je
-následující dotaz ekvivalentní k vnìj¹ímu spojení 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ést dotaz napøíè nìkolika databázemi?
---------------------------------------------------
-
-PostgreSQL nenabízí ¾ádný zpùsob, jak se dotázat do jiné databáze ne¾ do
-aktuální. Doplnìk contrib/dblink umo¾òuje dotaz do cizí databáze
-prostøednictvím funkce. Na stranì klienta není problém si otevøít více
-simultálních pøístupù do rùzných databází a spojovat výsledek na stranì
-klienta.
-
-4.25 Mù¾e funkce vrátit více øádkù nebo sloupcù?
-------------------------------------------------
-
-V PostgreSQL 7.3 mù¾ete jednodu¹e vracet více øádkù nebo sloupcù z
-funkce, viz:
-http://techdocs.postgresql.org/guides/SetReturningFunctions.
-
-4.26 Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky v PL/pgSQL funkcích?
---------------------------------------------------------------------------------
-
-Pøelo¾ený kód PL/pgSQL funkce je ulo¾en ve vyrovnávací pamìti, tj.
-funkce je pøekládána pouze pøi zmìnì kódu, nikoliv pøed ka¾dým voláním
-funkce. Nechtìným vedlej¹ím efektem je, ¾e volání funkce sel¾e, kdy¾ se
-funkce odkazuje na doèasnou tabulku, pokud tato tabulka byla od pøekladu
-funkce zru¹ena (aèkoliv ji¾ byla znovu vytvoøena a existuje). Jediným
-øe¹ením problému je pøístup k doèasné tabulce pomocí EXECUTE, tj.
-dynamické provádìní dotazu. Tento pøíkaz zajistí opakovaný pøeklad
-dotazu pøi ka¾dém volání funkce.
-
-4.27 Jaké jsou mo¾nosti replikace databází?
--------------------------------------------
-
-Existuje nìkolik dostupných øe¹ení master/slave replikací. Ty povolují
-modifikace master databáze a slave databázím umo¾òují pouze ètení. Na
-konci http://gborg.PostgreSQL.org/genpage?replication_research najdete
-jejich seznam. Na øe¹ení multi-master replikaci se pracuje na
-http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-
-4.28 Jaké jsou mo¾nosti ¹ifrování databází?
--------------------------------------------
- -
-
- contrib/pgcrypto obsahuje ¹ifrovací funkce pou¾itelné v SQL
- dotazech.
-
- -
-
- K ¹ifrování pøenosu dat z klienta na server, musí být server
- pøelo¾en s podporou ssl a pøepínaè sslv postgresql.conf musí být
- nastaven na hodnotu true. Klient musí mít vytvoøen záznam hostssl v
- pg_hba.conf a také mít povolen re¾im ssl. Lze pou¾ít i jiné
- prostøedky, nejen nativní podporu ssl v PostgreSQL, napø. stunel a
- ssh.
-
- -
-
- Hesla u¾ivatelù databáze jsou za¹ifrována poèínaje verzí 7.3. Ve
- star¹ích verzích toto chování muselo být vynuceno volbou
- PASSWORD_ENCRYPTION v postgresql.conf
-
- -
-
- Server mù¾e bì¾et na ¹ifrovaném souborovém systému.
-
-------------------------------------------------------------------------
-
-Roz¹iøování PostgreSQL
-======================
-
-5.1 Napsal jsem UDF funkci, PostgreSQL v¹ak konèí dump core?
-------------------------------------------------------------
-
-Problém mù¾e být zpùsoben mnoha okolnostmi. Vyzkou¹ejte si svoji funkci
-nejdøíve v nìjaké jednoduché aplikaci.
-
-5.2 Jak mohu pøispìt nìjakými ¹ikovnými datovými typy a funkcemi do PostgreSQL?
--------------------------------------------------------------------------------
-
-Po¹lete své roz¹íøení do konference pgsql-hackers, a ono pak mo¾ná
-skonèí v podadresáøi contrib.
-
-5.3 Jak napsat funkci v C vracející ntici?
-------------------------------------------
-
-Funkce vracející tabulky jsou podporované PostgreSQL 7.3 a vy¹¹í pro
-jazyky C, PL/PgSQL a SQL. Více naleznete v The Programmer's Guide.
-Pøíklady tìchto funkcí pro C naleznete v contrib/tablefunc.
-
-5.4 Modifikoval jsem zdrojové soubory. Tato zmìna nebyla pøi rekompilaci vzata v potaz. Proè?
----------------------------------------------------------------------------------------------
-
-Makefile nemá informace o závislostech mezi hlavièkovými soubory. Musíte
-provést make clean a pak make. Pokud pou¾íváte gcc, mù¾ete pou¾ít
-pøepínaè --enable-depend pøíkazu configure k automatickému øe¹ení
-závislostí pøekladaè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
-
+ 4.22) Proè jsou moje vnoøené dotazy pou¾ívající IN tak pomalé?
+
+ Døívìj¹í verze (pøed 7.4) spojovali vnoøené dotazy k vnìj¹ím
+ sekvenèním ètením výsledku poddotazu pro ka¾dý øádek vnìj¹ího dotazu.
+ Pokud poddotaz vrátil nìkolik málo øádkù IN bylo rychlé. Pro ostatní
+ pøípady je vhodné nahradit IN EXISTS:
+ SELECT *
+ FROM tab
+ WHERE col IN (SELECT subcol FROM subtab);
+
+ na:
+ SELECT *
+ FROM tab
+ WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
+
+ Pro urychlení vytvoøete index pro subcol.
+
+ Ve verzi 7.4 a pozdìj¹ích, IN pou¾ívá stejnì sofistikovanou techniku
+ spojování tabulek jako ostatní dotazy a je preferovaný pøed EXISTS.
+
+ 4.23) Jak provést vnìj¹í spojení (outer join)?
+
+ PostgreSQL podporuje vnìj¹í spojení tabulek standardními SQL pøíkazy.
+ Zde jsou dva pøíklady:
+ SELECT *
+ FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+
+ nebo
+ SELECT *
+ FROM t1 LEFT OUTER JOIN USING (col);
+
+ Tyto identické dotazy napojí t1.col na t2.col a je¹tì pøidá
+ nepøipojené øádky z t1 (které nemají obdoby v t2). Pravé spojení
+ (RIGHT JOIN) pøidá nepøipojené øádky z t2. FULL JOIN vrátí v¹echny
+ øádky, vèetnì nepøipojených z tbulek t1 a t2. Klíèové slovo OUTER je
+ nepovinné a vá¾e se na LEFT, RIGHT a FULL join. Bì¾né spojení se
+ nazývá INNER JOIN.
+
+ V døívìj¹ích verzích se vnìj¹í spojení tabulek mohlo simulovat pomocí
+ UNION a NOT IN. Napøíklad pro spojení tabulek tab1 a tab2, je
+ následující dotaz ekvivalentní k vnìj¹ímu spojení 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ést dotaz z více databází?
+
+ PostgreSQL nepodporuje dotazy do jiné ne¾ aktuální databáze.
+
+ contrib/dblink nabízí funkce umo¾òující provedení dotazu v jiné
+ databázi. Klient si mù¾e otevøít simultální pøipojení do rùzných db
+ bez omezení.
+
+ 4.25) Mù¾e funkce vrátit více øádkù nebo sloupcù?
+
+ V PostgreSQL 7.3 mù¾ete jednodu¹e vracet více øádkù nebo sloupcù z
+ funkce, viz:
+ http://techdocs.postgresql.org/guides/SetReturningFunctions.
+
+ 4.26) Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky v PL/pgSQL
+ funkcích?
+
+ Pøelo¾ený kód PL/pgSQL funkce je ulo¾en ve vyrovnávací pamìti, tj.
+ funkce je pøekládána pouze pøi zmìnì kódu, nikoliv pøed ka¾dým voláním
+ funkce. Nechtìným vedlej¹ím efektem je, ¾e volání funkce sel¾e, kdy¾
+ se funkce odkazuje na doèasnou tabulku, pokud tato tabulka byla od
+ pøekladu funkce zru¹ena (aèkoliv ji¾ byla znovu vytvoøena a existuje).
+ Jediným øe¹ením problému je pøístup k doèasné tabulce pomocí EXECUTE,
+ tj. dynamické provádìní dotazu. Tento pøíkaz zajistí opakovaný pøeklad
+ dotazu pøi ka¾dém volání funkce.
+
+ 4.27) Jaké jsou mo¾nosti replikace databází?
+
+ Existuje nìkolik dostupných øe¹ení master/slave replikací, tj umo¾òují
+ modifikace master databáze a slave databázím umo¾òují pouze ètení. Na
+ konci http://gborg.PostgreSQL.org/genpage?replication_research najdete
+ jejich seznam. Na øe¹ení multi-master replikaci se pracuje na
+ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
+
+ 4.28) Jaké jsou mo¾nosti ¹ifrování databází?
+
+ * contrib/pgcrypto obsahuje ¹ifrovací funkce pou¾itelné v SQL
+ dotazech.
+ * K ¹ifrování pøenosu dat z klienta na server, musí být server
+ pøelo¾en s podporou ssl a pøepínaè ssl v postgresql.conf musí být
+ nastaven na hodnotu true. Klient musí mít vytvoøen záznam hostssl
+ v pg_hba.conf a také mít povolen re¾im ssl. Lze pou¾ít i jiné
+ prostøedky, nejen nativní podporu ssl v PostgreSQL, napø. stunel a
+ ssh.
+ * Hesla u¾ivatelù databáze jsou za¹ifrována poèínaje verzí 7.3. Ve
+ star¹ích verzích toto chování muselo být vynuceno volbou
+ PASSWORD_ENCRYPTION v postgresql.conf
+ * Server mù¾e bì¾et na ¹ifrovaném souborovém systému.
+ _________________________________________________________________
+
+ Roz¹iøování PostgreSQL
+
+ 5.1) Napsal jsem UDF funkci, PostgreSQL v¹ak konèí dump core?
+
+ Problém mù¾e být zpùsoben mnoha okolnostmi. Vyzkou¹ejte si svoji
+ funkci nejdøíve v nìjaké jednoduché aplikaci.
+
+ 5.2) Jak mohu pøispìt nìjakými ¹ikovnými datovými typy a funkcemi do
+ PostgreSQL?
+
+ Po¹lete své roz¹íøení do konference pgsql-hackers, a ono pak mo¾ná
+ skonèí v podadresáøi contrib.
+
+ 5.3) Jak napsat funkci v C vracející ntici?
+
+ Funkce vracející tabulky jsou podporované PostgreSQL 7.3 a vy¹¹í pro
+ jazyky C, PL/PgSQL a SQL. Více naleznete v The Programmer's Guide.
+ Pøíklady tìchto funkcí pro C naleznete v contrib/tablefunc.
+
+ 5.4) Modifikoval jsem zdrojové soubory. Tato zmìna nebyla pøi rekompilaci
+ vzata v potaz. Proè?
+
+ Makefile nemá informace o závislostech mezi hlavièkovými soubory.
+ Musíte provést make clean a pak make. Pokud pou¾íváte gcc, mù¾ete
+ pou¾ít pøepínaè --enable-depend pøíkazu configure k automatickému
+ øe¹ení závislostí pøekladaèem.
-PostgreSQL FAQسوالاتي كه اغلب در مورد PostgreSQL پرسيده مي شوند
-تاريخ آخرين اصلاح اين فايل: 28 شهریور 1383 هجری شمسی
-نگهدارنده اصلي فايل (زبان انگليسي)در حال حاضر : Bruce Momjian
-pgman@candle.pha.pa.us
-نگهدارنده فايل به زبان فارسي: m.taghizadeh@imenafzar.net محمود تقيزاده مهرجردی
-آخرين نسخه اين فايل را ميتوانيد از اين آدرس بگيريد
-http://www.PostgreSQL.org/docs/faqs/FAQ.html
-سوالاتي كه در مورد يك سکوی(پلتفرم) خاص است در اين آدرس جواب داده شده اند
-http://www.PostgreSQL.org/docs/index.html
-
-
-
-سوالات عمومي
-1.1) PostgreSQL چيست و چگونه بايد آن را تلفظ كرد؟
-1.2) قانون كپي رايت (حقوق معنوي) در مورد PostgreSQL به چه صورت است؟
-1.3) PostgreSQL روي چه نوع يونيكسهايي اجرا ميشود؟
-1.4) روي چه محيطهاي غير يونيكسي ميتوان آن را اجرا كرد؟
-1.5) PostgreSQL را از كجا ميتوانم بگيرم؟
-1.6) از كجا خدمات پشتيباني بگيرم؟
-1.7) آخرين نسخه اعلام شده چيست؟
-1.8) چه مستندات و راهنمائيهايي وجود دارند؟
-1.9) چگونه ميتوانم ازاشكالات شناخته شده و يا امكاناتي كه در اين پايگاه داده
-وجود ندارد مطلع شوم؟
-1.10) چگونه ميتوانم زبان SQL را ياد بگيرم؟
-1.11) آيا PostgreSQL مشكل Y2K دارد يا خير؟
-1.12) چگونه ميتوانم به تيم برنامه نويس PostgreSQL ملحق شوم؟
-1.13) چگونه ميتوانم يك اشكال را به گروه برنامه نويس اعلام كنم؟
-1.14) وضعيت PostgreSQL در مقايسه با ساير DBMSها به چه صورت است؟
-1.15) من چگونه ميتوانم از نظر مالي به PostgreSQL كمك كنم؟
-
-سوالات مربوط به استفاده از پايگاه داده
-2.1) آيا هيچ درايور ODBC براي PostgreSQL وجود دارد؟
-2.2) چه ابزارهايي براي استفاده از PostgreSQL با صفحات وب وجود دارد؟
-2.3) آيا PostgreSQL يك واسط كاربري گرافيكي دارد؟
-2.4) با چه زبانهاي برنامهنويسي ميتوان با PostgreSQL ارتباط برقرار كرد؟
-
-سوالات مربوط به راهبري
-3.1) چگونه ميتوانم PostgreSQL را در شاخهاي غير از /usr/local/pgsql/ نصب كنم؟
-3.2) چرا موقعي كه من برنامه postmaster را اجرا مي كنم پيام Bad system call و
-يا core dump ميگيرم؟
-3.3) چرا موقعي كه من سعي ميكنم برنامه postmaster را اجرا كنم خطاي
-IpcMemoryCreate ميگيرم؟
-3.4) چرا موقعي كه من سعي ميكنم برنامه postmaster را اجرا كنم خطاي
-IpcSemaphoreCreate ميگيرم؟
-3.5) چگونه ميتوانم اتصالات ساير ماشينها را كنترل كنم؟
-3.6) براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد انجام دهم؟
-3.7) چه امكاناتي براي پيدا كردن اشكال وجود دارد؟
-3.8) چرا موقعي كه من ميخواهم به پايگاه داده وصل شوم پيام "Sorry, too many
-clients" ميگيرم؟
-3.9) در شاخه pgsql_tmp چه چيزي قرار دارد؟
-3.10) چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را dump و مجدداً
-restore كنم؟
-3.11) از چه سخت افزاري بايد استفاده كنم؟
-
-سوالات عملياتي
-4.1) تفاوت بين binary cursors و Normal cursors چيست؟
-4.2) من چگونه ميتوانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست SELECT
-بزنم؟
-4.3) من چگونه ميتوانم ليستي از جداول يا ساير چيزهايي كه در psql وجود دارد را
-ببينم؟
-4.4) چگونه يك ستون جدول را حذف ميكنيد؟ چگونه نوع داده آن را عوض كنيم؟
-4.5) حداكثر اندازه يك رديف، جدول و خود پايگاه داده چقدر است؟
-4.6) چقدر فضاي ديسك سخت براي ذخيره كردن دادههاي يك فايل متني مورد نياز است؟
-4.7) چگونه ميتوانم بفهمم كه چه كاربران، پايگاه داده، نمايه و جداولي در سيستم
-تعريف شده است؟
-4.8) چرا درخواستهاي من كند اجرا ميشوند يا چرا از نمايه ها استفاده نميكنند؟
-4.9) چگونه ميتوانم نحوه بررسي درخواست را توسط بهينهساز درخواستها مشاهده كنم؟
-4.10) نمايه R-tree چيست؟
-4.11) بهينه ساز تكويني درخواست چيست؟ (Genetic Query Optimizer)
-4.12) چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام دهم كه
-حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده كنم؟
-4.13) چگونه ميتوانم در يك درخواست تشخيص دهم كه يك فيلد NULL است؟
-4.14) تفاوت بين گونههاي مختلف character چيست؟
-4.15.1) چگونه ميتوانم يك فيلد سريال يا افزايشي ايجاد كنم؟
-4.15.2) چگونه ميتوانم مقدار يك درج سريالي را بدانم؟
-4.15.3) آیا توابع ()nextval و ()currval منجر به ایجاد شرایط race برای سایر
-کاربران می شوند؟
-4.15.4) چرا اعداد سریالی مربوط به تراکنشهای abort شده مجدداً استفاده نمی شود؟
-چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟
-4.16) OID و TID چه هستند؟
-4.17) معني بعضي از ترمها و كلماتي كه در PostgreSQL استفاده ميشود چيست؟
-4.18) چرا من خطاي "ERROR: Memory exhausted in AllocSetAlloc" ميگيرم؟
-4.19) از كجا تشخيص دهم كه ويرايش يا نسخه PostgreSQLيي كه من استفاده ميكنم چيست؟
-4.20) چرا در حین اجرای عملیات روی large-objectها خطای "invalid large obj
-descriptor"به وجود می آید؟
-4.21) چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار پيشفرض داشته
-باشد؟
-4.22) چرا زير درخواستهايي كه از IN استفاده ميكنند كند هستند؟
-4.23) چگونه ميتوانم يك الحاق خارجي (outer join) انجام دهم؟
-4.24) چگونه ميتوان درخواستهايي از چند پايگاه داده توليد كرد؟
-4.25) چگونه خروجي يك تابع ميتواند چند رديف يا ستون باشد؟
-4.26) در توابع PL/PgSQL چرا نميتوان با اطمينان جداول موقت را ايجاد يا حذف كرد؟
-4.27) چه گزينههايي براي تكرار (replication) وجود دارد؟
-4.28) چه گزينههايي براي رمزنگاري وجود دارد؟
-
-توسعه PostgreSQL
-5.1) من يك تابع نوشتهام. چگونه آن را در psql اجرا كنم؟ چرا با اجراي آن core
-dump ميگيرم؟
-5.2) چگونه ميتوانم در توليد نوعها و توابع جديد و جالب براي PostgreSQL همكاري
-و مشاركت داشته باشم.
-5.3) چگونه ميتوانم يك تابع به زبان C بنويسم كه خروجي آن يك tuple (چند تايي)
-باشد؟
-5.4) من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن تغيير ديده
-نميشود؟
-
-
-
-
-سوالات عمومي
-1.1) PostgreSQL چيست و چگونه آن را بايد تلفظ كرد؟
-PostgreSQL به صورت Post-Gres-Q-L تلفظ ميشود. يك فايل صوتي در آدرس
-http://www.postfresql.org/postgresql.mp3 براي كساني كه مايلند تلفظ صحيح را
-بشنوند وجود دارد.
-PostgreSQL از روي سيستم مديريت پايگاه داده POSTGRES توسعه داده شده است (هنوز هم
-بعضي مواقع براي سادگي به آن Postgres گفته ميشود) كه يك نمونه تحقيقاتي از پايگاه
-دادههاي نسل بعد است. PostgreSQL همان الگوي داده قوي و انواع داده را حفظ كرده
-است ولي زبان PostQuel را با يك زيرمجموعه پيشرفته از SQL جايگزين كرده است.
-PostgreSQL متن باز بوده و متن كامل آن در دسترس است.
-PostgreSQL توسط يك تيم برنامهنويس كه همگي در گروه پست الكترونيك برنامهنويسان
-PostgreSQL عضو هستند، انجام ميشود. هماهنگ كننده اصلي در حال حاضر Marc G.
-Fournier به آدرس scrappy@PostgreSQL.org ميباشد. (براي ديدن نحوه ملحق شدن به
-اين تيم قسمت 1.6 را ببينيد). اين تيم در حاضر مسئوليت تمام مسائل مربوط به
-برنامهنويسي PostgreSQL را بر عهده دارد. اين يك پروژه گروهي است و تحت كنترل هيچ
-شركتي نيست. براي اطلاعات بيشتر در مورد اين تيم به آدرس
-http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html مراجعه كنيد.
-اولين نسخه PostgreSQL توسط Andrew Yu and Jolly Chen به وجود آمد. افراد بسياري
-در توسعه و رفع اشكال و انتقال آن شركت كردهاند. متن اصلي Postgres كه PostgreSQL
-از روي آن نوشته شده است، توسط تعداد زيادي دانشجوي كارشناسي ارشدو دانشجوي
-كارشناسي و تيم برنامهنويسي كه تحت نظر پروفسور Michael Stonebrake در دانشگاه
-بركلي،كاليفرنيا كار ميكردهاند نوشته شده است.
-نام اصلي نرم افزار در دانشگاه بركلي Postgres بود. در سال 1995 بعد از اضافه شدن
-SQL نام آن به Postgres95 تغيير داده شد. در سال 1996 نام آن به PostgreSQL تغيير
-داده شد.
-1.2) قوانين كپي رايت در مورد PostgreSQL به چه صورت است؟
-PostgreSQL تحت قانون كپي رايت زير قرار دارد:
-PostgreSQL Data Base Management System
-Portions copyright (c) 1996-2004, PostgreSQL Global Development Group Portions
-Copyright (c) 1994-6 Regents of the University of California
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose, without fee, and without a written agreement is
-hereby granted, provided that the above copyright notice and this paragraph and
-the following two paragraphs appear in all copies.
-IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
-DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
-PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
-THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
-THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
-UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-قانون بالا ليسانس BSD كه يك ليسانس كلاسيك براي متنهاي باز است ميباشد. هيچ
-محدوديتي در مورد نحوه استفاده از متن در آن ديده نميشود. ما آن را دوست داريم و
-هيچ قصدي براي تغيير آن نداريم.
-1.3) PostgreSQL روي چه نوع يونيكسهايي اجرا ميشود؟
-در حالت كلي PostgreSQL روي هر پلتفرم (سكوي) سازگار با يونيكس اجرا ميشود. ليست
-پلتفرمهايي كه تاكنون PostgreSQL روي آنها نصب و تست شده است درقسمت دستورالعملهاي
-نصب آمده است.
-1.4) روي چه محيطهاي غير يونيكسي ميتوان آن را اجرا كرد؟
-Client
-ميتوان psql, كتابخانه libpq و ساير واسطها و برنامههاي كاربردي را طوري كامپيل
-كرد كه روي محيطهاي ويندوز نيز اجرا شوند. در اين حالت Client روي ويندوز اجرا
-ميشود و از طربق شبكه و پروتكل TCP/IP با يك سرور كه روي يك پلتفرم لينوكس در حال
-اجراست ارتباط برقرار ميكند.يك فايل win32.mak همراه با كدهاي PostgreSQL وجود
-دارد كه براي كامپيل كردن كتابخانه libpq و برنامه psql ميباشد. PostgreSQL
-همچنين امكان ارتباط به صورت ODBC را نيز دارد.
-Server
-با استفاده از Cygwin و كتابخانه Cygnus ميتوان پايگاه داده را روي ويندوز NT و
-يا Win2K اجرا كرد.براي ديدن اطلاعات بيشتر فايل pgsql/doc/FAQ_MSWIN را كه بهمراه
-توزبعهاي PostgreSQL آمده است ببينيد و يا اينكه به اين صفحه
-http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN مراجعه كنيد.
-در حال حاضر يك عمليات انتقال PostgreSQL به روي سكوهاي Win NT/2000/XP در جريان
-است. براي ديدن وضعيت اين پروژه به سايتهاي
-http://momjian.postgresql.org/main/writings/pgsql/win32.htm و
-http://techdocs.postgresql.org/guides/Windows مراجعه كنيد.
-همچنين يك عمليات انتقال بر روي Novell Netware 6 نيز در حال انجام است كه در سايت
-http://forge.novell.com ميتوانيد اطلاعات بيشتر را ببينيد.
-1.5) PostgreSQL را از كجا ميتوانم بگيرم؟
-PostgreSQL را از سايت اصلي آن ftp://ftp.PostgreSQL.org/pub ميتوانيد بگيريد.
-در صفحه اصلي سايت ليست ساير آدرسهايي كه ميتوانيد PostgreSQL را از آنها بگيريد
-آمده است.
-1.6) از كجا خدمات پشتيباني بگيرم؟
-گروه پستي اصلي pgsql-general@PostgreSQL.org ميباشد. اين گروه براي بحث در مورد
-موضوعات مختلف در زمينه PostgreSQL است. براي عضو شدن در اين گروه پستي يك نامه
-الكترونيكي به آدرس گروه با محتوياتی كه در ادامه آمده است ارسال كنيد. در قسمت
-Subject چيزي ننويسيد.
+s+w+a+l+a+t+y+ k+h+ a+i+l+b+ d+r+ m+w+r+d+ PostgreSQL p+r+s+y+d+h+ m+y+ snw+n+d +
+
+ t+a+r+y+x+ aMx+r+y+n+ a+c+l+a+hk a+y+n+ f+a+y+l+: 28 snh+r+یw+r+
+ 1383 h+g+r+ی snm+s+ی
+
+ n+gfh+d+a+r+n+d+h+ a+c+l+y+ f+a+y+l+ (z+b+a+n+ a+n+gfl+y+s+y+)d+r+
+ hka+l+ hka+ddr+ : Bruce Momjian pgman@candle.pha.pa.us
+
+ n+gfh+d+a+r+n+d+h+ f+a+y+l+ b+h+ z+b+a+n+ f+a+r+s+y+:
+ m.taghizadeh@imenafzar.net m+hkm+w+d+ t+q+y+z+a+d+h+
+ m+h+r+g+r+d+ی
+
+ aMx+r+y+n+ n+s+x+h+ a+y+n+ f+a+y+l+ r+a+ m+y+t+w+a+n+y+d+ a+z+ a+y+n+
+ aMd+r+s+ b+gfy+r+y+d+ http://www.PostgreSQL.org/docs/faqs/FAQ.html
+
+ s+w+a+l+a+t+y+ k+h+ d+r+ m+w+r+d+ y+k+
+ s+کw+ی(p+l+t+f+r+m+) x+a+c+ a+s+t+ d+r+ a+y+n+ aMd+r+s+
+ g+w+a+b+ d+a+d+h+ snd+h+ a+n+d+
+ http://www.PostgreSQL.org/docs/index.html
+ _________________________________________________________________
+
+ s+w+a+l+a+t+ e+m+w+m+y+
+
+ 1.1) PostgreSQL tcy+s+t+ w+ tcgfw+n+h+ b+a+y+d+ aMn+ r+a+ t+l+f+zH
+ k+r+d+?+
+ 1.2) q+a+n+w+n+ k+p+y+ r+a+y+t+ (hkq+w+q+ m+e+n+w+y+) d+r+ m+w+r+d+
+ PostgreSQL b+h+ tch+ c+w+r+t+ a+s+t+?+
+ 1.3) PostgreSQL r+w+y+ tch+ n+w+e+ y+w+n+y+k+s+h+a+y+y+ a+g+r+a+ m+y+
+ snw+d+?+
+ 1.4) r+w+y+ tch+ m+hky+tjh+a+y+ i+y+r+ y+w+n+y+k+s+y+ m+y+t+w+a+n+
+ aMn+ r+a+ a+g+r+a+ k+r+d+?+
+ 1.5) PostgreSQL r+a+ a+z+ k+g+a+ m+y+t+w+a+n+m+ b+gfy+r+m+?+
+ 1.6) a+z+ k+g+a+ x+d+m+a+t+ p+snt+y+b+a+n+y+ b+gfy+r+m+?+
+ 1.7) aMx+r+y+n+ n+s+x+h+ a+e+l+a+m+ snd+h+ tcy+s+t+?+
+ 1.8) tch+ m+s+t+n+d+a+t+ w+ r+a+h+n+m+a+yHy+h+a+y+y+ w+g+w+d+
+ d+a+r+n+d+?+
+ 1.9) tcgfw+n+h+ m+y+t+w+a+n+m+ a+z+a+snk+a+l+a+t+ snn+a+x+t+h+ snd+h+
+ w+ y+a+ a+m+k+a+n+a+t+y+ k+h+ d+r+ a+y+n+ p+a+y+gfa+h+ d+a+d+h+
+ w+g+w+d+ n+d+a+r+d+ m+tjl+e+ snw+m+?+
+ 1.10) tcgfw+n+h+ m+y+t+w+a+n+m+ z+b+a+n+ SQL r+a+ y+a+d+ b+gfy+r+m+?+
+ 1.11) aMy+a+ PostgreSQL m+snk+l+ Y2K d+a+r+d+ y+a+ x+y+r+?+
+ 1.12) tcgfw+n+h+ m+y+t+w+a+n+m+ b+h+ t+y+m+ b+r+n+a+m+h+ n+w+y+s+
+ PostgreSQL m+l+hkq+ snw+m+?+
+ 1.13) tcgfw+n+h+ m+y+t+w+a+n+m+ y+k+ a+snk+a+l+ r+a+ b+h+ gfr+w+h+
+ b+r+n+a+m+h+ n+w+y+s+ a+e+l+a+m+ k+n+m+?+
+ 1.14) w+dde+y+t+ PostgreSQL d+r+ m+q+a+y+s+h+ b+a+ s+a+y+r+ DBMSh+a+
+ b+h+ tch+ c+w+r+t+ a+s+t+?+
+ 1.15) m+n+ tcgfw+n+h+ m+y+t+w+a+n+m+ a+z+ n+zHr+ m+a+l+y+ b+h+
+ PostgreSQL k+m+k+ k+n+m+?+
+
+ s+w+a+l+a+t+ m+r+b+w+tj b+h+ a+s+t+f+a+d+h+ a+z+ p+a+y+gfa+h+ d+a+d+h+
+
+ 2.1) aMy+a+ h+y+tc d+r+a+y+w+r+ ODBC b+r+a+y+ PostgreSQL w+g+w+d+
+ d+a+r+d+?+
+ 2.2) tch+ a+b+z+a+r+h+a+y+y+ b+r+a+y+ a+s+t+f+a+d+h+ a+z+ PostgreSQL
+ b+a+ c+f+hka+t+ w+b+ w+g+w+d+ d+a+r+d+?+
+ 2.3) aMy+a+ PostgreSQL y+k+ w+a+s+tj k+a+r+b+r+y+ gfr+a+f+y+k+y+
+ d+a+r+d+?+
+ 2.4) b+a+ tch+ z+b+a+n+h+a+y+ b+r+n+a+m+h+n+w+y+s+y+ m+y+t+w+a+n+ b+a+
+ PostgreSQL a+r+t+b+a+tj b+r+q+r+a+r+ k+r+d+?+
+
+ s+w+a+l+a+t+ m+r+b+w+tj b+h+ r+a+h+b+r+y+
+
+ 3.1) tcgfw+n+h+ m+y+t+w+a+n+m+ PostgreSQL r+a+ d+r+ sna+x+h+a+y+
+ i+y+r+ a+z+ /usr/local/pgsql/ n+c+b+ k+n+m+?+
+ 3.2) tcr+a+ m+w+q+e+y+ k+h+ m+n+ b+r+n+a+m+h+ postmaster r+a+ a+g+r+a+
+ m+y+ k+n+m+ p+y+a+m+ Bad system call w+ y+a+ core dump m+y+gfy+r+m+?+
+ 3.3) tcr+a+ m+w+q+e+y+ k+h+ m+n+ s+e+y+ m+y+k+n+m+ b+r+n+a+m+h+
+ postmaster r+a+ a+g+r+a+ k+n+m+ x+tja+y+ IpcMemoryCreate m+y+
+ gfy+r+m+?+
+ 3.4) tcr+a+ m+w+q+e+y+ k+h+ m+n+ s+e+y+ m+y+k+n+m+ b+r+n+a+m+h+
+ postmaster r+a+ a+g+r+a+ k+n+m+ x+tja+y+ IpcSemaphoreCreate m+y+
+ gfy+r+m+?+
+ 3.5) tcgfw+n+h+ m+y+t+w+a+n+m+ a+t+c+a+l+a+t+ s+a+y+r+ m+a+sny+n+h+a+
+ r+a+ k+n+t+r+l+ k+n+m+?+
+ 3.6) b+r+a+y+ k+a+r+a+y+y+ b+a+l+a+t+r+ w+ b+h+t+r+ p+a+y+gfa+h+
+ d+a+d+h+ m+n+ tch+ t+n+zHy+m+a+t+y+ r+a+ b+a+y+d+ a+n+g+a+m+ d+h+m+?+
+ 3.7) tch+ a+m+k+a+n+a+t+y+ b+r+a+y+ p+y+d+a+ k+r+d+n+ a+snk+a+l+
+ w+g+w+d+ d+a+r+d+?+
+ 3.8) tcr+a+ m+w+q+e+y+ k+h+ m+n+ m+y+x+w+a+h+m+ b+h+ p+a+y+gfa+h+
+ d+a+d+h+ w+c+l+ snw+m+ p+y+a+m+ "Sorry, too many clients" m+y+
+ gfy+r+m+?+
+ 3.9) d+r+ sna+x+h+ pgsql_tmp tch+ tcy+z+y+ q+r+a+r+ d+a+r+d+?+
+ 3.10) tcr+a+ b+r+a+y+ b+h+ r+w+z+ k+r+d+n+ n+s+x+h+ p+a+y+gfa+h+
+ d+a+d+h+ m+n+ b+a+y+d+ k+l+ d+a+d+h+ h+a+ r+a+ dump w+ m+g+d+d+a+:+
+ restore k+n+m+?+
+ 3.11) a+z+ tch+ s+x+t+ a+f+z+a+r+y+ b+a+y+d+ a+s+t+f+a+d+h+ k+n+m+?+
+
+ s+w+a+l+a+t+ e+m+l+y+a+t+y+
+
+ 4.1) t+f+a+w+t+ b+y+n+ binary cursors w+ Normal cursors tcy+s+t+?+
+ 4.2) m+n+ tcgfw+n+h+ m+y+t+w+a+n+m+ f+q+tj r+w+y+ tcn+d+ r+d+y+f+
+ a+w+l+ y+a+ y+k+ r+d+y+f+ t+c+a+d+f+y+ d+r+x+w+a+s+t+ SELECT
+ b+z+n+m+?+
+ 4.3) m+n+ tcgfw+n+h+ m+y+t+w+a+n+m+ l+y+s+t+y+ a+z+ g+d+a+w+l+ y+a+
+ s+a+y+r+ tcy+z+h+a+y+y+ k+h+ d+r+ psql w+g+w+d+ d+a+r+d+ r+a+
+ b+b+y+n+m+?+
+ 4.4) tcgfw+n+h+ y+k+ s+t+w+n+ g+d+w+l+ r+a+ hkdkf+ m+y+k+n+y+d+?+
+ tcgfw+n+h+ n+w+e+ d+a+d+h+ aMn+ r+a+ e+w+dd k+n+y+m+?+
+ 4.5) hkd+a+k+tkr+ a+n+d+a+z+h+ y+k+ r+d+y+f+,+ g+d+w+l+ w+ x+w+d+
+ p+a+y+gfa+h+ d+a+d+h+ tcq+d+r+ a+s+t+?+
+ 4.6) tcq+d+r+ f+dda+y+ d+y+s+k+ s+x+t+ b+r+a+y+ dkx+y+r+h+ k+r+d+n+
+ d+a+d+h+h+a+y+ y+k+ f+a+y+l+ m+t+n+y+ m+w+r+d+ n+y+a+z+ a+s+t+?+
+ 4.7) tcgfw+n+h+ m+y+t+w+a+n+m+ b+f+h+m+m+ k+h+ tch+ k+a+r+b+r+a+n+,+
+ p+a+y+gfa+h+ d+a+d+h+,+ n+m+a+y+h+ w+ g+d+a+w+l+y+ d+r+ s+y+s+t+m+
+ t+e+r+y+f+ snd+h+ a+s+t+?+
+ 4.8) tcr+a+ d+r+x+w+a+s+t+h+a+y+ m+n+ k+n+d+ a+g+r+a+ m+y+snw+n+d+
+ y+a+ tcr+a+ a+z+ n+m+a+y+h+ h+a+ a+s+t+f+a+d+h+ n+m+y+k+n+n+d+?+
+ 4.9) tcgfw+n+h+ m+y+t+w+a+n+m+ n+hkw+h+ b+r+r+s+y+ d+r+x+w+a+s+t+ r+a+
+ t+w+s+tj b+h+y+n+h+s+a+z+ d+r+x+w+a+s+t+h+a+ m+sna+h+d+h+ k+n+m+?+
+ 4.10) n+m+a+y+h+ R-tree tcy+s+t+?+
+ 4.11) b+h+y+n+h+ s+a+z+ t+k+w+y+n+y+ d+r+x+w+a+s+t+ tcy+s+t+?+
+ (Genetic Query Optimizer)
+ 4.12) tcgfw+n+h+ a+z+ e+b+a+r+a+t+ m+n+zHm+ b+r+a+y+ g+s+t+g+w+
+ a+s+t+f+a+d+h+ k+n+m+?+ tcgfw+n+h+ g+s+t+g+w+y+y+ a+n+g+a+m+ d+h+m+
+ k+h+ hks+a+s+ b+h+ m+t+n+ n+b+a+snd+?+ tcgfw+n+h+ b+r+a+y+ y+k+
+ g+s+t+g+w+y+ i+y+r+ hks+a+s+ b+h+ m+t+n+ a+z+ n+m+a+y+h+
+ a+s+t+f+a+d+h+ k+n+m+?+
+ 4.13) tcgfw+n+h+ m+y+t+w+a+n+m+ d+r+ y+k+ d+r+x+w+a+s+t+ t+snx+y+c+
+ d+h+m+ k+h+ y+k+ f+y+l+d+ NULL a+s+t+?+
+ 4.14) t+f+a+w+t+ b+y+n+ gfw+n+h+h+a+y+ m+x+t+l+f+ character tcy+s+t+?+
+ 4.15.1) tcgfw+n+h+ m+y+t+w+a+n+m+ y+k+ f+y+l+d+ s+r+y+a+l+ y+a+
+ a+f+z+a+y+sny+ a+y+g+a+d+ k+n+m+?+
+ 4.15.2) tcgfw+n+h+ m+y+t+w+a+n+m+ m+q+d+a+r+ y+k+ d+r+g+ s+r+y+a+l+y+
+ r+a+ b+d+a+n+m+?+
+ 4.15.3) aMیa+ t+w+a+b+e+ ()nextval w+ ()currval m+n+g+r+ b+h+
+ a+یg+a+d+ snr+a+یtj race b+r+a+ی s+a+یr+
+ کa+r+b+r+a+n+ m+ی snw+n+d+?+
+ 4.15.4) tcr+a+ a+e+d+a+d+ s+r+یa+l+ی m+r+b+w+tj b+h+
+ t+r+a+کn+snh+a+ی abort snd+h+ m+g+d+d+a+:+ a+s+t+f+a+d+h+
+ n+m+ی snw+d+?+ tcr+a+ b+یn+ a+e+d+a+d+
+ s+r+یa+l+ی یک f+a+c+l+h+ x+a+l+ی
+ a+یg+a+d+ m+ی snw+d+?+
+ 4.16) OID w+ TID tch+ h+s+t+n+d+?+
+ 4.17) m+e+n+y+ b+e+ddy+ a+z+ t+r+m+h+a+ w+ k+l+m+a+t+y+ k+h+ d+r+
+ PostgreSQL a+s+t+f+a+d+h+ m+y+snw+d+ tcy+s+t+?+
+ 4.18) tcr+a+ m+n+ x+tja+y+ "ERROR: Memory exhausted in AllocSetAlloc"
+ m+y+gfy+r+m+?+
+ 4.19) a+z+ k+g+a+ t+snx+y+c+ d+h+m+ k+h+ w+y+r+a+y+sn y+a+ n+s+x+h+
+ PostgreSQLy+y+ k+h+ m+n+ a+s+t+f+a+d+h+ m+y+k+n+m+ tcy+s+t+?+
+ 4.20) tcr+a+ d+r+ hkیn+ a+g+r+a+ی e+m+l+یa+t+
+ r+w+ی large-objecth+a+ x+tja+ی "invalid large obj
+ descriptor"b+h+ w+g+w+d+ m+ی aMیd+?+
+ 4.21) tcgfw+n+h+ y+k+ s+t+w+n+ a+y+g+a+d+ k+n+m+ k+h+ m+q+d+a+r+
+ z+m+a+n+ g+a+r+y+ r+a+ b+h+ e+n+w+a+n+ m+q+d+a+r+ p+y+snf+r+dd
+ d+a+snt+h+ b+a+snd+?+
+ 4.22) tcr+a+ z+y+r+ d+r+x+w+a+s+t+h+a+y+y+ k+h+ a+z+ IN a+s+t+f+a+d+h+
+ m+y+k+n+n+d+ k+n+d+ h+s+t+n+d+?+
+ 4.23) tcgfw+n+h+ m+y+t+w+a+n+m+ y+k+ a+l+hka+q+ x+a+r+g+y+ (outer
+ join) a+n+g+a+m+ d+h+m+?+
+ 4.24) tcgfw+n+h+ m+y+t+w+a+n+ d+r+x+w+a+s+t+h+a+y+y+ a+z+ tcn+d+
+ p+a+y+gfa+h+ d+a+d+h+ t+w+l+y+d+ k+r+d+?+
+ 4.25) tcgfw+n+h+ x+r+w+g+y+ y+k+ t+a+b+e+ m+y+t+w+a+n+d+ tcn+d+
+ r+d+y+f+ y+a+ s+t+w+n+ b+a+snd+?+
+ 4.26) d+r+ t+w+a+b+e+ PL/PgSQL tcr+a+ n+m+y+t+w+a+n+ b+a+
+ a+tjm+y+n+a+n+ g+d+a+w+l+ m+w+q+t+ r+a+ a+y+g+a+d+ y+a+ hkdkf+
+ k+r+d+?+
+ 4.27) tch+ gfz+y+n+h+h+a+y+y+ b+r+a+y+ t+k+r+a+r+ (replication)
+ w+g+w+d+ d+a+r+d+?+
+ 4.28) tch+ gfz+y+n+h+h+a+y+y+ b+r+a+y+ r+m+z+n+gfa+r+y+ w+g+w+d+
+ d+a+r+d+?+
+
+ t+w+s+e+h+ PostgreSQL
+
+ 5.1) m+n+ y+k+ t+a+b+e+ n+w+snt+h+a+m+. tcgfw+n+h+ aMn+ r+a+ d+r+ psql
+ a+g+r+a+ k+n+m+?+ tcr+a+ b+a+ a+g+r+a+y+ aMn+ core dump m+y+gfy+r+m+?+
+ 5.2) tcgfw+n+h+ m+y+t+w+a+n+m+ d+r+ t+w+l+y+d+ n+w+e+h+a+ w+
+ t+w+a+b+e+ g+d+y+d+ w+ g+a+l+b+ b+r+a+y+ PostgreSQL h+m+k+a+r+y+ w+
+ m+sna+r+k+t+ d+a+snt+h+ b+a+snm+.
+ 5.3) tcgfw+n+h+ m+y+t+w+a+n+m+ y+k+ t+a+b+e+ b+h+ z+b+a+n+ C
+ b+n+w+y+s+m+ k+h+ x+r+w+g+y+ aMn+ y+k+ tuple (tcn+d+ t+a+y+y+)
+ b+a+snd+?+
+ 5.4) m+n+ y+k+ f+a+y+l+ m+n+b+e+ r+a+ e+w+dd k+r+d+h+ a+m+ tcr+a+ d+r+
+ e+m+l+y+a+t+ k+a+m+p+y+l+ m+g+d+d+ aMn+ t+i+y+y+r+ d+y+d+h+ n+m+y+
+ snw+d+?+
+ _________________________________________________________________
+
+ s+w+a+l+a+t+ e+m+w+m+y+
+
+ 1.1) PostgreSQL tcy+s+t+ w+ tcgfw+n+h+ aMn+ r+a+ b+a+y+d+ t+l+f+zH k+r+d+?+
+
+ PostgreSQL b+h+ c+w+r+t+ Post-Gres-Q-L t+l+f+zH m+y+snw+d+. y+k+
+ f+a+y+l+ c+w+t+y+ d+r+ aMd+r+s+
+ http://www.postfresql.org/postgresql.mp3 b+r+a+y+ k+s+a+n+y+ k+h+
+ m+a+y+l+n+d+ t+l+f+zH c+hky+hk r+a+ b+snn+w+n+d+ w+g+w+d+ d+a+r+d+.
+
+ PostgreSQL a+z+ r+w+y+ s+y+s+t+m+ m+d+y+r+y+t+ p+a+y+gfa+h+ d+a+d+h+
+ POSTGRES t+w+s+e+h+ d+a+d+h+ snd+h+ a+s+t+ (h+n+w+z+ h+m+ b+e+ddy+
+ m+w+a+q+e+ b+r+a+y+ s+a+d+gfy+ b+h+ aMn+ Postgres gff+t+h+ m+y+snw+d+)
+ k+h+ y+k+ n+m+w+n+h+ t+hkq+y+q+a+t+y+ a+z+ p+a+y+gfa+h+ d+a+d+h+h+a+y+
+ n+s+l+ b+e+d+ a+s+t+. PostgreSQL h+m+a+n+ a+l+gfw+y+ d+a+d+h+ q+w+y+
+ w+ a+n+w+a+e+ d+a+d+h+ r+a+ hkf+zH k+r+d+h+ a+s+t+ w+l+y+ z+b+a+n+
+ PostQuel r+a+ b+a+ y+k+ z+y+r+m+g+m+w+e+h+ p+y+snr+f+t+h+ a+z+ SQL
+ g+a+y+gfz+y+n+ k+r+d+h+ a+s+t+. PostgreSQL m+t+n+ b+a+z+ b+w+d+h+ w+
+ m+t+n+ k+a+m+l+ aMn+ d+r+ d+s+t+r+s+ a+s+t+.
+
+ PostgreSQL t+w+s+tj y+k+ t+y+m+ b+r+n+a+m+h+n+w+y+s+ k+h+ h+m+gfy+
+ d+r+ gfr+w+h+ p+s+t+ a+l+k+t+r+w+n+y+k+ b+r+n+a+m+h+n+w+y+s+a+n+
+ PostgreSQL e+ddw+ h+s+t+n+d+,+ a+n+g+a+m+ m+y+snw+d+. h+m+a+h+n+gf
+ k+n+n+d+h+ a+c+l+y+ d+r+ hka+l+ hka+ddr+ Marc G. Fournier b+h+
+ aMd+r+s+ scrappy@PostgreSQL.org m+y+b+a+snd+. (b+r+a+y+ d+y+d+n+
+ n+hkw+h+ m+l+hkq+ snd+n+ b+h+ a+y+n+ t+y+m+ q+s+m+t+ 1.6 r+a+
+ b+b+y+n+y+d+). a+y+n+ t+y+m+ d+r+ hka+ddr+ m+s+yHw+l+y+t+ t+m+a+m+
+ m+s+a+yHl+ m+r+b+w+tj b+h+ b+r+n+a+m+h+n+w+y+s+y+ PostgreSQL r+a+ b+r+
+ e+h+d+h+ d+a+r+d+. a+y+n+ y+k+ p+r+w+zjh+ gfr+w+h+y+ a+s+t+ w+ t+hkt+
+ k+n+t+r+l+ h+y+tc snr+k+t+y+ n+y+s+t+. b+r+a+y+ a+tjl+a+e+a+t+
+ b+y+snt+r+ d+r+ m+w+r+d+ a+y+n+ t+y+m+ b+h+ aMd+r+s+
+ http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html m+r+a+g+e+h+
+ k+n+y+d+.
+
+ a+w+l+y+n+ n+s+x+h+ PostgreSQL t+w+s+tj Andrew Yu and Jolly Chen b+h+
+ w+g+w+d+ aMm+d+. a+f+r+a+d+ b+s+y+a+r+y+ d+r+ t+w+s+e+h+ w+ r+f+e+
+ a+snk+a+l+ w+ a+n+t+q+a+l+ aMn+ snr+k+t+ k+r+d+h+a+n+d+. m+t+n+
+ a+c+l+y+ Postgres k+h+ PostgreSQL a+z+ r+w+y+ aMn+ n+w+snt+h+ snd+h+
+ a+s+t+,+ t+w+s+tj t+e+d+a+d+ z+y+a+d+y+ d+a+n+sng+w+y+
+ k+a+r+snn+a+s+y+ a+r+snd+w+ d+a+n+sng+w+y+ k+a+r+snn+a+s+y+ w+ t+y+m+
+ b+r+n+a+m+h+n+w+y+s+y+ k+h+ t+hkt+ n+zHr+ p+r+w+f+s+w+r+ Michael
+ Stonebrake d+r+ d+a+n+sngfa+h+ b+r+k+l+y+,+k+a+l+y+f+r+n+y+a+ k+a+r+
+ m+y+k+r+d+h+a+n+d+ n+w+snt+h+ snd+h+ a+s+t+.
+
+ n+a+m+ a+c+l+y+ n+r+m+ a+f+z+a+r+ d+r+ d+a+n+sngfa+h+ b+r+k+l+y+
+ Postgres b+w+d+. d+r+ s+a+l+ 1995 b+e+d+ a+z+ a+dda+f+h+ snd+n+ SQL
+ n+a+m+ aMn+ b+h+ Postgres95 t+i+y+y+r+ d+a+d+h+ snd+. d+r+ s+a+l+ 1996
+ n+a+m+ aMn+ b+h+ PostgreSQL t+i+y+y+r+ d+a+d+h+ snd+.
+
+ 1.2) q+w+a+n+y+n+ k+p+y+ r+a+y+t+ d+r+ m+w+r+d+ PostgreSQL b+h+ tch+
+ c+w+r+t+ a+s+t+?+
+
+ PostgreSQL t+hkt+ q+a+n+w+n+ k+p+y+ r+a+y+t+ z+y+r+ q+r+a+r+ d+a+r+d+:
+
+ PostgreSQL Data Base Management System
+
+ Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
+ Portions Copyright (c) 1994-6 Regents of the University of California
+
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose, without fee, and without a written
+ agreement is hereby granted, provided that the above copyright notice
+ and this paragraph and the following two paragraphs appear in all
+ copies.
+
+ IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
+ FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+ INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
+ ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+ PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+ CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+ UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+ q+a+n+w+n+ b+a+l+a+ l+y+s+a+n+s+ BSD k+h+ y+k+ l+y+s+a+n+s+
+ k+l+a+s+y+k+ b+r+a+y+ m+t+n+h+a+y+ b+a+z+ a+s+t+ m+y+b+a+snd+. h+y+tc
+ m+hkd+w+d+y+t+y+ d+r+ m+w+r+d+ n+hkw+h+ a+s+t+f+a+d+h+ a+z+ m+t+n+
+ d+r+ aMn+ d+y+d+h+ n+m+y+snw+d+. m+a+ aMn+ r+a+ d+w+s+t+ d+a+r+y+m+ w+
+ h+y+tc q+c+d+y+ b+r+a+y+ t+i+y+y+r+ aMn+ n+d+a+r+y+m+.
+
+ 1.3) PostgreSQL r+w+y+ tch+ n+w+e+ y+w+n+y+k+s+h+a+y+y+ a+g+r+a+ m+y+
+ snw+d+?+
+
+ d+r+ hka+l+t+ k+l+y+ PostgreSQL r+w+y+ h+r+ p+l+t+f+r+m+ (s+k+w+y+)
+ s+a+z+gfa+r+ b+a+ y+w+n+y+k+s+ a+g+r+a+ m+y+snw+d+. l+y+s+t+
+ p+l+t+f+r+m+h+a+y+y+ k+h+ t+a+k+n+w+n+ PostgreSQL r+w+y+ aMn+h+a+
+ n+c+b+ w+ t+s+t+ snd+h+ a+s+t+ d+r+q+s+m+t+ d+s+t+w+r+a+l+e+m+l+h+a+y+
+ n+c+b+ aMm+d+h+ a+s+t+.
+
+ 1.4) r+w+y+ tch+ m+hky+tjh+a+y+ i+y+r+ y+w+n+y+k+s+y+ m+y+t+w+a+n+ aMn+
+ r+a+ a+g+r+a+ k+r+d+?+
+
+ Client
+
+ m+y+t+w+a+n+ psql, k+t+a+b+x+a+n+h+ libpq w+ s+a+y+r+ w+a+s+tjh+a+ w+
+ b+r+n+a+m+h+h+a+y+ k+a+r+b+r+d+y+ r+a+ tjw+r+y+ k+a+m+p+y+l+ k+r+d+
+ k+h+ r+w+y+ m+hky+tjh+a+y+ w+y+n+d+w+z+ n+y+z+ a+g+r+a+ snw+n+d+. d+r+
+ a+y+n+ hka+l+t+ Client r+w+y+ w+y+n+d+w+z+ a+g+r+a+ m+y+snw+d+ w+ a+z+
+ tjr+b+q+ snb+k+h+ w+ p+r+w+t+k+l+ TCP/IP b+a+ y+k+ s+r+w+r+ k+h+
+ r+w+y+ y+k+ p+l+t+f+r+m+ l+y+n+w+k+s+ d+r+ hka+l+ a+g+r+a+s+t+
+ a+r+t+b+a+tj b+r+q+r+a+r+ m+y+k+n+d+.y+k+ f+a+y+l+ win32.mak
+ h+m+r+a+h+ b+a+ k+d+h+a+y+ PostgreSQL w+g+w+d+ d+a+r+d+ k+h+ b+r+a+y+
+ k+a+m+p+y+l+ k+r+d+n+ k+t+a+b+x+a+n+h+ libpq w+ b+r+n+a+m+h+ psql m+y+
+ b+a+snd+. PostgreSQL h+m+tcn+y+n+ a+m+k+a+n+ a+r+t+b+a+tj b+h+
+ c+w+r+t+ ODBC r+a+ n+y+z+ d+a+r+d+.
+
+ Server
+
+ b+a+ a+s+t+f+a+d+h+ a+z+ Cygwin w+ k+t+a+b+x+a+n+h+ Cygnus m+y+
+ t+w+a+n+ p+a+y+gfa+h+ d+a+d+h+ r+a+ r+w+y+ w+y+n+d+w+z+ NT w+ y+a+
+ Win2K a+g+r+a+ k+r+d+.b+r+a+y+ d+y+d+n+ a+tjl+a+e+a+t+ b+y+snt+r+
+ f+a+y+l+ pgsql/doc/FAQ_MSWIN r+a+ k+h+ b+h+m+r+a+h+ t+w+z+b+e+h+a+y+
+ PostgreSQL aMm+d+h+ a+s+t+ b+b+y+n+y+d+ w+ y+a+ a+y+n+k+h+ b+h+ a+y+n+
+ c+f+hkh+ http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN
+ m+r+a+g+e+h+ k+n+y+d+.
+
+ d+r+ hka+l+ hka+ddr+ y+k+ e+m+l+y+a+t+ a+n+t+q+a+l+ PostgreSQL b+h+
+ r+w+y+ s+k+w+h+a+y+ Win NT/2000/XP d+r+ g+r+y+a+n+ a+s+t+. b+r+a+y+
+ d+y+d+n+ w+dde+y+t+ a+y+n+ p+r+w+zjh+ b+h+ s+a+y+t+h+a+y+
+ http://momjian.postgresql.org/main/writings/pgsql/win32.htm w+
+ http://techdocs.postgresql.org/guides/Windows m+r+a+g+e+h+ k+n+y+d+.
+
+ h+m+tcn+y+n+ y+k+ e+m+l+y+a+t+ a+n+t+q+a+l+ b+r+ r+w+y+ Novell Netware
+ 6 n+y+z+ d+r+ hka+l+ a+n+g+a+m+ a+s+t+ k+h+ d+r+ s+a+y+t+
+ http://forge.novell.com m+y+t+w+a+n+y+d+ a+tjl+a+e+a+t+ b+y+snt+r+
+ r+a+ b+b+y+n+y+d+.
+
+ 1.5) PostgreSQL r+a+ a+z+ k+g+a+ m+y+t+w+a+n+m+ b+gfy+r+m+?+
+
+ PostgreSQL r+a+ a+z+ s+a+y+t+ a+c+l+y+ aMn+
+ ftp://ftp.PostgreSQL.org/pub m+y+t+w+a+n+y+d+ b+gfy+r+y+d+. d+r+
+ c+f+hkh+ a+c+l+y+ s+a+y+t+ l+y+s+t+ s+a+y+r+ aMd+r+s+h+a+y+y+ k+h+
+ m+y+t+w+a+n+y+d+ PostgreSQL r+a+ a+z+ aMn+h+a+ b+gfy+r+y+d+ aMm+d+h+
+ a+s+t+.
+
+ 1.6) a+z+ k+g+a+ x+d+m+a+t+ p+snt+y+b+a+n+y+ b+gfy+r+m+?+
+
+ gfr+w+h+ p+s+t+y+ a+c+l+y+ pgsql-general@PostgreSQL.org m+y+b+a+snd+.
+ a+y+n+ gfr+w+h+ b+r+a+y+ b+hktk d+r+ m+w+r+d+ m+w+ddw+e+a+t+
+ m+x+t+l+f+ d+r+ z+m+y+n+h+ PostgreSQL a+s+t+. b+r+a+y+ e+ddw+ snd+n+
+ d+r+ a+y+n+ gfr+w+h+ p+s+t+y+ y+k+ n+a+m+h+ a+l+k+t+r+w+n+y+k+y+ b+h+
+ aMd+r+s+ gfr+w+h+ b+a+ m+hkt+w+y+a+t+ی k+h+ d+r+ a+d+a+m+h+
+ aMm+d+h+ a+s+t+ a+r+s+a+l+ k+n+y+d+. d+r+ q+s+m+t+ Subject tcy+z+y+
+ n+n+w+y+s+y+d+.
+
subscribe
end
-آدرس گروه: pgsql-general-request@PostgreSQL.org
-همچنين يك گروه پستي هم به صورت ارسال چكيده پيامها وجود دارد. براي عضو شدن در اين
-گروه يك نامه با محتويات زير به این آدرس ارسال كنيد.
-pgsql-general-digest-request@PostgreSQL.org
+
+ aMd+r+s+ gfr+w+h+: pgsql-general-request@PostgreSQL.org
+
+ h+m+tcn+y+n+ y+k+ gfr+w+h+ p+s+t+y+ h+m+ b+h+ c+w+r+t+ a+r+s+a+l+
+ tck+y+d+h+ p+y+a+m+h+a+ w+g+w+d+ d+a+r+d+. b+r+a+y+ e+ddw+ snd+n+ d+r+
+ a+y+n+ gfr+w+h+ y+k+ n+a+m+h+ b+a+ m+hkt+w+y+a+t+ z+y+r+ b+h+
+ a+یn+ aMd+r+s+ a+r+s+a+l+ k+n+y+d+.
+ pgsql-general-digest-request@PostgreSQL.org
+
subscribe
end
-در اين گروه هر موقع حجم نامهها به 30 كيلوبايت رسيد براي تمام اعضاء ارسال
-ميشود.
-گروه پستي بررسي اِشكالات هم وجود دارد. براي عضو شدن در اين گروه يك نامه با
-محتويات زير به pgsql-bugs-request@PostgreSQL.org ارسال كنيد.
+
+ d+r+ a+y+n+ gfr+w+h+ h+r+ m+w+q+e+ hkg+m+ n+a+m+h+h+a+ b+h+ 30
+ k+y+l+w+b+a+y+t+ r+s+y+d+ b+r+a+y+ t+m+a+m+ a+e+dda+H' a+r+s+a+l+ m+y+
+ snw+d+.
+
+ gfr+w+h+ p+s+t+y+ b+r+r+s+y+ a+1+snk+a+l+a+t+ h+m+ w+g+w+d+ d+a+r+d+.
+ b+r+a+y+ e+ddw+ snd+n+ d+r+ a+y+n+ gfr+w+h+ y+k+ n+a+m+h+ b+a+
+ m+hkt+w+y+a+t+ z+y+r+ b+h+ pgsql-bugs-request@PostgreSQL.org
+ a+r+s+a+l+ k+n+y+d+.
+
subscribe
end
-گروه پستي مخصوص توسعه دهندگان (برنامهنويسان) نيز وجوددارد. براي عضويت در اين
-گروه يك نامه به آدرس زير با محتويات مشخص شده ارسال كنيد.
-pgsql-hackers-request@PostgreSQL.org
+
+ gfr+w+h+ p+s+t+y+ m+x+c+w+c+ t+w+s+e+h+ d+h+n+d+gfa+n+ (b+r+n+a+m+h+
+ n+w+y+s+a+n+) n+y+z+ w+g+w+d+d+a+r+d+. b+r+a+y+ e+ddw+y+t+ d+r+ a+y+n+
+ gfr+w+h+ y+k+ n+a+m+h+ b+h+ aMd+r+s+ z+y+r+ b+a+ m+hkt+w+y+a+t+
+ m+snx+c+ snd+h+ a+r+s+a+l+ k+n+y+d+.
+ pgsql-hackers-request@PostgreSQL.org
+
subscribe
end
-گروههاي پستي ديگري نيز در زمينه PostgreSQL وجود دارد كه ميتوانيد در سايت
-http://www.postgresql.org ببينيد.
-همچنين يك كانال IRC روي Freenode و EFNet بنام PostgreSQL# وجود دارد. شما
-ميتوانيد از فرمان يونيكسي irc -c '#PostgreSQL' "$USER" irc.phoenix.net. يا irc
--c '#PostgreSQL' "$USER" irc.freenode.net استفاده كنيد.
-ليست شركتهايي كه از طريق آنها ميتوانيد خدمات پشتيباني تجاري در زمينه PostgreSQL
-دريافت كنيد در اين آدرس http://techdocs.postgresql.org/companies.php موجود است.
-1.7) آخرين نسخه اعلام شده چيست؟
-آخرين نسخه PostgreSQL كه وجود دارد 7.4.3 است.
-هدف ما آن است كه هر 6 ماه تا 8 ماه يك نسخه جديد ارائه شود.
-1.8) چه مستندات و راهنمائيهايي وجود دارند؟
-چندين كتابچه و صفحات راهنما و مثالهاي كوچك همراه با متن اصلي PostgreSQL در شاخه
-doc وجود دارد. براي ديدن صفحات راهنما ميتوانيد به سايت
-http://www.PostgreSQL.org/docs نيز مراجعه نماييد.
-دو كتاب در زمينه PostgreSQL در آدرسهاي
-http://www.PostgreSQL.org/docs/awbook.htm و http://www.commandprompt.com/ppbook
-وجود دارد. ليستي از كتابهايي كه قابل خريد است در آدرس
-http://techdocs.PostgreSQL.org/techdocs/bookreviews.php وجود دارد. همچنين ليستي
-از مقالات فني در مورد PostgreSQL در آدرس http://techdocs.PostgreSQL.org وجود
-دارد.
-برنامه psql يك دستور d\ دارد كه اطلاعاتي در مورد انواع دادههاي قابل تعريف و
-عملگرها و توابع و ... به ما نشان ميدهد. در سايت اصلي ما اطلاعات بيشتري را
-ميتوانيد پيدا كنيد.
-1.9) چگونه ميتوانم ازاشكالات شناخته شده و يا امكاناتي كه در اين پايگاه داده
-وجود ندارد مطلع شوم؟
-PostgreSQL يك زير مجموعه پيشرفته از SQL-92 را پشتيباني ميكند. در ليست TODO
-اِشكالات شناخته شده يا امكاناتي كه وجود ندارد و يا برنامههاي آينده آمده است.
-1.10) چگونه ميتوانم زبان SQL را ياد بگيرم؟
-كتاب PostgreSQL در آدرس SQL http://www.PostgreSQL.org/docs/awbook.html را آموزش
-ميدهد. همچنين يك كتاب در آدرس http://www.commandprompt.com/ppbook وجود دارد. يك
-راهنماي خيلي خوب هم در سايتهاي
-http://www.intermedia.net/support/sql/sqltut.shtm و
-http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM و
-http://sqlcourse.com در مورد SQL وجود دارد.
-كتاب ديگري كه ميتوان براي يادگيري SQL از آن استفاده كرد كتاب "SQL را در 21 روز
-ياد بگيريد، ويرايش دوم" در سايت http://members.tripod.com/er4ebus/sql/index.htm
-ميباشد.
-تعداد زيادي از كاربران كتاب The Practical SQL را ترجيح ميدهند. كتاب ديگر The
-Complete Refrence SQL انتشارات McGraw-Hill ميباشد.
-1.11) آيا PostgreSQL مشكل Y2K دارد يا خير؟
-خير،PostgreSQL با تاريخهاي قبل و بعد از 2000 مشكلي ندارد.
-1.12) چگونه ميتوانم به تيم برنامه نويس PostgreSQL ملحق شوم؟
-ابتدا،آخرين سورس را دونلود كرده و مستندات مربوط به برنامهنويسي PostgreSQL را
-در سايت مطالعه كنيد. سپس به گروههاي پستي pgsql-patches و pgsql-hackers عضو
-شويد. در مرحله آخر وصلههاي با كيفيت بالا را به pgsql-patches ارسال كنيد.
-تعداد زيادي از برنامهنويسان وجود دارند كه امتياز انجام تغييرات در cvs را
-دارند. هر كدام از آنها تعداد زيادي وصله با كيفيت بالا به گروه ارسال كردهاند
-كه اعتماد گردانندگان PostgreSQL را به دست آوردهاند.
-1.13) چگونه ميتوانم يك اِشكال را به گروه برنامه نويس اعلام كنم؟
-لطفاً صفحه مربوط به اِشكالات PostgreSQL را در سايت
-http://www.PostgreSQL.org/bugs/bugs.php مشاهده كنيد. در اين سايت نحوه گزارش و
-ارسال يك اشكال توضيح داده شده است.
- همچنين براي ديدن نسخههاي جديدتر PostgreSQL و يا وجود يك وصله جديد از سايت
-ftp://ftp.PostgreSQL.org/pub بازديد كنيد.
-1.14) وضعيت PostgreSQL در مقايسه با ساير DBMSها به چه صورت است؟
-راههاي مختلفي براي اندازهگيري و مقايسه نرمافزارها وجود دارد كه عبارتند از
-امكانات، كارايي، قابليت اعتماد، پشتيباني و قيمت
- امكانات
- PostgreSQL بيشتر امكانات موجود در سيستمهاي پايگاه داده تجاري بزرگ نظير
- transactions, subselets, triggers, views, foreign key referential integrity
- و sophisticated locking را دارد. در PostgreSQL امكاناتي وجود دارد كه
- پايگاههاي داده ديگر آن را ندارند نظير user-defined typesو Inheritanceو
- rulesو multi-version concurrency control
-
- كارايي
- كارايي PostgreSQL در حد بقيه سيستمهاي تجاري و متن باز است. در بعضي
- موارد سريعتر و در بعضي موارد از آنها كندتر است. در مقايسه با MySQL براي
- كاربران بيشتر و درخواستهاي پيچيده و بار زياد خواندن/نوشتن سريعتر است. در
- درخواستهاي ساده SELECT از MySQL كندتر است. البته MySQL خيلي از امكانات
- PostgreSQL كه در بالا به آن اشاره شد را ندارد. هدف اصلي ما امكانات و قابليت
- اعتماد بالاست در ضمن آنكه تلاش ميكنيم تا كارايي آن نيز بهبود يابد. در آدرس
- http://openacs.org/philosophy/why-not-mysql.html يك مقايسه جالب بين MySQL و
- PostgreSQL وجود دارد. از طرف ديگر MySQL يك شركت است كه محصول خود را به صورت
- متن باز ارائه ميكند ولي براي نرمافزار غير متن باز خود احتياج به ليسانس تجاري
- دارد بر خلاف PostgreSQL كه يك گروه كاملاً متن باز هستند.
-
- قابليت اطمينان
- ما فكر ميكنيم كه يك سيستم پايگاه دادهاي كه مطمئن نباشد ارزشي ندارد. ما
- تمام تلاشمان را براي ارائه كدهاي پايداري كه به خوبي تست شده باشند و كمترين
- اِشكالات را داشته باشند ميكنيم. هر نسخه جديدي كه ارائه ميشود حداقل يك ماه
- را در مرحله تست بتا ميگذراند. ما بر اين باور هستيم كه قابليت اطمينان
- PostgreSQL در مقايسه با ساير سيستمهاي پايگاه داده قابل توجه است و
- نسخههايي كه تاكنون ارائه شده است نشان ميدهد كه ما توانايي ارائه يك سيستم
- قوي و محكم و مطمئن را كه آماده بهرهبرداري است داريم.
- پشتيباني
- گروههاي پستي ما امكان ارتباط و تماس به گروه بزرگي از برنامه نويسان و كاربران
- را ميدهد كه ميتوانند در حل مشكلات به ديگران كمك كنند. دسترسي مستقيم به
- برنامهنويسان و گروههاي كاربران و راهنماها و كداصلي باعث ميشود كه پشتيباني
- PostgreSQL نسبت به ساير پايگاههاي داده به نحو بهتري انجام شود. همچنين امكان
- ارائه خدمات پشتيباني به صورت تجاري نيز وجود دارد. براي ديدن اطلاعات بيشتر به
- FAQ section 1.6 مراجعه كنيد.
- قيمت
- هم براي استفاده تجاري و هم غير تجاري هيچ هزينهاي نبايد پرداخت شود. هيچ
- محدوديتي براي انجام تغييرات در PostgreSQL توسط استفاده كنندگان وجود ندارد به
- جز مواردي كه در ليسانس BSD به آن اشاره شده است.
-1.15) من چگونه ميتوانم از نظر مالي به PostgreSQL كمك كنم؟
-PostgreSQL داراي يك ساختار تشكيلاتي درجه اول است كه آن را مديون Marc Fournier
-است كه اين ساختار را ايجاد كرده است.
-كيفيت يك ساختار براي يك پروژه متن باز بسيار اهميت دارد. يك ساختار خوب ميتواند
-مانع از حوادثي شود كه در حركت روبهجلوي پروژه خللي وارد ميكنند.
-البته اين ساختار تشكيلاتي ارزان نيست. هزينههاي ثابت ماهانه و روزمره براي
-نگهداري و حفظ اين ساختار مورد نياز است. اگر شما يا شركت شما مايل است كه از نظر
-مالي به اين حركت كمك كند لطفاً به سايت http://store.pgsql.com/shopping مراجعه
-كرده و كمك خود را اهدا كنيد.
-هر چند در صفحه اصلي عبارت PostgreSQL,Inc ذكر شده است ولي مشاركت عمدتاً براي
-پشتيباني از پروژه PostgreSQL مي باشد و نه براي يك شركت مشخص. اگر ترجيح ميدهيد
-ميتوانيد يك چك به آدرس مشخص شده ارسال كنيد.
-اگر يك استفاده موفق از PostgreSQL سراغ داريد لطفاً آن را به سايت
-http://advocacy.postgresql.org گزارش دهيد.
-
-
-سوالات مربوط به استفاده از پايگاه داده
-2.1) آيا هيچ درايور ODBC براي PostgreSQL وجود دارد؟
-دو درايور ODBC بنامهاي psqlODBC و OpenLink براي PostgreSQL وجود دارد.
-براي گرفتن psqlODBC به سايت
-http://gborg.postgresql.org/project/psqlodbc/projdisplay.php مراجعه كنيد.
-OpenLlink را از اين سايت http://www.openlinksw.com ميتوانيد بگيريد. اين درايور
-با نرمافزارهاي مختلف ODBC كار ميكند بنابراين شما قادر خواهيد بود با استفاده از
-OpenLink روي اكثر سكوهايي كه نرمافزارODBCدارند بدون مشكل به PostgreSQL نيز
-متصل شويد.
-اين محصول به كساني كه احتياج به خدمات پشتيباني تجاري دارند فروخته ميشود. ولي
-نسخه آزاد اين نرمافزار هميشه در درسترس ميباشد. براي كسب اطلاعات بيشتر سوالات
-خود را به آدرس postgres95@openlink.co.uk ارسال نماييد.
-2.2) چه ابزارهايي براي استفاده از PostgreSQL با صفحات وب وجود دارد؟
-در سايت http://www.webreview.com براي استفاده از PostgreSQL در صفحات وب
-راهنماييهاي خوبي وجود دارد.
-براي تركيب و استفاده در صفحات وب زبان PHP يك واسط بسيار مناسب است. اطلاعات
-بيشتر راجع به PHPدر سايت http://www.php.net وجود دارد.
-مثالهايي نيز با استفاده از Perl و CGI.pm و mod_perl وجود دارد.
-2.3) آيا PostgreSQL يك واسط كاربري گرافيكي دارد؟
-چند نرم افزار گرافيكي براي PostgreSQL وجود دارد كه شامل pgAccess درسايت
-http://www.pgaccess.org و pgAdmin III در سايت http://www.pgadmin.org و RHDB
-Admin در سايت http://sources.redhat.com/rhdb و Rekall در سايت
-http://www.thekompany.com/products/rekall ميباشد. همچنين يك phpPgAdmin هم در
-سايت http://phppgadmin.sourceforge.net وجود دارد كه يك واسط وبي براي مديريت
-PostgreSQL ميباشد.
-براي ديدن اطلاعات بيشتر راجع به نرمافزارهاي گرافيكي براي PostgreSQL به آدرس
-http://techdocs.postgresql.org/guides/GUITools مراجعه كنيد.
-2.4) با چه زبانهاي برنامهنويسي ميتوان با PostgreSQL ارتباط برقرار كرد؟
-بيشتر زبانهاي برنامهنويسي ميتوانند با PostgreSQL ارتباط برقرار كنند. به همراه
- سورس PostgreSQL تعدادي از واسطهاي مورد نياز براي ارتباط با پايگاه داده از طريق
-زبانهاي مختلف آمده است كه در زير ليست آنها را مشاهده ميكنيد.
- C (libpq)
- Embedded C (ecpg)
- Java (jdbc)
- Python (PyGreSQL)
- TCL (libpgtcl)
-واسطهاي ديگر در سايت http://gborg.postgresql.org در قسمت Drivers/Interfaces وجود
-دارد.
-
-
-
-سوالات مديريتي
-3.1) چگونه ميتوانم PostgreSQL را در شاخهاي غير از /usr/local/pgsql/ نصب كنم؟
-موقع اجراي دستور configure از گزينه prefix-- استفاده كنيد.
-3.2) چرا موقعي كه من برنامه postmaster را اجرا مي كنم پيام Bad system call و
-يا core dump ميگيرم؟
-به دلايل مختلف ممكن است اين اتفاق بيفتد. اما در قدم اول شما مطمئن شويد كه كه
-امكانات اضافه System V در كرنل شما نصب شده باشد. PostgreSQL براي اجرا شدن نياز
-به استفاده از امكانات حافظه مشترك و سمافورها دارد.
-3.3) چرا موقعي كه من سعي ميكنم برنامه postmaster را اجرا كنم خطاي
-IpcMemoryCreate ميگيرم؟
-احتمالاً قسمت ايجاد حافظه مشترك در كرنل به درستي تنظيم نشده است و يا اينكه بايد
-فضاي حافظه اشتراكي در كرنل را زياد كرد. ميزان دقيق حافظه مشترك مورد نياز بسته به
-معماري و نحوه استفاده از بافرها توسط برنامه postmaster دارد. براي بيشتر سيستمها
-كه با تنظيمات پيشفرض كار ميكنند مقدار اين حافظه حدود 1 مگابايت است. براي ديدن
-اطلاعات بيشتر راجع به حافظه مشترك و سمافور به PostgreSQL Administrator's Guide
-مراجعه كنيد.
-3.4) چرا موقعي كه من سعي ميكنم برنامه postmaster را اجرا كنم خطاي
-IpcSemaphoreCreate ميگيرم؟
-اگر پيغام خطا (pcSemaphoreCreate: semget failed (No space left on device باشد
-به اين معني است كه تعداد سمافورهاي تنظيم شده در كرنل كافي نيست. PostgreSQL براي
-هر فرايندي كه در backend اجرا ميشود به يك سمافور نياز دارد. يك راه حل موقت براي
-اين مسئله آن است كه postmaster را با اعمال محدوديت روي تعداد فرايندهايي كه
-ميتواند ايجاد كند اجرا كنيم. براي اينكار از گزينه N- و يك عدد كمتر از 32
-استفاده كنيد. راه حل دائمي اين مشكل آن است كه پارامترهاي SEMMNS, SEMMNI كرنل را
-افزايش دهيم.
-در زمان دسترسي خيلي زياد به پايگاه داده، سمافورهاي نامعتبر ميتوانند باعث
-crash كردن سيستم شوند.
-اگر پيغام خطا چيز ديگري باشد احتمالاً به دليل آن است كه كرنل از سمافورها
-پشتيباني نميكند. براي ديدن اطلاعات بيشتر راهنماي مديريتي PostgreSQL را مطالعه
-كنيد.
-3.5) چگونه ميتوانم اتصالات ساير ماشينها را كنترل كنم؟
-به صورت پيش فرض فقط از ماشيني كه PostgreSQL روي آن در حال اجراست ميتوان با
-استفاده از سوكتهاي يونيكسي به آن متصل شد. ساير ماشينها قادر نيستند به
-PostgreSQL متصل شوند مگر آنكه گزينه tcp_sockets در فايل postgresql.conf فعال شده
-و همچنين با اصلاح فايل PGDATA/ph_hba.conf هويتشناسي مبتني بر ميزبان نيز فعال
-شود. با اين كار ميتوان اتصالات TCP/IP به PostgreSQL ايجاد كرد.
-3.6) براي كارايي بالاتر و بهتر پايگاه داده من چه تنظيماتي را بايد انجام دهم؟
-به طور حتم استفاده از انديسها باعث بالا رفتن سرعت پاسخگويي به درخواستها خواهد
-شد. دستور EXPLAIN ANALYZE به شما امكان ديدن نحوه پردازش يك دستور توسط PostgreSQL
-را ميدهد.
-اگر شما تعداد زيادي INSERT داريد سعي كنيد آنها را با قرار دادن در يك فايل با
-دستور COPY اجرا كنيد. اين دستور به مراتب از INSERT سريعتر است. حتيالامكان سعي
-كنيد از تراكنشها استفاده نكنيد. تراكنشها مجموعه دستوراتي هستند كه بيند BEGIN و
-COMMIT ميآيند. اگر يك دستور به صورت عادي اجرا شود PostgreSQL خود آن دستور را
-به صورت يك تراكنش مستقل نگاه كرده و اجرا ميكند. موقعی كه تغييرات زيادي در
-پايگاه داده انجام ميشود انديسهاي قبلي را حذف و مجدداً ايجاد كنيد.
-استفاده از گزينه o -F- در فرمان postmaster باعث غير فعال كردن ()fsync ميشود.
-اين دستور بعد از هر تراكنش اطلاعات را روي هاردديسك منتقل ميكند.
-براي افزايش تعداد بافرهاي حافظه اشتراكي از گزينه B- به همراه فرمان postmaster
-استفاده كنيد. توجه كنيد كه اگر اين عدد خيلي بزرگ باشد ممكن است postmaster اصلاً
-اجرا نشود. هر بافر 8 كيلو بايت حافظه نياز دارد و تعداد بافرها به طور پيش فرض 64
-است.
-همچنين ميتوان با گزينه S- ميزان حافظهاي كه براي مرتبسازيهاي موقت توسط
-PostgreSQL استفاده ميشود را افزايش داد. مقدار پيش فرض 512 كيلو بايت است.
-استفاده از دستور CLUSTER نيز براي بالا بردن كارايي موثر ا ست. دستور راهنماي
-CLUSTER اطلاعات بيشتري در اين زمينه به شما ميدهد.
-3.7) چه امكاناتي براي پيدا كردن اشكال وجود دارد؟
-PostgerSQL امكانات مختلفي براي گزارش دادن وضعيت خود دارد كه براي اشكال زدايي
-ميتوان از آنها استفاده كرد.
-با استفاده از گزينه enable-assert-- تعداد زيادي ()assert براي مونيتور كردن و
-توقف برنامه در صورت بروز خطاهاي ناخواسته فعال ميشود.
-هم Postmaster و هم postgres گزينههاي زيادي براي اشكال زدايي دارند. موقعي كه
-postmaster را اجرا ميكنيد خروجي استاندارد و خطا را سمت فايل log ارسال كنيد.
+ gfr+w+h+h+a+y+ p+s+t+y+ d+y+gfr+y+ n+y+z+ d+r+ z+m+y+n+h+ PostgreSQL
+ w+g+w+d+ d+a+r+d+ k+h+ m+y+t+w+a+n+y+d+ d+r+ s+a+y+t+
+ http://www.postgresql.org b+b+y+n+y+d+.
+
+ h+m+tcn+y+n+ y+k+ k+a+n+a+l+ IRC r+w+y+ Freenode w+ EFNet b+n+a+m+
+ PostgreSQL# w+g+w+d+ d+a+r+d+. snm+a+ m+y+t+w+a+n+y+d+ a+z+ f+r+m+a+n+
+ y+w+n+y+k+s+y+ irc -c '#PostgreSQL' "$USER" irc.phoenix.net. y+a+ irc
+ -c '#PostgreSQL' "$USER" irc.freenode.net a+s+t+f+a+d+h+ k+n+y+d+.
+
+ l+y+s+t+ snr+k+t+h+a+y+y+ k+h+ a+z+ tjr+y+q+ aMn+h+a+ m+y+t+w+a+n+y+d+
+ x+d+m+a+t+ p+snt+y+b+a+n+y+ t+g+a+r+y+ d+r+ z+m+y+n+h+ PostgreSQL
+ d+r+y+a+f+t+ k+n+y+d+ d+r+ a+y+n+ aMd+r+s+
+ http://techdocs.postgresql.org/companies.php m+w+g+w+d+ a+s+t+.
+
+ 1.7) aMx+r+y+n+ n+s+x+h+ a+e+l+a+m+ snd+h+ tcy+s+t+?+
+
+ aMx+r+y+n+ n+s+x+h+ PostgreSQL k+h+ w+g+w+d+ d+a+r+d+ 7.4.3 a+s+t+.
+
+ h+d+f+ m+a+ aMn+ a+s+t+ k+h+ h+r+ 6 m+a+h+ t+a+ 8 m+a+h+ y+k+ n+s+x+h+
+ g+d+y+d+ a+r+a+yHh+ snw+d+.
+
+ 1.8) tch+ m+s+t+n+d+a+t+ w+ r+a+h+n+m+a+yHy+h+a+y+y+ w+g+w+d+ d+a+r+n+d+?+
+
+ tcn+d+y+n+ k+t+a+b+tch+ w+ c+f+hka+t+ r+a+h+n+m+a+ w+ m+tka+l+h+a+y+
+ k+w+tck+ h+m+r+a+h+ b+a+ m+t+n+ a+c+l+y+ PostgreSQL d+r+ sna+x+h+ doc
+ w+g+w+d+ d+a+r+d+. b+r+a+y+ d+y+d+n+ c+f+hka+t+ r+a+h+n+m+a+ m+y+
+ t+w+a+n+y+d+ b+h+ s+a+y+t+ http://www.PostgreSQL.org/docs n+y+z+
+ m+r+a+g+e+h+ n+m+a+y+y+d+.
+
+ d+w+ k+t+a+b+ d+r+ z+m+y+n+h+ PostgreSQL d+r+ aMd+r+s+h+a+y+
+ http://www.PostgreSQL.org/docs/awbook.htm w+
+ http://www.commandprompt.com/ppbook w+g+w+d+ d+a+r+d+. l+y+s+t+y+ a+z+
+ k+t+a+b+h+a+y+y+ k+h+ q+a+b+l+ x+r+y+d+ a+s+t+ d+r+ aMd+r+s+
+ http://techdocs.PostgreSQL.org/techdocs/bookreviews.php w+g+w+d+
+ d+a+r+d+. h+m+tcn+y+n+ l+y+s+t+y+ a+z+ m+q+a+l+a+t+ f+n+y+ d+r+
+ m+w+r+d+ PostgreSQL d+r+ aMd+r+s+ http://techdocs.PostgreSQL.org
+ w+g+w+d+ d+a+r+d+.
+
+ b+r+n+a+m+h+ psql y+k+ d+s+t+w+r+ d\ d+a+r+d+ k+h+ a+tjl+a+e+a+t+y+
+ d+r+ m+w+r+d+ a+n+w+a+e+ d+a+d+h+h+a+y+ q+a+b+l+ t+e+r+y+f+ w+
+ e+m+l+gfr+h+a+ w+ t+w+a+b+e+ w+ ... b+h+ m+a+ n+sna+n+ m+y+d+h+d+.
+ d+r+ s+a+y+t+ a+c+l+y+ m+a+ a+tjl+a+e+a+t+ b+y+snt+r+y+ r+a+ m+y+
+ t+w+a+n+y+d+ p+y+d+a+ k+n+y+d+.
+
+ 1.9) tcgfw+n+h+ m+y+t+w+a+n+m+ a+z+a+snk+a+l+a+t+ snn+a+x+t+h+ snd+h+ w+
+ y+a+ a+m+k+a+n+a+t+y+ k+h+ d+r+ a+y+n+ p+a+y+gfa+h+ d+a+d+h+ w+g+w+d+
+ n+d+a+r+d+ m+tjl+e+ snw+m+?+
+
+ PostgreSQL y+k+ z+y+r+ m+g+m+w+e+h+ p+y+snr+f+t+h+ a+z+ SQL-92 r+a+
+ p+snt+y+b+a+n+y+ m+y+k+n+d+. d+r+ l+y+s+t+ TODO a+1+snk+a+l+a+t+
+ snn+a+x+t+h+ snd+h+ y+a+ a+m+k+a+n+a+t+y+ k+h+ w+g+w+d+ n+d+a+r+d+ w+
+ y+a+ b+r+n+a+m+h+h+a+y+ aMy+n+d+h+ aMm+d+h+ a+s+t+.
+
+ 1.10) tcgfw+n+h+ m+y+t+w+a+n+m+ z+b+a+n+ SQL r+a+ y+a+d+ b+gfy+r+m+?+
+
+ k+t+a+b+ PostgreSQL d+r+ aMd+r+s+ SQL
+ http://www.PostgreSQL.org/docs/awbook.html r+a+ aMm+w+z+sn m+y+d+h+d+.
+ h+m+tcn+y+n+ y+k+ k+t+a+b+ d+r+ aMd+r+s+
+ http://www.commandprompt.com/ppbook w+g+w+d+ d+a+r+d+. y+k+
+ r+a+h+n+m+a+y+ x+y+l+y+ x+w+b+ h+m+ d+r+ s+a+y+t+h+a+y+
+ http://www.intermedia.net/support/sql/sqltut.shtm w+
+ http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
+ w+ http://sqlcourse.com d+r+ m+w+r+d+ SQL w+g+w+d+ d+a+r+d+.
+
+ k+t+a+b+ d+y+gfr+y+ k+h+ m+y+t+w+a+n+ b+r+a+y+ y+a+d+gfy+r+y+ SQL a+z+
+ aMn+ a+s+t+f+a+d+h+ k+r+d+ k+t+a+b+ "SQL r+a+ d+r+ 21 r+w+z+ y+a+d+
+ b+gfy+r+y+d+,+ w+y+r+a+y+sn d+w+m+" d+r+ s+a+y+t+
+ http://members.tripod.com/er4ebus/sql/index.htm m+y+b+a+snd+.
+
+ t+e+d+a+d+ z+y+a+d+y+ a+z+ k+a+r+b+r+a+n+ k+t+a+b+ The Practical SQL
+ r+a+ t+r+g+y+hk m+y+d+h+n+d+. k+t+a+b+ d+y+gfr+ The Complete Refrence
+ SQL a+n+t+sna+r+a+t+ McGraw-Hill m+y+b+a+snd+.
+
+ 1.11) aMy+a+ PostgreSQL m+snk+l+ Y2K d+a+r+d+ y+a+ x+y+r+?+
+
+ x+y+r+,+PostgreSQL b+a+ t+a+r+y+x+h+a+y+ q+b+l+ w+ b+e+d+ a+z+ 2000
+ m+snk+l+y+ n+d+a+r+d+.
+
+ 1.12) tcgfw+n+h+ m+y+t+w+a+n+m+ b+h+ t+y+m+ b+r+n+a+m+h+ n+w+y+s+
+ PostgreSQL m+l+hkq+ snw+m+?+
+
+ a+b+t+d+a+,+aMx+r+y+n+ s+w+r+s+ r+a+ d+w+n+l+w+d+ k+r+d+h+ w+
+ m+s+t+n+d+a+t+ m+r+b+w+tj b+h+ b+r+n+a+m+h+n+w+y+s+y+ PostgreSQL r+a+
+ d+r+ s+a+y+t+ m+tja+l+e+h+ k+n+y+d+. s+p+s+ b+h+ gfr+w+h+h+a+y+
+ p+s+t+y+ pgsql-patches w+ pgsql-hackers e+ddw+ snw+y+d+. d+r+
+ m+r+hkl+h+ aMx+r+ w+c+l+h+h+a+y+ b+a+ k+y+f+y+t+ b+a+l+a+ r+a+ b+h+
+ pgsql-patches a+r+s+a+l+ k+n+y+d+.
+
+ t+e+d+a+d+ z+y+a+d+y+ a+z+ b+r+n+a+m+h+n+w+y+s+a+n+ w+g+w+d+
+ d+a+r+n+d+ k+h+ a+m+t+y+a+z+ a+n+g+a+m+ t+i+y+y+r+a+t+ d+r+ cvs r+a+
+ d+a+r+n+d+. h+r+ k+d+a+m+ a+z+ aMn+h+a+ t+e+d+a+d+ z+y+a+d+y+ w+c+l+h+
+ b+a+ k+y+f+y+t+ b+a+l+a+ b+h+ gfr+w+h+ a+r+s+a+l+ k+r+d+h+a+n+d+ k+h+
+ a+e+t+m+a+d+ gfr+d+a+n+n+d+gfa+n+ PostgreSQL r+a+ b+h+ d+s+t+
+ aMw+r+d+h+a+n+d+.
+
+ 1.13) tcgfw+n+h+ m+y+t+w+a+n+m+ y+k+ a+1+snk+a+l+ r+a+ b+h+ gfr+w+h+
+ b+r+n+a+m+h+ n+w+y+s+ a+e+l+a+m+ k+n+m+?+
+
+ l+tjf+a+:+ c+f+hkh+ m+r+b+w+tj b+h+ a+1+snk+a+l+a+t+ PostgreSQL r+a+
+ d+r+ s+a+y+t+ http://www.PostgreSQL.org/bugs/bugs.php m+sna+h+d+h+
+ k+n+y+d+. d+r+ a+y+n+ s+a+y+t+ n+hkw+h+ gfz+a+r+sn w+ a+r+s+a+l+ y+k+
+ a+snk+a+l+ t+w+ddy+hk d+a+d+h+ snd+h+ a+s+t+.
+
+ h+m+tcn+y+n+ b+r+a+y+ d+y+d+n+ n+s+x+h+h+a+y+ g+d+y+d+t+r+ PostgreSQL
+ w+ y+a+ w+g+w+d+ y+k+ w+c+l+h+ g+d+y+d+ a+z+ s+a+y+t+
+ ftp://ftp.PostgreSQL.org/pub b+a+z+d+y+d+ k+n+y+d+.
+
+ 1.14) w+dde+y+t+ PostgreSQL d+r+ m+q+a+y+s+h+ b+a+ s+a+y+r+ DBMSh+a+ b+h+
+ tch+ c+w+r+t+ a+s+t+?+
+
+ r+a+h+h+a+y+ m+x+t+l+f+y+ b+r+a+y+ a+n+d+a+z+h+gfy+r+y+ w+
+ m+q+a+y+s+h+ n+r+m+a+f+z+a+r+h+a+ w+g+w+d+ d+a+r+d+ k+h+
+ e+b+a+r+t+n+d+ a+z+ a+m+k+a+n+a+t+,+ k+a+r+a+y+y+,+ q+a+b+l+y+t+
+ a+e+t+m+a+d+,+ p+snt+y+b+a+n+y+ w+ q+y+m+t+
+
+ a+m+k+a+n+a+t+
+ PostgreSQL b+y+snt+r+ a+m+k+a+n+a+t+ m+w+g+w+d+ d+r+
+ s+y+s+t+m+h+a+y+ p+a+y+gfa+h+ d+a+d+h+ t+g+a+r+y+
+ b+z+r+gf n+zHy+r+ transactions, subselets, triggers,
+ views, foreign key referential integrity w+ sophisticated
+ locking r+a+ d+a+r+d+. d+r+ PostgreSQL a+m+k+a+n+a+t+y+
+ w+g+w+d+ d+a+r+d+ k+h+ p+a+y+gfa+h+h+a+y+ d+a+d+h+
+ d+y+gfr+ aMn+ r+a+ n+d+a+r+n+d+ n+zHy+r+ user-defined
+ typesw+ Inheritancew+ rulesw+ multi-version concurrency
+ control
+
+
+
+ k+a+r+a+y+y+
+
+ k+a+r+a+y+y+ PostgreSQL d+r+ hkd+ b+q+y+h+ s+y+s+t+m+
+ h+a+y+ t+g+a+r+y+ w+ m+t+n+ b+a+z+ a+s+t+. d+r+ b+e+ddy+
+ m+w+a+r+d+ s+r+y+e+t+r+ w+ d+r+ b+e+ddy+ m+w+a+r+d+ a+z+
+ aMn+h+a+ k+n+d+t+r+ a+s+t+. d+r+ m+q+a+y+s+h+ b+a+ MySQL
+ b+r+a+y+ k+a+r+b+r+a+n+ b+y+snt+r+ w+ d+r+x+w+a+s+t+h+a+y+
+ p+y+tcy+d+h+ w+ b+a+r+ z+y+a+d+ x+w+a+n+d+n+/n+w+snt+n+
+ s+r+y+e+t+r+ a+s+t+. d+r+ d+r+x+w+a+s+t+h+a+y+ s+a+d+h+ SELECT
+ a+z+ MySQL k+n+d+t+r+ a+s+t+. a+l+b+t+h+ MySQL x+y+l+y+ a+z+
+ a+m+k+a+n+a+t+ PostgreSQL k+h+ d+r+ b+a+l+a+ b+h+ aMn+
+ a+sna+r+h+ snd+ r+a+ n+d+a+r+d+. h+d+f+ a+c+l+y+ m+a+
+ a+m+k+a+n+a+t+ w+ q+a+b+l+y+t+ a+e+t+m+a+d+ b+a+l+a+s+t+ d+r+
+ ddm+n+ aMn+k+h+ t+l+a+sn m+y+k+n+y+m+ t+a+ k+a+r+a+y+y+ aMn+
+ n+y+z+ b+h+b+w+d+ y+a+b+d+. d+r+ aMd+r+s+
+ http://openacs.org/philosophy/why-not-mysql.html y+k+
+ m+q+a+y+s+h+ g+a+l+b+ b+y+n+ MySQL w+ PostgreSQL w+g+w+d+
+ d+a+r+d+. a+z+ tjr+f+ d+y+gfr+ MySQL y+k+ snr+k+t+ a+s+t+ k+h+
+ m+hkc+w+l+ x+w+d+ r+a+ b+h+ c+w+r+t+ m+t+n+ b+a+z+ a+r+a+yHh+
+ m+y+k+n+d+ w+l+y+ b+r+a+y+ n+r+m+a+f+z+a+r+ i+y+r+ m+t+n+
+ b+a+z+ x+w+d+ a+hkt+y+a+g+ b+h+ l+y+s+a+n+s+ t+g+a+r+y+
+ d+a+r+d+ b+r+ x+l+a+f+ PostgreSQL k+h+ y+k+ gfr+w+h+
+ k+a+m+l+a+:+ m+t+n+ b+a+z+ h+s+t+n+d+.
+
+
+
+ q+a+b+l+y+t+ a+tjm+y+n+a+n+
+ m+a+ f+k+r+ m+y+k+n+y+m+ k+h+ y+k+ s+y+s+t+m+
+ p+a+y+gfa+h+ d+a+d+h+a+y+ k+h+ m+tjm+yHn+ n+b+a+snd+
+ a+r+z+sny+ n+d+a+r+d+. m+a+ t+m+a+m+ t+l+a+snm+a+n+ r+a+
+ b+r+a+y+ a+r+a+yHh+ k+d+h+a+y+ p+a+y+d+a+r+y+ k+h+ b+h+
+ x+w+b+y+ t+s+t+ snd+h+ b+a+snn+d+ w+ k+m+t+r+y+n+
+ a+1+snk+a+l+a+t+ r+a+ d+a+snt+h+ b+a+snn+d+ m+y+k+n+y+m+.
+ h+r+ n+s+x+h+ g+d+y+d+y+ k+h+ a+r+a+yHh+ m+y+snw+d+
+ hkd+a+q+l+ y+k+ m+a+h+ r+a+ d+r+ m+r+hkl+h+ t+s+t+ b+t+a+
+ m+y+gfdkr+a+n+d+. m+a+ b+r+ a+y+n+ b+a+w+r+ h+s+t+y+m+
+ k+h+ q+a+b+l+y+t+ a+tjm+y+n+a+n+ PostgreSQL d+r+
+ m+q+a+y+s+h+ b+a+ s+a+y+r+ s+y+s+t+m+h+a+y+ p+a+y+gfa+h+
+ d+a+d+h+ q+a+b+l+ t+w+g+h+ a+s+t+ w+ n+s+x+h+h+a+y+y+
+ k+h+ t+a+k+n+w+n+ a+r+a+yHh+ snd+h+ a+s+t+ n+sna+n+ m+y+
+ d+h+d+ k+h+ m+a+ t+w+a+n+a+y+y+ a+r+a+yHh+ y+k+
+ s+y+s+t+m+ q+w+y+ w+ m+hkk+m+ w+ m+tjm+yHn+ r+a+ k+h+
+ aMm+a+d+h+ b+h+r+h+b+r+d+a+r+y+ a+s+t+ d+a+r+y+m+.
+
+ p+snt+y+b+a+n+y+
+ gfr+w+h+h+a+y+ p+s+t+y+ m+a+ a+m+k+a+n+ a+r+t+b+a+tj w+
+ t+m+a+s+ b+h+ gfr+w+h+ b+z+r+gfy+ a+z+ b+r+n+a+m+h+
+ n+w+y+s+a+n+ w+ k+a+r+b+r+a+n+ r+a+ m+y+d+h+d+ k+h+ m+y+
+ t+w+a+n+n+d+ d+r+ hkl+ m+snk+l+a+t+ b+h+ d+y+gfr+a+n+
+ k+m+k+ k+n+n+d+. d+s+t+r+s+y+ m+s+t+q+y+m+ b+h+
+ b+r+n+a+m+h+n+w+y+s+a+n+ w+ gfr+w+h+h+a+y+ k+a+r+b+r+a+n+
+ w+ r+a+h+n+m+a+h+a+ w+ k+d+a+c+l+y+ b+a+e+tk m+y+snw+d+
+ k+h+ p+snt+y+b+a+n+y+ PostgreSQL n+s+b+t+ b+h+ s+a+y+r+
+ p+a+y+gfa+h+h+a+y+ d+a+d+h+ b+h+ n+hkw+ b+h+t+r+y+
+ a+n+g+a+m+ snw+d+. h+m+tcn+y+n+ a+m+k+a+n+ a+r+a+yHh+
+ x+d+m+a+t+ p+snt+y+b+a+n+y+ b+h+ c+w+r+t+ t+g+a+r+y+
+ n+y+z+ w+g+w+d+ d+a+r+d+. b+r+a+y+ d+y+d+n+
+ a+tjl+a+e+a+t+ b+y+snt+r+ b+h+ FAQ section 1.6
+ m+r+a+g+e+h+ k+n+y+d+.
+
+ q+y+m+t+
+ h+m+ b+r+a+y+ a+s+t+f+a+d+h+ t+g+a+r+y+ w+ h+m+ i+y+r+
+ t+g+a+r+y+ h+y+tc h+z+y+n+h+a+y+ n+b+a+y+d+ p+r+d+a+x+t+
+ snw+d+. h+y+tc m+hkd+w+d+y+t+y+ b+r+a+y+ a+n+g+a+m+
+ t+i+y+y+r+a+t+ d+r+ PostgreSQL t+w+s+tj a+s+t+f+a+d+h+
+ k+n+n+d+gfa+n+ w+g+w+d+ n+d+a+r+d+ b+h+ g+z+ m+w+a+r+d+y+
+ k+h+ d+r+ l+y+s+a+n+s+ BSD b+h+ aMn+ a+sna+r+h+ snd+h+
+ a+s+t+.
+
+ 1.15) m+n+ tcgfw+n+h+ m+y+t+w+a+n+m+ a+z+ n+zHr+ m+a+l+y+ b+h+ PostgreSQL
+ k+m+k+ k+n+m+?+
+
+ PostgreSQL d+a+r+a+y+ y+k+ s+a+x+t+a+r+ t+snk+y+l+a+t+y+ d+r+g+h+
+ a+w+l+ a+s+t+ k+h+ aMn+ r+a+ m+d+y+w+n+ Marc Fournier a+s+t+ k+h+
+ a+y+n+ s+a+x+t+a+r+ r+a+ a+y+g+a+d+ k+r+d+h+ a+s+t+.
+
+ k+y+f+y+t+ y+k+ s+a+x+t+a+r+ b+r+a+y+ y+k+ p+r+w+zjh+ m+t+n+ b+a+z+
+ b+s+y+a+r+ a+h+m+y+t+ d+a+r+d+. y+k+ s+a+x+t+a+r+ x+w+b+ m+y+
+ t+w+a+n+d+ m+a+n+e+ a+z+ hkw+a+d+tky+ snw+d+ k+h+ d+r+ hkr+k+t+
+ r+w+b+h+g+l+w+y+ p+r+w+zjh+ x+l+l+y+ w+a+r+d+ m+y+k+n+n+d+.
+
+ a+l+b+t+h+ a+y+n+ s+a+x+t+a+r+ t+snk+y+l+a+t+y+ a+r+z+a+n+ n+y+s+t+.
+ h+z+y+n+h+h+a+y+ tka+b+t+ m+a+h+a+n+h+ w+ r+w+z+m+r+h+ b+r+a+y+
+ n+gfh+d+a+r+y+ w+ hkf+zH a+y+n+ s+a+x+t+a+r+ m+w+r+d+ n+y+a+z+ a+s+t+.
+ a+gfr+ snm+a+ y+a+ snr+k+t+ snm+a+ m+a+y+l+ a+s+t+ k+h+ a+z+ n+zHr+
+ m+a+l+y+ b+h+ a+y+n+ hkr+k+t+ k+m+k+ k+n+d+ l+tjf+a+:+ b+h+ s+a+y+t+
+ http://store.pgsql.com/shopping m+r+a+g+e+h+ k+r+d+h+ w+ k+m+k+ x+w+d+
+ r+a+ a+h+d+a+ k+n+y+d+.
+
+ h+r+ tcn+d+ d+r+ c+f+hkh+ a+c+l+y+ e+b+a+r+t+ PostgreSQL,Inc dkk+r+
+ snd+h+ a+s+t+ w+l+y+ m+sna+r+k+t+ e+m+d+t+a+:+ b+r+a+y+
+ p+snt+y+b+a+n+y+ a+z+ p+r+w+zjh+ PostgreSQL m+y+ b+a+snd+ w+ n+h+
+ b+r+a+y+ y+k+ snr+k+t+ m+snx+c+. a+gfr+ t+r+g+y+hk m+y+d+h+y+d+ m+y+
+ t+w+a+n+y+d+ y+k+ tck+ b+h+ aMd+r+s+ m+snx+c+ snd+h+ a+r+s+a+l+
+ k+n+y+d+.
+
+ a+gfr+ y+k+ a+s+t+f+a+d+h+ m+w+f+q+ a+z+ PostgreSQL s+r+a+i+
+ d+a+r+y+d+ l+tjf+a+:+ aMn+ r+a+ b+h+ s+a+y+t+
+ http://advocacy.postgresql.org gfz+a+r+sn d+h+y+d+.
+ _________________________________________________________________
+
+ s+w+a+l+a+t+ m+r+b+w+tj b+h+ a+s+t+f+a+d+h+ a+z+ p+a+y+gfa+h+ d+a+d+h+
+
+ 2.1) aMy+a+ h+y+tc d+r+a+y+w+r+ ODBC b+r+a+y+ PostgreSQL w+g+w+d+
+ d+a+r+d+?+
+
+ d+w+ d+r+a+y+w+r+ ODBC b+n+a+m+h+a+y+ psqlODBC w+ OpenLink b+r+a+y+
+ PostgreSQL w+g+w+d+ d+a+r+d+.
+
+ b+r+a+y+ gfr+f+t+n+ psqlODBC b+h+ s+a+y+t+
+ http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
+ m+r+a+g+e+h+ k+n+y+d+.
+
+ OpenLlink r+a+ a+z+ a+y+n+ s+a+y+t+ http://www.openlinksw.com m+y+
+ t+w+a+n+y+d+ b+gfy+r+y+d+. a+y+n+ d+r+a+y+w+r+ b+a+ n+r+m+
+ a+f+z+a+r+h+a+y+ m+x+t+l+f+ ODBC k+a+r+ m+y+k+n+d+ b+n+a+b+r+a+y+n+
+ snm+a+ q+a+d+r+ x+w+a+h+y+d+ b+w+d+ b+a+ a+s+t+f+a+d+h+ a+z+ OpenLink
+ r+w+y+ a+k+tkr+ s+k+w+h+a+y+y+ k+h+ n+r+m+a+f+z+a+r+ODBCd+a+r+n+d+
+ b+d+w+n+ m+snk+l+ b+h+ PostgreSQL n+y+z+ m+t+c+l+ snw+y+d+.
+
+ a+y+n+ m+hkc+w+l+ b+h+ k+s+a+n+y+ k+h+ a+hkt+y+a+g+ b+h+ x+d+m+a+t+
+ p+snt+y+b+a+n+y+ t+g+a+r+y+ d+a+r+n+d+ f+r+w+x+t+h+ m+y+snw+d+. w+l+y+
+ n+s+x+h+ aMz+a+d+ a+y+n+ n+r+m+a+f+z+a+r+ h+m+y+snh+ d+r+ d+r+s+t+r+s+
+ m+y+b+a+snd+. b+r+a+y+ k+s+b+ a+tjl+a+e+a+t+ b+y+snt+r+ s+w+a+l+a+t+
+ x+w+d+ r+a+ b+h+ aMd+r+s+ postgres95@openlink.co.uk a+r+s+a+l+
+ n+m+a+y+y+d+.
+
+ 2.2) tch+ a+b+z+a+r+h+a+y+y+ b+r+a+y+ a+s+t+f+a+d+h+ a+z+ PostgreSQL b+a+
+ c+f+hka+t+ w+b+ w+g+w+d+ d+a+r+d+?+
+
+ d+r+ s+a+y+t+ http://www.webreview.com b+r+a+y+ a+s+t+f+a+d+h+ a+z+
+ PostgreSQL d+r+ c+f+hka+t+ w+b+ r+a+h+n+m+a+y+y+h+a+y+ x+w+b+y+
+ w+g+w+d+ d+a+r+d+.
+
+ b+r+a+y+ t+r+k+y+b+ w+ a+s+t+f+a+d+h+ d+r+ c+f+hka+t+ w+b+ z+b+a+n+
+ PHP y+k+ w+a+s+tj b+s+y+a+r+ m+n+a+s+b+ a+s+t+. a+tjl+a+e+a+t+
+ b+y+snt+r+ r+a+g+e+ b+h+ PHPd+r+ s+a+y+t+ http://www.php.net w+g+w+d+
+ d+a+r+d+.
+
+ m+tka+l+h+a+y+y+ n+y+z+ b+a+ a+s+t+f+a+d+h+ a+z+ Perl w+ CGI.pm w+
+ mod_perl w+g+w+d+ d+a+r+d+.
+
+ 2.3) aMy+a+ PostgreSQL y+k+ w+a+s+tj k+a+r+b+r+y+ gfr+a+f+y+k+y+ d+a+r+d+?+
+
+ tcn+d+ n+r+m+ a+f+z+a+r+ gfr+a+f+y+k+y+ b+r+a+y+ PostgreSQL w+g+w+d+
+ d+a+r+d+ k+h+ sna+m+l+ pgAccess d+r+s+a+y+t+ http://www.pgaccess.org
+ w+ pgAdmin III d+r+ s+a+y+t+ http://www.pgadmin.org w+ RHDB Admin d+r+
+ s+a+y+t+ http://sources.redhat.com/rhdb w+ Rekall d+r+ s+a+y+t+
+ http://www.thekompany.com/products/rekall m+y+b+a+snd+. h+m+tcn+y+n+
+ y+k+ phpPgAdmin h+m+ d+r+ s+a+y+t+ http://phppgadmin.sourceforge.net
+ w+g+w+d+ d+a+r+d+ k+h+ y+k+ w+a+s+tj w+b+y+ b+r+a+y+ m+d+y+r+y+t+
+ PostgreSQL m+y+b+a+snd+.
+
+ b+r+a+y+ d+y+d+n+ a+tjl+a+e+a+t+ b+y+snt+r+ r+a+g+e+ b+h+ n+r+m+
+ a+f+z+a+r+h+a+y+ gfr+a+f+y+k+y+ b+r+a+y+ PostgreSQL b+h+ aMd+r+s+
+ http://techdocs.postgresql.org/guides/GUITools m+r+a+g+e+h+ k+n+y+d+.
+
+ 2.4) b+a+ tch+ z+b+a+n+h+a+y+ b+r+n+a+m+h+n+w+y+s+y+ m+y+t+w+a+n+ b+a+
+ PostgreSQL a+r+t+b+a+tj b+r+q+r+a+r+ k+r+d+?+
+
+ b+y+snt+r+ z+b+a+n+h+a+y+ b+r+n+a+m+h+n+w+y+s+y+ m+y+t+w+a+n+n+d+ b+a+
+ PostgreSQL a+r+t+b+a+tj b+r+q+r+a+r+ k+n+n+d+. b+h+ h+m+r+a+h+
+ s+w+r+s+ PostgreSQL t+e+d+a+d+y+ a+z+ w+a+s+tjh+a+y+ m+w+r+d+ n+y+a+z+
+ b+r+a+y+ a+r+t+b+a+tj b+a+ p+a+y+gfa+h+ d+a+d+h+ a+z+ tjr+y+q+
+ z+b+a+n+h+a+y+ m+x+t+l+f+ aMm+d+h+ a+s+t+ k+h+ d+r+ z+y+r+ l+y+s+t+
+ aMn+h+a+ r+a+ m+sna+h+d+h+ m+y+k+n+y+d+.
+ * C (libpq)
+ * Embedded C (ecpg)
+ * Java (jdbc)
+ * Python (PyGreSQL)
+ * TCL (libpgtcl)
+
+ w+a+s+tjh+a+y+ d+y+gfr+ d+r+ s+a+y+t+ http://gborg.postgresql.org d+r+
+ q+s+m+t+ Drivers/Interfaces w+g+w+d+ d+a+r+d+.
+ _________________________________________________________________
+
+ s+w+a+l+a+t+ m+d+y+r+y+t+y+
+
+ 3.1) tcgfw+n+h+ m+y+t+w+a+n+m+ PostgreSQL r+a+ d+r+ sna+x+h+a+y+ i+y+r+
+ a+z+ /usr/local/pgsql/ n+c+b+ k+n+m+?+
+
+ m+w+q+e+ a+g+r+a+y+ d+s+t+w+r+ configure a+z+ gfz+y+n+h+ prefix--
+ a+s+t+f+a+d+h+ k+n+y+d+.
+
+ 3.2) tcr+a+ m+w+q+e+y+ k+h+ m+n+ b+r+n+a+m+h+ postmaster r+a+ a+g+r+a+ m+y+
+ k+n+m+ p+y+a+m+ Bad system call w+ y+a+ core dump m+y+gfy+r+m+?+
+
+ b+h+ d+l+a+y+l+ m+x+t+l+f+ m+m+k+n+ a+s+t+ a+y+n+ a+t+f+a+q+
+ b+y+f+t+d+. a+m+a+ d+r+ q+d+m+ a+w+l+ snm+a+ m+tjm+yHn+ snw+y+d+ k+h+
+ k+h+ a+m+k+a+n+a+t+ a+dda+f+h+ System V d+r+ k+r+n+l+ snm+a+ n+c+b+
+ snd+h+ b+a+snd+. PostgreSQL b+r+a+y+ a+g+r+a+ snd+n+ n+y+a+z+ b+h+
+ a+s+t+f+a+d+h+ a+z+ a+m+k+a+n+a+t+ hka+f+zHh+ m+snt+r+k+ w+
+ s+m+a+f+w+r+h+a+ d+a+r+d+.
+
+ 3.3) tcr+a+ m+w+q+e+y+ k+h+ m+n+ s+e+y+ m+y+k+n+m+ b+r+n+a+m+h+ postmaster
+ r+a+ a+g+r+a+ k+n+m+ x+tja+y+ IpcMemoryCreate m+y+gfy+r+m+?+
+
+ a+hkt+m+a+l+a+:+ q+s+m+t+ a+y+g+a+d+ hka+f+zHh+ m+snt+r+k+ d+r+
+ k+r+n+l+ b+h+ d+r+s+t+y+ t+n+zHy+m+ n+snd+h+ a+s+t+ w+ y+a+ a+y+n+k+h+
+ b+a+y+d+ f+dda+y+ hka+f+zHh+ a+snt+r+a+k+y+ d+r+ k+r+n+l+ r+a+
+ z+y+a+d+ k+r+d+. m+y+z+a+n+ d+q+y+q+ hka+f+zHh+ m+snt+r+k+ m+w+r+d+
+ n+y+a+z+ b+s+t+h+ b+h+ m+e+m+a+r+y+ w+ n+hkw+h+ a+s+t+f+a+d+h+ a+z+
+ b+a+f+r+h+a+ t+w+s+tj b+r+n+a+m+h+ postmaster d+a+r+d+. b+r+a+y+
+ b+y+snt+r+ s+y+s+t+m+h+a+ k+h+ b+a+ t+n+zHy+m+a+t+ p+y+snf+r+dd k+a+r+
+ m+y+k+n+n+d+ m+q+d+a+r+ a+y+n+ hka+f+zHh+ hkd+w+d+ 1 m+gfa+b+a+y+t+
+ a+s+t+. b+r+a+y+ d+y+d+n+ a+tjl+a+e+a+t+ b+y+snt+r+ r+a+g+e+ b+h+
+ hka+f+zHh+ m+snt+r+k+ w+ s+m+a+f+w+r+ b+h+ PostgreSQL Administrator's
+ Guide m+r+a+g+e+h+ k+n+y+d+.
+
+ 3.4) tcr+a+ m+w+q+e+y+ k+h+ m+n+ s+e+y+ m+y+k+n+m+ b+r+n+a+m+h+ postmaster
+ r+a+ a+g+r+a+ k+n+m+ x+tja+y+ IpcSemaphoreCreate m+y+gfy+r+m+?+
+
+ a+gfr+ p+y+i+a+m+ x+tja+ (pcSemaphoreCreate: semget failed (No space
+ left on device b+a+snd+ b+h+ a+y+n+ m+e+n+y+ a+s+t+ k+h+ t+e+d+a+d+
+ s+m+a+f+w+r+h+a+y+ t+n+zHy+m+ snd+h+ d+r+ k+r+n+l+ k+a+f+y+ n+y+s+t+.
+ PostgreSQL b+r+a+y+ h+r+ f+r+a+y+n+d+y+ k+h+ d+r+ backend a+g+r+a+
+ m+y+snw+d+ b+h+ y+k+ s+m+a+f+w+r+ n+y+a+z+ d+a+r+d+. y+k+ r+a+h+ hkl+
+ m+w+q+t+ b+r+a+y+ a+y+n+ m+s+yHl+h+ aMn+ a+s+t+ k+h+ postmaster r+a+
+ b+a+ a+e+m+a+l+ m+hkd+w+d+y+t+ r+w+y+ t+e+d+a+d+ f+r+a+y+n+d+h+a+y+y+
+ k+h+ m+y+t+w+a+n+d+ a+y+g+a+d+ k+n+d+ a+g+r+a+ k+n+y+m+. b+r+a+y+
+ a+y+n+k+a+r+ a+z+ gfz+y+n+h+ N- w+ y+k+ e+d+d+ k+m+t+r+ a+z+ 32
+ a+s+t+f+a+d+h+ k+n+y+d+. r+a+h+ hkl+ d+a+yHm+y+ a+y+n+ m+snk+l+ aMn+
+ a+s+t+ k+h+ p+a+r+a+m+t+r+h+a+y+ SEMMNS, SEMMNI k+r+n+l+ r+a+
+ a+f+z+a+y+sn d+h+y+m+.
+
+ d+r+ z+m+a+n+ d+s+t+r+s+y+ x+y+l+y+ z+y+a+d+ b+h+ p+a+y+gfa+h+
+ d+a+d+h+,+ s+m+a+f+w+r+h+a+y+ n+a+m+e+t+b+r+ m+y+t+w+a+n+n+d+ b+a+e+tk
+ crash k+r+d+n+ s+y+s+t+m+ snw+n+d+.
+
+ a+gfr+ p+y+i+a+m+ x+tja+ tcy+z+ d+y+gfr+y+ b+a+snd+ a+hkt+m+a+l+a+:+
+ b+h+ d+l+y+l+ aMn+ a+s+t+ k+h+ k+r+n+l+ a+z+ s+m+a+f+w+r+h+a+
+ p+snt+y+b+a+n+y+ n+m+y+k+n+d+. b+r+a+y+ d+y+d+n+ a+tjl+a+e+a+t+
+ b+y+snt+r+ r+a+h+n+m+a+y+ m+d+y+r+y+t+y+ PostgreSQL r+a+ m+tja+l+e+h+
+ k+n+y+d+.
+
+ 3.5) tcgfw+n+h+ m+y+t+w+a+n+m+ a+t+c+a+l+a+t+ s+a+y+r+ m+a+sny+n+h+a+ r+a+
+ k+n+t+r+l+ k+n+m+?+
+
+ b+h+ c+w+r+t+ p+y+sn f+r+dd f+q+tj a+z+ m+a+sny+n+y+ k+h+ PostgreSQL
+ r+w+y+ aMn+ d+r+ hka+l+ a+g+r+a+s+t+ m+y+t+w+a+n+ b+a+ a+s+t+f+a+d+h+
+ a+z+ s+w+k+t+h+a+y+ y+w+n+y+k+s+y+ b+h+ aMn+ m+t+c+l+ snd+. s+a+y+r+
+ m+a+sny+n+h+a+ q+a+d+r+ n+y+s+t+n+d+ b+h+ PostgreSQL m+t+c+l+ snw+n+d+
+ m+gfr+ aMn+k+h+ gfz+y+n+h+ tcp_sockets d+r+ f+a+y+l+ postgresql.conf
+ f+e+a+l+ snd+h+ w+ h+m+tcn+y+n+ b+a+ a+c+l+a+hk f+a+y+l+
+ PGDATA/ph_hba.conf h+w+y+t+snn+a+s+y+ m+b+t+n+y+ b+r+ m+y+z+b+a+n+
+ n+y+z+ f+e+a+l+ snw+d+. b+a+ a+y+n+ k+a+r+ m+y+t+w+a+n+ a+t+c+a+l+a+t+
+ TCP/IP b+h+ PostgreSQL a+y+g+a+d+ k+r+d+.
+
+ 3.6) b+r+a+y+ k+a+r+a+y+y+ b+a+l+a+t+r+ w+ b+h+t+r+ p+a+y+gfa+h+ d+a+d+h+
+ m+n+ tch+ t+n+zHy+m+a+t+y+ r+a+ b+a+y+d+ a+n+g+a+m+ d+h+m+?+
+
+ b+h+ tjw+r+ hkt+m+ a+s+t+f+a+d+h+ a+z+ a+n+d+y+s+h+a+ b+a+e+tk
+ b+a+l+a+ r+f+t+n+ s+r+e+t+ p+a+s+x+gfw+y+y+ b+h+ d+r+x+w+a+s+t+h+a+
+ x+w+a+h+d+ snd+. d+s+t+w+r+ EXPLAIN ANALYZE b+h+ snm+a+ a+m+k+a+n+
+ d+y+d+n+ n+hkw+h+ p+r+d+a+z+sn y+k+ d+s+t+w+r+ t+w+s+tj PostgreSQL
+ r+a+ m+y+d+h+d+.
+
+ a+gfr+ snm+a+ t+e+d+a+d+ z+y+a+d+y+ INSERT d+a+r+y+d+ s+e+y+ k+n+y+d+
+ aMn+h+a+ r+a+ b+a+ q+r+a+r+ d+a+d+n+ d+r+ y+k+ f+a+y+l+ b+a+
+ d+s+t+w+r+ COPY a+g+r+a+ k+n+y+d+. a+y+n+ d+s+t+w+r+ b+h+ m+r+a+t+b+
+ a+z+ INSERT s+r+y+e+t+r+ a+s+t+. hkt+y+a+l+a+m+k+a+n+ s+e+y+ k+n+y+d+
+ a+z+ t+r+a+k+n+snh+a+ a+s+t+f+a+d+h+ n+k+n+y+d+. t+r+a+k+n+snh+a+
+ m+g+m+w+e+h+ d+s+t+w+r+a+t+y+ h+s+t+n+d+ k+h+ b+y+n+d+ BEGIN w+ COMMIT
+ m+y+aMy+n+d+. a+gfr+ y+k+ d+s+t+w+r+ b+h+ c+w+r+t+ e+a+d+y+ a+g+r+a+
+ snw+d+ PostgreSQL x+w+d+ aMn+ d+s+t+w+r+ r+a+ b+h+ c+w+r+t+ y+k+
+ t+r+a+k+n+sn m+s+t+q+l+ n+gfa+h+ k+r+d+h+ w+ a+g+r+a+ m+y+k+n+d+.
+ m+w+q+e+ی k+h+ t+i+y+y+r+a+t+ z+y+a+d+y+ d+r+ p+a+y+gfa+h+
+ d+a+d+h+ a+n+g+a+m+ m+y+snw+d+ a+n+d+y+s+h+a+y+ q+b+l+y+ r+a+ hkdkf+
+ w+ m+g+d+d+a+:+ a+y+g+a+d+ k+n+y+d+.
+
+ a+s+t+f+a+d+h+ a+z+ gfz+y+n+h+ o -F- d+r+ f+r+m+a+n+ postmaster
+ b+a+e+tk i+y+r+ f+e+a+l+ k+r+d+n+ ()fsync m+y+snw+d+. a+y+n+
+ d+s+t+w+r+ b+e+d+ a+z+ h+r+ t+r+a+k+n+sn a+tjl+a+e+a+t+ r+a+ r+w+y+
+ h+a+r+d+d+y+s+k+ m+n+t+q+l+ m+y+k+n+d+.
+
+ b+r+a+y+ a+f+z+a+y+sn t+e+d+a+d+ b+a+f+r+h+a+y+ hka+f+zHh+
+ a+snt+r+a+k+y+ a+z+ gfz+y+n+h+ B- b+h+ h+m+r+a+h+ f+r+m+a+n+
+ postmaster a+s+t+f+a+d+h+ k+n+y+d+. t+w+g+h+ k+n+y+d+ k+h+ a+gfr+
+ a+y+n+ e+d+d+ x+y+l+y+ b+z+r+gf b+a+snd+ m+m+k+n+ a+s+t+ postmaster
+ a+c+l+a+:+ a+g+r+a+ n+snw+d+. h+r+ b+a+f+r+ 8 k+y+l+w+ b+a+y+t+
+ hka+f+zHh+ n+y+a+z+ d+a+r+d+ w+ t+e+d+a+d+ b+a+f+r+h+a+ b+h+ tjw+r+
+ p+y+sn f+r+dd 64 a+s+t+.
+
+ h+m+tcn+y+n+ m+y+t+w+a+n+ b+a+ gfz+y+n+h+ S- m+y+z+a+n+ hka+f+zHh+
+ a+y+ k+h+ b+r+a+y+ m+r+t+b+s+a+z+y+h+a+y+ m+w+q+t+ t+w+s+tj PostgreSQL
+ a+s+t+f+a+d+h+ m+y+snw+d+ r+a+ a+f+z+a+y+sn d+a+d+. m+q+d+a+r+ p+y+sn
+ f+r+dd 512 k+y+l+w+ b+a+y+t+ a+s+t+.
+
+ a+s+t+f+a+d+h+ a+z+ d+s+t+w+r+ CLUSTER n+y+z+ b+r+a+y+ b+a+l+a+
+ b+r+d+n+ k+a+r+a+y+y+ m+w+tkr+ a+ s+t+. d+s+t+w+r+ r+a+h+n+m+a+y+
+ CLUSTER a+tjl+a+e+a+t+ b+y+snt+r+y+ d+r+ a+y+n+ z+m+y+n+h+ b+h+ snm+a+
+ m+y+d+h+d+.
+
+ 3.7) tch+ a+m+k+a+n+a+t+y+ b+r+a+y+ p+y+d+a+ k+r+d+n+ a+snk+a+l+ w+g+w+d+
+ d+a+r+d+?+
+
+ PostgerSQL a+m+k+a+n+a+t+ m+x+t+l+f+y+ b+r+a+y+ gfz+a+r+sn d+a+d+n+
+ w+dde+y+t+ x+w+d+ d+a+r+d+ k+h+ b+r+a+y+ a+snk+a+l+ z+d+a+y+y+ m+y+
+ t+w+a+n+ a+z+ aMn+h+a+ a+s+t+f+a+d+h+ k+r+d+.
+
+ b+a+ a+s+t+f+a+d+h+ a+z+ gfz+y+n+h+ enable-assert-- t+e+d+a+d+
+ z+y+a+d+y+ ()assert b+r+a+y+ m+w+n+y+t+w+r+ k+r+d+n+ w+ t+w+q+f+
+ b+r+n+a+m+h+ d+r+ c+w+r+t+ b+r+w+z+ x+tja+h+a+y+ n+a+x+w+a+s+t+h+
+ f+e+a+l+ m+y+snw+d+.
+
+ h+m+ Postmaster w+ h+m+ postgres gfz+y+n+h+h+a+y+ z+y+a+d+y+ b+r+a+y+
+ a+snk+a+l+ z+d+a+y+y+ d+a+r+n+d+. m+w+q+e+y+ k+h+ postmaster r+a+
+ a+g+r+a+ m+y+k+n+y+d+ x+r+w+g+y+ a+s+t+a+n+d+a+r+d+ w+ x+tja+ r+a+
+ s+m+t+ f+a+y+l+ log a+r+s+a+l+ k+n+y+d+.
+
cd /usr/local/pgsql
./bin/postmaster >server.log 2>&1 &
-اين كار يك فايل log در بالاترين شاخه PostgreSQL ايجاد ميكند. اين فايل حاوي
-اطلاعات مفيدي در مورد مسائل و خطاهايي است كه براي سرور اتفاق افتاده است. براي
-ديدن جزئيات بيشتر ميتوان از d- به همراه فرمان postmaster استفاده كرد. گزينه
-d- همچنين يك عدد ميگيرد كه نشان دهنده سطح جزئياتي است كه در Logفايل نوشته
-ميشود. با بالابردن اين عدد حجم اطلاعات توليد شده در Logفايل نيز افزايش مييابد.
-اگر postmaster در حال اجرا نباشد، ميتوانيم postgres را به طور مستقيم از خط
-فرمان اجرا كرده و دستورات SQL را به آن بدهيم. اين كار فقط براي اشكاليابي توصيه
-ميشود. توجه كنيد كه در اين حالت يك دستور با كاراكتر newline خاتمه پيدا ميكند و
-نه با ;. اگر postmaster را با امكانات اشكاليابي كامپيل كرده باشيد ميتوانيد با
-استفاده از يك برنامه اشكالياب اجراي برنامه را مونيتور كنيد.
-اگر postmaster در حال اجرا باشد با دستور psql ميتوان به postgres متصل شد. با
-پيدا كردن PID فرايند postgres كه psql به آن متصل شده است ميتوان آن را مونيتور
-كرد. براي اينكار بايد يك برنامه اشكالياب را به آن pid متصل كرد. اگر بخواهيم
-بالا آمدن postgres را مونيتور كنيم كافي است "PGOPTIONS="-W n و psql را اجرا
-كنيم. اين كار باعث ميشود كه postgres با n ثانيه تاخير اجرا شود و در اين فاصله
-شما ميتوانيد برنامه اشكالياب را به آن متصل كرده و با قرار دادن يك نقطه توقف
-روند اجراي آن را مونيتور كنيد.
-postgres گزينههاي s- و A- و t- دارد كه براي پيدا كردن اشكالات بسيار مناسب
-هستند.
-شما ميتوانيد postgreSQL را با امكانات profiling كامپيل كنيد. اين كار باعث
-ميشود كه زمان اجراي دقيق هر تابع در برنامه مشخص شود. خروجيهاي توليد شده در اين
-حالت در فايل DLINUX_PROFILE. ريخته ميشود.
-3.8) چرا موقعي كه من ميخواهم به پايگاه داده وصل شوم پيام "Sorry, too many
-clients" ميگيرم؟
-شما بايد حداكثر تعداد فرايندهاي همزمان postmaster را افزايش دهيد. مقدار پيش فرض
-32 است. براي افزايش آن ميتوان از گزينه N- استفاده كرد و يا فايل postgresql.conf
-را اصلاح نمود
-توجه كنيد كه اگر N- مقداري بيشتر از 32 داشته باشد بايد مقدار B- را نيز افزايش
-دهيم. اين مقدار بايد حداقل دو برابر مقدار N- باشد. براي اعداد خيلي بالا بايد
-بعضي از پارامترهاي كرنل را نيز اصلاح كرد. پارامترهايي نظير حداكثر اندازه حافظه
-اشتراكي SHMMAX ، حداكثر تعداد سمافورها SEMMNI و SEMMNS ، حداكثر تعداد فرايندها
-NPROC، حداكثر فرايندهاي يك كاربر MAXUPRC و حداكثر فايلهاي باز NFILE و NINODE.
-يكي از دلايلي كه تعداد اتصالات همزمان postgreSQL محدود است آن است كه نيازهاي
-PostgreSQL بيش از منابع موجود سيستم نباشد.
-3.9) در شاخه pgsql_tmp چه چيزي قرار دارد؟
-دراين شاخه فايلهاي موقتي قرار دارد كه با اجراي درخواستها به وجود آمده است. به
-عنوان مثال اگر براي اجراي دستور order by نياز به انجام مرتب سازي باشد و در صورتي
-كه حافظه مشخص شده با گزينه S- براي اينكار كافي نباشد سيستم يك فايل موقت در اين
-شاخه ايجاد ميكند تا عمل مرتب سازي را انجام دهد.
-فايلهاي موقت معمولاً به صورت اتوماتيك پاك ميشود اما اگر postgreSQL در حين مرتب
-سازي crash كند آن فايلها باقي ميمانند. با stop و start كردن برنامه postmaster
-اين فايلها پاك ميشوند.
-3.10) چرا براي به روز كردن نسخه پايگاه داده من بايد كل داده ها را dump و مجدداً
-restore كنم؟
-تيم برنامه نويس postgreSQL در نسخههاي ارائه شده كه فقط minor آنها متفاوت است
-فقط تغييرات كوچكي اعمال ميكنند؛ بنابراين براي به روز كردن از نسخه 7.2به 7.2.1
-نيازي به dump و restore نيست. اما در نسخههايي كه major آنها تغيير ميكند غالباً
-ساختار داخلي جداول و فايلهاي داده تغيير ميكند. اين تغييرات معمولاً پيچيده
-هستند. براي انتقال دادههاي موجود در پايگاه داده در اين حالت بايد از dump و
-restore استفاده كرد.
-در نسخههايي كه ساختار روي ديسك تغييري نميكند مي توان از برنامه pg_upgrade براي
-به روز كردن پايگاه داده استفاده كرد بدون اينكه نيازي به استفاده از dump و
-restore باشد. در يادداشتي كه به همراه هر توزيع ميآيد ذكر شده است كه آيا برنامه
-pg_upgrade براي اين توزيع وجود دارد يا خير.
-3.11) از چه سخت افزاري بايد استفاده كنم؟
-
-چون اكثر سختافزارهاي PC سازگار هستند مردم فكر ميكنند كه كيفيت آنها نيز يكسان
-است. در حاليكه اينطور نيست. استفاده از هاردهاي SCSI و حافظههاي ECC و مادربردهاي
-با كيفيت بالا نسبت به سخت افزارهاي ارزانتر نتايج بهتري از نظر كارايي و پايداري
-سيستم بهمراه خواهد داشت. PostgreSQL روي بيشتر سخت افزارها اجرا ميشود اما اگر
-كارايي و اطمينان فاكتورهاي مهمي هستند بايد سخت افزار مناسب استفاده شود. در
-گروههاي پستي در مورد سخت افزار مناسب و انتخاب آن بحث شده است.
-
-
-سوالات عملياتي
-4.1) تفاوت بين binary cursors و Normal cursors چيست؟
-راهنماي دستور DECLARE را مطالعه كنيد.
-4.2) من چگونه ميتوانم فقط روي چند رديف اول يا يك رديف تصادفي درخواست SELECT
-بزنم؟
-راهنماي دستور FETCH يا SELECT...LIMIT را ببينيد.
-در واقع كل درخواست بايد بررسي و ارزيابي شود حتي اگر شما فقط چند رديف اول را
-بخواهيد. براي مثال درخواست ORDER BY را در نظر بگيريد. اگر انديس يا نمايهاي براي
-ORDER BY وجود داشته باشد،postgreSQL ممكن است بتواند فقط چند سطر اول درخواستي
-را ارزيابي كند و يا اينكه كل درخواست پردازش شود تا تعداد رديفهاي درخواستي توليد
-شود.
-براي انتخاب يك سطر تصادفي به روش زير عمل ميكنيم:
+ a+y+n+ k+a+r+ y+k+ f+a+y+l+ log d+r+ b+a+l+a+t+r+y+n+ sna+x+h+
+ PostgreSQL a+y+g+a+d+ m+y+k+n+d+. a+y+n+ f+a+y+l+ hka+w+y+
+ a+tjl+a+e+a+t+ m+f+y+d+y+ d+r+ m+w+r+d+ m+s+a+yHl+ w+ x+tja+h+a+y+y+
+ a+s+t+ k+h+ b+r+a+y+ s+r+w+r+ a+t+f+a+q+ a+f+t+a+d+h+ a+s+t+. b+r+a+y+
+ d+y+d+n+ g+z+yHy+a+t+ b+y+snt+r+ m+y+t+w+a+n+ a+z+ d- b+h+ h+m+r+a+h+
+ f+r+m+a+n+ postmaster a+s+t+f+a+d+h+ k+r+d+. gfz+y+n+h+ d-
+ h+m+tcn+y+n+ y+k+ e+d+d+ m+y+gfy+r+d+ k+h+ n+sna+n+ d+h+n+d+h+ s+tjhk
+ g+z+yHy+a+t+y+ a+s+t+ k+h+ d+r+ Logf+a+y+l+ n+w+snt+h+ m+y+snw+d+.
+ b+a+ b+a+l+a+b+r+d+n+ a+y+n+ e+d+d+ hkg+m+ a+tjl+a+e+a+t+ t+w+l+y+d+
+ snd+h+ d+r+ Logf+a+y+l+ n+y+z+ a+f+z+a+y+sn m+y+y+a+b+d+.
+
+ a+gfr+ postmaster d+r+ hka+l+ a+g+r+a+ n+b+a+snd+,+ m+y+t+w+a+n+y+m+
+ postgres r+a+ b+h+ tjw+r+ m+s+t+q+y+m+ a+z+ x+tj f+r+m+a+n+ a+g+r+a+
+ k+r+d+h+ w+ d+s+t+w+r+a+t+ SQL r+a+ b+h+ aMn+ b+d+h+y+m+. a+y+n+
+ k+a+r+ f+q+tj b+r+a+y+ a+snk+a+l+y+a+b+y+ t+w+c+y+h+ m+y+snw+d+.
+ t+w+g+h+ k+n+y+d+ k+h+ d+r+ a+y+n+ hka+l+t+ y+k+ d+s+t+w+r+ b+a+
+ k+a+r+a+k+t+r+ newline x+a+t+m+h+ p+y+d+a+ m+y+k+n+d+ w+ n+h+ b+a+ ;.
+ a+gfr+ postmaster r+a+ b+a+ a+m+k+a+n+a+t+ a+snk+a+l+y+a+b+y+
+ k+a+m+p+y+l+ k+r+d+h+ b+a+sny+d+ m+y+t+w+a+n+y+d+ b+a+ a+s+t+f+a+d+h+
+ a+z+ y+k+ b+r+n+a+m+h+ a+snk+a+l+y+a+b+ a+g+r+a+y+ b+r+n+a+m+h+ r+a+
+ m+w+n+y+t+w+r+ k+n+y+d+.
+
+ a+gfr+ postmaster d+r+ hka+l+ a+g+r+a+ b+a+snd+ b+a+ d+s+t+w+r+ psql
+ m+y+t+w+a+n+ b+h+ postgres m+t+c+l+ snd+. b+a+ p+y+d+a+ k+r+d+n+ PID
+ f+r+a+y+n+d+ postgres k+h+ psql b+h+ aMn+ m+t+c+l+ snd+h+ a+s+t+ m+y+
+ t+w+a+n+ aMn+ r+a+ m+w+n+y+t+w+r+ k+r+d+. b+r+a+y+ a+y+n+k+a+r+
+ b+a+y+d+ y+k+ b+r+n+a+m+h+ a+snk+a+l+y+a+b+ r+a+ b+h+ aMn+ pid
+ m+t+c+l+ k+r+d+. a+gfr+ b+x+w+a+h+y+m+ b+a+l+a+ aMm+d+n+ postgres r+a+
+ m+w+n+y+t+w+r+ k+n+y+m+ k+a+f+y+ a+s+t+ "PGOPTIONS="-W n w+ psql r+a+
+ a+g+r+a+ k+n+y+m+. a+y+n+ k+a+r+ b+a+e+tk m+y+snw+d+ k+h+ postgres
+ b+a+ n tka+n+y+h+ t+a+x+y+r+ a+g+r+a+ snw+d+ w+ d+r+ a+y+n+ f+a+c+l+h+
+ snm+a+ m+y+t+w+a+n+y+d+ b+r+n+a+m+h+ a+snk+a+l+y+a+b+ r+a+ b+h+ aMn+
+ m+t+c+l+ k+r+d+h+ w+ b+a+ q+r+a+r+ d+a+d+n+ y+k+ n+q+tjh+ t+w+q+f+
+ r+w+n+d+ a+g+r+a+y+ aMn+ r+a+ m+w+n+y+t+w+r+ k+n+y+d+.
+
+ postgres gfz+y+n+h+h+a+y+ s- w+ A- w+ t- d+a+r+d+ k+h+ b+r+a+y+
+ p+y+d+a+ k+r+d+n+ a+snk+a+l+a+t+ b+s+y+a+r+ m+n+a+s+b+ h+s+t+n+d+.
+
+ snm+a+ m+y+t+w+a+n+y+d+ postgreSQL r+a+ b+a+ a+m+k+a+n+a+t+ profiling
+ k+a+m+p+y+l+ k+n+y+d+. a+y+n+ k+a+r+ b+a+e+tk m+y+snw+d+ k+h+ z+m+a+n+
+ a+g+r+a+y+ d+q+y+q+ h+r+ t+a+b+e+ d+r+ b+r+n+a+m+h+ m+snx+c+ snw+d+.
+ x+r+w+g+y+h+a+y+ t+w+l+y+d+ snd+h+ d+r+ a+y+n+ hka+l+t+ d+r+ f+a+y+l+
+ DLINUX_PROFILE. r+y+x+t+h+ m+y+snw+d+.
+
+ 3.8) tcr+a+ m+w+q+e+y+ k+h+ m+n+ m+y+x+w+a+h+m+ b+h+ p+a+y+gfa+h+ d+a+d+h+
+ w+c+l+ snw+m+ p+y+a+m+ "Sorry, too many clients" m+y+gfy+r+m+?+
+
+ snm+a+ b+a+y+d+ hkd+a+k+tkr+ t+e+d+a+d+ f+r+a+y+n+d+h+a+y+
+ h+m+z+m+a+n+ postmaster r+a+ a+f+z+a+y+sn d+h+y+d+. m+q+d+a+r+ p+y+sn
+ f+r+dd 32 a+s+t+. b+r+a+y+ a+f+z+a+y+sn aMn+ m+y+t+w+a+n+ a+z+
+ gfz+y+n+h+ N- a+s+t+f+a+d+h+ k+r+d+ w+ y+a+ f+a+y+l+ postgresql.conf
+ r+a+ a+c+l+a+hk n+m+w+d+
+
+ t+w+g+h+ k+n+y+d+ k+h+ a+gfr+ N- m+q+d+a+r+y+ b+y+snt+r+ a+z+ 32
+ d+a+snt+h+ b+a+snd+ b+a+y+d+ m+q+d+a+r+ B- r+a+ n+y+z+ a+f+z+a+y+sn
+ d+h+y+m+. a+y+n+ m+q+d+a+r+ b+a+y+d+ hkd+a+q+l+ d+w+ b+r+a+b+r+
+ m+q+d+a+r+ N- b+a+snd+. b+r+a+y+ a+e+d+a+d+ x+y+l+y+ b+a+l+a+ b+a+y+d+
+ b+e+ddy+ a+z+ p+a+r+a+m+t+r+h+a+y+ k+r+n+l+ r+a+ n+y+z+ a+c+l+a+hk
+ k+r+d+. p+a+r+a+m+t+r+h+a+y+y+ n+zHy+r+ hkd+a+k+tkr+ a+n+d+a+z+h+
+ hka+f+zHh+ a+snt+r+a+k+y+ SHMMAX ,+ hkd+a+k+tkr+ t+e+d+a+d+
+ s+m+a+f+w+r+h+a+ SEMMNI w+ SEMMNS ,+ hkd+a+k+tkr+ t+e+d+a+d+
+ f+r+a+y+n+d+h+a+ NPROC,+ hkd+a+k+tkr+ f+r+a+y+n+d+h+a+y+ y+k+
+ k+a+r+b+r+ MAXUPRC w+ hkd+a+k+tkr+ f+a+y+l+h+a+y+ b+a+z+ NFILE w+
+ NINODE. y+k+y+ a+z+ d+l+a+y+l+y+ k+h+ t+e+d+a+d+ a+t+c+a+l+a+t+
+ h+m+z+m+a+n+ postgreSQL m+hkd+w+d+ a+s+t+ aMn+ a+s+t+ k+h+
+ n+y+a+z+h+a+y+ PostgreSQL b+y+sn a+z+ m+n+a+b+e+ m+w+g+w+d+ s+y+s+t+m+
+ n+b+a+snd+.
+
+ 3.9) d+r+ sna+x+h+ pgsql_tmp tch+ tcy+z+y+ q+r+a+r+ d+a+r+d+?+
+
+ d+r+a+y+n+ sna+x+h+ f+a+y+l+h+a+y+ m+w+q+t+y+ q+r+a+r+ d+a+r+d+ k+h+
+ b+a+ a+g+r+a+y+ d+r+x+w+a+s+t+h+a+ b+h+ w+g+w+d+ aMm+d+h+ a+s+t+. b+h+
+ e+n+w+a+n+ m+tka+l+ a+gfr+ b+r+a+y+ a+g+r+a+y+ d+s+t+w+r+ order by
+ n+y+a+z+ b+h+ a+n+g+a+m+ m+r+t+b+ s+a+z+y+ b+a+snd+ w+ d+r+ c+w+r+t+y+
+ k+h+ hka+f+zHh+ m+snx+c+ snd+h+ b+a+ gfz+y+n+h+ S- b+r+a+y+
+ a+y+n+k+a+r+ k+a+f+y+ n+b+a+snd+ s+y+s+t+m+ y+k+ f+a+y+l+ m+w+q+t+
+ d+r+ a+y+n+ sna+x+h+ a+y+g+a+d+ m+y+k+n+d+ t+a+ e+m+l+ m+r+t+b+
+ s+a+z+y+ r+a+ a+n+g+a+m+ d+h+d+.
+
+ f+a+y+l+h+a+y+ m+w+q+t+ m+e+m+w+l+a+:+ b+h+ c+w+r+t+ a+t+w+m+a+t+y+k+
+ p+a+k+ m+y+snw+d+ a+m+a+ a+gfr+ postgreSQL d+r+ hky+n+ m+r+t+b+
+ s+a+z+y+ crash k+n+d+ aMn+ f+a+y+l+h+a+ b+a+q+y+ m+y+m+a+n+n+d+. b+a+
+ stop w+ start k+r+d+n+ b+r+n+a+m+h+ postmaster a+y+n+ f+a+y+l+h+a+
+ p+a+k+ m+y+snw+n+d+.
+
+ 3.10) tcr+a+ b+r+a+y+ b+h+ r+w+z+ k+r+d+n+ n+s+x+h+ p+a+y+gfa+h+ d+a+d+h+
+ m+n+ b+a+y+d+ k+l+ d+a+d+h+ h+a+ r+a+ dump w+ m+g+d+d+a+:+ restore k+n+m+?+
+
+ t+y+m+ b+r+n+a+m+h+ n+w+y+s+ postgreSQL d+r+ n+s+x+h+h+a+y+ a+r+a+yHh+
+ snd+h+ k+h+ f+q+tj minor aMn+h+a+ m+t+f+a+w+t+ a+s+t+ f+q+tj
+ t+i+y+y+r+a+t+ k+w+tck+y+ a+e+m+a+l+ m+y+k+n+n+d+;+ b+n+a+b+r+a+y+n+
+ b+r+a+y+ b+h+ r+w+z+ k+r+d+n+ a+z+ n+s+x+h+ 7.2b+h+ 7.2.1 n+y+a+z+y+
+ b+h+ dump w+ restore n+y+s+t+. a+m+a+ d+r+ n+s+x+h+h+a+y+y+ k+h+ major
+ aMn+h+a+ t+i+y+y+r+ m+y+k+n+d+ i+a+l+b+a+:+ s+a+x+t+a+r+ d+a+x+l+y+
+ g+d+a+w+l+ w+ f+a+y+l+h+a+y+ d+a+d+h+ t+i+y+y+r+ m+y+k+n+d+. a+y+n+
+ t+i+y+y+r+a+t+ m+e+m+w+l+a+:+ p+y+tcy+d+h+ h+s+t+n+d+. b+r+a+y+
+ a+n+t+q+a+l+ d+a+d+h+h+a+y+ m+w+g+w+d+ d+r+ p+a+y+gfa+h+ d+a+d+h+ d+r+
+ a+y+n+ hka+l+t+ b+a+y+d+ a+z+ dump w+ restore a+s+t+f+a+d+h+ k+r+d+.
+
+ d+r+ n+s+x+h+h+a+y+y+ k+h+ s+a+x+t+a+r+ r+w+y+ d+y+s+k+ t+i+y+y+r+y+
+ n+m+y+k+n+d+ m+y+ t+w+a+n+ a+z+ b+r+n+a+m+h+ pg_upgrade b+r+a+y+ b+h+
+ r+w+z+ k+r+d+n+ p+a+y+gfa+h+ d+a+d+h+ a+s+t+f+a+d+h+ k+r+d+ b+d+w+n+
+ a+y+n+k+h+ n+y+a+z+y+ b+h+ a+s+t+f+a+d+h+ a+z+ dump w+ restore
+ b+a+snd+. d+r+ y+a+d+d+a+snt+y+ k+h+ b+h+ h+m+r+a+h+ h+r+ t+w+z+y+e+
+ m+y+aMy+d+ dkk+r+ snd+h+ a+s+t+ k+h+ aMy+a+ b+r+n+a+m+h+ pg_upgrade
+ b+r+a+y+ a+y+n+ t+w+z+y+e+ w+g+w+d+ d+a+r+d+ y+a+ x+y+r+.
+
+ 3.11) a+z+ tch+ s+x+t+ a+f+z+a+r+y+ b+a+y+d+ a+s+t+f+a+d+h+ k+n+m+?+
+
+ tcw+n+ a+k+tkr+ s+x+t+a+f+z+a+r+h+a+y+ PC s+a+z+gfa+r+ h+s+t+n+d+
+ m+r+d+m+ f+k+r+ m+y+k+n+n+d+ k+h+ k+y+f+y+t+ aMn+h+a+ n+y+z+
+ y+k+s+a+n+ a+s+t+. d+r+ hka+l+y+k+h+ a+y+n+tjw+r+ n+y+s+t+.
+ a+s+t+f+a+d+h+ a+z+ h+a+r+d+h+a+y+ SCSI w+ hka+f+zHh+h+a+y+ ECC w+
+ m+a+d+r+b+r+d+h+a+y+ b+a+ k+y+f+y+t+ b+a+l+a+ n+s+b+t+ b+h+ s+x+t+
+ a+f+z+a+r+h+a+y+ a+r+z+a+n+t+r+ n+t+a+y+g+ b+h+t+r+y+ a+z+ n+zHr+
+ k+a+r+a+y+y+ w+ p+a+y+d+a+r+y+ s+y+s+t+m+ b+h+m+r+a+h+ x+w+a+h+d+
+ d+a+snt+. PostgreSQL r+w+y+ b+y+snt+r+ s+x+t+ a+f+z+a+r+h+a+ a+g+r+a+
+ m+y+snw+d+ a+m+a+ a+gfr+ k+a+r+a+y+y+ w+ a+tjm+y+n+a+n+
+ f+a+k+t+w+r+h+a+y+ m+h+m+y+ h+s+t+n+d+ b+a+y+d+ s+x+t+ a+f+z+a+r+
+ m+n+a+s+b+ a+s+t+f+a+d+h+ snw+d+. d+r+ gfr+w+h+h+a+y+ p+s+t+y+ d+r+
+ m+w+r+d+ s+x+t+ a+f+z+a+r+ m+n+a+s+b+ w+ a+n+t+x+a+b+ aMn+ b+hktk
+ snd+h+ a+s+t+.
+ _________________________________________________________________
+
+ s+w+a+l+a+t+ e+m+l+y+a+t+y+
+
+ 4.1) t+f+a+w+t+ b+y+n+ binary cursors w+ Normal cursors tcy+s+t+?+
+
+ r+a+h+n+m+a+y+ d+s+t+w+r+ DECLARE r+a+ m+tja+l+e+h+ k+n+y+d+.
+
+ 4.2) m+n+ tcgfw+n+h+ m+y+t+w+a+n+m+ f+q+tj r+w+y+ tcn+d+ r+d+y+f+ a+w+l+
+ y+a+ y+k+ r+d+y+f+ t+c+a+d+f+y+ d+r+x+w+a+s+t+ SELECT b+z+n+m+?+
+
+ r+a+h+n+m+a+y+ d+s+t+w+r+ FETCH y+a+ SELECT...LIMIT r+a+
+ b+b+y+n+y+d+.
+
+ d+r+ w+a+q+e+ k+l+ d+r+x+w+a+s+t+ b+a+y+d+ b+r+r+s+y+ w+
+ a+r+z+y+a+b+y+ snw+d+ hkt+y+ a+gfr+ snm+a+ f+q+tj tcn+d+ r+d+y+f+
+ a+w+l+ r+a+ b+x+w+a+h+y+d+. b+r+a+y+ m+tka+l+ d+r+x+w+a+s+t+ ORDER BY
+ r+a+ d+r+ n+zHr+ b+gfy+r+y+d+. a+gfr+ a+n+d+y+s+ y+a+ n+m+a+y+h+a+y+
+ b+r+a+y+ ORDER BY w+g+w+d+ d+a+snt+h+ b+a+snd+,+postgreSQL m+m+k+n+
+ a+s+t+ b+t+w+a+n+d+ f+q+tj tcn+d+ s+tjr+ a+w+l+ d+r+x+w+a+s+t+y+ r+a+
+ a+r+z+y+a+b+y+ k+n+d+ w+ y+a+ a+y+n+k+h+ k+l+ d+r+x+w+a+s+t+
+ p+r+d+a+z+sn snw+d+ t+a+ t+e+d+a+d+ r+d+y+f+h+a+y+ d+r+x+w+a+s+t+y+
+ t+w+l+y+d+ snw+d+.
+
+ b+r+a+y+ a+n+t+x+a+b+ y+k+ s+tjr+ t+c+a+d+f+y+ b+h+ r+w+sn z+y+r+
+ e+m+l+ m+y+k+n+y+m+:
+
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
-4.3) من چگونه ميتوانم ليستي از جداول يا ساير چيزهايي كه در psql وجود دارد را
-ببينم؟
-براي ديدن ليست جداول دستور dt\ را در برنامه psql استفاده كنيد. براي ديدن ليست
-كامل فرمانها ?\ را اجرا كنيد. راه ديگر خواندن متن برنامه psql است كه در شاخه
-pgsql/src/bin/psql/describe.c قرار دارد. اين فايل حاوي فرامين SQLيي است كه
-خروجي را براي دستوراتي كه با \در psql شروع ميشوند توليد ميكنند. راه ديگر
-اجراي psql با گزينه E-است. اينكار باعث ميشود كه psql قبل از اجرا هر دستور
-SQLمتناظر آن را نشان دهد. PostgreSQLهمچنين يك برنامه SQLi دارد كه ميتوان با
-استفاده از آن اطلاعات داخلي پايگاه داده را استخراج كرد.
-4.4) چگونه يك ستون جدول را حذف ميكنيد؟ چگونه نوع داده آن را عوض كنيم؟
-حذف يك ستون در توزيع 7.3 با استفاده از دستور ALTER TABLE DROP COLUMN اضافه شده
-است. در نسخههاي قبلي به روش زير عمل كنيد:
+
+ 4.3) m+n+ tcgfw+n+h+ m+y+t+w+a+n+m+ l+y+s+t+y+ a+z+ g+d+a+w+l+ y+a+
+ s+a+y+r+ tcy+z+h+a+y+y+ k+h+ d+r+ psql w+g+w+d+ d+a+r+d+ r+a+ b+b+y+n+m+?+
+
+ b+r+a+y+ d+y+d+n+ l+y+s+t+ g+d+a+w+l+ d+s+t+w+r+ dt\ r+a+ d+r+
+ b+r+n+a+m+h+ psql a+s+t+f+a+d+h+ k+n+y+d+. b+r+a+y+ d+y+d+n+ l+y+s+t+
+ k+a+m+l+ f+r+m+a+n+h+a+ ?\ r+a+ a+g+r+a+ k+n+y+d+. r+a+h+ d+y+gfr+
+ x+w+a+n+d+n+ m+t+n+ b+r+n+a+m+h+ psql a+s+t+ k+h+ d+r+ sna+x+h+
+ pgsql/src/bin/psql/describe.c q+r+a+r+ d+a+r+d+. a+y+n+ f+a+y+l+
+ hka+w+y+ f+r+a+m+y+n+ SQLy+y+ a+s+t+ k+h+ x+r+w+g+y+ r+a+ b+r+a+y+
+ d+s+t+w+r+a+t+y+ k+h+ b+a+ \d+r+ psql snr+w+e+ m+y+snw+n+d+ t+w+l+y+d+
+ m+y+k+n+n+d+. r+a+h+ d+y+gfr+ a+g+r+a+y+ psql b+a+ gfz+y+n+h+ E-
+ a+s+t+. a+y+n+k+a+r+ b+a+e+tk m+y+snw+d+ k+h+ psql q+b+l+ a+z+
+ a+g+r+a+ h+r+ d+s+t+w+r+ SQLm+t+n+a+zHr+ aMn+ r+a+ n+sna+n+ d+h+d+.
+ PostgreSQLh+m+tcn+y+n+ y+k+ b+r+n+a+m+h+ SQLi d+a+r+d+ k+h+ m+y+
+ t+w+a+n+ b+a+ a+s+t+f+a+d+h+ a+z+ aMn+ a+tjl+a+e+a+t+ d+a+x+l+y+
+ p+a+y+gfa+h+ d+a+d+h+ r+a+ a+s+t+x+r+a+g+ k+r+d+.
+
+ 4.4) tcgfw+n+h+ y+k+ s+t+w+n+ g+d+w+l+ r+a+ hkdkf+ m+y+k+n+y+d+?+
+ tcgfw+n+h+ n+w+e+ d+a+d+h+ aMn+ r+a+ e+w+dd k+n+y+m+?+
+
+ hkdkf+ y+k+ s+t+w+n+ d+r+ t+w+z+y+e+ 7.3 b+a+ a+s+t+f+a+d+h+ a+z+
+ d+s+t+w+r+ ALTER TABLE DROP COLUMN a+dda+f+h+ snd+h+ a+s+t+. d+r+
+ n+s+x+h+h+a+y+ q+b+l+y+ b+h+ r+w+sn z+y+r+ e+m+l+ k+n+y+d+:
+
BEGIN;
LOCK TABLE old_table;
- SELECT ... -- تمام ستونها غير از ستوني كه ميخواهيد آن را حذف كنيد را در اينجا بياوريد
+ SELECT ... -- t+m+a+m+ s+t+w+n+h+a+ i+y+r+ a+z+ s+t+w+n+y+ k+h+ m+y+x+w+a+h+y+d+ aMn+ r+a+ hkdkf+ k+n+y+d+ r+a+ d+r+ a+y+n+g+a+ b+y+a+w+r+y+d+
INTO TABLE new_table
FROM old_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
COMMIT;
-براي عوض كردن نوع داده يك ستون به روش زير عمل كنيد:
+
+ b+r+a+y+ e+w+dd k+r+d+n+ n+w+e+ d+a+d+h+ y+k+ s+t+w+n+ b+h+ r+w+sn
+ z+y+r+ e+m+l+ k+n+y+d+:
+
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
ALTER TABLE tab DROP COLUMN old_col;
COMMIT;
-4.5) حداكثر اندازه يك رديف، جدول و خود پايگاه داده چقدر است؟
-محدوديتها عبارتند از:
- حداكثر اندازه پايگاه داده نامحدود (تا 32 ترابايت وجود دارد)
- حداكثر اندازه يك جدول 32 ترابايت
- حداكثر ا ندازه يك رديف 1.6 ترابايت
- حداكثر اندازه يك فيلد 1 گيگا بايت
- حداكثر اندازه رديفهاي يك جدول نا محدود
- حداكثر ستونهاي يك جدول بسته به نوع جدول بين 250 تا 6000
- حداكثر انديسهاي يك جدول نا محدود
-البته در حالت نامحدود نيز ما محدود به حجم هاردديسك و فضاي حافظه خواهيم بود. در
-صورتي که مقادير مشخص شده به عنوان نامحدود به صورت غير معمولي بزرك شوند كارايي
-سيستم كاهش خواهد يافت.
-براي ذخيره كردن جداول با اندازه خيلي بزرگ نيازي نيست كه سيستم عامل امكان ايجاد
-فايلهاي بزرگ را داشته باشد. بلكه جداول خيلي بزرگ به صورت فايلهايي به حجم يك گيگا
-بايت نگاهداري ميشوند.
-اگر اندازه بلوكهاي داده را برابر 32 كيلو بايت قرار دهيم حداكثر اندازه جدول و
-حداكثر تعداد ستونها 4 برابر خواهد شد.
-4.6) چقدر فضاي ديسك سخت براي ذخيره كردن دادههاي يك فايل متني مورد نياز است؟
-يك پايگاه داده PostgreSQL تا 5 برابر فضايي روي هاردديسك براي نگاهداري يك فايل
-متني نياز دارد.
-به عنوان مثال يك فايل با 100000 خط را در نظر بگيريد كه در هر خط يك عدد صحيح و يك
-توضيح متني آمده است. فرض كنيد كه رشته متني به طور متوسط 20 بايت باشد. اندازه
-فايل برابر 2.8 مگا بايت خواهد بود ولي PostgreSQL براي نگاهداري اين فايل به 6.4
-مگا بايت اطلاعات نياز خواهد داشت.
- 32 bytes: اندازه سرايند هر خط به طور تقريبي
- 24 bytes: يك عدد صحيح و يك رشته 24 بايتي
- + 4 bytes: اشاره گر روي صفحه به يك چندتايي
+
+ 4.5) hkd+a+k+tkr+ a+n+d+a+z+h+ y+k+ r+d+y+f+,+ g+d+w+l+ w+ x+w+d+
+ p+a+y+gfa+h+ d+a+d+h+ tcq+d+r+ a+s+t+?+
+
+ m+hkd+w+d+y+t+h+a+ e+b+a+r+t+n+d+ a+z+:
+
+ hkd+a+k+tkr+ a+n+d+a+z+h+ p+a+y+gfa+h+ d+a+d+h+ n+a+m+hkd+w+d+(t+a+ 32 t+r+a+b+a+y+t+ w+g+w+d+ d+a+r+d+)
+ hkd+a+k+tkr+ a+n+d+a+z+h+ y+k+ g+d+w+l+ 32 t+r+a+b+a+y+t+
+ hkd+a+k+tkr+ a+ n+d+a+z+h+ y+k+ r+d+y+f+ 1.6 t+r+a+b+a+y+t+
+ hkd+a+k+tkr+ a+n+d+a+z+h+ y+k+ f+y+l+d+ 1 gfy+gfa+ b+a+y+t+
+ hkd+a+k+tkr+ a+n+d+a+z+h+ r+d+y+f+h+a+y+ y+k+ g+d+w+l+ n+a+ m+hkd+w+d+
+ hkd+a+k+tkr+ s+t+w+n+h+a+y+ y+k+ g+d+w+l+ b+s+t+h+ b+h+ n+w+e+ g+d+w+l+ b+y+n+ 250 t+a+ 6000
+ hkd+a+k+tkr+ a+n+d+y+s+h+a+y+ y+k+ g+d+w+l+ n+a+ m+hkd+w+d+
+
+ a+l+b+t+h+ d+r+ hka+l+t+ n+a+m+hkd+w+d+ n+y+z+ m+a+ m+hkd+w+d+ b+h+
+ hkg+m+ h+a+r+d+d+y+s+k+ w+ f+dda+y+ hka+f+zHh+ x+w+a+h+y+m+ b+w+d+.
+ d+r+ c+w+r+t+y+ کh+ m+q+a+d+y+r+ m+snx+c+ snd+h+ b+h+ e+n+w+a+n+
+ n+a+m+hkd+w+d+ b+h+ c+w+r+t+ i+y+r+ m+e+m+w+l+y+ b+z+r+k+ snw+n+d+
+ k+a+r+a+y+y+ s+y+s+t+m+ k+a+h+sn x+w+a+h+d+ y+a+f+t+.
+
+ b+r+a+y+ dkx+y+r+h+ k+r+d+n+ g+d+a+w+l+ b+a+ a+n+d+a+z+h+ x+y+l+y+
+ b+z+r+gf n+y+a+z+y+ n+y+s+t+ k+h+ s+y+s+t+m+ e+a+m+l+ a+m+k+a+n+
+ a+y+g+a+d+ f+a+y+l+h+a+y+ b+z+r+gf r+a+ d+a+snt+h+ b+a+snd+. b+l+k+h+
+ g+d+a+w+l+ x+y+l+y+ b+z+r+gf b+h+ c+w+r+t+ f+a+y+l+h+a+y+y+ b+h+
+ hkg+m+ y+k+ gfy+gfa+ b+a+y+t+ n+gfa+h+d+a+r+y+ m+y+snw+n+d+.
+
+ a+gfr+ a+n+d+a+z+h+ b+l+w+k+h+a+y+ d+a+d+h+ r+a+ b+r+a+b+r+ 32
+ k+y+l+w+ b+a+y+t+ q+r+a+r+ d+h+y+m+ hkd+a+k+tkr+ a+n+d+a+z+h+ g+d+w+l+
+ w+ hkd+a+k+tkr+ t+e+d+a+d+ s+t+w+n+h+a+ 4 b+r+a+b+r+ x+w+a+h+d+ snd+.
+
+ 4.6) tcq+d+r+ f+dda+y+ d+y+s+k+ s+x+t+ b+r+a+y+ dkx+y+r+h+ k+r+d+n+
+ d+a+d+h+h+a+y+ y+k+ f+a+y+l+ m+t+n+y+ m+w+r+d+ n+y+a+z+ a+s+t+?+
+
+ y+k+ p+a+y+gfa+h+ d+a+d+h+ PostgreSQL t+a+ 5 b+r+a+b+r+ f+dda+y+y+
+ r+w+y+ h+a+r+d+d+y+s+k+ b+r+a+y+ n+gfa+h+d+a+r+y+ y+k+ f+a+y+l+
+ m+t+n+y+ n+y+a+z+ d+a+r+d+.
+
+ b+h+ e+n+w+a+n+ m+tka+l+ y+k+ f+a+y+l+ b+a+ 100000 x+tj r+a+ d+r+
+ n+zHr+ b+gfy+r+y+d+ k+h+ d+r+ h+r+ x+tj y+k+ e+d+d+ c+hky+hk w+ y+k+
+ t+w+ddy+hk m+t+n+y+ aMm+d+h+ a+s+t+. f+r+dd k+n+y+d+ k+h+ r+snt+h+
+ m+t+n+y+ b+h+ tjw+r+ m+t+w+s+tj 20 b+a+y+t+ b+a+snd+. a+n+d+a+z+h+
+ f+a+y+l+ b+r+a+b+r+ 2.8 m+gfa+ b+a+y+t+ x+w+a+h+d+ b+w+d+ w+l+y+
+ PostgreSQL b+r+a+y+ n+gfa+h+d+a+r+y+ a+y+n+ f+a+y+l+ b+h+ 6.4 m+gfa+
+ b+a+y+t+ a+tjl+a+e+a+t+ n+y+a+z+ x+w+a+h+d+ d+a+snt+.
+
+ 32 bytes: a+n+d+a+z+h+ s+r+a+y+n+d+ h+r+ x+tj b+h+ tjw+r+ t+q+r+y+b+y+
+ 24 bytes: y+k+ e+d+d+ c+hky+hk w+ y+k+ r+snt+h+ 24 b+a+y+t+y+
+ + 4 bytes: a+sna+r+h+ gfr+ r+w+y+ c+f+hkh+ b+h+ y+k+ tcn+d+t+a+y+y+
----------------------------------------
- 60 bytes در هر رديف
+ 60 bytes d+r+ h+r+ r+d+y+f+
-اندازه صفحات داده در PostgreSQL برابر با 8 كيلو بايت است
- 8192 تعداد بايتها در هر صفحه
- ------------------- = 136 تعداد رديفها در يك صفحه پايگاه داده
- 60 تعداد بايتهاي هر رديف
+a+n+d+a+z+h+ c+f+hka+t+ d+a+d+h+ d+r+ PostgreSQL b+r+a+b+r+ b+a+ 8 k+y+l+w+ b+a+y+t+ a+s+t+
+ 8192 t+e+d+a+d+ b+a+y+t+h+a+ d+r+ h+r+ c+f+hkh+
+ ------------------- = 136 t+e+d+a+d+ r+d+y+f+h+a+ d+r+ y+k+ c+f+hkh+ p+a+y+gfa+h+ d+a+d+h+
+ 60 t+e+d+a+d+ b+a+y+t+h+a+y+ h+r+ r+d+y+f+
- 100000 تعداد رديفها
- -------------------- = تعدادصفحات پايگاه داده
- 128 تعداد رديفها در هر صفحه
+ 100000 t+e+d+a+d+ r+d+y+f+h+a+
+ -------------------- = t+e+d+a+d+c+f+hka+t+ p+a+y+gfa+h+ d+a+d+h+
+ 128 t+e+d+a+d+ r+d+y+f+h+a+ d+r+ h+r+ c+f+hkh+
-735 تعداد صفحات * 8192 تعداد بايتهاي هر صفحه = 6,021,120 مگا بايت
-سربار انديسها يا نمايهها از اين مقدار كمتر است ولي چون شامل خود دادهها هم هست
-ممکن است اندازه آنها هم بزرگ شود.
-NULLها به صورت bitmap ذخيره ميشوند و از اينرو فضاي بسيار كمي را اشغال ميكنند.
-4.7) چگونه ميتوانم بفهمم كه چه كاربران، پايگاه داده، نمايه و جداولي در سيستم
-تعريف شده است؟
-psql تعداد زيادي دستور دارد كه با \ شروع ميشوند و اين اطلاعات را در اختيار ما
-قرار ميدهند. براي ديدن آنها دستور ?\ را اجرا كنيد. همچنين جداول سيستمي كه نام
-آنها با pg_ شروع ميشود نيز اين اطلاعات را در خود دارند. اجراي برنامه psql با
-گزينه l- نيز باعث نشان دادن ليست تمام پايگاههاي داده ميشود.
-همچنين فايل pgsql/src/tutorial/syscat.source نيز فرمانهاي SELECT كه با استفاده
-از آن ميتوان اطلاعات پايگاه داده را استخراج كرد شرح داده است.
-4.8) چرا درخواستهاي من كند اجرا ميشوند يا چرا از نمايه ها استفاده نميكنند؟
-به طور معمول براي درخواستها از نمايهها استفاده نميشود. تنها در صورتي از
-نمايهها استفاده ميشود كه اندازه جدول از يك اندازه حداقل بزرگتر باشد و درخواست
-هم فقط قسمتي از رديفهاي جدول را انتخاب كرده باشد. دليل اين كار آن است كه
-دسترسيهاي تصادفي به هاردديسك كه به خاطر نمايهها ايجاد ميشود ممكن است از
-خواندن مستقيم جدول يا خواندن ترتيبي ركوردها كندتر باشد.
-براي تعيين اينكه از نمايه استفاده شود يا خير، PostgreSQL بايد اطلاعات آماري را
-در مورد يك جدول بداند. اين اطلاعات توسط دستور ANALYZE و VACUUM ANALYZE به دست
-ميآيد. با استفاده از اين اطلاعات، بهينه ساز از تعداد رديفهاي يك جدول اطلاع
-پيدا ميكند و بهتر ميتواند تعيين كند كه آيا از نمايه استفاده شود يا خير.
-اطلاعات آماري همچنين براي تعيين ترتيب الحاق و روشهاي الحاق به صورت بهينه نيز
-كاربرد دارد. جمع آوري اطلاعات آماري بايد به صورت دورهاي همزمان با تغيير
-دادههاي جدول انجام شود.
-نمايهها به طور معمول همراه با دستور ORDER BY به كار برده نميشوند. براي يك جدول
-بزرگ يك پيمايش ترتيبي همراه با دستور مرتب سازي از به كار بردن نمايهها سريعتر
-خواهد بود.
-اما اگر همراه با ORDER BY از LIMIT استفاده شود اغلب از نمايهها استفاده ميشود
-چون فقط قسمتي از جدول برگردانده ميشود. در حقيقت هر چند توابع ()MIN و ()MAX از
-نمايهها استفاده نميكنند ولي ميتوانيم با استفاده از دستور زير با استفاده از
-نمايهها و دستور ORDER BY و LIMIT ، آنها را به دست آوريم.
+735 t+e+d+a+d+ c+f+hka+t+ * 8192 t+e+d+a+d+ b+a+y+t+h+a+y+ h+r+ c+f+hkh+ = 6,021,120 m+gfa+ b+a+y+t+
+
+ s+r+b+a+r+ a+n+d+y+s+h+a+ y+a+ n+m+a+y+h+h+a+ a+z+ a+y+n+ m+q+d+a+r+
+ k+m+t+r+ a+s+t+ w+l+y+ tcw+n+ sna+m+l+ x+w+d+ d+a+d+h+h+a+ h+m+ h+s+t+
+ m+m+کn+ a+s+t+ a+n+d+a+z+h+ aMn+h+a+ h+m+ b+z+r+gf snw+d+.
+
+ NULLh+a+ b+h+ c+w+r+t+ bitmap dkx+y+r+h+ m+y+snw+n+d+ w+ a+z+
+ a+y+n+r+w+ f+dda+y+ b+s+y+a+r+ k+m+y+ r+a+ a+sni+a+l+ m+y+k+n+n+d+.
+
+ 4.7) tcgfw+n+h+ m+y+t+w+a+n+m+ b+f+h+m+m+ k+h+ tch+ k+a+r+b+r+a+n+,+
+ p+a+y+gfa+h+ d+a+d+h+,+ n+m+a+y+h+ w+ g+d+a+w+l+y+ d+r+ s+y+s+t+m+
+ t+e+r+y+f+ snd+h+ a+s+t+?+
+
+ psql t+e+d+a+d+ z+y+a+d+y+ d+s+t+w+r+ d+a+r+d+ k+h+ b+a+ \ snr+w+e+
+ m+y+snw+n+d+ w+ a+y+n+ a+tjl+a+e+a+t+ r+a+ d+r+ a+x+t+y+a+r+ m+a+
+ q+r+a+r+ m+y+d+h+n+d+. b+r+a+y+ d+y+d+n+ aMn+h+a+ d+s+t+w+r+ ?\ r+a+
+ a+g+r+a+ k+n+y+d+. h+m+tcn+y+n+ g+d+a+w+l+ s+y+s+t+m+y+ k+h+ n+a+m+
+ aMn+h+a+ b+a+ pg_ snr+w+e+ m+y+snw+d+ n+y+z+ a+y+n+ a+tjl+a+e+a+t+
+ r+a+ d+r+ x+w+d+ d+a+r+n+d+. a+g+r+a+y+ b+r+n+a+m+h+ psql b+a+
+ gfz+y+n+h+ l- n+y+z+ b+a+e+tk n+sna+n+ d+a+d+n+ l+y+s+t+ t+m+a+m+
+ p+a+y+gfa+h+h+a+y+ d+a+d+h+ m+y+snw+d+.
+
+ h+m+tcn+y+n+ f+a+y+l+ pgsql/src/tutorial/syscat.source n+y+z+
+ f+r+m+a+n+h+a+y+ SELECT k+h+ b+a+ a+s+t+f+a+d+h+ a+z+ aMn+ m+y+
+ t+w+a+n+ a+tjl+a+e+a+t+ p+a+y+gfa+h+ d+a+d+h+ r+a+ a+s+t+x+r+a+g+
+ k+r+d+ snr+hk d+a+d+h+ a+s+t+.
+
+ 4.8) tcr+a+ d+r+x+w+a+s+t+h+a+y+ m+n+ k+n+d+ a+g+r+a+ m+y+snw+n+d+ y+a+
+ tcr+a+ a+z+ n+m+a+y+h+ h+a+ a+s+t+f+a+d+h+ n+m+y+k+n+n+d+?+
+
+ b+h+ tjw+r+ m+e+m+w+l+ b+r+a+y+ d+r+x+w+a+s+t+h+a+ a+z+ n+m+a+y+h+h+a+
+ a+s+t+f+a+d+h+ n+m+y+snw+d+. t+n+h+a+ d+r+ c+w+r+t+y+ a+z+ n+m+a+y+h+
+ h+a+ a+s+t+f+a+d+h+ m+y+snw+d+ k+h+ a+n+d+a+z+h+ g+d+w+l+ a+z+ y+k+
+ a+n+d+a+z+h+ hkd+a+q+l+ b+z+r+gft+r+ b+a+snd+ w+ d+r+x+w+a+s+t+ h+m+
+ f+q+tj q+s+m+t+y+ a+z+ r+d+y+f+h+a+y+ g+d+w+l+ r+a+ a+n+t+x+a+b+
+ k+r+d+h+ b+a+snd+. d+l+y+l+ a+y+n+ k+a+r+ aMn+ a+s+t+ k+h+
+ d+s+t+r+s+y+h+a+y+ t+c+a+d+f+y+ b+h+ h+a+r+d+d+y+s+k+ k+h+ b+h+
+ x+a+tjr+ n+m+a+y+h+h+a+ a+y+g+a+d+ m+y+snw+d+ m+m+k+n+ a+s+t+ a+z+
+ x+w+a+n+d+n+ m+s+t+q+y+m+ g+d+w+l+ y+a+ x+w+a+n+d+n+ t+r+t+y+b+y+
+ r+k+w+r+d+h+a+ k+n+d+t+r+ b+a+snd+.
+
+ b+r+a+y+ t+e+y+y+n+ a+y+n+k+h+ a+z+ n+m+a+y+h+ a+s+t+f+a+d+h+ snw+d+
+ y+a+ x+y+r+,+ PostgreSQL b+a+y+d+ a+tjl+a+e+a+t+ aMm+a+r+y+ r+a+ d+r+
+ m+w+r+d+ y+k+ g+d+w+l+ b+d+a+n+d+. a+y+n+ a+tjl+a+e+a+t+ t+w+s+tj
+ d+s+t+w+r+ ANALYZE w+ VACUUM ANALYZE b+h+ d+s+t+ m+y+aMy+d+. b+a+
+ a+s+t+f+a+d+h+ a+z+ a+y+n+ a+tjl+a+e+a+t+,+ b+h+y+n+h+ s+a+z+ a+z+
+ t+e+d+a+d+ r+d+y+f+h+a+y+ y+k+ g+d+w+l+ a+tjl+a+e+ p+y+d+a+ m+y+k+n+d+
+ w+ b+h+t+r+ m+y+t+w+a+n+d+ t+e+y+y+n+ k+n+d+ k+h+ aMy+a+ a+z+
+ n+m+a+y+h+ a+s+t+f+a+d+h+ snw+d+ y+a+ x+y+r+. a+tjl+a+e+a+t+
+ aMm+a+r+y+ h+m+tcn+y+n+ b+r+a+y+ t+e+y+y+n+ t+r+t+y+b+ a+l+hka+q+ w+
+ r+w+snh+a+y+ a+l+hka+q+ b+h+ c+w+r+t+ b+h+y+n+h+ n+y+z+ k+a+r+b+r+d+
+ d+a+r+d+. g+m+e+ aMw+r+y+ a+tjl+a+e+a+t+ aMm+a+r+y+ b+a+y+d+ b+h+
+ c+w+r+t+ d+w+r+h+a+y+ h+m+z+m+a+n+ b+a+ t+i+y+y+r+ d+a+d+h+h+a+y+
+ g+d+w+l+ a+n+g+a+m+ snw+d+.
+
+ n+m+a+y+h+h+a+ b+h+ tjw+r+ m+e+m+w+l+ h+m+r+a+h+ b+a+ d+s+t+w+r+ ORDER
+ BY b+h+ k+a+r+ b+r+d+h+ n+m+y+snw+n+d+. b+r+a+y+ y+k+ g+d+w+l+
+ b+z+r+gf y+k+ p+y+m+a+y+sn t+r+t+y+b+y+ h+m+r+a+h+ b+a+ d+s+t+w+r+
+ m+r+t+b+ s+a+z+y+ a+z+ b+h+ k+a+r+ b+r+d+n+ n+m+a+y+h+h+a+
+ s+r+y+e+t+r+ x+w+a+h+d+ b+w+d+.
+
+ a+m+a+ a+gfr+ h+m+r+a+h+ b+a+ ORDER BY a+z+ LIMIT a+s+t+f+a+d+h+
+ snw+d+ a+i+l+b+ a+z+ n+m+a+y+h+h+a+ a+s+t+f+a+d+h+ m+y+snw+d+ tcw+n+
+ f+q+tj q+s+m+t+y+ a+z+ g+d+w+l+ b+r+gfr+d+a+n+d+h+ m+y+snw+d+. d+r+
+ hkq+y+q+t+ h+r+ tcn+d+ t+w+a+b+e+ ()MIN w+ ()MAX a+z+ n+m+a+y+h+h+a+
+ a+s+t+f+a+d+h+ n+m+y+k+n+n+d+ w+l+y+ m+y+t+w+a+n+y+m+ b+a+
+ a+s+t+f+a+d+h+ a+z+ d+s+t+w+r+ z+y+r+ b+a+ a+s+t+f+a+d+h+ a+z+
+ n+m+a+y+h+h+a+ w+ d+s+t+w+r+ ORDER BY w+ LIMIT ,+ aMn+h+a+ r+a+ b+h+
+ d+s+t+ aMw+r+y+m+.
+
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
-اگر شما فكر ميكنيد كه بهينه ساز سيستم در انتخاب پيمايش ترتيبي اشتباه كرده است
-با دستور 'SET enable_seqscan TO 'off' ميتوانيد ببينيد آيا استفاده از نمايهها
-باعث افزايش سرعت درخواستها خواهد شد يا خير.
-استفاده از نمايهها هنگامي كه از علائم ويژه نظير LIKE و ~ استفاده ميكنيد فقط در
-بعضي شرايط خاص كه در اينجا ذكر شده است ممكن است:
- ابتداي رشته جستجو بايد به طور صريح مشخص باشد براي مثال:
-- دستورات LIKE نبايد با علامت % شروع شوند
-- الگوهاي منظمي كه با ~ ميآيد حتماً بايد با علامت ^ شروع شود
- رشته جستجو نبايد با يك مجموعه از كاراكترها مثل [a-e] شروع شود
- جستجوهاي غيرحساس به متن مثل ILIKE و *~ از نمايهها استفاده نميكنند. در عوض
- از توابع نمايهاي كه در قسمت 4.12 توضيح داده شد استفاده ميكنند.
- مقدار پيش فرض locale بايد در initdb استفاده شود.
-4.9) چگونه ميتوانم نحوه بررسي درخواست را توسط بهينهساز درخواستها مشاهده كنم؟
-راهنماي دستور EXPLAIN را نگاه كنيد.
-4.10) نمايه R-tree چيست؟
-از نمايه R-Tree براي انديس كردن دادههاي فاصلهاي استفاده ميشود. يك نمايه hash
-نميتواند جستجوهاي محدودهاي را انجام دهد. نمايه "B-tree" نيز براي انجام جستجوي
-محدودهاي در يك جهت قابل استفاده است. اما R-Tree ميتواند دادههاي چند بعدي را
-نيز پشتيباني كند. براي مثال اگر از نمايه R-tree براي گونه Point استفاده شود
-سرعت درخواستهايي نظير "select all points within a bounding rectangle" به مراتب
-افزايش مييابد.
-مقالهاي كه طراحي R-tree را توضيح داده است
-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.
-R-tree ميتواند چندضلعيها و چند وجهي را پشتيباني كند. در تئوري، R-tree ميتواند
-تعداد بعدهاي بالاتري را نيز پشتيباني كند. در عمل توسعه R-tree نياز به كار
-بيشتري دارد.
-4.11) بهينه ساز تكويني درخواست چيست؟ (Genetic Query Optimizer)
-استفاده از GEQO سرعت بهينه سازي درخواست را هنگاميكه تعداد زيادي جدول را با
-استفاده از الگوريتم ژنتيك الحاق ميكنيم افزايش ميدهد.
-4.12) چگونه از عبارات منظم براي جستجو استفاده كنم؟ چگونه جستجويي انجام دهم كه
-حساس به متن نباشد؟ چگونه براي يك جستجوي غير حساس به متن از نمايه استفاده كنم؟
-براي جستجوي عبارت منظم از عملگر ~ استفاده ميكنيم. براي جستجوي غير حساس به متن
-از عملگر *~ و يا ILIKE استفاده ميكنيم.
-روش ديگر انجام جستجوي غير حساس به متن در زير نشان داده شده است.
+
+ a+gfr+ snm+a+ f+k+r+ m+y+k+n+y+d+ k+h+ b+h+y+n+h+ s+a+z+ s+y+s+t+m+
+ d+r+ a+n+t+x+a+b+ p+y+m+a+y+sn t+r+t+y+b+y+ a+snt+b+a+h+ k+r+d+h+
+ a+s+t+ b+a+ d+s+t+w+r+ 'SET enable_seqscan TO 'off' m+y+t+w+a+n+y+d+
+ b+b+y+n+y+d+ aMy+a+ a+s+t+f+a+d+h+ a+z+ n+m+a+y+h+h+a+ b+a+e+tk
+ a+f+z+a+y+sn s+r+e+t+ d+r+x+w+a+s+t+h+a+ x+w+a+h+d+ snd+ y+a+ x+y+r+.
+
+ a+s+t+f+a+d+h+ a+z+ n+m+a+y+h+h+a+ h+n+gfa+m+y+ k+h+ a+z+ e+l+a+yHm+
+ w+y+zjh+ n+zHy+r+ LIKE w+ ~ a+s+t+f+a+d+h+ m+y+k+n+y+d+ f+q+tj d+r+
+ b+e+ddy+ snr+a+y+tj x+a+c+ k+h+ d+r+ a+y+n+g+a+ dkk+r+ snd+h+ a+s+t+
+ m+m+k+n+ a+s+t+:
+ * a+b+t+d+a+y+ r+snt+h+ g+s+t+g+w+ b+a+y+d+ b+h+ tjw+r+ c+r+y+hk
+ m+snx+c+ b+a+snd+ b+r+a+y+ m+tka+l+:
+
+ - d+s+t+w+r+a+t+ LIKE n+b+a+y+d+ b+a+ e+l+a+m+t+ % snr+w+e+ snw+n+d+
+
+ - a+l+gfw+h+a+y+ m+n+zHm+y+ k+h+ b+a+ ~ m+y+aMy+d+ hkt+m+a+:+ b+a+y+d+
+ b+a+ e+l+a+m+t+ ^ snr+w+e+ snw+d+
+ * r+snt+h+ g+s+t+g+w+ n+b+a+y+d+ b+a+ y+k+ m+g+m+w+e+h+ a+z+
+ k+a+r+a+k+t+r+h+a+ m+tkl+ [a-e] snr+w+e+ snw+d+
+ * g+s+t+g+w+h+a+y+ i+y+r+hks+a+s+ b+h+ m+t+n+ m+tkl+ ILIKE w+ *~
+ a+z+ n+m+a+y+h+h+a+ a+s+t+f+a+d+h+ n+m+y+k+n+n+d+. d+r+ e+w+dd
+ a+z+ t+w+a+b+e+ n+m+a+y+h+a+y+ k+h+ d+r+ q+s+m+t+ 4.12 t+w+ddy+hk
+ d+a+d+h+ snd+ a+s+t+f+a+d+h+ m+y+k+n+n+d+.
+ * m+q+d+a+r+ p+y+sn f+r+dd locale b+a+y+d+ d+r+ initdb
+ a+s+t+f+a+d+h+ snw+d+.
+
+ 4.9) tcgfw+n+h+ m+y+t+w+a+n+m+ n+hkw+h+ b+r+r+s+y+ d+r+x+w+a+s+t+ r+a+
+ t+w+s+tj b+h+y+n+h+s+a+z+ d+r+x+w+a+s+t+h+a+ m+sna+h+d+h+ k+n+m+?+
+
+ r+a+h+n+m+a+y+ d+s+t+w+r+ EXPLAIN r+a+ n+gfa+h+ k+n+y+d+.
+
+ 4.10) n+m+a+y+h+ R-tree tcy+s+t+?+
+
+ a+z+ n+m+a+y+h+ R-Tree b+r+a+y+ a+n+d+y+s+ k+r+d+n+ d+a+d+h+h+a+y+
+ f+a+c+l+h+a+y+ a+s+t+f+a+d+h+ m+y+snw+d+. y+k+ n+m+a+y+h+ hash n+m+y+
+ t+w+a+n+d+ g+s+t+g+w+h+a+y+ m+hkd+w+d+h+a+y+ r+a+ a+n+g+a+m+ d+h+d+.
+ n+m+a+y+h+ "B-tree" n+y+z+ b+r+a+y+ a+n+g+a+m+ g+s+t+g+w+y+
+ m+hkd+w+d+h+a+y+ d+r+ y+k+ g+h+t+ q+a+b+l+ a+s+t+f+a+d+h+ a+s+t+.
+ a+m+a+ R-Tree m+y+t+w+a+n+d+ d+a+d+h+h+a+y+ tcn+d+ b+e+d+y+ r+a+
+ n+y+z+ p+snt+y+b+a+n+y+ k+n+d+. b+r+a+y+ m+tka+l+ a+gfr+ a+z+
+ n+m+a+y+h+ R-tree b+r+a+y+ gfw+n+h+ Point a+s+t+f+a+d+h+ snw+d+
+ s+r+e+t+ d+r+x+w+a+s+t+h+a+y+y+ n+zHy+r+ "select all points within a
+ bounding rectangle" b+h+ m+r+a+t+b+ a+f+z+a+y+sn m+y+y+a+b+d+.
+
+ m+q+a+l+h+a+y+ k+h+ tjr+a+hky+ R-tree r+a+ t+w+ddy+hk d+a+d+h+ a+s+t+
+
+ 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.
+
+ R-tree m+y+t+w+a+n+d+ tcn+d+ddl+e+y+h+a+ w+ tcn+d+ w+g+h+y+ r+a+
+ p+snt+y+b+a+n+y+ k+n+d+. d+r+ t+yHw+r+y+,+ R-tree m+y+t+w+a+n+d+
+ t+e+d+a+d+ b+e+d+h+a+y+ b+a+l+a+t+r+y+ r+a+ n+y+z+ p+snt+y+b+a+n+y+
+ k+n+d+. d+r+ e+m+l+ t+w+s+e+h+ R-tree n+y+a+z+ b+h+ k+a+r+
+ b+y+snt+r+y+ d+a+r+d+.
+
+ 4.11) b+h+y+n+h+ s+a+z+ t+k+w+y+n+y+ d+r+x+w+a+s+t+ tcy+s+t+?+ (Genetic
+ Query Optimizer)
+
+ a+s+t+f+a+d+h+ a+z+ GEQO s+r+e+t+ b+h+y+n+h+ s+a+z+y+ d+r+x+w+a+s+t+
+ r+a+ h+n+gfa+m+y+k+h+ t+e+d+a+d+ z+y+a+d+y+ g+d+w+l+ r+a+ b+a+
+ a+s+t+f+a+d+h+ a+z+ a+l+gfw+r+y+t+m+ zjn+t+y+k+ a+l+hka+q+ m+y+
+ k+n+y+m+ a+f+z+a+y+sn m+y+d+h+d+.
+
+ 4.12) tcgfw+n+h+ a+z+ e+b+a+r+a+t+ m+n+zHm+ b+r+a+y+ g+s+t+g+w+
+ a+s+t+f+a+d+h+ k+n+m+?+ tcgfw+n+h+ g+s+t+g+w+y+y+ a+n+g+a+m+ d+h+m+ k+h+
+ hks+a+s+ b+h+ m+t+n+ n+b+a+snd+?+ tcgfw+n+h+ b+r+a+y+ y+k+ g+s+t+g+w+y+
+ i+y+r+ hks+a+s+ b+h+ m+t+n+ a+z+ n+m+a+y+h+ a+s+t+f+a+d+h+ k+n+m+?+
+
+ b+r+a+y+ g+s+t+g+w+y+ e+b+a+r+t+ m+n+zHm+ a+z+ e+m+l+gfr+ ~
+ a+s+t+f+a+d+h+ m+y+k+n+y+m+. b+r+a+y+ g+s+t+g+w+y+ i+y+r+ hks+a+s+
+ b+h+ m+t+n+ a+z+ e+m+l+gfr+ *~ w+ y+a+ ILIKE a+s+t+f+a+d+h+ m+y+
+ k+n+y+m+.
+
+ r+w+sn d+y+gfr+ a+n+g+a+m+ g+s+t+g+w+y+ i+y+r+ hks+a+s+ b+h+ m+t+n+
+ d+r+ z+y+r+ n+sna+n+ d+a+d+h+ snd+h+ a+s+t+.
SELECT *
FROM tab
WHERE lower(col) = 'abc';
-اين از نمايههاي استاندارد استفاده نميكند. ولي شما مي توانيد با دستور زير يك
-نمايه ايجاد كنيد و از آن استفاده كنيد.
+
+ a+y+n+ a+z+ n+m+a+y+h+h+a+y+ a+s+t+a+n+d+a+r+d+ a+s+t+f+a+d+h+ n+m+y+
+ k+n+d+. w+l+y+ snm+a+ m+y+ t+w+a+n+y+d+ b+a+ d+s+t+w+r+ z+y+r+ y+k+
+ n+m+a+y+h+ a+y+g+a+d+ k+n+y+d+ w+ a+z+ aMn+ a+s+t+f+a+d+h+ k+n+y+d+.
CREATE INDEX tabindex ON tab (lower(col));
-4.13) چگونه ميتوانم در يك درخواست تشخيص دهم كه يك فيلد NULL است؟
-با استفاده از توابع IS NULL و IS NOT NULL ميتوانيم NULL بودن يك فيلد را تست
-كنيم.
-4.14) تفاوت بين گونههاي مختلف character چيست؟
+
+ 4.13) tcgfw+n+h+ m+y+t+w+a+n+m+ d+r+ y+k+ d+r+x+w+a+s+t+ t+snx+y+c+ d+h+m+
+ k+h+ y+k+ f+y+l+d+ NULL a+s+t+?+
+
+ b+a+ a+s+t+f+a+d+h+ a+z+ t+w+a+b+e+ IS NULL w+ IS NOT NULL m+y+
+ t+w+a+n+y+m+ NULL b+w+d+n+ y+k+ f+y+l+d+ r+a+ t+s+t+ k+n+y+m+.
+
+ 4.14) t+f+a+w+t+ b+y+n+ gfw+n+h+h+a+y+ m+x+t+l+f+ character tcy+s+t+?+
+
Type Internal Name Notes
--------------------------------------------------
-VARCHAR(n) varchar اندازه، حداكثر طول را نشان مي دهد بدون اضافه شدن كاراكتر اضافه
-CHAR(n) bpchar كاراكترهاي بلانك براي پر شدن طول مشخص شده استفاده ميشود
-TEXT text حداكثر طول را مشخص نميكند
-BYTEA bytea آرايهاي از بايت با طول متغير
-"char" char يك كاراكتر
-نام داخلي گونهها را در system catalogue و بعضي از پيغامهاي خطا ميتوان ديد.
-چهار گونه اول همگي از نوع varlena هستند (4 بايت اول روي ديسك طول را مشخص ميكند
-كه به دنبال آن دادهها قرار دارند.)بنابراين فضاي واقعي استفاده شده روي ديسك از
-اندازه تعريف شده بيشتر است. اما اين گونهها را ميتوان فشرده كرد كه اينكار باعث
-ميشود فضاي كمتري روي ديسك اشغال كنند.
-براي ذخيره رشتههاي با طول متغير(VARCHAR(n بهترين انتخاب است. در اين گونه
-حداكثر طول رشته محدود است بر خلاف text كه هيچ محدوديتي روي حداكثر اندازه رشته
-نميگذارد.(در اين گونه حداكثر طول يك رشته يك گيگا بايت خواهد بود)
-گونه (CHAR(n براي ذخيره دادههاي با طول يكسان است.يك گونهي (CHAR(n با
-كاراكترهاي بلانك (خالي) پر ميشود تا به طول مشخص شده برسد در حاليكه گونه VARCHAR
-كاراكترها را به همان صورت كه هستند ذخيره ميكند. گونه BYTEA براي ذخيره دادههاي
-باينري است به خصوص دادههاي باينري كه شامل بايتهاي NULL هستند. از نظر كارايي
-تمام اين گونهها يكسان هستند.
-4.15.1) چگونه ميتوانم يك فيلد سريال يا افزايشي ايجاد كنم؟
-PostgreSQL از دادههاي سريال پشتيباني ميكند. براي ايجاد يك فيلد سريال (براي
-داشتن يك فيلد منحصر به فرد براي هر رديف )به روش زير عمل كنيد:
- CREATE TABLE person (
- id SERIAL,
- name TEXT
+VARCHAR(n) varchar a+n+d+a+z+h+,+ hkd+a+k+tkr+ tjw+l+ r+a+ n+sna+n+ m+y+ d+h+d+ b+d+w+n+ a+dda+f+h+ snd+n+ k+a+r+a+k+t+r+ a+dda+f+h+
+CHAR(n) bpchar k+a+r+a+k+t+r+h+a+y+ b+l+a+n+k+ b+r+a+y+ p+r+ snd+n+ tjw+l+ m+snx+c+ snd+h+ a+s+t+f+a+d+h+ m+y+snw+d+
+TEXT text hkd+a+k+tkr+ tjw+l+ r+a+ m+snx+c+ n+m+y+k+n+d+
+BYTEA bytea aMr+a+y+h+a+y+ a+z+ b+a+y+t+ b+a+ tjw+l+ m+t+i+y+r+
+"char" char y+k+ k+a+r+a+k+t+r+
+
+ n+a+m+ d+a+x+l+y+ gfw+n+h+h+a+ r+a+ d+r+ system catalogue w+ b+e+ddy+
+ a+z+ p+y+i+a+m+h+a+y+ x+tja+ m+y+t+w+a+n+ d+y+d+.
+
+ tch+a+r+ gfw+n+h+ a+w+l+ h+m+gfy+ a+z+ n+w+e+ varlena h+s+t+n+d+ (4
+ b+a+y+t+ a+w+l+ r+w+y+ d+y+s+k+ tjw+l+ r+a+ m+snx+c+ m+y+k+n+d+ k+h+
+ b+h+ d+n+b+a+l+ aMn+ d+a+d+h+h+a+ q+r+a+r+ d+a+r+n+d+.)
+ b+n+a+b+r+a+y+n+ f+dda+y+ w+a+q+e+y+ a+s+t+f+a+d+h+ snd+h+ r+w+y+
+ d+y+s+k+ a+z+ a+n+d+a+z+h+ t+e+r+y+f+ snd+h+ b+y+snt+r+ a+s+t+. a+m+a+
+ a+y+n+ gfw+n+h+h+a+ r+a+ m+y+t+w+a+n+ f+snr+d+h+ k+r+d+ k+h+
+ a+y+n+k+a+r+ b+a+e+tk m+y+snw+d+ f+dda+y+ k+m+t+r+y+ r+w+y+ d+y+s+k+
+ a+sni+a+l+ k+n+n+d+.
+
+ b+r+a+y+ dkx+y+r+h+ r+snt+h+h+a+y+ b+a+ tjw+l+ m+t+i+y+r+(VARCHAR(n
+ b+h+t+r+y+n+ a+n+t+x+a+b+ a+s+t+. d+r+ a+y+n+ gfw+n+h+ hkd+a+k+tkr+
+ tjw+l+ r+snt+h+ m+hkd+w+d+ a+s+t+ b+r+ x+l+a+f+ text k+h+ h+y+tc
+ m+hkd+w+d+y+t+y+ r+w+y+ hkd+a+k+tkr+ a+n+d+a+z+h+ r+snt+h+ n+m+y+
+ gfdka+r+d+.(d+r+ a+y+n+ gfw+n+h+ hkd+a+k+tkr+ tjw+l+ y+k+ r+snt+h+
+ y+k+ gfy+gfa+ b+a+y+t+ x+w+a+h+d+ b+w+d+)
+
+ gfw+n+h+ (CHAR(n b+r+a+y+ dkx+y+r+h+ d+a+d+h+h+a+y+ b+a+ tjw+l+
+ y+k+s+a+n+ a+s+t+.y+k+ gfw+n+h+y+ (CHAR(n b+a+ k+a+r+a+k+t+r+h+a+y+
+ b+l+a+n+k+ (x+a+l+y+) p+r+ m+y+snw+d+ t+a+ b+h+ tjw+l+ m+snx+c+ snd+h+
+ b+r+s+d+ d+r+ hka+l+y+k+h+ gfw+n+h+ VARCHAR k+a+r+a+k+t+r+h+a+ r+a+
+ b+h+ h+m+a+n+ c+w+r+t+ k+h+ h+s+t+n+d+ dkx+y+r+h+ m+y+k+n+d+. gfw+n+h+
+ BYTEA b+r+a+y+ dkx+y+r+h+ d+a+d+h+h+a+y+ b+a+y+n+r+y+ a+s+t+ b+h+
+ x+c+w+c+ d+a+d+h+h+a+y+ b+a+y+n+r+y+ k+h+ sna+m+l+ b+a+y+t+h+a+y+ NULL
+ h+s+t+n+d+. a+z+ n+zHr+ k+a+r+a+y+y+ t+m+a+m+ a+y+n+ gfw+n+h+h+a+
+ y+k+s+a+n+ h+s+t+n+d+.
+
+ 4.15.1) tcgfw+n+h+ m+y+t+w+a+n+m+ y+k+ f+y+l+d+ s+r+y+a+l+ y+a+
+ a+f+z+a+y+sny+ a+y+g+a+d+ k+n+m+?+
+
+ PostgreSQL a+z+ d+a+d+h+h+a+y+ s+r+y+a+l+ p+snt+y+b+a+n+y+ m+y+k+n+d+.
+ b+r+a+y+ a+y+g+a+d+ y+k+ f+y+l+d+ s+r+y+a+l+ (b+r+a+y+ d+a+snt+n+ y+k+
+ f+y+l+d+ m+n+hkc+r+ b+h+ f+r+d+ b+r+a+y+ h+r+ r+d+y+f+ )b+h+ r+w+sn
+ z+y+r+ e+m+l+ k+n+y+d+:
+ CREATE TABLE person (
+ id SERIAL,
+ name TEXT
);
-دستور بالا به طور اتوماتيک به دستور زير تبديل ميشود:
+
+ d+s+t+w+r+ b+a+l+a+ b+h+ tjw+r+ a+t+w+m+a+t+y+ک b+h+ d+s+t+w+r+
+ z+y+r+ t+b+d+y+l+ m+y+snw+d+:
CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
+ CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
+ name TEXT
);
-براي ديدن اطلاعات بيشتر به راهنماي دستور create_sequence مراجعه كنيد. همچنين
-ميتوان از OIDهر رديف به عنوان يك مقدار منحصر به فرد استفاده كرد. اما در اين
-حالت براي dump كردن و reloadكردن پايگاه داده بايد دستور pg_dumps را با گزينه
-o- اجرا كنيد.
-4.15.2) چگونه ميتوانم مقدار يك درج سريالي را بدانم؟
-يك روش براي گرفتن مقدار بعدي يك فيلد سريال استفاده از تابع ()nextval است. در شبه
-كُدي كه در ادامه آمده است روش انجام اين كار نشان داده شده است:
+
+ b+r+a+y+ d+y+d+n+ a+tjl+a+e+a+t+ b+y+snt+r+ b+h+ r+a+h+n+m+a+y+
+ d+s+t+w+r+ create_sequence m+r+a+g+e+h+ k+n+y+d+. h+m+tcn+y+n+ m+y+
+ t+w+a+n+ a+z+ OIDh+r+ r+d+y+f+ b+h+ e+n+w+a+n+ y+k+ m+q+d+a+r+
+ m+n+hkc+r+ b+h+ f+r+d+ a+s+t+f+a+d+h+ k+r+d+. a+m+a+ d+r+ a+y+n+
+ hka+l+t+ b+r+a+y+ dump k+r+d+n+ w+ reloadk+r+d+n+ p+a+y+gfa+h+
+ d+a+d+h+ b+a+y+d+ d+s+t+w+r+ pg_dumps r+a+ b+a+ gfz+y+n+h+ o- a+g+r+a+
+ k+n+y+d+.
+
+ 4.15.2) tcgfw+n+h+ m+y+t+w+a+n+m+ m+q+d+a+r+ y+k+ d+r+g+ s+r+y+a+l+y+ r+a+
+ b+d+a+n+m+?+
+
+ y+k+ r+w+sn b+r+a+y+ gfr+f+t+n+ m+q+d+a+r+ b+e+d+y+ y+k+ f+y+l+d+
+ s+r+y+a+l+ a+s+t+f+a+d+h+ a+z+ t+a+b+e+ ()nextval a+s+t+. d+r+ snb+h+
+ k+'+d+y+ k+h+ d+r+ a+d+a+m+h+ aMm+d+h+ a+s+t+ r+w+sn a+n+g+a+m+ a+y+n+
+ k+a+r+ n+sna+n+ d+a+d+h+ snd+h+ a+s+t+:
new_id = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-با اجراي دستور فوق مقدار جديد را در متغير new_id نيز خواهيدداشت كه ميتوانيد آن
-را در بقيه درخواستها نيز استفاده كنيد. توجه داشته باشيد كه نام SEQUENCEيي كه به
-طور اتوماتيك ايجاد شده است به صورت table_serialcolumn_seq خواهد بود. كه در آن
-table نام جدول و serialcolumn نام فيلد سريال جدول ميباشد.
-براي ديدن مقدار نسبت داده شده به فيلد سريال نيز ميتوان از تابع () currval به
-صورت زير استفاده كرد.
+
+ b+a+ a+g+r+a+y+ d+s+t+w+r+ f+w+q+ m+q+d+a+r+ g+d+y+d+ r+a+ d+r+
+ m+t+i+y+r+ new_id n+y+z+ x+w+a+h+y+d+d+a+snt+ k+h+ m+y+t+w+a+n+y+d+
+ aMn+ r+a+ d+r+ b+q+y+h+ d+r+x+w+a+s+t+h+a+ n+y+z+ a+s+t+f+a+d+h+
+ k+n+y+d+. t+w+g+h+ d+a+snt+h+ b+a+sny+d+ k+h+ n+a+m+ SEQUENCEy+y+ k+h+
+ b+h+ tjw+r+ a+t+w+m+a+t+y+k+ a+y+g+a+d+ snd+h+ a+s+t+ b+h+ c+w+r+t+
+ table_serialcolumn_seq x+w+a+h+d+ b+w+d+. k+h+ d+r+ aMn+ table n+a+m+
+ g+d+w+l+ w+ serialcolumn n+a+m+ f+y+l+d+ s+r+y+a+l+ g+d+w+l+ m+y+
+ b+a+snd+.
+
+ b+r+a+y+ d+y+d+n+ m+q+d+a+r+ n+s+b+t+ d+a+d+h+ snd+h+ b+h+ f+y+l+d+
+ s+r+y+a+l+ n+y+z+ m+y+t+w+a+n+ a+z+ t+a+b+e+ () currval b+h+ c+w+r+t+
+ z+y+r+ a+s+t+f+a+d+h+ k+r+d+.
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = execute("SELECT currval('person_id_seq')");
-و سرانجام شما ميتوانيد از مقدار OID كه خروجي دستور INSERT است براي ديدن مقدار
-پيش فرض استفاده كنيد. هر چند اين روش در همه پلتفرمها قابل استفاده نيست و ضمن
-اينكه فيلد oid بعد از عدد 4 ميليارد دوباره صفر ميشود. در زبان perl با استفاده
-از DBI و DBD::Pg مقدار oidرا ميتوانيد به اين شكل استخراج كنيد: بعد از اجراي
-()st->execute$ مقدار oid در متغير sth->pg_oid_status$ ذخيره خواهد شد.
-4.15.3) آیا توابع ()nextval و ()currval منجر به ایجاد شرایط race برای سایر
-کاربران می شوند؟
-خیر، استفاده از این توابع شرایط race را به وجود نمی آورد.
-4.15.4) چرا اعداد سریالی مربوط به تراکنشهای abort شده مجدداً استفاده نمی شود؟
-چرا بین اعداد سریالی یک فاصله خالی ایجاد می شود؟
-برای بالا بردن امکان اجرای همزمان تراکنشها، اعداد سریالی به محض اجرای تراکنش به
-آنها تخصیص می یابد در این حالت اگر بعضی از تراکنشها abort شوند بین اعداد سریالی
-استفاده شده یک فاصله خالی به وجود می آید.
-4.16) OID و TID چه هستند؟
-OID راه حل PostgreSQL برای داشتن یک شناسه منحصر به فرد برای هر ردیف است. هر ردیف
-جدیدی که ایجاد می شود یک OID منحصر به فرد به آن اختصاص می یابد. تمام OIDهایی که
-در حین initdb ایجاد می شوند از 16384 کمتر هستند و OIDهایی بعداً تولید می شود از
-این عدد بزرگتر خواهد بود. نکته مهم آن است که OIDها نه تنها در یک جدول شبیه
-نیستند بلکه در کل پایگاه داده هیچ دو ردیفی دارای OID یکسان نخواهد بود.
-PostgreSQL از OID در سیستم داخلی خود برای ایجاد ارتباط بین ردیفهای جداول مختلف
-استفاده می کند. توصیه می شود که یک ستون از نوع OID برای ذخیره این فیلد در جدول
-ایجاد کنید. ساختن یک نمایه برای این فیلد باعث دسترسی سریعتر به آن خواهد شد.
-تمام پایگاههای داده در PostgreSQL برای گرفتن OID جدید از یک ناحیه مرکزی استفاده
-می کند. ولی اگر بخواهیم OID را به روش دیگری بگیریم و یا اینکه در حین کپی کردن یک
-جدول بخواهیم OIDهای اصلی آن تغییر نکند به روش زیر می توانیم عمل کنیم:
+ w+ s+r+a+n+g+a+m+ snm+a+ m+y+t+w+a+n+y+d+ a+z+ m+q+d+a+r+ OID k+h+
+ x+r+w+g+y+ d+s+t+w+r+ INSERT a+s+t+ b+r+a+y+ d+y+d+n+ m+q+d+a+r+
+ p+y+sn f+r+dd a+s+t+f+a+d+h+ k+n+y+d+. h+r+ tcn+d+ a+y+n+ r+w+sn d+r+
+ h+m+h+ p+l+t+f+r+m+h+a+ q+a+b+l+ a+s+t+f+a+d+h+ n+y+s+t+ w+ ddm+n+
+ a+y+n+k+h+ f+y+l+d+ oid b+e+d+ a+z+ e+d+d+ 4 m+y+l+y+a+r+d+
+ d+w+b+a+r+h+ c+f+r+ m+y+snw+d+. d+r+ z+b+a+n+ perl b+a+ a+s+t+f+a+d+h+
+ a+z+ DBI w+ DBD::Pg m+q+d+a+r+ oidr+a+ m+y+t+w+a+n+y+d+ b+h+ a+y+n+
+ snk+l+ a+s+t+x+r+a+g+ k+n+y+d+: b+e+d+ a+z+ a+g+r+a+y+ ()st->execute$
+ m+q+d+a+r+ oid d+r+ m+t+i+y+r+ sth->pg_oid_status$ dkx+y+r+h+
+ x+w+a+h+d+ snd+.
+
+ 4.15.3) aMیa+ t+w+a+b+e+ ()nextval w+ ()currval m+n+g+r+ b+h+
+ a+یg+a+d+ snr+a+یtj race b+r+a+ی s+a+یr+
+ کa+r+b+r+a+n+ m+ی snw+n+d+?+
+
+ x+یr+,+ a+s+t+f+a+d+h+ a+z+ a+یn+ t+w+a+b+e+
+ snr+a+یtj race r+a+ b+h+ w+g+w+d+ n+m+ی aMw+r+d+.
+
+ 4.15.4) tcr+a+ a+e+d+a+d+ s+r+یa+l+ی m+r+b+w+tj b+h+
+ t+r+a+کn+snh+a+ی abort snd+h+ m+g+d+d+a+:+ a+s+t+f+a+d+h+
+ n+m+ی snw+d+?+ tcr+a+ b+یn+ a+e+d+a+d+ s+r+یa+l+ی
+ یک f+a+c+l+h+ x+a+l+ی a+یg+a+d+ m+ی snw+d+?+
+
+ b+r+a+ی b+a+l+a+ b+r+d+n+ a+m+کa+n+ a+g+r+a+ی
+ h+m+z+m+a+n+ t+r+a+کn+snh+a+,+ a+e+d+a+d+ s+r+یa+l+ی
+ b+h+ m+hkdd a+g+r+a+ی t+r+a+کn+sn b+h+ aMn+h+a+
+ t+x+c+یc+ m+ی یa+b+d+ d+r+ a+یn+ hka+l+t+
+ a+gfr+ b+e+ddی a+z+ t+r+a+کn+snh+a+ abort snw+n+d+
+ b+یn+ a+e+d+a+d+ s+r+یa+l+ی a+s+t+f+a+d+h+ snd+h+
+ یک f+a+c+l+h+ x+a+l+ی b+h+ w+g+w+d+ m+ی
+ aMیd+.
+
+ 4.16) OID w+ TID tch+ h+s+t+n+d+?+
+
+ OID r+a+h+ hkl+ PostgreSQL b+r+a+ی d+a+snt+n+ یک
+ snn+a+s+h+ m+n+hkc+r+ b+h+ f+r+d+ b+r+a+ی h+r+ r+d+یf+
+ a+s+t+. h+r+ r+d+یf+ g+d+یd+ی کh+
+ a+یg+a+d+ m+ی snw+d+ یک OID m+n+hkc+r+ b+h+
+ f+r+d+ b+h+ aMn+ a+x+t+c+a+c+ m+ی یa+b+d+. t+m+a+m+
+ OIDh+a+یی کh+ d+r+ hkیn+ initdb
+ a+یg+a+d+ m+ی snw+n+d+ a+z+ 16384 کm+t+r+ h+s+t+n+d+
+ w+ OIDh+a+یی b+e+d+a+:+ t+w+l+یd+ m+ی snw+d+
+ a+z+ a+یn+ e+d+d+ b+z+r+gft+r+ x+w+a+h+d+ b+w+d+. n+کt+h+
+ m+h+m+ aMn+ a+s+t+ کh+ OIDh+a+ n+h+ t+n+h+a+ d+r+ یک
+ g+d+w+l+ snb+یh+ n+یs+t+n+d+ b+l+کh+ d+r+ کl+
+ p+a+یgfa+h+ d+a+d+h+ h+یtc d+w+ r+d+یf+ی
+ d+a+r+a+ی OID یکs+a+n+ n+x+w+a+h+d+ b+w+d+.
+
+ PostgreSQL a+z+ OID d+r+ s+یs+t+m+ d+a+x+l+ی x+w+d+
+ b+r+a+ی a+یg+a+d+ a+r+t+b+a+tj b+یn+
+ r+d+یf+h+a+ی g+d+a+w+l+ m+x+t+l+f+ a+s+t+f+a+d+h+
+ m+ی کn+d+. t+w+c+یh+ m+ی snw+d+ کh+
+ یک s+t+w+n+ a+z+ n+w+e+ OID b+r+a+ی dkx+یr+h+
+ a+یn+ f+یl+d+ d+r+ g+d+w+l+ a+یg+a+d+
+ کn+یd+. s+a+x+t+n+ یک n+m+a+یh+
+ b+r+a+ی a+یn+ f+یl+d+ b+a+e+tk d+s+t+r+s+ی
+ s+r+یe+t+r+ b+h+ aMn+ x+w+a+h+d+ snd+.
+
+ t+m+a+m+ p+a+یgfa+h+h+a+ی d+a+d+h+ d+r+ PostgreSQL
+ b+r+a+ی gfr+f+t+n+ OID g+d+یd+ a+z+ یک
+ n+a+hkیh+ m+r+کz+ی a+s+t+f+a+d+h+ m+ی
+ کn+d+. w+l+ی a+gfr+ b+x+w+a+h+یm+ OID r+a+ b+h+
+ r+w+sn d+یgfr+ی b+gfیr+یm+ w+ یa+
+ a+یn+کh+ d+r+ hkیn+ کp+ی کr+d+n+
+ یک g+d+w+l+ b+x+w+a+h+یm+ OIDh+a+ی
+ a+c+l+ی aMn+ t+i+ییr+ n+کn+d+ b+h+ r+w+sn
+ z+یr+ m+ی t+w+a+n+یm+ e+m+l+ کn+یm+:
+
+
CREATE TABLE new_table(mycol int);
SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table;
COPY tmp_table TO '/tmp/pgtable';
COPY new_table WITH OIDS FROM '/tmp/pgtable';
DROP TABLE tmp_table;
-OID یک عدد صحیح 4 بایتی است و بنابراین حداکثر مقدار آن 4 میلیارد خواهد بود و بعد
-از آن مقدار آن سرریز خواهد شد. البته تا کنون برای کسی این اتفاق نیفتاده است و
-تصمیم گرداندگان PostgreSQL آن است که قبل از آنکه این اتفاق رخ دهد این مشکل را
-برطرف کنند.
-TIDها برای شناسایی محل فیزیکی یک ردیف بر اساس بلوک و آفست می باشد. TIDها بعد از
-تغییر پیدا کردن یک ردیف و یا بازخوانی آن عوض می شوند. TIDها توسط نمایه ها
-استفاده می شوند.
-4.17) معني بعضي از ترمها و كلماتي كه در PostgreSQL استفاده ميشود چيست؟
-لیست برخی از ترمها و کلماتی که استفاده می شوند:
- table, relation, class :کلاس، رابطه، جدول
- row, record, tuple چندتایی، رکورد، ردیف
- column, field, attribute صفت، فیلد، ستون
- retrieve, select انتخاب، خواندن
- replace, updateبه روز کردن، جایگزینی
- append, insert درج، اضافه کردن
- OID, serial value مقدار سریال
- portal, cursor
- range variable, table name, table alias
-یک لیست عمومی از ترمهای مورد استفاده در پایگاه داده در آدرس
-http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.htm
-وجود دارد.
-4.18) چرا من خطاي "ERROR: Memory exhausted in AllocSetAlloc" ميگيرم؟
-این خطا احتمالاً یا به خاطر تمام شدن حافظه مجازی سیستم شماست و یا اینکه کرنل
-برای برنامه ها در مورد میزان استفاده از حافظه مجازی محدودیت اعمال کرده است. قبل
-از اجرای برنامه اصلی یکی از دستورات زیر را اجرا کنید.
+
+ OID یک e+d+d+ c+hkیhk 4 b+a+یt+ی a+s+t+
+ w+ b+n+a+b+r+a+یn+ hkd+a+کtkr+ m+q+d+a+r+ aMn+ 4
+ m+یl+یa+r+d+ x+w+a+h+d+ b+w+d+ w+ b+e+d+ a+z+ aMn+
+ m+q+d+a+r+ aMn+ s+r+r+یz+ x+w+a+h+d+ snd+. a+l+b+t+h+ t+a+
+ کn+w+n+ b+r+a+ی کs+ی a+یn+ a+t+f+a+q+
+ n+یf+t+a+d+h+ a+s+t+ w+ t+c+m+یm+ gfr+d+a+n+d+gfa+n+
+ PostgreSQL aMn+ a+s+t+ کh+ q+b+l+ a+z+ aMn+کh+ a+یn+
+ a+t+f+a+q+ r+x+ d+h+d+ a+یn+ m+snکl+ r+a+ b+r+tjr+f+
+ کn+n+d+.
+
+ TIDh+a+ b+r+a+ی snn+a+s+a+یی m+hkl+
+ f+یz+یکی یک r+d+یf+ b+r+
+ a+s+a+s+ b+l+w+ک w+ aMf+s+t+ m+ی b+a+snd+. TIDh+a+ b+e+d+
+ a+z+ t+i+ییr+ p+یd+a+ کr+d+n+ یک
+ r+d+یf+ w+ یa+ b+a+z+x+w+a+n+ی aMn+ e+w+dd
+ m+ی snw+n+d+. TIDh+a+ t+w+s+tj n+m+a+یh+ h+a+
+ a+s+t+f+a+d+h+ m+ی snw+n+d+.
+
+ 4.17) m+e+n+y+ b+e+ddy+ a+z+ t+r+m+h+a+ w+ k+l+m+a+t+y+ k+h+ d+r+
+ PostgreSQL a+s+t+f+a+d+h+ m+y+snw+d+ tcy+s+t+?+
+
+ l+یs+t+ b+r+x+ی a+z+ t+r+m+h+a+ w+ کl+m+a+t+ی
+ کh+ a+s+t+f+a+d+h+ m+ی snw+n+d+:
+ * table, relation, class :کl+a+s+,+ r+a+b+tjh+,+ g+d+w+l+
+ * row, record, tuple tcn+d+t+a+یی,+ r+کw+r+d+,+
+ r+d+یf+
+ * column, field, attribute c+f+t+,+ f+یl+d+,+ s+t+w+n+
+ * retrieve, select a+n+t+x+a+b+,+ x+w+a+n+d+n+
+ * replace, updateb+h+ r+w+z+ کr+d+n+,+
+ g+a+یgfz+یn+ی
+ * append, insert d+r+g+,+ a+dda+f+h+ کr+d+n+
+ * OID, serial value m+q+d+a+r+ s+r+یa+l+
+ * portal, cursor
+ * range variable, table name, table alias
+
+ یک l+یs+t+ e+m+w+m+ی a+z+ t+r+m+h+a+ی
+ m+w+r+d+ a+s+t+f+a+d+h+ d+r+ p+a+یgfa+h+ d+a+d+h+ d+r+ aMd+r+s+
+ http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
+ /glossary.htm w+g+w+d+ d+a+r+d+.
+
+ 4.18) tcr+a+ m+n+ x+tja+y+ "ERROR: Memory exhausted in AllocSetAlloc" m+y+
+ gfy+r+m+?+
+
+ a+یn+ x+tja+ a+hkt+m+a+l+a+:+ یa+ b+h+ x+a+tjr+ t+m+a+m+
+ snd+n+ hka+f+zHh+ m+g+a+z+ی s+یs+t+m+ snm+a+s+t+ w+
+ یa+ a+یn+کh+ کr+n+l+ b+r+a+ی
+ b+r+n+a+m+h+ h+a+ d+r+ m+w+r+d+ m+یz+a+n+ a+s+t+f+a+d+h+ a+z+
+ hka+f+zHh+ m+g+a+z+ی m+hkd+w+d+یt+ a+e+m+a+l+
+ کr+d+h+ a+s+t+. q+b+l+ a+z+ a+g+r+a+ی b+r+n+a+m+h+
+ a+c+l+ی یکی a+z+ d+s+t+w+r+a+t+ z+یr+
+ r+a+ a+g+r+a+ کn+یd+.
+
ulimit -d 262144
limit datasize 256m
-بسته به نوع شل یکی از این دستورات ممکن است با موفقیت اجرا شود. با اجرای آن دستور
-محدودیت حافظه مجازی برای برنامه ها برداشته شده و با این کار احتمالاً درخواستی که
-قبلاً خطا می داده است اجرا خواهد شد.
-4.19) از كجا تشخيص دهم كه ويرايش يا نسخه PostgreSQLيي كه من استفاده ميكنم چيست؟
-با اجرای دستور ()SELECT version
-4.20) چرا حین اجرای عملیات روی large-objectها خطای "invalid large obj
-descriptor"به وجود می آید؟
-شما باید قبل از شروع دستوراتی که با large-objectها کار می کنند BEGIN و بعد از
-آنها هم یک END بگذارید. در حال حاضر PostgreSQL هندل large-objectها را در زمان
-نهایی شدن تراکنش (commitشدن) می بندد. به همین دلیل اولین تلاش برای انجام هر کاری
-با هندل منجر به خطای invalid large obj descriptor خواهد شد. برای جلوگیری از این
-خطا حتماً باید از یک تراکنش استفاده کنید. این کار همانطور که قبلاً گفته شد با
-استفاده از قرار دادن BEGIN و END در ابتدا و انتهای دستورات انجام می شود.
-اگر این خطا را در حین استفاده از یک درایور ODBC دریافت کردید احتمالاً باید این
-دستور را اجرا کنید: set auto-commit off
-4.21) چگونه يك ستون ايجاد كنم كه مقدار زمان جاري را به عنوان مقدار پيشفرض داشته
-باشد؟
-از CURRENT_TIMESTAMP استفاده کنید در مثال زیر نحوه انجام این کار نشان داده شده
-است:
+
+ b+s+t+h+ b+h+ n+w+e+ snl+ یکی a+z+ a+یn+
+ d+s+t+w+r+a+t+ m+m+کn+ a+s+t+ b+a+ m+w+f+q+یt+ a+g+r+a+
+ snw+d+. b+a+ a+g+r+a+ی aMn+ d+s+t+w+r+ m+hkd+w+d+یt+
+ hka+f+zHh+ m+g+a+z+ی b+r+a+ی b+r+n+a+m+h+ h+a+
+ b+r+d+a+snt+h+ snd+h+ w+ b+a+ a+یn+ کa+r+ a+hkt+m+a+l+a+:+
+ d+r+x+w+a+s+t+ی کh+ q+b+l+a+:+ x+tja+ m+ی d+a+d+h+
+ a+s+t+ a+g+r+a+ x+w+a+h+d+ snd+.
+
+ 4.19) a+z+ k+g+a+ t+snx+y+c+ d+h+m+ k+h+ w+y+r+a+y+sn y+a+ n+s+x+h+
+ PostgreSQLy+y+ k+h+ m+n+ a+s+t+f+a+d+h+ m+y+k+n+m+ tcy+s+t+?+
+
+ b+a+ a+g+r+a+ی d+s+t+w+r+ ()SELECT version
+
+ 4.20) tcr+a+ hkیn+ a+g+r+a+ی e+m+l+یa+t+ r+w+ی
+ large-objecth+a+ x+tja+ی "invalid large obj descriptor"b+h+ w+g+w+d+
+ m+ی aMیd+?+
+
+ snm+a+ b+a+یd+ q+b+l+ a+z+ snr+w+e+ d+s+t+w+r+a+t+ی
+ کh+ b+a+ large-objecth+a+ کa+r+ m+ی کn+n+d+
+ BEGIN w+ b+e+d+ a+z+ aMn+h+a+ h+m+ یک END
+ b+gfdka+r+یd+. d+r+ hka+l+ hka+ddr+ PostgreSQL h+n+d+l+
+ large-objecth+a+ r+a+ d+r+ z+m+a+n+ n+h+a+یی snd+n+
+ t+r+a+کn+sn (commitsnd+n+) m+ی b+n+d+d+. b+h+
+ h+m+یn+ d+l+یl+ a+w+l+یn+ t+l+a+sn b+r+a+ی
+ a+n+g+a+m+ h+r+ کa+r+ی b+a+ h+n+d+l+ m+n+g+r+ b+h+
+ x+tja+ی invalid large obj descriptor x+w+a+h+d+ snd+.
+ b+r+a+ی g+l+w+gfیr+ی a+z+ a+یn+ x+tja+
+ hkt+m+a+:+ b+a+یd+ a+z+ یک t+r+a+کn+sn
+ a+s+t+f+a+d+h+ کn+یd+. a+یn+ کa+r+
+ h+m+a+n+tjw+r+ کh+ q+b+l+a+:+ gff+t+h+ snd+ b+a+ a+s+t+f+a+d+h+
+ a+z+ q+r+a+r+ d+a+d+n+ BEGIN w+ END d+r+ a+b+t+d+a+ w+
+ a+n+t+h+a+ی d+s+t+w+r+a+t+ a+n+g+a+m+ m+ی snw+d+.
+
+ a+gfr+ a+یn+ x+tja+ r+a+ d+r+ hkیn+ a+s+t+f+a+d+h+ a+z+
+ یک d+r+a+یw+r+ ODBC d+r+یa+f+t+
+ کr+d+یd+ a+hkt+m+a+l+a+:+ b+a+یd+ a+یn+
+ d+s+t+w+r+ r+a+ a+g+r+a+ کn+یd+: set auto-commit off
+
+ 4.21) tcgfw+n+h+ y+k+ s+t+w+n+ a+y+g+a+d+ k+n+m+ k+h+ m+q+d+a+r+ z+m+a+n+
+ g+a+r+y+ r+a+ b+h+ e+n+w+a+n+ m+q+d+a+r+ p+y+snf+r+dd d+a+snt+h+ b+a+snd+?+
+
+ a+z+ CURRENT_TIMESTAMP a+s+t+f+a+d+h+ کn+یd+ d+r+
+ m+tka+l+ z+یr+ n+hkw+h+ a+n+g+a+m+ a+یn+ کa+r+
+ n+sna+n+ d+a+d+h+ snd+h+ a+s+t+:
+
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-4.22) چرا "زير درخواستهايي" كه از IN استفاده ميكنند كند هستند؟
-در نسخه های قبل از 7.4 عمل الحاق زیر درخواست و درخواست اصلی به این صورت انجام می
-شود که نتایج به دست آمده از زیر درخواست به صورت ترتیبی برای هر ردیف اعمال می
-شود. اگر زیردرخواست ردیف های کمی را به عنوان خروجی برگرداند و درخواست بیرونی
-ردیف های زیادی را شامل شود استفاده از IN بهترین روش است در غیر اینصورت بهتر است
-از EXISTS استفاده شود
+ 4.22) tcr+a+ "z+y+r+ d+r+x+w+a+s+t+h+a+y+y+" k+h+ a+z+ IN a+s+t+f+a+d+h+
+ m+y+k+n+n+d+ k+n+d+ h+s+t+n+d+?+
+
+ d+r+ n+s+x+h+ h+a+ی q+b+l+ a+z+ 7.4 e+m+l+ a+l+hka+q+
+ z+یr+ d+r+x+w+a+s+t+ w+ d+r+x+w+a+s+t+ a+c+l+ی b+h+
+ a+یn+ c+w+r+t+ a+n+g+a+m+ m+ی snw+d+ کh+
+ n+t+a+یg+ b+h+ d+s+t+ aMm+d+h+ a+z+ z+یr+ d+r+x+w+a+s+t+
+ b+h+ c+w+r+t+ t+r+t+یb+ی b+r+a+ی h+r+ r+d+یf+
+ a+e+m+a+l+ m+ی snw+d+. a+gfr+ z+یr+d+r+x+w+a+s+t+
+ r+d+یf+ h+a+ی کm+ی r+a+ b+h+ e+n+w+a+n+
+ x+r+w+g+ی b+r+gfr+d+a+n+d+ w+ d+r+x+w+a+s+t+
+ b+یr+w+n+ی r+d+یf+ h+a+ی z+یa+d+ی
+ r+a+ sna+m+l+ snw+d+ a+s+t+f+a+d+h+ a+z+ IN b+h+t+r+یn+ r+w+sn
+ a+s+t+ d+r+ i+یr+ a+یn+c+w+r+t+ b+h+t+r+ a+s+t+ a+z+
+ EXISTS a+s+t+f+a+d+h+ snw+d+
+
SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
-به:
+
+ b+h+:
+
SELECT *
FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
-برای اجرای سریع این درخواست باید برای ستون subcol نمایه ایجاد شده باشد.
-در نسخه های بعد از 7.4 IN برای الحاق از همان تکنیک پیچیده مورد استفاده در
-دستورات معمولی استفاده می کند و بنابراین استفاده از آن نسبت به EXISTS ارجحیت
-دارد.
-4.23) چگونه ميتوانم يك الحاق خارجي (outer join) انجام دهم؟
-برای انجام الحاق خارجی به روش زیر عمل کنید:
+
+ b+r+a+ی a+g+r+a+ی s+r+یe+ a+یn+ d+r+x+w+a+s+t+
+ b+a+یd+ b+r+a+ی s+t+w+n+ subcol n+m+a+یh+
+ a+یg+a+d+ snd+h+ b+a+snd+.
+
+ d+r+ n+s+x+h+ h+a+ی b+e+d+ a+z+ 7.4 IN b+r+a+ی a+l+hka+q+
+ a+z+ h+m+a+n+ t+کn+یک p+یtcیd+h+
+ m+w+r+d+ a+s+t+f+a+d+h+ d+r+ d+s+t+w+r+a+t+ m+e+m+w+l+ی
+ a+s+t+f+a+d+h+ m+ی کn+d+ w+ b+n+a+b+r+a+یn+
+ a+s+t+f+a+d+h+ a+z+ aMn+ n+s+b+t+ b+h+ EXISTS a+r+g+hkیt+
+ d+a+r+d+.
+
+ 4.23) tcgfw+n+h+ m+y+t+w+a+n+m+ y+k+ a+l+hka+q+ x+a+r+g+y+ (outer join)
+ a+n+g+a+m+ d+h+m+?+
+
+ b+r+a+ی a+n+g+a+m+ a+l+hka+q+ x+a+r+g+ی b+h+ r+w+sn
+ z+یr+ e+m+l+ کn+یd+:
+
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-یا
+
+ یa+
+
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
-درخواستهای بالا t1.col , t2.col را به هم الحاق می کند و همچنین ردیفهای t1 که
-نظیر آنها در t2 نبوده است را نیز برمی گرداند. اگر از RIGHT استفاده شود نتیجه بر
-عکس است. یعنی ردیفهای t2 که نظیر آنها در t1 نباشد را نشان می دهد و اگر از FULL
-استفاده شود نتیجه هم شامل ردیفهای t1 است و هم شامل ردیفهای t2. استفاده از کلمه
-OUTER اختیاری است چرا که این کلمه به طور ضمنی در دستورهای LEFT, RIGHT, FULL وجود
-دارد.
-در نسخه های قبلی پایگاه داده می توانیم الحاق خارجی را به کمک دستورهای UNION, NOT
-IN شبیه سازی کنیم. این کار در مثال زیر نشان داده شده است:
+ d+r+x+w+a+s+t+h+a+ی b+a+l+a+ t1.col , t2.col r+a+ b+h+ h+m+
+ a+l+hka+q+ m+ی کn+d+ w+ h+m+tcn+یn+
+ r+d+یf+h+a+ی t1 کh+ n+zHیr+ aMn+h+a+ d+r+ t2
+ n+b+w+d+h+ a+s+t+ r+a+ n+یz+ b+r+m+ی gfr+d+a+n+d+. a+gfr+
+ a+z+ RIGHT a+s+t+f+a+d+h+ snw+d+ n+t+یg+h+ b+r+ e+کs+
+ a+s+t+. یe+n+ی r+d+یf+h+a+ی t2 کh+
+ n+zHیr+ aMn+h+a+ d+r+ t1 n+b+a+snd+ r+a+ n+sna+n+ m+ی
+ d+h+d+ w+ a+gfr+ a+z+ FULL a+s+t+f+a+d+h+ snw+d+ n+t+یg+h+ h+m+
+ sna+m+l+ r+d+یf+h+a+ی t1 a+s+t+ w+ h+m+ sna+m+l+
+ r+d+یf+h+a+ی t2. a+s+t+f+a+d+h+ a+z+ کl+m+h+ OUTER
+ a+x+t+یa+r+ی a+s+t+ tcr+a+ کh+ a+یn+
+ کl+m+h+ b+h+ tjw+r+ ddm+n+ی d+r+ d+s+t+w+r+h+a+ی
+ LEFT, RIGHT, FULL w+g+w+d+ d+a+r+d+.
+
+ d+r+ n+s+x+h+ h+a+ی q+b+l+ی p+a+یgfa+h+ d+a+d+h+
+ m+ی t+w+a+n+یm+ a+l+hka+q+ x+a+r+g+ی r+a+ b+h+
+ کm+ک d+s+t+w+r+h+a+ی UNION, NOT IN snb+یh+
+ s+a+z+ی کn+یm+. a+یn+ کa+r+ d+r+
+ m+tka+l+ z+یr+ n+sna+n+ d+a+d+h+ snd+h+ a+s+t+:
+
SELECT tab1.col1, tab2.col2
FROM tab1, tab2
WHERE tab1.col1 = tab2.col1
FROM tab1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
ORDER BY col1
-4.24) چگونه ميتوان درخواستهايي از چند پايگاه داده توليد كرد؟
-در حال حاضر این کار امکان پذیر نیست. PostgreSQL فقط امکان درخواست از پایگاه داده
-ای را می دهد که در حال حاضر به آن متصل باشید و نمیتوان به طور همزمان از دو
-پایگاه داده استفاده کرد. البته یک برنامه کاربردی خود می تواند به طور همزمان دو
-پایگاه داده را مورد استفاده قرار داده و نتایج را با هم ترکیب کند ولی نمی تواند
-در یک درخواست به هر دو پایگاه داده رجوع کند.
-4.25) چگونه خروجي يك تابع ميتواند چند رديف يا ستون باشد؟
-در نسخه 7.3 خروجی یک تابع می تواند چند ردیف یا چند ستون باشد. برای دیدن اطلاعات
-بیشتر به سایت زیر مراجعه
-کنید:http://techdocs.postgresql.org/guides/SetReturningFunctions
-4.26) در توابع PL/PgSQL چرا نميتوان با اطمينان جداول موقت را ايجاد يا حذف كرد؟
-PL/PgSQL محتوای توابع را ذخیره (cache) می کند. یک اثر بد جانبی این کار آن است که
-اگر در تابع از یک جدول موقت استفاده شود و بعداً آن جدول حذف و یک جدول جدید به
-جای آن ایجاد شود، در فراخوانی مجدد آن تابع، محتوای ذخیره شده تابع هنوز به جدول
-قدیمی اشاره می کند و بنابراین اجرای تابع با اشکال مواجه می شود. راه حل این مشکل
-آن است که برای جداول موقت از دستور EXECUTE استفاده شود که این کار سبب می شود که
-درخواست برای هر بار اجرا مجدداً پیمایش و تفسیر شود.
-4.27) چه گزينههايي براي تكرار (replication) وجود دارد؟
-There are several master/slave replication options available. These allow only
-the master to make database changes and the slave can only do database reads.
-The bottom of http://gborg.PostgreSQL.org/genpage?replication_research lists
-them. A multi-master replication solution is being worked on at
-http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-4.28) چه گزينههايي براي رمزنگاري وجود دارد؟
- contrib/pgcrypto شامل توابع رمزنگاری زیادی است که می توان از آنها در دستورات
- SQL استفاده کرد.
- برای رمز کردن ارتباط بین client و server پایگاه داده حتماً گزینه SSL را بر
- روی پایگاه داده فعال کنیم.
- در نسخه 7.3 به بعد کلمات عبور کاربران به طور اتوماتیک به صورت رمز شده ذخیره می
- شود ولی در نسخه های قبلی باید گزینه PASSWORD_ENCRYPTION را در
- فایلpostgresql.conf فعال کنیم.
- می توان پایگاههای داده را روی یک فایل سیستم رمزشده نگاهداری کرد
-
-
-Extending PostgreSQL
-5.1) من يك تابع نوشتهام. چگونه آن را در psql اجرا كنم؟ چرا با اجراي آن core
-dump ميگيرم؟
-دلایل مختلفی می تواند باعث بروز این مشکل شود. اما قبل از همه، تابع خود را به
-صورت جدا تست کنید.
-5.2) چگونه ميتوانم در توليد نوعها و توابع جديد و جالب براي PostgreSQL همكاري
-و مشاركت داشته باشم؟
-کد خود را به گروه پستی pgsql-hackers ارسال کنید.
-5.3) چگونه ميتوانم يك تابع به زبان C بنويسم كه خروجي آن يك tuple (چند تايي)
-باشد؟
-در نسخه های 7.3 به بعد یک تابع می تواند یک جدول را به عنوان خروجی برگرداند. این
-ویژگی در توابعی که به زبانهای C و PL/PgSQL نوشته میشوند به طور کامل وجود دارد.
-راهنما برنامه نویسان را مطالعه کنید. یک مثال از نحوه برگرداندن یک جدول به عنوان
-خروجی در contrib/tablefunc آمده است.
-5.4) من يك فايل منبع را عوض كرده ام چرا در عمليات كامپيل مجدد آن، تغيير ديده
-نميشود؟
-Makefile برای فایلهای include شده وابستگیها را به درستی نشان نمی دهد. برای
-اطمینان از اینکه فایلی که عوض کرده اید حتماً دوباره کامپیل میشود دستور make
-clean را اجرا کنید. اگر از کامپیلر gcc استفاده می کنید می توانید از گزینه
-enable-depend-- در موقع اجرای برنامه configure استفاده کنید این گزینه باعث می
-شود که وابستگیها به طور اتوماتیک تولید شود.
\ No newline at end of file
+ 4.24) tcgfw+n+h+ m+y+t+w+a+n+ d+r+x+w+a+s+t+h+a+y+y+ a+z+ tcn+d+
+ p+a+y+gfa+h+ d+a+d+h+ t+w+l+y+d+ k+r+d+?+
+
+ d+r+ hka+l+ hka+ddr+ a+یn+ کa+r+ a+m+کa+n+
+ p+dkیr+ n+یs+t+. PostgreSQL f+q+tj a+m+کa+n+
+ d+r+x+w+a+s+t+ a+z+ p+a+یgfa+h+ d+a+d+h+ a+ی r+a+
+ m+ی d+h+d+ کh+ d+r+ hka+l+ hka+ddr+ b+h+ aMn+ m+t+c+l+
+ b+a+snیd+ w+ n+m+یt+w+a+n+ b+h+ tjw+r+ h+m+z+m+a+n+ a+z+
+ d+w+ p+a+یgfa+h+ d+a+d+h+ a+s+t+f+a+d+h+ کr+d+. a+l+b+t+h+
+ یک b+r+n+a+m+h+ کa+r+b+r+d+ی x+w+d+ m+ی
+ t+w+a+n+d+ b+h+ tjw+r+ h+m+z+m+a+n+ d+w+ p+a+یgfa+h+ d+a+d+h+
+ r+a+ m+w+r+d+ a+s+t+f+a+d+h+ q+r+a+r+ d+a+d+h+ w+ n+t+a+یg+ r+a+
+ b+a+ h+m+ t+r+کیb+ کn+d+ w+l+ی n+m+ی
+ t+w+a+n+d+ d+r+ یک d+r+x+w+a+s+t+ b+h+ h+r+ d+w+
+ p+a+یgfa+h+ d+a+d+h+ r+g+w+e+ کn+d+.
+
+ 4.25) tcgfw+n+h+ x+r+w+g+y+ y+k+ t+a+b+e+ m+y+t+w+a+n+d+ tcn+d+ r+d+y+f+
+ y+a+ s+t+w+n+ b+a+snd+?+
+
+ d+r+ n+s+x+h+ 7.3 x+r+w+g+ی یک t+a+b+e+ m+ی
+ t+w+a+n+d+ tcn+d+ r+d+یf+ یa+ tcn+d+ s+t+w+n+ b+a+snd+.
+ b+r+a+ی d+یd+n+ a+tjl+a+e+a+t+ b+یsnt+r+ b+h+
+ s+a+یt+ z+یr+ m+r+a+g+e+h+
+ کn+یd+:http://techdocs.postgresql.org/guides/SetReturningF
+ unctions
+
+ 4.26) d+r+ t+w+a+b+e+ PL/PgSQL tcr+a+ n+m+y+t+w+a+n+ b+a+ a+tjm+y+n+a+n+
+ g+d+a+w+l+ m+w+q+t+ r+a+ a+y+g+a+d+ y+a+ hkdkf+ k+r+d+?+
+
+ PL/PgSQL m+hkt+w+a+ی t+w+a+b+e+ r+a+ dkx+یr+h+ (cache)
+ m+ی کn+d+. یک a+tkr+ b+d+ g+a+n+b+ی
+ a+یn+ کa+r+ aMn+ a+s+t+ کh+ a+gfr+ d+r+ t+a+b+e+
+ a+z+ یک g+d+w+l+ m+w+q+t+ a+s+t+f+a+d+h+ snw+d+ w+
+ b+e+d+a+:+ aMn+ g+d+w+l+ hkdkf+ w+ یک g+d+w+l+
+ g+d+یd+ b+h+ g+a+ی aMn+ a+یg+a+d+ snw+d+,+ d+r+
+ f+r+a+x+w+a+n+ی m+g+d+d+ aMn+ t+a+b+e+,+ m+hkt+w+a+ی
+ dkx+یr+h+ snd+h+ t+a+b+e+ h+n+w+z+ b+h+ g+d+w+l+
+ q+d+یm+ی a+sna+r+h+ m+ی کn+d+ w+
+ b+n+a+b+r+a+یn+ a+g+r+a+ی t+a+b+e+ b+a+ a+snکa+l+
+ m+w+a+g+h+ m+ی snw+d+. r+a+h+ hkl+ a+یn+ m+snکl+
+ aMn+ a+s+t+ کh+ b+r+a+ی g+d+a+w+l+ m+w+q+t+ a+z+
+ d+s+t+w+r+ EXECUTE a+s+t+f+a+d+h+ snw+d+ کh+ a+یn+
+ کa+r+ s+b+b+ m+ی snw+d+ کh+ d+r+x+w+a+s+t+
+ b+r+a+ی h+r+ b+a+r+ a+g+r+a+ m+g+d+d+a+:+ p+یm+a+یsn
+ w+ t+f+s+یr+ snw+d+.
+
+ 4.27) tch+ gfz+y+n+h+h+a+y+y+ b+r+a+y+ t+k+r+a+r+ (replication) w+g+w+d+
+ d+a+r+d+?+
+
+ There are several master/slave replication options available. These
+ allow only the master to make database changes and the slave can only
+ do database reads. The bottom of
+ http://gborg.PostgreSQL.org/genpage?replication_research lists them. A
+ multi-master replication solution is being worked on at
+ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
+
+ 4.28) tch+ gfz+y+n+h+h+a+y+y+ b+r+a+y+ r+m+z+n+gfa+r+y+ w+g+w+d+ d+a+r+d+?+
+
+ * contrib/pgcrypto sna+m+l+ t+w+a+b+e+ r+m+z+n+gfa+r+ی
+ z+یa+d+ی a+s+t+ کh+ m+ی t+w+a+n+ a+z+
+ aMn+h+a+ d+r+ d+s+t+w+r+a+t+ SQL a+s+t+f+a+d+h+ کr+d+.
+ * b+r+a+ی r+m+z+ کr+d+n+ a+r+t+b+a+tj b+یn+ client
+ w+ server p+a+یgfa+h+ d+a+d+h+ hkt+m+a+:+ gfz+یn+h+
+ SSL r+a+ b+r+ r+w+ی p+a+یgfa+h+ d+a+d+h+ f+e+a+l+
+ کn+یm+.
+ * d+r+ n+s+x+h+ 7.3 b+h+ b+e+d+ کl+m+a+t+ e+b+w+r+
+ کa+r+b+r+a+n+ b+h+ tjw+r+ a+t+w+m+a+t+یک b+h+
+ c+w+r+t+ r+m+z+ snd+h+ dkx+یr+h+ m+ی snw+d+
+ w+l+ی d+r+ n+s+x+h+ h+a+ی q+b+l+ی b+a+یd+
+ gfz+یn+h+ PASSWORD_ENCRYPTION r+a+ d+r+
+ f+a+یl+postgresql.conf f+e+a+l+ کn+یm+.
+ * m+ی t+w+a+n+ p+a+یgfa+h+h+a+ی d+a+d+h+ r+a+
+ r+w+ی یک f+a+یl+ s+یs+t+m+
+ r+m+z+snd+h+ n+gfa+h+d+a+r+ی کr+d+
+ _________________________________________________________________
+
+ Extending PostgreSQL
+
+ 5.1) m+n+ y+k+ t+a+b+e+ n+w+snt+h+a+m+. tcgfw+n+h+ aMn+ r+a+ d+r+ psql
+ a+g+r+a+ k+n+m+?+ tcr+a+ b+a+ a+g+r+a+y+ aMn+ core dump m+y+gfy+r+m+?+
+
+ d+l+a+یl+ m+x+t+l+f+ی m+ی t+w+a+n+d+ b+a+e+tk
+ b+r+w+z+ a+یn+ m+snکl+ snw+d+. a+m+a+ q+b+l+ a+z+ h+m+h+,+
+ t+a+b+e+ x+w+d+ r+a+ b+h+ c+w+r+t+ g+d+a+ t+s+t+ کn+یd+.
+
+ 5.2) tcgfw+n+h+ m+y+t+w+a+n+m+ d+r+ t+w+l+y+d+ n+w+e+h+a+ w+ t+w+a+b+e+
+ g+d+y+d+ w+ g+a+l+b+ b+r+a+y+ PostgreSQL h+m+k+a+r+y+ w+ m+sna+r+k+t+
+ d+a+snt+h+ b+a+snm+?+
+
+ کd+ x+w+d+ r+a+ b+h+ gfr+w+h+ p+s+t+ی pgsql-hackers
+ a+r+s+a+l+ کn+یd+.
+
+ 5.3) tcgfw+n+h+ m+y+t+w+a+n+m+ y+k+ t+a+b+e+ b+h+ z+b+a+n+ C b+n+w+y+s+m+
+ k+h+ x+r+w+g+y+ aMn+ y+k+ tuple (tcn+d+ t+a+y+y+) b+a+snd+?+
+
+ d+r+ n+s+x+h+ h+a+ی 7.3 b+h+ b+e+d+ یک t+a+b+e+
+ m+ی t+w+a+n+d+ یک g+d+w+l+ r+a+ b+h+ e+n+w+a+n+
+ x+r+w+g+ی b+r+gfr+d+a+n+d+. a+یn+ w+یzjgfی
+ d+r+ t+w+a+b+e+ی کh+ b+h+ z+b+a+n+h+a+ی C w+
+ PL/PgSQL n+w+snt+h+ m+یsnw+n+d+ b+h+ tjw+r+ کa+m+l+
+ w+g+w+d+ d+a+r+d+. r+a+h+n+m+a+ b+r+n+a+m+h+ n+w+یs+a+n+ r+a+
+ m+tja+l+e+h+ کn+یd+. یک m+tka+l+ a+z+ n+hkw+h+
+ b+r+gfr+d+a+n+d+n+ یک g+d+w+l+ b+h+ e+n+w+a+n+
+ x+r+w+g+ی d+r+ contrib/tablefunc aMm+d+h+ a+s+t+.
+
+ 5.4) m+n+ y+k+ f+a+y+l+ m+n+b+e+ r+a+ e+w+dd k+r+d+h+ a+m+ tcr+a+ d+r+
+ e+m+l+y+a+t+ k+a+m+p+y+l+ m+g+d+d+ aMn+,+ t+i+y+y+r+ d+y+d+h+ n+m+y+
+ snw+d+?+
+
+ Makefile b+r+a+ی f+a+یl+h+a+ی include snd+h+
+ w+a+b+s+t+gfیh+a+ r+a+ b+h+ d+r+s+t+ی n+sna+n+ n+m+ی
+ d+h+d+. b+r+a+ی a+tjm+یn+a+n+ a+z+ a+یn+کh+
+ f+a+یl+ی کh+ e+w+dd کr+d+h+ a+یd+
+ hkt+m+a+:+ d+w+b+a+r+h+ کa+m+p+یl+ m+یsnw+d+
+ d+s+t+w+r+ make clean r+a+ a+g+r+a+ کn+یd+. a+gfr+ a+z+
+ کa+m+p+یl+r+ gcc a+s+t+f+a+d+h+ m+ی
+ کn+یd+ m+ی t+w+a+n+یd+ a+z+ gfz+یn+h+
+ enable-depend-- d+r+ m+w+q+e+ a+g+r+a+ی b+r+n+a+m+h+ configure
+ a+s+t+f+a+d+h+ کn+یd+ a+یn+ gfz+یn+h+ b+a+e+tk
+ m+ی snw+d+ کh+ w+a+b+s+t+gfیh+a+ b+h+ tjw+r+
+ a+t+w+m+a+t+یک t+w+l+یd+ snw+d+.
PostgreSQL Data Base Management System
- Portions copyright (c) 1996-2004, PostgreSQL Global Development Group
+ Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
Portions Copyright (c) 1994-6 Regents of the University of California
Permission to use, copy, modify, and distribute this software and its
Pour changer le type de données d'une colonne, faites :
BEGIN;
ALTER TABLE table ADD COLUMN nouvelle_colonne nouveau_type_de_donnees;
- UPDATE table SET nouvelle_colonne = CAST(ancienne_colonne AS nouveau_type_d
-e_donnees);
+ UPDATE table SET nouvelle_colonne = CAST(ancienne_colonne AS nouveau_type_de_donnees);
ALTER TABLE table DROP COLUMN ancienne_colonne;
COMMIT;
données ?
Les limites sont :
- Taille maximum pour une base de données illimitée (il existe des bases
-de 32 To)
+ Taille maximum pour une base de données illimitée (il existe des basesde 32 To)
Taille maximum pour une table 32 To
Taille maximum pour une ligne 1,6 To
Taille maximum pour un champ 1 Go
Nombre maximum de lignes dans une table illimité
- Nombre maximum de colonnes dans une table 250-1600, selon le type de colo
-nnes
+ Nombre maximum de colonnes dans une table 250-1600, selon le type de colonnes
Nombre maximum d'index sur une table illimité
Bien sûr, ces valeurs ne sont pas vraiment illimitée, elles sont
----------------------------------------
60 octets par ligne
- La taille des pages de données dans PostgreSQL est de 8192 octets (8 KO), do
-nc :
+ La taille des pages de données dans PostgreSQL est de 8192 octets (8 KO), donc :
8192 octets par page
- ---------------------- = 136 lignes par page de base de données (arrondi à
- l'entier inférieur)
+ ---------------------- = 136 lignes par page de base de données (arrondi à l'entier inférieur)
60 octets par ligne
100000 lignes de données
- ------------------------- = 735 pages de base de données (arrondi à l'enti
-er supérieur)
+ ------------------------- = 735 pages de base de données (arrondi à l'entier supérieur)
128 lignes par page
-735 pages de base de données * 8192 octets par page = 6 021 120 octets (6,4 M
-o)
+735 pages de base de données * 8192 octets par page = 6 021 120 octets (6,4 Mo)
Les index utilisent moins d'espace, mais ils contiennent les données
indexées, ils peuvent donc également être grands.
table d'exemple de la section 4.15.1, un exemple dans un
pseudo-langage ressemblerait à ceci :
nouvelle_id = execute("SELECT nextval('personne_id_seq')");
- execute("INSERT INTO personne (id, nom) VALUES (nouvelle_id, 'Blaise Pascal
-')");
+ execute("INSERT INTO personne (id, nom) VALUES (nouvelle_id, 'Blaise Pascal')");
Vous pourriez ensuite utiliser la nouvelle valeur stockée dans
nouvelle_id avec d'autres requêtes (c'est-à-dire en tant que clé
en quelque chose d'autre ou si vous voulez faire une copie de la table
avec les OID originaux, il n'y a pas de raisons pour ne pas le faire :
CREATE TABLE nouvelle_table (macolonne int);
- SELECT oid AS ancienne_oid, macolonne INTO table_temporaire FROM ancienne_t
-able;
+ SELECT oid AS ancienne_oid, macolonne INTO table_temporaire FROM ancienne_table;
COPY table_temporaire FROM '/tmp/tablepg';
COPY nouvelle_table WITH OIDS FROM '/tmp/tablepg';
DROP TABLE table_temporaire;
to:
SELECT *
FROM table
- WHERE EXISTS (SELECT souscolonne FROM soustable WHERE souscolonne = colonne
-);
+ WHERE EXISTS (SELECT souscolonne FROM soustable WHERE souscolonne = colonne);
Pour que ceci soit rapide, souscolonne doit être une colonne indexée.
Wenn der postmaster hingegen läuft, führen Sie psql in einem Fenster
aus, ermitteln Sie die Prozessnummer (PID) des postgres-Prozesses, der
- von psql verwendet wird (mit
-SELECT pg_backend_pid()
-
- ). Binden Sie einen Debugger an diese PID und führen Sie Abfragen von
- psql aus. Wenn Sie den postgres-Serverstart analysieren wollen, setzen
- Sie die Umgebungsvariable PGOPTIONS="-W n", und starten Sie dann psql.
- Dies verzögert den Start um n Sekunden, damit Sie einen Debugger an
- den Prozess binden und ggf. Breakpoints setzen können, bevor die
+ von psql verwendet wird (mit SELECT pg_backend_pid()). Binden Sie
+ einen Debugger an diese PID und führen Sie Abfragen von psql aus. Wenn
+ Sie den postgres-Serverstart analysieren wollen, setzen Sie die
+ Umgebungsvariable PGOPTIONS="-W n", und starten Sie dann psql. Dies
+ verzögert den Start um n Sekunden, damit Sie einen Debugger an den
+ Prozess binden und ggf. Breakpoints setzen können, bevor die
Startsequenz begonnen wird.
Es gibt verschiedene Einstellungen (die log_*-Gruppe), die diverse
-PostgreSQL(¥Ý¥¹¥È¥°¥ì¥¹¡¦¥¥å¡¼¡¦¥¨¥ë)¤Ë¤Ä¤¤¤Æ¤è¤¯¤¢¤ë¼ÁÌä¤È¤½¤Î²òÅú(FAQ)
-¸¶Ê¸ºÇ½ª¹¹¿·Æü: Sun Jan 9 14:44:04 EST 2005
-
-¸½ºß¤Î°Ý»ý´ÉÍý¼Ô: Bruce Momjian (pgman@candle.pha.pa.us)
-Maintainer of Japanese Translation: Jun Kuwamura (juk at PostgreSQL.jp)
-
-¤³¤Îʸ½ñ¤ÎºÇ¿·ÈÇ¤Ï "http://www.postgresql.org/files/documentation/faqs/
-FAQ.html"> http://www.postgresql.org/files/documentation/faqs/FAQ.html
-
-¤Ç¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
-
-¥×¥é¥Ã¥È¥Û¡¼¥à¤ËÆÃͤμÁÌä¤Ë¤Ä¤¤¤Æ¤Ï: "http://www.postgresql.org/docs/faq/">
-http://www.postgresql.org/docs/faq/
-
-
-¤Ë²óÅú¤¬¤¢¤ê¤Þ¤¹¡£
-
-(°Ê²¼¡¢Ìõ¼Ô¤Ë¤è¤ëÃí¼á¤ò [ÌõÃí¡§ ¤È ] ¤È¤Ç°Ï¤ó¤Çµ¤·¤Þ¤¹¡£)
+ PostgreSQL(¥Ý¥¹¥È¥°¥ì¥¹¡¦¥¥å¡¼¡¦¥¨¥ë)¤Ë¤Ä¤¤¤Æ¤è¤¯¤¢¤ë¼ÁÌä¤È¤½¤Î²òÅú(FAQ)
+
+ ¸¶Ê¸ºÇ½ª¹¹¿·Æü: Sun Jan 9 14:44:04 EST 2005
+
+ ¸½ºß¤Î°Ý»ý´ÉÍý¼Ô: Bruce Momjian (pgman@candle.pha.pa.us)
+ Maintainer of Japanese Translation: Jun Kuwamura (juk at
+ PostgreSQL.jp)
+
+ ¤³¤Îʸ½ñ¤ÎºÇ¿·ÈǤÏ
+ http://www.postgresql.org/files/documentation/faqs/FAQ.html
+ ¤Ç¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+
+ ¥×¥é¥Ã¥È¥Û¡¼¥à¤ËÆÃͤμÁÌä¤Ë¤Ä¤¤¤Æ¤Ï:
+ http://www.postgresql.org/docs/faq/
+ ¤Ë²óÅú¤¬¤¢¤ê¤Þ¤¹¡£
+(°Ê²¼¡¢Ìõ¼Ô¤Ë¤è¤ëÃí¼á¤ò [ÌõÃí¡§ ¤È ] ¤È¤Ç°Ï¤ó¤Çµ¤·¤Þ¤¹¡£)
[ÌõÃí¡§
ÆüËܸìÈÇÀ½ºî¤Ë¤Ä¤¤¤Æ¤Î¥á¥â¤ÏºÇ¸åÈø¤Ø°ÜÆ°¤·¤Þ¤·¤¿¡£
http://www.rccm.co.jp/~juk/pgsql/
http://www.linux.or.jp/JF/
- ¤³¤ÎÏÂÌõ¤Ë¤Ä¤¤¤Æ¤ªµ¤¤Å¤¤ÎÅÀ¤Ï(juk at PostgreSQL.jp)¤Þ¤Ç¥á¡¼¥ë¤Ç¤ª´ó¤»²¼¤µ¤¤¡£
+ ¤³¤ÎÏÂÌõ¤Ë¤Ä¤¤¤Æ¤ªµ¤¤Å¤¤ÎÅÀ¤Ï(juk at PostgreSQL.jp)¤Þ¤Ç¥á¡¼¥ë¤Ç¤ª´ó¤»²¼¤µ¤¤¡£
2005ǯ01·î12Æü ·¬Â¼ ½á
]
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- °ìÈÌŪ¤Ê¼ÁÌä
-
-1.1) PostgreSQL¤È¤Ï²¿¤Ç¤¹¤«¡©²¿¤ÈÆɤߤޤ¹¤«¡©
-1.2) PostgreSQL¤ÎÃøºî¸¢¤Ï¤É¤¦¤Ê¤Ã¤Æ¤Þ¤¹¤«¡©
-1.3) PostgreSQL¤ÎÆ°ºî¤¹¤ëUnix¥×¥é¥Ã¥È¥Û¡¼¥à¤Ï¡©
-1.4) Unix°Ê³°¤Î°Ü¿¢ÈǤǻȤ¨¤ë¤â¤Î¤Ï¡©
-1.5) PostgreSQL¤Ï¤É¤³¤«¤éÆþ¼ê¤Ç¤¤Þ¤¹¤«¡©
-1.6) ¥µ¥Ý¡¼¥È¤Ï¤É¤³¤Ç¼õ¤±¤é¤ì¤Þ¤¹¤«¡©
-1.7) ºÇ¿·ÈǤϤɤì¤Ç¤¹¤«
-1.8) ¤É¤Î¤è¤¦¤Êʸ½ñ¤¬¤¢¤ê¤Þ¤¹¤«¡©
-1.9) ´ûÃΤΥХ°¤ä̤¤À̵¤¤µ¡Ç½¤Ï¤É¤¦¤ä¤Ã¤Æ¸«¤Ä¤±¤Þ¤¹¤«¡©
-1.10) SQL¤Ï¤É¤¦¤¹¤ì¤Ð³Ø¤Ù¤Þ¤¹¤«¡©
-1.11) PostgreSQL¤ÏÀ¾Îñ2000ǯÌäÂê(Y2K)¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¤«¡©
-1.12) ³«È¯¥Á¡¼¥à¤Ë¤Ï¤É¤Î¤è¤¦¤Ë»²²Ã¤·¤Þ¤¹¤«¡©
-1.13) ¥Ð¥°¥ì¥Ý¡¼¥È¤Ï¤É¤Î¤è¤¦¤Ëȯ¿®¤·¤Þ¤¹¤«¡©
-1.14) ¾¤ÎDBMS¤ÈÈæ¤Ù¤ÆPostgreSQL¤Ï¤É¤¦¤Ê¤Î¤Ç¤¹¤«¡©
-1.15) PostgreSQL¤ò»ñ¶âÌ̤DZç½õ¤¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤è¤¤¤Ç¤¹¤«¡©
-
- ¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¤¥¢¥ó¥È¤Î¼ÁÌä
-
-2.1) PostgreSQL ¤Î ODBC ¥É¥é¥¤¥Ð¡¼¤Ï¤¢¤ê¤Þ¤¹¤«¡©
-2.2) PostgreSQL ¤ò Web ¥Ú¡¼¥¸¤ÈÏ¢·È¤µ¤»¤ë¤Ë¤Ï¤É¤ó¤Ê¥Ä¡¼¥ë¤¬¤¢¤ê¤Þ¤¹¤«¡©
-2.3) PostgreSQL ¤Ë¥°¥é¥Õ¥£¥«¥ë¡¦¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï¤¢¤ê¤Þ¤¹¤«¡©
-2.4) ¤É¤Î¤è¤¦¤Ê¸À¸ì¤Ç PostgreSQL ¤ÈÄÌ¿®¤Ç¤¤¹¤«¡©
-
- ´ÉÍý¾å¤Î¼ÁÌä
-
-3.1) ¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð /usr/local/pgsql °Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¤Þ¤¹¤«¡©
-3.2) postmaster ¤òÁö¤é¤»¤ë¤È¡¢ Bad System Call ¤È¤«¥³¥¢¡¦¥À¥ó¥×¤·¤¿¤È¤Î¥á¥Ã¥»¡¼
-¥¸¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
-3.3) postmaster ¤òÁö¤é¤»¤è¤¦¤È¤¹¤ë¤È¡¢ IpcMemoryCreate ¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹
-¤«¡©
-3.4) postmaster¤òÁö¤é¤»¤è¤¦¤È¤¹¤ë¤È¡¢ IpcSemaphoreCreate ¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç
-¤¹¤«¡©
-3.5) ¾¤Î¥Û¥¹¥È¤«¤é¤ÎÀܳ¤Ï¤É¤Î¤è¤¦¤ËÀ©¸æ¤·¤Þ¤¹¤«¡©
-3.6) ¤è¤êÎɤ¤Àǽ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¨¥ó¥¸¥ó¤ò¤É¤Î¤è¤¦¤ËÄ´À°¤¹¤ì¤ÐÎÉ
-¤¤¤Ç¤¹¤«¡©
-3.7) ¤É¤Î¤è¤¦¤Ê¥Ç¥Ð¥°µ¡Ç½¤¬»È¤¨¤Þ¤¹¤«¡©
-3.8) Àܳ¤·¤è¤¦¤È¤¹¤ë¤È¤¤Ë 'Sorry, too many clients' ¤¬½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-3.9) pgsql_tmp ¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¤Ï²¿¤¬¤¢¤ê¤Þ¤¹¤«¡©
-3.10) PostgreSQL¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ò¥¢¥Ã¥×¥Ç¡¼¥È¤¹¤ë¤Î¤Ë¥À¥ó¥×¤È¥ê¥¹¥È¥¢¤ò¤·¤Ê
-¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-3.11) ¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤Ï¤É¤ó¤Ê¥³¥ó¥Ô¥å¡¼¥¿¤ò»È¤¨¤Ð¤è¤¤¤Ç¤¹¤«¡©
-
- Áàºî¾å¤Î¼ÁÌä
-
-4.1) ¥Ð¥¤¥Ê¥ê¡¦¥«¡¼¥½¥ë¤ÈÄ̾參¡¼¥½¥ë¤È¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
-4.2) ºÇ½é¤Î¿ô¥í¥¦¤Î¤ß¤ò select ¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©¥é¥ó¥À¥à¤Ê¥í¥¦¡©
-4.3) ¥Æ¡¼¥Ö¥ë¤ä¤½¤Î¾¤Î¾ðÊó¤Î¥ê¥¹¥È¤ò psql ¤Ç¸«¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-4.4) ¥Æ¡¼¥Ö¥ë¤«¤é¥«¥é¥à¤Îºï½ü¡¢¤¢¤ë¤¤¤Ï¡¢¥Ç¡¼¥¿·¿¤òÊѹ¹¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-4.5) ¥í¥¦¡¢¥Æ¡¼¥Ö¥ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º¤Ï¡©
-4.6) °ìÈÌŪ¤Ê¥Æ¥¥¹¥È¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¥£¥¹¥¯ÍÆ
-Î̤ϤɤΤ¯¤é¤¤É¬ÍפǤ¹¤«¡©
-4.7) ÄêµÁ¤µ¤ì¤¿¥Æ¡¼¥Ö¥ë¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¢¤ª¤è¤Ó¡¢¥æ¡¼¥¶¤ò¤É¤Î¤è¤¦¤Ë
-¤·¤Æ¸«¤Ä¤±½Ð¤·¤Þ¤¹¤«¡©
-4.8) Ì䤤¹ç¤ï¤»¤¬ÃÙ¤¤¤¦¤¨¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¤¤¤ëÍͻҤ¬¤¢¤ê¤Þ¤»¤ó¡£¤Ê¤¼¤Ç¤¹¤«
-¡©
-4.9) Ì䤤¹ç¤ï¤»¥ª¥Ö¥Æ¥£¥Þ¥¤¥¶¤¬¤É¤Î¤è¤¦¤ËÌ䤤¹ç¤ï¤»¤òɾ²Á¤¹¤ë¤«¤ò¸«¤ë¤Ë¤Ï¤É¤¦¤·
-¤Þ¤¹¤«¡©
-4.10) R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤È¤Ï²¿¤Ç¤¹¤«¡©
-4.11) °äÅÁŪÌ䤤¹ç¤ï¤»ºÇŬ²½¤È¤Ï²¿¤Ç¤¹¤«¡©
-4.12) Àµµ¬É½¸½¤Ç¤Î¸¡º÷¤äÂçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤Àµµ¬É½¸½¸¡º÷¤Ï¤É¤Î¤è¤¦¤Ë¼Â
-¸½¤·¤Þ¤¹¤«¡©Âçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Î¤¿¤á¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¤É¤Î¤è¤¦¤Ë»È
-¤¤¤Þ¤¹¤«¡©
-4.13) Ì䤤¹ç¤ï¤»¤ÎÃæ¤Ç¡¢¥Õ¥£¡¼¥ë¥É¤¬ NULL ¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ð¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«
-¡©
-4.14) ¿§¡¹¤Êʸ»ú·¿¤Î¤½¤ì¤¾¤ì¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
-4.15.1) ÄÌÈÖ(serial)¡¿¼«Æ°Áýʬ¥Õ¥£¡¼¥ë¥É¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
-4.15.2) SERIAL¥Ç¡¼¥¿·¿¤ËÁÞÆþ¤µ¤ì¤ëÃͤϡ¢¤É¤¦¤¹¤ì¤ÐÆÀ¤é¤ì¤Þ¤¹¤«¡©
-4.15.3) currval() ¤Ï¾¤Î¥æ¡¼¥¶¤È¤Î¶¥¹ç¾õÂ֤˴٤뤳¤È¤Ï¤Ê¤¤¤Ç¤¹¤«¡©
-4.15.4) ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÃæÃǤ·¤¿¤È¤¤Ë¤â¤¦¤¤¤Á¤É¥·¡¼¥±¥ó¥¹Èֹ椬»È¤ï¤ì¤Ê¤¤¤Î
-¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¥·¡¼¥±¥ó¥¹¡¿SERIAL¥«¥é¥à¤Ë¶õ¤¤¬¤¢¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-4.16) OID ¤È¤Ï²¿¤Ç¤¹¤«¡© TID ¤È¤Ï²¿¤Ç¤¹¤«¡©
-4.17) PostgreSQL ¤Ç»È¤ï¤ì¤ë¤¤¤¯¤Ä¤«¤ÎÍѸì¤Î°ÕÌ£¤Ï²¿¤Ç¤¹¤«¡©
-4.18) ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ "ERROR: Memory exhausted in AllocSetAlloc()"¤¬½Ð¤ë¤Î¤Ï¤Ê
-¤¼¤Ç¤¹¤«¡©
-4.19) ¤É¤Î¥Ð¡¼¥¸¥ç¥ó¤Î PostgreSQL ¤òÁö¤é¤»¤Æ¤¤¤ë¤Î¤«¤òÄ´¤Ù¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-4.20) ¥é¡¼¥¸¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ç¡¢invalid large obj descriptor¤È½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç
-¤¹¤«¡©
-4.21) ¸½ºß¤Î»þ¹ï¤¬¥Ç¥Õ¥©¥ë¥È¤È¤Ê¤ë¤è¤¦¤Ê¥«¥é¥à¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
-4.22) ¤Ê¤¼¡¢IN¤ò»È¤¦ÉûÌ䤤¹ç¤ï¤»¤¬¤È¤Æ¤âÃÙ¤¤¤Î¤Ç¤¹¤«¡©
-4.23) ³°Éô·ë¹ç(outer join)¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤·¤Þ¤¹¤«?
-4.24) Ê£¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¦Ì䤤¹ç¤ï¤»¤Ï¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤Ç¤¤Þ¤¹¤«¡©
-4.25) ´Ø¿ô¤ÇÊ£¿ô¤Î¥í¥¦¤Þ¤¿¤Ï¥«¥é¥à¤òÊÖ¤¹¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-4.26) ¤Ê¤¼¡¢PL/PgSQL ´Ø¿ô¤ÎÃ椫¤é°ì»þ¥Æ¡¼¥Ö¥ë¤ò³Î¼Â¤Ë create/drop ¤¹¤ë¤³¤È¤¬¤Ç
-¤¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©
-4.27) ¤É¤Î¤è¤¦¤Ê°Å¹æ²½¥ª¥×¥·¥ç¥ó¤òÍøÍѤǤ¤Þ¤¹¤«?
-
- PostgreSQL¤Î³ÈÄ¥¤Ë¤Ä¤¤¤Æ¤Î¼ÁÌä
-
-5.1) ¼«Ê¬¤Ç½ñ¤¤¤¿¥æ¡¼¥¶ÄêµÁ´Ø¿ô¤ò psql ¤ÎÃæ¤Ç¼Â¹Ô¤¹¤ë¤È¥³¥¢¡¦¥À¥ó¥×¤·¤Æ¤·¤Þ¤¦¤Î
-¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-5.2) PostgreSQL ÍѤ˽ñ¤¤¤¿¤Á¤ç¤Ã¤ÈÁÇŨ¤Ê¿·¤·¤¤·¿¤ä´Ø¿ô¤òÄ󶡤·¤Æ¥×¥í¥¸¥§¥¯¥È¤Ë
-¹×¸¥¤·¤¿¤¤¤Î¤Ç¤¹¤¬¡©
-5.3) ¥¿¥×¥ë¤òÊÖ¤¹ C¸À¸ì¤Î´Ø¿ô¤Ï¤É¤Î¤è¤¦¤Ë½ñ¤¤Þ¤¹¤«¡©
-5.4) ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤Þ¤·¤¿¡£ºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤âÊѲ½¤¬¸«¤é¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼
-¤Ç¤¹¤«¡©
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- °ìÈÌŪ¤Ê¼ÁÌä
-
-1.1) PostgreSQL ¤È¤Ï²¿¤Ç¤¹¤«¡©²¿¤ÈÆɤߤޤ¹¤«¡©
-
-PostgreSQL¤ÏPost-Gres-Q-L(¥Ý¥¹¥È - ¥°¥ì¥¹ - ¥¥å¡¼ - ¥¨¥ë) ¤Èȯ²»¤·¤Þ¤¹¡£
-
-PostgreSQL ¤Ï¼¡À¤Âå DBMS ¸¦µæÍѤΥץí¥È¥¿¥¤¥×¤Ç¤¢¤Ã¤¿ POSTGRES ¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý
-¥·¥¹¥Æ¥à¤Î²þÎÉÈǤǤ¹¡Ê¤³¤Î¤¿¤á¡¢º£¤Ç¤â¤È¤¤É¤ "Postgres" ¤È¸Æ¤Ð¤ì¤ë¤³¤È¤¬¤¢¤ê
-¤Þ¤¹¡Ë¡£PostgreSQL ¤Ï POSTGRES ¤Î¶¯ÎϤʥǡ¼¥¿¡¦¥â¥Ç¥ë¤ÈËÉ٤ʥǡ¼¥¿¡¦¥¿¥¤¥×(·¿)
-¤òÊÝ»ý¤·¤Ê¤¬¤é¡¢POSTGRES ¤Ç»È¤ï¤ì¤¿ PostQuel Ì䤤¹ç¤ï¤»¸À¸ì¤ò¡¢³ÈÄ¥¤·¤¿ SQL ¤Î
-¥µ¥Ö¥»¥Ã¥È¤ËÃÖ¤´¹¤¨¤Æ¤¤¤Þ¤¹¡£PostgreSQL ¤Ï̵ÎÁ¤Ç´°Á´¤Ê¥½¡¼¥¹¤òÍøÍѤǤ¤Þ¤¹¡£
-
-PostgreSQL ¤Î³«È¯¤Ï¡¢PostgreSQL ³«È¯¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ë»²²Ã¤·¤Æ¤¤¤ë³«È¯¼Ôã¤Î¥Á
-¡¼¥à¤Ç¤¹¤Ù¤Æ¹Ô¤Ê¤ï¤ì¤Æ¤¤¤Þ¤¹¡£¸½ºß¤ÎºÂĹ¤Ï Marc G. Fournier (
-scrappy@PostgreSQL.org )¤Ç¤¹¡£(²¼µ¤Î1.6Àá¤Ë»²²Ã¤Î»ÅÊý¤¬¤¢¤ê¤Þ¤¹¡£)¸½ºß¡¢¤³¤Î¥Á
-¡¼¥à¤¬ PostgreSQL ³«È¯¤Î¤¹¤Ù¤Æ¤ÎÌÌÅݤò¤ß¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥Á¡¼¥à¤Ï¥³¥ß¥å¥Ë¥Æ¥£¥×¥í
-¥¸¥§¥¯¥È¤Ç¤¢¤ê¡¢¤¤¤«¤Ê¤ë´ë¶È¤Ë¤è¤Ã¤Æ¤âÀ©¸æ¤ò¼õ¤±¤Þ¤»¤ó¡£»²²Ã¤·¤¿¤±¤ì¤Ð¡¢ http:/
-/www.postgresql.org/files/documentation/faqs/FAQ_DEV.html ¤Ë¤¢¤ë³«È¯¼Ô¸þ¤±¤ÎFAQ
-¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£
-
-Postgres95-1.01 ¤ÎÃ濴Ū¤Ê³«È¯¼Ô¤Ï Andrew Yu ¤È Jolly Chen ¤Ç¤·¤¿¤¬¡¢¤½¤Î¾ÂçÀª
-¤Î¿Í¡¹¤¬¤³¤Î¥³¡¼¥É¤Î°Ü¿¢¡¢¥Æ¥¹¥È¡¢¥Ç¥Ð¥°¡¢¤ª¤è¤Ó¡¢²þÎɤ˻²²Ã¤·¤Þ¤·¤¿¡£
-PostgreSQL ¤ÎÇÉÀ¸¸µ¥³¡¼¥É¤Ç¤¢¤ë Postgres ¤Ï¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¥Ð¡¼¥¯¥ì¥¤¹»¤Ë¤ª¤¤
-¤Æ¡¢ Michael Stonebraker ¶µ¼ø¤Î»Ø´ø¤Î¤â¤È¡¢Â¿¤¯¤Î³ØÀ¸¡¢Â´¶ÈÀ¸¡¢ËÜ¿¦¤Î¥×¥í¥°¥é¥Þ
-¤¿¤Á¤ÎÅØÎϤˤè¤êºî¤é¤ì¤Þ¤·¤¿¡£
-
-¥Ð¡¼¥¯¥ì¥¤¤Ë¤ª¤±¤ë¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î¤â¤È¤Î̾Á°¤Ï Postgres ¤Ç¤·¤¿¤¬¡¢SQL ¤Îµ¡Ç½
-¤¬Äɲ䵤줿 1995 ǯ¤Ë¤½¤Î̾Á°¤Ï Postgres95 ¤ËÊѹ¹¤µ¤ì¡¢1996 ǯ¤Î½ª¤ê¤Ë¤½¤Î̾Á°
-¤Ï PostgreSQL ¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿¡£
-
-1.2) PostgreSQL ¤ÎÃøºî¸¢¤Ï¤É¤¦¤Ê¤Ã¤Æ¤Þ¤¹¤«¡©
-
-PostgreSQL ¤Ï²¼µ¤ÎÃøºî¸¢¤Ë½¾¤¤¤Þ¤¹¡£
-
+ _________________________________________________________________
+
+ °ìÈÌŪ¤Ê¼ÁÌä
+
+ 1.1) PostgreSQL¤È¤Ï²¿¤Ç¤¹¤«¡© ²¿¤ÈÆɤߤޤ¹¤«¡©
+ 1.2) PostgreSQL¤ÎÃøºî¸¢¤Ï¤É¤¦¤Ê¤Ã¤Æ¤Þ¤¹¤«¡©
+ 1.3) PostgreSQL¤ÎÆ°ºî¤¹¤ëUnix¥×¥é¥Ã¥È¥Û¡¼¥à¤Ï¡©
+ 1.4) Unix°Ê³°¤Î°Ü¿¢ÈǤǻȤ¨¤ë¤â¤Î¤Ï¡©
+ 1.5) PostgreSQL¤Ï¤É¤³¤«¤éÆþ¼ê¤Ç¤¤Þ¤¹¤«¡©
+ 1.6) ¥µ¥Ý¡¼¥È¤Ï¤É¤³¤Ç¼õ¤±¤é¤ì¤Þ¤¹¤«¡©
+ 1.7) ºÇ¿·ÈǤϤɤì¤Ç¤¹¤«
+ 1.8) ¤É¤Î¤è¤¦¤Êʸ½ñ¤¬¤¢¤ê¤Þ¤¹¤«¡©
+ 1.9) ´ûÃΤΥХ°¤ä̤¤À̵¤¤µ¡Ç½¤Ï¤É¤¦¤ä¤Ã¤Æ¸«¤Ä¤±¤Þ¤¹¤«¡©
+ 1.10) SQL¤Ï¤É¤¦¤¹¤ì¤Ð³Ø¤Ù¤Þ¤¹¤«¡©
+ 1.11) PostgreSQL¤ÏÀ¾Îñ2000ǯÌäÂê(Y2K)¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¤«¡©
+ 1.12) ³«È¯¥Á¡¼¥à¤Ë¤Ï¤É¤Î¤è¤¦¤Ë»²²Ã¤·¤Þ¤¹¤«¡©
+ 1.13) ¥Ð¥°¥ì¥Ý¡¼¥È¤Ï¤É¤Î¤è¤¦¤Ëȯ¿®¤·¤Þ¤¹¤«¡©
+ 1.14) ¾¤ÎDBMS¤ÈÈæ¤Ù¤ÆPostgreSQL¤Ï¤É¤¦¤Ê¤Î¤Ç¤¹¤«¡©
+ 1.15) PostgreSQL¤ò»ñ¶âÌ̤DZç½õ¤¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤è¤¤¤Ç¤¹¤«¡©
+
+ ¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¤¥¢¥ó¥È¤Î¼ÁÌä
+
+ 2.1) PostgreSQL ¤Î ODBC ¥É¥é¥¤¥Ð¡¼¤Ï¤¢¤ê¤Þ¤¹¤«¡©
+ 2.2) PostgreSQL ¤ò Web
+ ¥Ú¡¼¥¸¤ÈÏ¢·È¤µ¤»¤ë¤Ë¤Ï¤É¤ó¤Ê¥Ä¡¼¥ë¤¬¤¢¤ê¤Þ¤¹¤«¡©
+ 2.3) PostgreSQL ¤Ë¥°¥é¥Õ¥£¥«¥ë¡¦¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï¤¢¤ê¤Þ¤¹¤«¡©
+ 2.4) ¤É¤Î¤è¤¦¤Ê¸À¸ì¤Ç PostgreSQL ¤ÈÄÌ¿®¤Ç¤¤¹¤«¡©
+
+ ´ÉÍý¾å¤Î¼ÁÌä
+
+ 3.1) ¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð /usr/local/pgsql °Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤
+ ¤Þ¤¹¤«¡©
+ 3.2) postmaster ¤òÁö¤é¤»¤ë¤È¡¢ Bad System Call
+ ¤È¤«¥³¥¢¡¦¥À¥ó¥×¤·¤¿¤È¤Î¥á¥Ã¥»¡¼¥¸¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
+ 3.3) postmaster ¤òÁö¤é¤»¤è¤¦¤È¤¹¤ë¤È¡¢ IpcMemoryCreate
+ ¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
+ 3.4) postmaster¤òÁö¤é¤»¤è¤¦¤È¤¹¤ë¤È¡¢ IpcSemaphoreCreate
+ ¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
+ 3.5) ¾¤Î¥Û¥¹¥È¤«¤é¤ÎÀܳ¤Ï¤É¤Î¤è¤¦¤ËÀ©¸æ¤·¤Þ¤¹¤«¡©
+ 3.6) ¤è¤êÎɤ¤À
+ ǽ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¨¥ó¥¸¥ó¤ò¤É¤Î¤è¤¦¤ËÄ´À°¤¹¤ì¤ÐÎɤ¤¤Ç¤¹
+ ¤«¡©
+ 3.7) ¤É¤Î¤è¤¦¤Ê¥Ç¥Ð¥°µ¡Ç½¤¬»È¤¨¤Þ¤¹¤«¡©
+ 3.8) Àܳ¤·¤è¤¦¤È¤¹¤ë¤È¤¤Ë 'Sorry, too many clients'
+ ¤¬½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+ 3.9) pgsql_tmp ¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¤Ï²¿¤¬¤¢¤ê¤Þ¤¹¤«¡©
+ 3.10)
+ PostgreSQL¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ò¥¢¥Ã¥×¥Ç¡¼¥È¤¹¤ë¤Î¤Ë¥À¥ó¥×¤È¥ê¥¹¥È¥¢¤ò¤·
+ ¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+ 3.11) ¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤Ï¤É¤ó¤Ê¥³¥ó¥Ô¥å¡¼¥¿¤ò»È¤¨¤Ð¤è¤¤¤Ç¤¹¤«¡©
+
+ Áàºî¾å¤Î¼ÁÌä
+
+ 4.1) ¥Ð¥¤¥Ê¥ê¡¦¥«¡¼¥½¥ë¤ÈÄ̾參¡¼¥½¥ë¤È¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
+ 4.2) ºÇ½é¤Î¿ô¥í¥¦¤Î¤ß¤ò select ¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡© ¥é¥ó¥À¥à¤Ê¥í¥¦¡©
+ 4.3) ¥Æ¡¼¥Ö¥ë¤ä¤½¤Î¾¤Î¾ðÊó¤Î¥ê¥¹¥È¤ò psql ¤Ç¸«¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
+ 4.4)
+ ¥Æ¡¼¥Ö¥ë¤«¤é¥«¥é¥à¤Îºï½ü¡¢¤¢¤ë¤¤¤Ï¡¢¥Ç¡¼¥¿·¿¤òÊѹ¹¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«
+ ¡©
+ 4.5) ¥í¥¦¡¢¥Æ¡¼¥Ö¥ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º¤Ï¡©
+ 4.6) °ìÈÌŪ¤Ê¥Æ¥
+ ¥¹¥È¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¥£¥¹¥¯ÍÆÎ̤ϤɤÎ
+ ¤¯¤é¤¤É¬ÍפǤ¹¤«¡©
+ 4.7)
+ ÄêµÁ¤µ¤ì¤¿¥Æ¡¼¥Ö¥ë¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¢¤ª¤è¤Ó¡¢¥æ¡¼¥¶¤ò¤É¤Î¤è
+ ¤¦¤Ë¤·¤Æ¸«¤Ä¤±½Ð¤·¤Þ¤¹¤«¡©
+ 4.8)
+ Ì䤤¹ç¤ï¤»¤¬ÃÙ¤¤¤¦¤¨¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¤¤¤ëÍͻҤ¬¤¢¤ê¤Þ¤»¤ó¡£¤Ê¤¼¤Ç
+ ¤¹¤«¡©
+ 4.9)
+ Ì䤤¹ç¤ï¤»¥ª¥Ö¥Æ¥£¥Þ¥¤¥¶¤¬¤É¤Î¤è¤¦¤ËÌ䤤¹ç¤ï¤»¤òɾ²Á¤¹¤ë¤«¤ò¸«¤ë¤Ë¤Ï¤É
+ ¤¦¤·¤Þ¤¹¤«¡©
+ 4.10) R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤È¤Ï²¿¤Ç¤¹¤«¡©
+ 4.11) °äÅÁŪÌ䤤¹ç¤ï¤»ºÇŬ²½¤È¤Ï²¿¤Ç¤¹¤«¡©
+ 4.12)
+ Àµµ¬É½¸½¤Ç¤Î¸¡º÷¤äÂçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤Àµµ¬É½¸½¸¡º÷¤Ï¤É¤Î¤è¤¦¤Ë
+ ¼Â¸½¤·¤Þ¤¹¤«¡©Âçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Î¤¿¤á¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¤É
+ ¤Î¤è¤¦¤Ë»È¤¤¤Þ¤¹¤«¡©
+ 4.13) Ì䤤¹ç¤ï¤»¤ÎÃæ¤Ç¡¢¥Õ¥£¡¼¥ë¥É¤¬ NULL
+ ¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ð¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
+ 4.14) ¿§¡¹¤Êʸ»ú·¿¤Î¤½¤ì¤¾¤ì¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
+ 4.15.1) ÄÌÈÖ(serial)¡¿¼«Æ°Áýʬ¥Õ¥£¡¼¥ë¥É¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
+ 4.15.2) SERIAL¥Ç¡¼¥¿·¿¤ËÁÞÆþ¤µ¤ì¤ëÃͤϡ¢¤É¤¦¤¹¤ì¤ÐÆÀ¤é¤ì¤Þ¤¹¤«¡©
+ 4.15.3) currval() ¤Ï¾¤Î¥æ¡¼¥¶¤È¤Î¶¥¹ç¾õÂ֤˴٤뤳¤È¤Ï¤Ê¤¤¤Ç¤¹¤«¡©
+ 4.15.4) ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÃæÃǤ·¤¿¤È¤
+ ¤Ë¤â¤¦¤¤¤Á¤É¥·¡¼¥±¥ó¥¹Èֹ椬»È¤ï¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¥·¡¼¥±¥ó¥¹¡¿SERI
+ AL¥«¥é¥à¤Ë¶õ¤¤¬¤¢¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+ 4.16) OID ¤È¤Ï²¿¤Ç¤¹¤«¡© TID ¤È¤Ï²¿¤Ç¤¹¤«¡©
+ 4.17) PostgreSQL ¤Ç»È¤ï¤ì¤ë¤¤¤¯¤Ä¤«¤ÎÍѸì¤Î°ÕÌ£¤Ï²¿¤Ç¤¹¤«¡©
+ 4.18) ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ "ERROR: Memory exhausted in
+ AllocSetAlloc()"¤¬½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+ 4.19) ¤É¤Î¥Ð¡¼¥¸¥ç¥ó¤Î PostgreSQL
+ ¤òÁö¤é¤»¤Æ¤¤¤ë¤Î¤«¤òÄ´¤Ù¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
+ 4.20) ¥é¡¼¥¸¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ç¡¢invalid large obj
+ descriptor¤È½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+ 4.21)
+ ¸½ºß¤Î»þ¹ï¤¬¥Ç¥Õ¥©¥ë¥È¤È¤Ê¤ë¤è¤¦¤Ê¥«¥é¥à¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
+ 4.22) ¤Ê¤¼¡¢IN¤ò»È¤¦ÉûÌ䤤¹ç¤ï¤»¤¬¤È¤Æ¤âÃÙ¤¤¤Î¤Ç¤¹¤«¡©
+ 4.23) ³°Éô·ë¹ç(outer join)¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤·¤Þ¤¹¤«?
+ 4.24) Ê£¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¦Ì䤤¹ç¤ï¤»¤Ï¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤Ç¤¤Þ¤¹¤«¡©
+ 4.25) ´Ø¿ô¤ÇÊ£¿ô¤Î¥í¥¦¤Þ¤¿¤Ï¥«¥é¥à¤òÊÖ¤¹¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
+ 4.26) ¤Ê¤¼¡¢PL/PgSQL ´Ø¿ô¤ÎÃ椫¤é°ì»þ¥Æ¡¼¥Ö¥ë¤ò³Î¼Â¤Ë create/drop
+ ¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©
+ 4.27) ¤É¤Î¤è¤¦¤Ê°Å¹æ²½¥ª¥×¥·¥ç¥ó¤òÍøÍѤǤ¤Þ¤¹¤«?
+
+ PostgreSQL¤Î³ÈÄ¥¤Ë¤Ä¤¤¤Æ¤Î¼ÁÌä
+
+ 5.1) ¼«Ê¬¤Ç½ñ¤¤¤¿¥æ¡¼¥¶ÄêµÁ´Ø¿ô¤ò psql
+ ¤ÎÃæ¤Ç¼Â¹Ô¤¹¤ë¤È¥³¥¢¡¦¥À¥ó¥×¤·¤Æ¤·¤Þ¤¦¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+ 5.2) PostgreSQL
+ ÍѤ˽ñ¤¤¤¿¤Á¤ç¤Ã¤ÈÁÇŨ¤Ê¿·¤·¤¤·¿¤ä´Ø¿ô¤òÄ󶡤·¤Æ¥×¥í¥¸¥§¥¯¥È¤Ë¹×¸¥¤·¤¿
+ ¤¤¤Î¤Ç¤¹¤¬¡©
+ 5.3) ¥¿¥×¥ë¤òÊÖ¤¹ C¸À¸ì¤Î´Ø¿ô¤Ï¤É¤Î¤è¤¦¤Ë½ñ¤¤Þ¤¹¤«¡©
+ 5.4)
+ ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤Þ¤·¤¿¡£ºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤âÊѲ½¤¬¸«¤é¤ì¤Ê¤¤¤Î¤Ï
+ ¤Ê¤¼¤Ç¤¹¤«¡©
+ _________________________________________________________________
+
+ °ìÈÌŪ¤Ê¼ÁÌä
+
+ 1.1) PostgreSQL ¤È¤Ï²¿¤Ç¤¹¤«¡© ²¿¤ÈÆɤߤޤ¹¤«¡©
+
+ PostgreSQL¤ÏPost-Gres-Q-L(¥Ý¥¹¥È - ¥°¥ì¥¹ - ¥¥å¡¼ - ¥¨¥ë)
+ ¤Èȯ²»¤·¤Þ¤¹¡£
+
+ PostgreSQL ¤Ï¼¡À¤Âå DBMS ¸¦µæÍѤΥץí¥È¥¿¥¤¥×¤Ç¤¢¤Ã¤¿ POSTGRES
+ ¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¥·¥¹¥Æ¥à¤Î²þÎÉÈǤǤ¹¡Ê¤³¤Î¤¿¤á¡¢º£¤Ç¤â¤È¤¤É¤
+ "Postgres" ¤È¸Æ¤Ð¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡Ë¡£PostgreSQL ¤Ï POSTGRES
+ ¤Î¶¯ÎϤʥǡ¼¥¿¡¦¥â¥Ç¥ë¤ÈË
+ É٤ʥǡ¼¥¿¡¦¥¿¥¤¥×(·¿)¤òÊÝ»ý¤·¤Ê¤¬¤é¡¢POSTGRES ¤Ç»È¤ï¤ì¤¿ PostQuel
+ Ì䤤¹ç¤ï¤»¸À¸ì¤ò¡¢³ÈÄ¥¤·¤¿ SQL ¤Î¥µ¥Ö¥»¥Ã¥È¤ËÃÖ¤
+ ´¹¤¨¤Æ¤¤¤Þ¤¹¡£PostgreSQL ¤Ï̵ÎÁ¤Ç´°Á´¤Ê¥½¡¼¥¹¤òÍøÍѤǤ¤Þ¤¹¡£
+
+ PostgreSQL ¤Î³«È¯¤Ï¡¢PostgreSQL
+ ³«È¯¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ë»²²Ã¤·¤Æ¤¤¤ë³«È¯¼Ôã¤Î¥Á¡¼¥à¤Ç¤¹¤Ù¤Æ¹Ô¤Ê¤ï¤ì¤Æ¤¤
+ ¤Þ¤¹¡£¸½ºß¤ÎºÂĹ¤Ï Marc G. Fournier (scrappy@PostgreSQL.org
+ )¤Ç¤¹¡£(²¼µ¤Î1.6Àá¤Ë»²²Ã¤Î»ÅÊý¤¬¤¢¤ê¤Þ¤¹¡£)¸½ºß¡¢¤³¤Î¥Á¡¼¥à¤¬
+ PostgreSQL
+ ³«È¯¤Î¤¹¤Ù¤Æ¤ÎÌÌÅݤò¤ß¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥Á¡¼¥à¤Ï¥³¥ß¥å¥Ë¥Æ¥£¥×¥í¥¸¥§¥¯¥È¤Ç
+ ¤¢¤ê¡¢¤¤¤«¤Ê¤ë´ë¶È¤Ë¤è¤Ã¤Æ¤âÀ©¸æ¤ò¼õ¤±¤Þ¤»¤ó¡£»²²Ã¤·¤¿¤±¤ì¤Ð¡¢
+ http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html
+ ¤Ë¤¢¤ë³«È¯¼Ô¸þ¤±¤ÎFAQ¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£
+
+ Postgres95-1.01 ¤ÎÃ濴Ū¤Ê³«È¯¼Ô¤Ï Andrew Yu ¤È Jolly Chen
+ ¤Ç¤·¤¿¤¬¡¢¤½¤Î¾ÂçÀª¤Î¿Í¡¹¤¬¤³¤Î¥³¡¼¥É¤Î°Ü¿¢¡¢¥Æ¥¹¥È¡¢¥Ç¥Ð¥°¡¢¤ª¤è¤Ó¡¢
+ ²þÎɤ˻²²Ã¤·¤Þ¤·¤¿¡£PostgreSQL ¤ÎÇÉÀ¸¸µ¥³¡¼¥É¤Ç¤¢¤ë Postgres
+ ¤Ï¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¥Ð¡¼¥¯¥ì¥¤¹»¤Ë¤ª¤¤¤Æ¡¢ Michael Stonebraker
+ ¶µ¼ø¤Î»Ø´ø¤Î¤â¤È¡¢Â¿¤¯¤Î³ØÀ¸¡¢Â´¶ÈÀ¸¡¢ËÜ¿¦¤Î¥×¥í¥°¥é¥Þ¤¿¤Á¤ÎÅØÎϤˤè¤ê
+ ºî¤é¤ì¤Þ¤·¤¿¡£
+
+ ¥Ð¡¼¥¯¥ì¥¤¤Ë¤ª¤±¤ë¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î¤â¤È¤Î̾Á°¤Ï Postgres
+ ¤Ç¤·¤¿¤¬¡¢SQL ¤Îµ¡Ç½¤¬Äɲ䵤줿 1995 ǯ¤Ë¤½¤Î̾Á°¤Ï Postgres95
+ ¤ËÊѹ¹¤µ¤ì¡¢1996 ǯ¤Î½ª¤ê¤Ë¤½¤Î̾Á°¤Ï PostgreSQL ¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿¡£
+
+ 1.2) PostgreSQL ¤ÎÃøºî¸¢¤Ï¤É¤¦¤Ê¤Ã¤Æ¤Þ¤¹¤«¡©
+
+ PostgreSQL ¤Ï²¼µ¤ÎÃøºî¸¢¤Ë½¾¤¤¤Þ¤¹¡£
[ÌõÃí¡§
- ÀµÊ¸¤Ï±Ñ¸ì¤Ç¤¹¡£»²¹Í¤È¤·¤Æ¡¢Ìõʸ¤òÊ»µ·ÇºÜ¤·¤Þ¤¹¡£
+ ÀµÊ¸¤Ï±Ñ¸ì¤Ç¤¹¡£»²¹Í¤È¤·¤Æ¡¢Ìõʸ¤òÊ»µ·ÇºÜ¤·¤Þ¤¹¡£
]
-PostgreSQL Data Base Management System
-
-Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group Portions
-Copyright (c) 1994-6 Regents of the University of California
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose, without fee, and without a written agreement is
-hereby granted, provided that the above copyright notice and this paragraph and
-the following two paragraphs appear in all copies.
-
-IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
-DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST
-PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
-THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
-BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND
-THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
-SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
+ PostgreSQL Data Base Management System
+
+ Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
+ Portions Copyright (c) 1994-6 Regents of the University of California
+
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose, without fee, and without a written
+ agreement is hereby granted, provided that the above copyright notice
+ and this paragraph and the following two paragraphs appear in all
+ copies.
+
+ IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
+ FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+ INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
+ ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+ PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+ CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+ UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
POSTGRESQL ¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¥·¥¹¥Æ¥à
ÉôʬŪÃøºî¸¢ (c) 1996-2004, PostgreSQL¹ñºÝ³«È¯¥Á¡¼¥à
ÉôʬŪÃøºî¸¢ (c) 1994-6 ¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³ØËܹ»
- ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ª¤è¤Ó¤½¤Îʸ½ñ°ì¼°¤Ï¾åµ¤ÎÃøºî¸¢É½¼¨¤È¡¢¤³¤Îʸ¾Ï
+ ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ª¤è¤Ó¤½¤Îʸ½ñ°ì¼°¤Ï¾åµ¤ÎÃøºî¸¢É½¼¨¤È¡¢¤³¤Îʸ¾Ï
¤ª¤è¤Ó¤³¤ì¤Ë³¤¯Æó¤Ä¤ÎÃÊÍÁ´¤Æ¤ÎÊ£À½¤ËźÉÕ¤µ¤ì¤Æ¤¤¤ë¸Â¤ê¤Ë¤ª¤¤
¤Æ¡¢»ÈÍÑ¡¢Ê£À½¡¢½¤Àµ¤ª¤è¤ÓÇÛÉդεö²Ä¤ò¡¢¤¤¤«¤Ê¤ëÌÜŪ¤Ç¤¢¤Ã¤Æ¤â¡¢
̵½þ¤Ç¤«¤ÄƱ°Õ½ñ̵¤·¤Ë¹Ô¤Ê¤¨¤ë¤³¤È¤ò¤³¤³¤Ëǧ¤á¤Þ¤¹¡£
¤ò¼õ¤±¤Æ¤¤¤¿¤È¤·¤Æ¤â¡¢°ìÀÚ¤ÎÀÕǤ¤òÉ餤¤Þ¤»¤ó¡£
¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤Ï¡¢¾¦ÍÑÌÜŪ¤Ë¤ª¤±¤ë°ÅÌÛ¤ÎÊݾڤȡ¢ÆÃÄêÌÜŪ¤Ç
- ¤ÎŬ¹çÀ¤Ë´Ø¤·¤Æ¤Ï¤â¤È¤è¤ê¡¢¤³¤ì¤é¤Ë¸Â¤é¤º¡¢¤¤¤«¤Ê¤ëÊݾڤâÊü´þ¤¹
+ ¤ÎŬ¹çÀ¤Ë´Ø¤·¤Æ¤Ï¤â¤È¤è¤ê¡¢¤³¤ì¤é¤Ë¸Â¤é¤º¡¢¤¤¤«¤Ê¤ëÊݾڤâÊü´þ¤¹
¤ë¤³¤È¤òÌÀ¸À¤·¤Þ¤¹¡£°Ê²¼¤ËÍÑ°Õ¤µ¤ì¤¿¥½¥Õ¥È¥¦¥§¥¢¤Ï¡Ö¤½¤Î¤Þ¤Þ¡×¤ò
´ðËܸ¶Íý¤È¤·¡¢¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤Ï¤½¤ì¤ò°Ý»ý¡¢»Ù±ç¡¢¹¹¿·¡¢²þÎɤ¢
¤ë¤¤¤Ï½¤Àµ¤¹¤ëµÁ̳¤òÉ餤¤Þ¤»¤ó¡£
[ÌõÃí¡§
- Ãøºî¸¢¤Ë´Ø¤¹¤ëÀµÊ¸¤Ï¾åµ¤Î±Ñ¸ì¤Ë¤è¤ëɽµ¤Ç¤¹¡£ÆüËܸìÌõ¤Ï¤¢¤¯¤Þ¤Ç
+ Ãøºî¸¢¤Ë´Ø¤¹¤ëÀµÊ¸¤Ï¾åµ¤Î±Ñ¸ì¤Ë¤è¤ëɽµ¤Ç¤¹¡£ÆüËܸìÌõ¤Ï¤¢¤¯¤Þ¤Ç
»²¹Í¤Ç¤¹¡£
]
-¾åµ¤ÏBSD¥é¥¤¥»¥ó¥¹¤Ç¸Å¤¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î¥é¥¤¥»¥ó¥¹¤Ç¤¹¡£¥½¡¼¥¹¥³¡¼¥É¤¬¤É¤Î¤è¤¦
-¤Ë»È¤ï¤ì¤è¤¦¤È¤âÀ©¸Â¤·¤Þ¤»¤ó¡£¹¥¤Þ¤·¤¤¤³¤È¤Ê¤Î¤Ç¡¢²æ¡¹¤â¤½¤ì¤òÊѤ¨¤ë¤Ä¤â¤ê¤Ï¤¢
-¤ê¤Þ¤»¤ó¡£
-
-1.3) PostgreSQL ¤ÎÆ°ºî´Ä¶¤Ï¡©
-
-°ìÈÌŪ¤Ë¡¢ºÇ¶á¤ÎUnix¸ß´¹¥×¥é¥Ã¥È¥Û¡¼¥à¤Ç¤¢¤ì¤ÐPostgreSQL¤ò²ÔƯ¤µ¤»¤é¤ì¤ë¤Ï¤º¤Ç
-¤¹¡£¥ê¥ê¡¼¥¹¤Î»þÅÀ¤Ç¼ÂºÝ¤Ë¥Æ¥¹¥È¤ò¹Ô¤Ê¤Ã¤¿¤³¤È¤ÎÊó¹ð¤¬¤Ê¤µ¤ì¤¿¥×¥é¥Ã¥È¥Û¡¼¥à¤Ë
-¤Ä¤¤¤Æ¤Ï¥¤¥ó¥¹¥È¡¼¥ë¼ê°ú½ñ¤ËÎóµó¤·¤Æ¤¢¤ê¤Þ¤¹¡£
-
-1.4) Unix°Ê³°¤Î°Ü¿¢ÈǤǻȤ¨¤ë¤â¤Î¤Ï¡©
-
-¥Ð¡¼¥¸¥ç¥ó8.0¤Ë¤Ê¤ê¡¢PostgreSQL ¤Ï¡¢Win2000, WinXP, Win2003¤Ê¤É¤Î Microsoft
-Windows NT¥Ù¡¼¥¹¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¥Í¥¤¥Æ¥£¥Ö¤ËÁö¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
-¥Ñ¥Ã¥±¡¼¥¸¤Ë¤Ê¤Ã¤¿¥¤¥ó¥¹¥È¡¼¥é¤¬¡¢http://pgfoundry.org/projects/pginstaller¤«¤é
-Æþ¼ê¤Ç¤¤Þ¤¹¡£ Windows (Win95, Win98, WinMe)¤Ê¤É¡¢MSDOS¥Ù¡¼¥¹¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢
-Cygwin ¤ò»È¤Ã¤ÆPostgreSQL¤òÁö¤é¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
-
+ ¾åµ¤ÏBSD¥é¥¤¥»¥ó¥¹¤Ç¸Å¤¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î¥é¥¤¥»¥ó¥¹¤Ç¤¹¡£¥½¡¼¥¹¥³¡¼¥É
+ ¤¬¤É¤Î¤è¤¦¤Ë»È¤ï¤ì¤è¤¦¤È¤âÀ©¸Â¤·¤Þ¤»¤ó¡£¹¥¤Þ¤·¤¤¤³¤È¤Ê¤Î¤Ç¡¢²æ¡¹¤â¤½¤ì
+ ¤ò ÊѤ¨¤ë¤Ä¤â¤ê¤Ï¤¢¤ê¤Þ¤»¤ó¡£
+
+ 1.3) PostgreSQL ¤ÎÆ°ºî´Ä¶¤Ï¡©
+
+ °ìÈÌŪ¤Ë¡¢ºÇ¶á¤ÎUnix¸ß´¹¥×¥é¥Ã¥È¥Û¡¼¥à¤Ç¤¢¤ì¤ÐPostgreSQL¤ò²ÔƯ¤µ¤»¤é¤ì
+ ¤ë¤Ï¤º¤Ç¤¹¡£¥ê¥ê¡¼¥¹¤Î»þÅÀ¤Ç¼ÂºÝ¤Ë¥Æ¥¹¥È¤ò¹Ô¤Ê¤Ã¤¿¤³¤È¤ÎÊó¹ð¤¬¤Ê¤µ¤ì¤¿
+ ¥×¥é¥Ã¥È¥Û¡¼¥à¤Ë¤Ä¤¤¤Æ¤Ï¥¤¥ó¥¹¥È¡¼¥ë¼ê°ú½ñ¤ËÎóµó¤·¤Æ¤¢¤ê¤Þ¤¹¡£
+
+ 1.4) Unix°Ê³°¤Î°Ü¿¢ÈǤǻȤ¨¤ë¤â¤Î¤Ï¡©
+
+ ¥Ð¡¼¥¸¥ç¥ó8.0¤Ë¤Ê¤ê¡¢PostgreSQL ¤Ï¡¢Win2000, WinXP, Win2003¤Ê¤É¤Î
+ Microsoft Windows
+ NT¥Ù¡¼¥¹¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¥Í¥¤¥Æ¥£¥Ö¤ËÁö¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
+ ¥Ñ¥Ã¥±¡¼¥¸¤Ë¤Ê¤Ã¤¿¥¤¥ó¥¹¥È¡¼¥é¤¬¡¢http://pgfoundry.org/projects/pginst
+ aller¤«¤éÆþ¼ê¤Ç¤¤Þ¤¹¡£ Windows (Win95, Win98,
+ WinMe)¤Ê¤É¡¢MSDOS¥Ù¡¼¥¹¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢Cygwin
+ ¤ò»È¤Ã¤ÆPostgreSQL¤òÁö¤é¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
[ÌõÃí
pgInstaller ¤ÎÆþ¼ê¤ÏFTP¥ß¥é¡¼¥µ¥¤¥È¤Î win32 ¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤â²Äǽ¤Ç¤¹¡£
http://www.postgresql.org/mirrors-ftp.html
]
-¼¡¤Î¥µ¥¤¥È¤Ë Novell Netware 6 ¤Ø¤Î°Ü¿¢¤â¤¢¤ê¤Þ¤¹¡£ http://forge.novell.com ¤Þ¤¿
-¡¢OS/2 (eComStation) ¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢ http://hobbes.nmsu.edu/cgi-bin/h-search?sh=
-1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F¤Ë¤¢¤ê¤Þ¤¹¡£
-
-
-1.5) PostgreSQL ¤Ï¤É¤³¤«¤éÆþ¼ê¤Ç¤¤Þ¤¹¤«¡©
-
-PostgreSQL ¤ÎÂ縵¤Î anonymous ftp ¥µ¥¤¥È¤Ï ftp://ftp.PostgreSQL.org/pub/ ¤Ç¤¹¡£
-¥ß¥é¡¼¥µ¥¤¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢²æ¡¹¤Î¥á¥¤¥ó Web ¥Ú¡¼¥¸¤ò¤´Í÷²¼¤µ¤¤¡£
-
+ ¼¡¤Î¥µ¥¤¥È¤Ë Novell Netware 6 ¤Ø¤Î°Ü¿¢¤â¤¢¤ê¤Þ¤¹¡£
+ http://forge.novell.com ¤Þ¤¿¡¢OS/2 (eComStation) ¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢
+ http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
+ SQL&stype=all&sort=type&dir=%2F¤Ë¤¢¤ê¤Þ¤¹¡£
+
+ 1.5) PostgreSQL ¤Ï¤É¤³¤«¤éÆþ¼ê¤Ç¤¤Þ¤¹¤«¡©
+
+ PostgreSQL ¤ÎÂ縵¤Î anonymous ftp ¥µ¥¤¥È¤Ï
+ ftp://ftp.PostgreSQL.org/pub/ ¤Ç¤¹¡£
+ ¥ß¥é¡¼¥µ¥¤¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢²æ¡¹¤Î¥á¥¤¥ó Web ¥Ú¡¼¥¸¤ò¤´Í÷²¼¤µ¤¤¡£
[ÌõÃí:
°Ê²¼¤ÏÆüËܤΥߥ顼¥µ¥¤¥È¤Ç¤¹:
Japan: ftp://ring.aist.go.jp/pub/misc/db/PostgreSQL/
]
-1.6) ¥µ¥Ý¡¼¥È¤Ï¤É¤³¤Ç¼õ¤±¤é¤ì¤Þ¤¹¤«¡©
-
-¼çÍפʥ᡼¥ê¥ó¥°¡¦¥ê¥¹¥È¤Ï: pgsql-general@PostgreSQL.org¤Ç¤¹¡£PostgreSQL ¤Ë´Ø¤¹
-¤ë¤³¤È¤Ç¤¢¤ì¤ÐµÄÏÀ¤¬¤Ç¤¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ø¤Î»²²Ã¤Ï¡¢ÅŻҥ᡼¥ë¤ÎËÜʸ(Subject ¹Ô
-¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó)¤Ë¼¡¤Î£²¹Ô¤ò½ñ¤¤¤Æ¡¢
-
+ 1.6) ¥µ¥Ý¡¼¥È¤Ï¤É¤³¤Ç¼õ¤±¤é¤ì¤Þ¤¹¤«¡©
+
+ ¼çÍפʥ᡼¥ê¥ó¥°¡¦¥ê¥¹¥È¤Ï:
+ pgsql-general@PostgreSQL.org¤Ç¤¹¡£PostgreSQL
+ ¤Ë´Ø¤¹¤ë¤³¤È¤Ç¤¢¤ì¤ÐµÄÏÀ¤¬¤Ç¤
+ ¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ø¤Î»²²Ã¤Ï¡¢ÅŻҥ᡼¥ë¤ÎËÜʸ(Subject
+ ¹Ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó)¤Ë¼¡¤Î£²¹Ô¤ò½ñ¤¤¤Æ¡¢
subscribe
end
-pgsql-general-request@PostgreSQL.org ¤ØÁ÷¤Ã¤Æ²¼¤µ¤¤¡£
-
-¥À¥¤¥¸¥§¥¹¥ÈÈǤΥ᡼¥ê¥ó¥°¡¦¥ê¥¹¥È¤â¤¢¤ê¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ø¤Î»²²Ã¤Ï "ËÜʸ"¤Ë¡§
-
+ pgsql-general-request@PostgreSQL.org ¤ØÁ÷¤Ã¤Æ²¼¤µ¤¤¡£
+
+ ¥À¥¤¥¸¥§¥¹¥ÈÈǤΥ᡼¥ê¥ó¥°¡¦¥ê¥¹¥È¤â¤¢¤ê¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ø¤Î»²²Ã¤Ï
+ "ËÜʸ"¤Ë¡§
subscribe
end
-¤È½ñ¤¤¤Æ pgsql-general-digest-request@PostgreSQL.org ¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ¤¤
-¡£
-
-¥À¥¤¥¸¥§¥¹¥ÈÈǤϡ¢¥á¥¤¥ó¥ê¥¹¥È¤Ç¼õ¿®¤¹¤ë¥á¥Ã¥»¡¼¥¸¤¬ 30k ÄøÅÙί¤ëËè¤Ë¥À¥¤¥¸¥§¥¹
-¥ÈÈǥꥹ¥È¤Î¥á¥ó¥Ð¡¼¤ËÁ÷ÉÕ¤µ¤ì¤Þ¤¹¡£
-
-¥Ð¥°¥ì¥Ý¡¼¥ÈÍѤΥ᡼¥ê¥ó¥°¥ê¥¹¥È¤â¤¢¤ê¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ø¤Î»²²Ã¤Ï "ËÜʸ" ¤Ë¡§
-
+ ¤È½ñ¤¤¤Æ pgsql-general-digest-request@PostgreSQL.org
+ ¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ¤¤¡£
+
+ ¥À¥¤¥¸¥§¥¹¥ÈÈǤϡ¢¥á¥¤¥ó¥ê¥¹¥È¤Ç¼õ¿®¤¹¤ë¥á¥Ã¥»¡¼¥¸¤¬ 30k
+ ÄøÅÙί¤ëËè¤Ë¥À¥¤¥¸¥§¥¹¥ÈÈǥꥹ¥È¤Î¥á¥ó¥Ð¡¼¤ËÁ÷ÉÕ¤µ¤ì¤Þ¤¹¡£
+
+ ¥Ð¥°¥ì¥Ý¡¼¥ÈÍѤΥ᡼¥ê¥ó¥°¥ê¥¹¥È¤â¤¢¤ê¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ø¤Î»²²Ã¤Ï
+ "ËÜʸ" ¤Ë¡§
subscribe
end
-¤È½ñ¤¤¤Æpgsql-bugs-request@PostgreSQL.org ¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ¤¤¡£
-
-³«È¯¼Ô¤ÎµÄÏÀ¤Î¤¿¤á¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤âÍøÍѤǤ¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ø¤Î»²²Ã¤ÏÅŻҥá
-¡¼¥ë¤ÎËÜʸ¤Ë¡§
-
+ ¤È½ñ¤¤¤Æpgsql-bugs-request@PostgreSQL.org ¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ¤¤¡£
+
+ ³«È¯¼Ô¤ÎµÄÏÀ¤Î¤¿¤á¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤âÍøÍѤǤ
+ ¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ø¤Î»²²Ã¤ÏÅŻҥ᡼¥ë¤ÎËÜʸ¤Ë¡§
subscribe
end
-¤È½ñ¤¤¤Æ¡¢pgsql-hackers-request@PostgreSQL.org¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ¤¤¡£
-
-http://www.PostgreSQL.org
-
-¥á¥¸¥ã¡¼¤ÊIRC ¥Á¥ã¥ó¥Í¥ë¤Ï¡¢Freenode (irc.freenode.net)¤Î #PostgreSQL ¤È¤¤¤¦¥Á
-¥ã¥ó¥Í¥ë¤Ç¤¹¡£ UNIX ¥³¥Þ¥ó¥É¤Ç¡¢ irc -c '#PostgreSQL' "$USER" irc.freenode.net.
-¤ò»È¤Ã¤Æ»²²Ã¤Ç¤¤Þ¤¹¡£Æ±¤¸¥Í¥Ã¥È¥ï¡¼¥¯¤Ë¡¢¥¹¥Ú¥¤¥ó¸ì¤Î¥Á¥ã¥ó¥Í¥ë(#
-postgresql-es)¤â¤¢¤ê¡¢¥Õ¥é¥ó¥¹¸ì¤Î¥Á¥ã¥ó¥Í¥ë(#postgresqlfr)¤â¤¢¤ê¤Þ¤¹¡£ EFNet¤Ë
-¤âPostgreSQL¥Á¥ã¥ó¥Í¥ë¤¬¤¢¤ê¤Þ¤¹¡£
-
+ ¤È½ñ¤¤¤Æ¡¢pgsql-hackers-request@PostgreSQL.org¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ
+ ¤¤¡£
+
+ PostgreSQL ¤Ë¤Ä¤¤¤Æ¤â¤Ã¤È¾Ü¤·¤¯ÃΤꤿ¤±¤ì¤Ð¡¢¼¡¤Î PostgreSQL
+ WWW¥Û¡¼¥à¥Ú¡¼¥¸¤«¤é¤¿¤É¤ì¤Þ¤¹¡§
+
+ http://www.PostgreSQL.org
+
+ ¥á¥¸¥ã¡¼¤ÊIRC ¥Á¥ã¥ó¥Í¥ë¤Ï¡¢Freenode (irc.freenode.net)¤Î #PostgreSQL
+ ¤È¤¤¤¦¥Á¥ã¥ó¥Í¥ë¤Ç¤¹¡£ UNIX ¥³¥Þ¥ó¥É¤Ç¡¢ irc -c '#PostgreSQL' "$USER"
+ irc.freenode.net. ¤ò»È¤Ã¤Æ»²²Ã¤Ç¤¤Þ¤¹¡£
+ Ʊ¤¸¥Í¥Ã¥È¥ï¡¼¥¯¤Ë¡¢¥¹¥Ú¥¤¥ó¸ì¤Î¥Á¥ã¥ó¥Í¥ë(#postgresql-es)¤â¤¢
+ ¤ê¡¢¥Õ¥é¥ó¥¹¸ì¤Î¥Á¥ã¥ó¥Í¥ë(#postgresqlfr)¤â¤¢¤ê¤Þ¤¹¡£
+ EFNet¤Ë¤âPostgreSQL¥Á¥ã¥ó¥Í¥ë¤¬¤¢¤ê¤Þ¤¹¡£
[ÌõÃí:
1999ǯ7·î23Æü¡¢ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¡¢Î¬¾ÎJPUG¤¬ÀßΩ¤µ¤ì¤Þ¤·¤¿¡£
- JPUG ¤ÏÈó±ÄÍøÁÈ¿¥¤Ç¡¢PostgreSQL¤òÍøÍѤ¹¤ë¿Íã¤ÎÁê¸ß¶¨ÎϤξì¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
+ JPUG ¤ÏÈó±ÄÍøÁÈ¿¥¤Ç¡¢PostgreSQL¤òÍøÍѤ¹¤ë¿Íã¤ÎÁê¸ß¶¨ÎϤξì¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
(2003ǯ5·î17Æü¡¢¡ÖÆüËÜPostgreSQL¥æ¡¼¥¶²ñ¡×¤Ë̾¾Î¤ò²þ¤á¤Þ¤·¤¿¡£)
Àµ²ñ°÷¤Î²ñÈñ¤Ï̵ÎÁ¤Ç¤¹¤¬¡¢¶¨»¿²ñ°÷¤Î²ñÈñ¤È²ñ°÷¤ÎÀѶËŪ¤Ê¹×¸¥¤¬²ñ¤Î±¿±Ä¤ò½õ¤±¤Æ¤¤¤Þ¤¹¡£
¾Ü¤·¤¯¤Ï¡¢JPUG ¤ÎWeb ¥µ¥¤¥È:
ÆüËܸì¤ÎIRC¥Á¥ã¥ó¥Í¥ë '#PostgreSQL*jp' ¤â¸ºß¤·¤Þ¤¹¡£
-¾¦ÍÑ¥µ¥Ý¡¼¥È²ñ¼Ò¤Î¥ê¥¹¥È¤Ïhttp://techdocs.postgresql.org/companies.php¤Ë¤¢¤ê¤Þ
-¤¹¡£
-
-1.7) ºÇ¿·ÈǤϤɤì¤Ç¤¹¤«
-
-PostgreSQL ¤ÎºÇ¿·ÈǤϥС¼¥¸¥ç¥ó 7.4.6 ¤Ç¤¹¡£
-
-²æ¡¹¤Ï¡¢6¡Á8¥«·îËè¤Ë¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ò¹Ô¤Ê¤¦¤³¤È¤ò·×²è¤·¤Æ¤¤¤Þ¤¹¡£
-
-1.8) ¤É¤Î¤è¤¦¤Êʸ½ñ¤¬¤¢¤ê¤Þ¤¹¤«¡©
-
-ÇÛÉÕ¤ÎÃæ¤Ë¡¢¤¤¤¯¤Ä¤«¤Î¥Þ¥Ë¥å¥¢¥ë¤È¥ª¥ó¥é¥¤¥ó¡¦¥Þ¥Ë¥å¥¢¥ë(¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸)¤ª
-¤è¤Ó¤¤¤¯¤Ä¤«¤Î¾®¤µ¤Ê¥Æ¥¹¥ÈÎãÂ꤬´Þ¤Þ¤ì¤Þ¤¹¡£/doc ¥Ç¥£¥ì¥¯¥È¥ê¤ò¤´Í÷²¼¤µ¤¤¡£¤Þ¤¿
-¡¢¥Þ¥Ë¥å¥¢¥ë¤Ï¡¢http://www.ca.PostgreSQL.org/docs/¤Ç¥ª¥ó¥é¥¤¥ó¤Ç¤â±ÜÍ÷¤Ç¤¤Þ¤¹
-¡£
-
+ ¾¦ÍÑ¥µ¥Ý¡¼¥È²ñ¼Ò¤Î¥ê¥¹¥È¤Ïhttp://techdocs.postgresql.org/companies.php
+ ¤Ë¤¢¤ê¤Þ¤¹¡£
+
+ 1.7) ºÇ¿·ÈǤϤɤì¤Ç¤¹¤«
+
+ PostgreSQL ¤ÎºÇ¿·ÈǤϥС¼¥¸¥ç¥ó 7.4.6 ¤Ç¤¹¡£
+
+ ²æ¡¹¤Ï¡¢6¡Á8¥«·îËè¤Ë¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ò¹Ô¤Ê¤¦¤³¤È¤ò·×²è¤·¤Æ¤¤¤Þ¤¹¡£
+
+ 1.8) ¤É¤Î¤è¤¦¤Êʸ½ñ¤¬¤¢¤ê¤Þ¤¹¤«¡©
+
+ ÇÛÉÕ¤ÎÃæ¤Ë¡¢¤¤¤¯¤Ä¤«¤Î¥Þ¥Ë¥å¥¢¥ë¤È¥ª¥ó¥é¥¤¥ó¡¦¥Þ¥Ë¥å¥¢¥ë(¥Þ¥Ë¥å¥¢¥ë¡¦¥
+ Ú¡¼¥¸)¤ª¤è¤Ó¤¤¤¯¤Ä¤«¤Î¾®¤µ¤Ê¥Æ¥¹¥ÈÎãÂ꤬´Þ¤Þ¤ì¤Þ¤¹¡£/doc
+ ¥Ç¥£¥ì¥¯¥È¥ê¤ò¤´Í÷²¼¤µ¤¤¡£¤Þ¤¿¡¢¥Þ¥Ë¥å¥¢¥ë¤Ï¡¢http://www.ca.PostgreSQL
+ .org/docs/¤Ç¥ª¥ó¥é¥¤¥ó¤Ç¤â±ÜÍ÷¤Ç¤¤Þ¤¹¡£
[ÌõÃí:
¡Ê³ô¡ËSRA¤ÈÆüËÜPostgreSQL¥æ¡¼¥¶²ñ¤ÇËÝÌõ¤µ¤ì¡¢
¡ÖPostgreSQL ¥ª¥Õ¥£¥·¥ã¥ë¥Þ¥Ë¥å¥¢¥ë¡×
¤È¤·¤Æ½ÐÈǤµ¤ì¤Æ¤¤¤Þ¤¹¡£
]
-¥ª¥ó¥é¥¤¥ó¤Ç»²¾È¤Ç¤¤ë PostgreSQL ¤ÎËܤâ2ºý¤¢¤ê¤Þ¤¹¡£http://www.PostgreSQL.org/
-docs/awbook.html
-
+ ¥ª¥ó¥é¥¤¥ó¤Ç»²¾È¤Ç¤¤ë PostgreSQL
+ ¤ÎËܤâ2ºý¤¢¤ê¤Þ¤¹¡£http://www.PostgreSQL.org/docs/awbook.html
[ÌõÃí:
ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¤Î ¡ÖPostgreSQL BookËÝÌõʬ²Ê²ñ¡×
¤Ë¤ÆËÝÌõ¤µ¤ì¤Þ¤·¤¿¡£
]
-¤ª¤è¤Ó¡¢ http://www.commandprompt.com/ppbook/ ¤Ç¤¹¡£¹ØÆþ²Äǽ¤Ê½ñÀÒ¤ÎÌÜÏ¿¤Ï¡¢
-http://techdocs.PostgreSQL.org/techdocs/bookreviews.php ¤Ë¤¢¤ê¤Þ¤¹¡£ PostgreSQL
-µ»½Ñ¾ðÊóµ»ö¤â¡¢http://techdocs.PostgreSQL.org/ ¤Ë¤¢¤ê¤Þ¤¹¡£
-
-[ÌõÃí: ÏÂÌõʸ½ñ¤Ï¡¢ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¤Îhttp://www.postgresql.jp/
-document/ ¤ò¤´¤é¤ó²¼¤µ¤¤¡£ ]
-
-¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î¥¯¥é¥¤¥¢¥ó¥È¥×¥í¥°¥é¥àpsql ¤â¡¢·¿¡¢±é»»»Ò¡¢´Ø¿ô¡¢½¸Ì󡢤½¤Î¾¤Î
-¾ðÊó¤ò¤ª¸«¤»¤¹¤ë¡¢¤¤¤¯¤Ä¤«¤ÎÁÇÀ²¤é¤·¤¤ \d ¥³¥Þ¥ó¥É¤ò»ý¤Á¤Þ¤¹¡£ - \? ¤ò»È¤¦¤ÈÍø
-ÍѲÄǽ¤Ê¥³¥Þ¥ó¥É¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
-
-²æ¡¹¤Î Web ¥µ¥¤¥È¤Ë¤Ï¡¢¤â¤Ã¤ÈÂô»³¤Îʸ½ñ¤¬¤¢¤ê¤Þ¤¹¡£
-
-1.9) ´ûÃΤΥХ°¤ä̤¤À̵¤¤µ¡Ç½¤Ï¤É¤¦¤ä¤Ã¤Æ¸«¤Ä¤±¤Þ¤¹¤«¡©
-
-PostgreSQL¤Ï³ÈÄ¥¤µ¤ì¤¿SQL-92¤Î¥µ¥Ö¥»¥Ã¥È¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£²æ¡¹¤Î¥Ú¡¼¥¸¤Î TODO
-¥ê¥¹¥È¤Ë¡¢´ûÃΤΥХ°¤ä·çÍǽ¤ä¾Íè·×²è¤Ë¤Ä¤¤¤Æ¤Îµ½Ò¤¬¤¢¤ê¤Þ¤¹¡£
-
-1.10) SQL ¤Ï¤É¤¦¤¹¤ì¤Ð³Ø¤Ù¤Þ¤¹¤«¡©
-
-http://www.PostgreSQL.org/docs/awbook.html ¤Ë¤¢¤ëPostgreSQLËÜ¤Ç SQL ¤ò¶µ¤¨¤Æ¤¤
-¤Þ¤¹¡£
-
+ ¤ª¤è¤Ó¡¢ http://www.commandprompt.com/ppbook/ ¤Ç¤¹¡£
+ ¹ØÆþ²Äǽ¤Ê½ñÀÒ¤ÎÌÜÏ¿¤Ï¡¢http://techdocs.PostgreSQL.org/techdocs/bookre
+ views.php ¤Ë¤¢¤ê¤Þ¤¹¡£ PostgreSQL µ»½Ñ¾ðÊóµ
+ »ö¤â¡¢http://techdocs.PostgreSQL.org/ ¤Ë¤¢¤ê¤Þ¤¹¡£
+
+ [ÌõÃí:
+ ÏÂÌõʸ½ñ¤Ï¡¢ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¤Îhttp://www.postgresql.jp/docum
+ ent/ ¤ò¤´¤é¤ó²¼¤µ¤¤¡£ ]
+
+ ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î¥¯¥é¥¤¥¢¥ó¥È¥×¥í¥°¥é¥àpsql
+ ¤â¡¢·¿¡¢±é»»»Ò¡¢´Ø¿ô¡¢½¸Ì󡢤½¤Î¾¤Î¾ðÊó¤ò¤ª¸«¤»¤¹¤ë¡¢¤¤¤¯¤Ä¤«¤ÎÁÇÀ²¤é
+ ¤·¤¤ \d ¥³¥Þ¥ó¥É¤ò»ý¤Á¤Þ¤¹¡£ - \?
+ ¤ò»È¤¦¤ÈÍøÍѲÄǽ¤Ê¥³¥Þ¥ó¥É¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£
+
+ ²æ¡¹¤Î Web ¥µ¥¤¥È¤Ë¤Ï¡¢¤â¤Ã¤ÈÂô»³¤Îʸ½ñ¤¬¤¢¤ê¤Þ¤¹¡£
+
+ 1.9) ´ûÃΤΥХ°¤ä̤¤À̵¤¤µ¡Ç½¤Ï¤É¤¦¤ä¤Ã¤Æ¸«¤Ä¤±¤Þ¤¹¤«¡©
+
+ PostgreSQL¤Ï³ÈÄ¥¤µ¤ì¤¿SQL-92¤Î¥µ¥Ö¥»¥Ã¥È¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£
+ ²æ¡¹¤Î¥Ú¡¼¥¸¤Î TODO ¥ê¥¹¥È¤Ë¡¢´ûÃΤΥХ°¤ä·çÍǽ¤ä¾
+ Íè·×²è¤Ë¤Ä¤¤¤Æ¤Îµ½Ò¤¬¤¢¤ê¤Þ¤¹¡£
+
+ 1.10) SQL ¤Ï¤É¤¦¤¹¤ì¤Ð³Ø¤Ù¤Þ¤¹¤«¡©
+
+ http://www.PostgreSQL.org/docs/awbook.html ¤Ë¤¢¤ëPostgreSQLËÜ¤Ç SQL
+ ¤ò¶µ¤¨¤Æ¤¤¤Þ¤¹¡£
[ÌõÃí:
ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¤Î ¡ÖPostgreSQL BookËÝÌõʬ²Ê²ñ¡×
¤Ë¤ÆËÝÌõ¤µ¤ì½ÐÈǤµ¤ì¤Æ¤¤¤Þ¤¹¡£
]
-¤½¤Î¾¤Ë¤â PostgreSQLËܤȤ·¤Æ¡¢http://www.commandprompt.com/ppbook ¤¬¤¢¤ê¤Þ¤¹¡£
-ÁÇÀ²¤é¤·¤¤¼ê°ú½ñ¤Ï¡¢http://www.intermedia.net/support/sql/sqltut.shtm, http://
-ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM, ¤½¤·¤Æ¡¢http://
-sqlcourse.com ¤Ë¤¢¤ê¤Þ¤¹¡£
-
-¤½¤Î¾¤Ç¤Ï¡¢ "Teach Yourself SQL in 21 Days, Second Edition" ¤¬ http://
-members.tripod.com/er4ebus/sql/index.htm¤Ë¤¢¤ê¤Þ¤¹¡£
-
-¿¤¯¤Î¥æ¡¼¥¶¤Ë¡¢ The Practical SQL Handbook, Bowman Judith S. et al.,
-Addison-Wesley ¤¬¹¥É¾¤Ç¤¹¡£¤½¤Î¾¤Ë¡¢The Complete Reference SQL, Groff et al.,
-McGraw-Hill ¤Î¤è¤¦¤Ê¤Î¤â¤¢¤ê¤Þ¤¹¡£
-
+ ¤½¤Î¾¤Ë¤â PostgreSQLËܤȤ·¤Æ¡¢http://www.commandprompt.com/ppbook
+ ¤¬¤¢¤ê¤Þ¤¹¡£
+ ÁÇÀ²¤é¤·¤¤¼ê°ú½ñ¤Ï¡¢http://www.intermedia.net/support/sql/sqltut.shtm,
+ http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,
+ ¤½¤·¤Æ¡¢http://sqlcourse.com ¤Ë¤¢¤ê¤Þ¤¹¡£
+
+ ¤½¤Î¾¤Ç¤Ï¡¢ "Teach Yourself SQL in 21 Days, Second Edition" ¤¬
+ http://members.tripod.com/er4ebus/sql/index.htm¤Ë¤¢¤ê¤Þ¤¹¡£
+
+ ¿¤¯¤Î¥æ¡¼¥¶¤Ë¡¢ The Practical SQL Handbook, Bowman Judith S. et al.,
+ Addison-Wesley ¤¬¹¥É¾¤Ç¤¹¡£ ¤½¤Î¾¤Ë¡¢The Complete Reference SQL,
+ Groff et al., McGraw-Hill ¤Î¤è¤¦¤Ê¤Î¤â¤¢¤ê¤Þ¤¹¡£
[ÌõÃí:
ÀаæãÉ×»á¤Ë¤è¤ëÆüËܸì¤Î»²¹Íʸ¸¥¤Î¾Ò²ð¥Ú¡¼¥¸
http://www.SRA.co.jp/people/t-ishii/PostgreSQL/doc-jp/index.html
¤¬¤¢¤ê¤Þ¤¹(¤ä¤ä¸Å¤¤2000ǯÈÇ)¡£
ËÙÅÄÎѱѻá¤Î¡ÖPostgreSQLÆüËܸì¥Þ¥Ë¥å¥¢¥ë¡×
http://www.net-newbie.com/
- ¤Ç¤Ï¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Î¸¡º÷¤¬¤Ç¤¤Þ¤¹¡£
+ ¤Ç¤Ï¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Î¸¡º÷¤¬¤Ç¤¤Þ¤¹¡£
´Ý»³ÉÔÆóÉ×»á¤ÎUNIX ¥Ç¡¼¥¿¥Ù¡¼¥¹ÆþÌç
http://www.wakhok.ac.jp/DB/DB.html
- ¤â¥ª¥ó¥é¥¤¥ó¤ÇÆɤळ¤È¤¬¤Ç¤¤Þ¤¹¡£
+ ¤â¥ª¥ó¥é¥¤¥ó¤ÇÆɤळ¤È¤¬¤Ç¤¤Þ¤¹¡£
]
-1.11) PostgreSQL¤ÏÀ¾Îñ2000ǯÌäÂê(Y2K)¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¤«¡©
-
-Âбþ¤·¤Æ¤Þ¤¹¡£À¾Îñ2000ǯ¤è¤ê¸å¤ÎÆüÉդ⡢µª¸µÁ°2000ǯ¤è¤êÁ°¤ÎÆüÉդ⡢´Êñ¤Ë°·¤¨
-¤Þ¤¹¡£
-
-1.12) ³«È¯¥Á¡¼¥à¤Ë¤Ï¤É¤Î¤è¤¦¤Ë»²²Ã¤·¤Þ¤¹¤«¡©
-
-¤Þ¤ººÇ½é(£±ÈÖÌÜ)¤Ë¡¢ºÇ¿·¤Î¥½¡¼¥¹¤ò¥À¥¦¥ó¥í¡¼¥É¤·¡¢²æ¡¹¤Î Web ¥µ¥¤¥È¤«ÇÛÉۤ˴ޤÞ
-¤ì¤Æ¤¤¤ëPostgreSQL Developers¤Îʸ½ñ¤òÆɤߤޤ¹¡££²ÈÖÌܤˡ¢pgsql-hackers ¤È
-pgsql-patches ¥á¡¼¥ê¥ó¥°¡¦¥ê¥¹¥È¤ò¹ØÆÉ(subscribe)¤·¤Þ¤¹¡££³ÈÖÌܤˡ¢¹âÉʼÁ¤Î¥Ñ¥Ã
-¥Á¤òpgsql-patches¤Ëȯ¿®¤·¤Þ¤¹¡£
-
-¤ª¤è¤½½½¿Í¤Á¤ç¤Ã¤È¤Î¿Í㤬¡¢PostgreSQL CVS¥¢¡¼¥«¥¤¥Ö¤Ë¥³¥ß¥Ã¥È¤¹¤ë¸¢¸Â¤ò»ý¤Ã¤Æ
-¤¤¤Þ¤¹¡£¤½¤Î¤½¤ì¤¾¤ì¤Î¿Í㤬Âô»³¤Î¹âÉʼÁ¤Ê¥Ñ¥Ã¥Á¤òȯ¿®¤¹¤ë¤Î¤Ç¡¢¸½ºß¥³¥ß¥Ã¥¿¡¼
-¤È¤Ê¤Ã¤Æ¤¤¤ë¿Íã¤Ï¤½¤ì¤ËÄɤ¤ÉÕ¤¯¤Î¤¬ÂçÊѤǤ¹¤¬¡¢²æ¡¹¤ÏÈà¤é¤¬¥³¥ß¥Ã¥È¤·¤¿¥Ñ¥Ã¥Á
-¤Ï¹âÉʼÁ¤Ç¤¢¤ë¤È³Î¿®¤·¤Æ¤¤¤Þ¤¹¡£
-
-1.13) ¥Ð¥°¥ì¥Ý¡¼¥È¤Ï¤É¤Î¤è¤¦¤Ëȯ¿®¤·¤Þ¤¹¤«¡©
-
-http://www.postgresql.org/support/submitbug ¤ÎPostgreSQL ¥Ð¥°¥Õ¥©¡¼¥à¤òˬ¤ì¤Æ²¼
-¤µ¤¤¡£¥Ð¥°¥ì¥Ý¡¼¥È¤òÄó½Ð¤¹¤ë»ÅÊý¤Ë¤Ä¤¤¤Æ¤Î¼ê°ú¤È»Ø¿Ë¤¬¤¢¤ê¤Þ¤¹¡£
-
-¤½¤ì¤ÈƱ»þ¤Ë ftp ¥µ¥¤¥È ftp://ftp.PostgreSQL.org/pub/¤Ç¡¢¤â¤Ã¤È¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó
-¤Î PostgreSQL ¤¢¤ë¤¤¤Ï¥Ñ¥Ã¥Á¤ò¤µ¤¬¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡£
-
-1.14) ¾¤ÎDBMS¤ÈÈæ¤Ù¤ÆPostgreSQL¤Ï¤É¤¦¤Ê¤Î¤Ç¤¹¤«¡©
-
-¥½¥Õ¥È¥¦¥§¥¢¤ò·×¤ëÊýË¡¤Ë¤Ï¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£µ¡Ç½¤ÈÀǽ¤È¿®ÍêÀ¤È¥µ¥Ý¡¼¥È¤È²Á³Ê
-¤Ç¤¹¡£
-
-µ¡Ç½(Features)
- PostgreSQL¤Ï¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¡¢ÉûÌ䤤¹ç¤ï¤»¡¢¥È¥ê¥¬¡¼¡¢¥Ó¥å¡¼¡¢³°Éô¥¡¼À°
- ¹çÀ»²¾È¡¢¤ª¤è¤Ó¡¢ÀöÎý¤µ¤ì¤¿¥í¥Ã¥¯µ¡¹½¤Ê¤É¡¢Â絬ÌϾ¦ÍÑDBMS¤¬»ý¤Äµ¡Ç½¤ò¤Û¤È
- ¤ó¤É»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¤µ¤é¤Ë PostgreSQL¤Ï¡¢¥æ¡¼¥¶ÄêµÁ·¿¡¢·Ñ¾µ¡¢¥ë¡¼¥ë¡¢¤½¤ì¤«¤é
- ¡¢¥í¥Ã¥¯¶¥¹ç¤ò½Ì¾®¤¹¤ë¥Þ¥ë¥Á¥Ð¡¼¥¸¥ç¥óƱ»þÀÀ©¸æ¤Ê¤É¡¢¾¦ÍÑDBMS¤â»ý¤Á¹ç¤ï¤»
- ¤Ê¤¤¤è¤¦¤Êµ¡Ç½¤ò¤¤¤¯¤Ä¤«»ý¤Á¹ç¤ï¤»¤Æ¤¤¤Þ¤¹¡£
-Àǽ(Performance)
- PostgreSQL¤Ï¾¤Î¾¦ÍѤ¢¤ë¤¤¤Ï¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤È¸ß³Ñ¤ÎÀǽ¤â»ý¤Á
- ¤Þ¤¹¡£¤¢¤ëÌ̤ǤϤè¤êÁᤫ¤Ã¤¿¤ê¡¢¤Û¤«¤ÎÌ̤ǤϤè¤êÃÙ¤«¤Ã¤¿¤ê¤·¤Þ¤¹¡£MySQL¤Ê¤É
- ¤ÎÆò½·¿¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥·¥¹¥Æ¥à¤Ë¤¯¤é¤Ù¤Æ¡¢PostgreSQL ¤ÏÊ£¿ô¥æ¡¼¥¶¤äÊ£»¨¤ÊÌä
- ¤¤¹ç¤ï¤»¡¢¤Þ¤¿¡¢ read/write Ì䤤¹ç¤ï¤»¤Î¥í¡¼¥É¤¬¤è¤ê¹â®¤Ç¤¹¡£MySQL¤Ï¾¯¤Ê¤¤
- ¥æ¡¼¥¶¤Ç¤Îñ½ã¤Ê SELECT Ì䤤¹ç¤ï¤»¤Ç¤Ï¹â®¤Ç¤¹¡£¤â¤Á¤í¤ó¡¢MySQL¤Ë¤Ï¾åµ¤Î
- Features¤ÎÀá¤Ë¼¨¤¹¤è¤¦¤Êµ¡Ç½¤Ï¤Û¤È¤ó¤É¤¢¤ê¤Þ¤»¤ó¡£²æ¡¹¤Ï¡¢PostgreSQL¤Ë½ÀÆð
- À¤Èµ¡Ç½À¤òÁȤ߹þ¤ß¤Ê¤¬¤é¤â¡¢À䤨¤ºÀǽ¤Î²þÁ±¤ò³¤±¤Æ¤¤¤Þ¤¹¡£
-¿®ÍêÀ(Reliability)
- ²æ¡¹¤Ï¡¢DBMS¤Î¿®ÍêÀ¤¬¹â¤¯¤Ê¤¯¤Æ¤Ï¤½¤Î²ÁÃͤ¬Ìµ¤¤¤³¤È¤òÍý²ò¤·¤Æ¤Þ¤¹¡£½½Ê¬¥Æ
- ¥¹¥È¤·¤Æ¡¢°ÂÄꤷ¤¿¥³¡¼¥É¤ò¥Ð¥°¤òºÇ¾®¤Ë¤·¤Æ¤«¤é¥ê¥ê¡¼¥¹¤¹¤ë¤è¤¦¤ËÅؤá¤Æ¤Þ¤¹
- ¡£¤½¤ì¤¾¤ì¤Î¥ê¥ê¡¼¥¹¤Ï¾¯¤Ê¤¯¤È¤â1¥«·î°Ê¾å¤Î¥Ù¡¼¥¿¡¦¥Æ¥¹¥È¤ò¹Ô¤Ê¤¤¡¢¤³¤ì¤Þ¤Ç
- ¤Î¥ê¥ê¡¼¥¹¤ÎÍúÎò¤¬¡¢À½ÉÊÈǤȤ·¤Æ°ÂÄꤷ¤¿·ø¸Ç¤Ê¥ê¥ê¡¼¥¹¤Ç¤¢¤ë¤³¤È¤òʪ¸ì¤Ã¤Æ
- ¤¤¤Þ¤¹¡£¤³¤ÎʬÌî¤Ç¤Ï¡¢Â¾¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÈÈæ¤Ù¤Æ¤â½¿§¤¬¤Ê¤¤¤³¤È¤Ë¼«¿®¤ò»ý¤Ã
- ¤Æ¤¤¤Þ¤¹¡£
-¥µ¥Ý¡¼¥È(Support)
- ²æ¡¹¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ï¡¢Áø¶ø¤¹¤ë¤¤¤«¤Ê¤ëÌäÂê¤Ë¤Ä¤¤¤Æ¤â²ò·è¤Ø¤Î¼ê½õ¤±¤ò¤·
- ¤Æ¤¯¤ì¤ë¡¢³«È¯¼Ô¤ä¥æ¡¼¥¶¤ÎÂ礤ʽ¸¤Þ¤ê¤Ø¤ÎÀÜÅÀ¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡£²æ¡¹¤ÏÌäÂê
- ¤Î²ò·è¤òÊݾڤ¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¤¬¡¢¾¦Íѥǡ¼¥¿¥Ù¡¼¥¹¤Ç¤¢¤Ã¤Æ¤â¾ï¤Ë²ò·è¤µ¤ì
- ¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£³«È¯¼Ô¤ä¡¢¥æ¡¼¥¶¡¦¥³¥ß¥å¥Ë¥Æ¥£¡¢¥Þ¥Ë¥å¥¢¥ëÎà¡¢¤½¤ì¤Ë
- ¡¢¥½¡¼¥¹¥³¡¼¥É¤Ê¤É¤ØľÀÜ¥¢¥¯¥»¥¹¤Ç¤¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢PostgreSQL¤Î¥µ¥Ý¡¼¥È¤Ï
- ¡¢Â¾¤ÎDBMS¥µ¥Ý¡¼¥È¤è¤ê¤âÍ¥¤ì¤¿¤â¤Î¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¸æÍ×˾¤ËÅú¤¨¤Æ¡¢»öÊÁËè¤Î
- ¾¦ÍÑ¥µ¥Ý¡¼¥È¤Ê¤É¤â¤¢¤ê¤Þ¤¹¡ÊFAQ1.6Àá¤ò¤´Í÷²¼¤µ¤¤¡Ë¡£
-²Á³Ê(Price)
- PostgreSQL¤ÎÍøÍѤϡ¢¾¦ÍѤǤâÈó¾¦ÍѤǤ⡢¤¹¤Ù¤Æ̵ÎÁ¤Ç¤¹¡£¾åµ¤Ë¼¨¤·¤Æ¤¢¤ëBSD
- ¥¹¥¿¥¤¥ë¤Î»ÈÍѵöÂú¤Ë³°¤ì¤Ê¤¤¸Â¤ê¡¢PostgreSQL¤Î¥³¡¼¥É¤òÀ©¸Â̵¤·¤Ç¾¦ÉʤËÁȤß
- ¹þ¤à¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
-
-1.15) PostgreSQL¤ò»ñ¶âÌ̤DZç½õ¤¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤è¤¤¤Ç¤¹¤«¡©
-
-PostgreSQL¤Ï¡¢²æ¡¹¤¬»Ï¤á¤¿ 1996ǯ°ÊÍè¡¢ºÇ¹â¥¯¥é¥¹¤Î¾ðÊó´ðÈפò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤ì
-¤Ï¤¹¤Ù¤Æ¡¢Marc Fournie¤µ¤ó¤Î¤ª¤«¤²¤Ç¡¢Èà¤Ï¤³¤Î´ðÈפòÁϤê½Ð¤·¡¢²¿Ç¯¤Ë¤â¤ï¤¿¤Ã¤Æ
-´ÉÍý¤·¤Æ¤¤Þ¤·¤¿¡£
-
-¼Á¤ÎÎɤ¤´ðÈפϡ¢¥ª¡¼¥×¥ó¥½¡¼¥¹¡¦¥×¥í¥¸¥§¥¯¥È¤Ë¤È¤Ã¤Æ¤Ï¤È¤Æ¤âÂçÀڤʤâ¤Î¤Ç¡¢¥×¥í
-¥¸¥§¥¯¥È¤¬Á°¿Ê¤¹¤ëÀª¤¤¤ò¼º¤Ã¤ÆʬÎö¤¹¤ë¤Î¤ò²óÈò¤·¤Þ¤¹¡£
-
-¤â¤Á¤í¤ó¡¢¤³¤Î´ðÈפϰ¤¤¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£°Ý»ý¤·Â³¤±¤ë¤¿¤á¤Ë¤ÏËè·î¤¢¤ë¤¤¤Ï°ì
-»þŪ¤Ë·ÐÈñ¤¬¤«¤«¤ê¤Þ¤¹¡£¤â¤·¡¢¤¢¤Ê¤¿¤ä¤¢¤Ê¤¿¤Î²ñ¼Ò¤Ë¡¢¤³¤¦¤·¤¿ÅØÎϤΤ¿¤á¤Î»ñ¶â
-¤Î±ç½õ¤ò»Ü¤¹¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ç¤·¤¿¤é¡¢http://store.pgsql.com/shopping/¤«¤é´óÉÕ
-¤ò¤ª´ê¤¤¤·¤Þ¤¹¡£
-
-¤Þ¤¿¡¢Web¥Ú¡¼¥¸¤Ë¤Ï PostgreSQL,Inc ¤È¤¢¤ê¤Þ¤¹¤¬¡¢¤½¤³¤Î "¹×¸¥(contributions)"¤È
-¤¤¤¦¹àÌܤϡ¢ PostgreSQL ¥×¥í¥¸¥§¥¯¥È¤ò»Ù±ç¤¹¤ë¤À¤±¤Î¤¿¤á¤Ç¡¢·è¤·¤ÆÆÃÄê¤Î²ñ¼Ò¤Î
-¤¿¤á¤Î»ñ¶â¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤â¤·¡¢¾®ÀÚ¼ê(check)¤ÎÊý¤¬ÅÔ¹ç¤è¤±¤ì¤ÐÏ¢ÍíÀè¤Î½»½ê¤Ø¤ª
-Á÷¤ê²¼¤µ¤¤¡£
-
-¤µ¤é¤Ë¡¢PostgreSQL¤ò»È¤Ã¤¿À®¸ù»öÎã¤ò¤ª»ý¤Á¤Ç¤¢¤ì¤Ð¡¢¤¼¤Ò¡¢¤ï¤ì¤ï¤ì¤Î»öÎã¾Ò²ð¥ê
-¥¹¥È pgsql-advocacy@postgresql.org ¤Ø¤ªÁ÷¤ê¤¯¤À¤µ¤¤¡£
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- ¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¤¥¢¥ó¥È¤Î¼ÁÌä
-
-2.1) PostgreSQL ¤Î¤¿¤á¤Î ODBC ¥É¥é¥¤¥Ð¡¼¤Ï¤¢¤ê¤Þ¤¹¤«¡©
-
-PsqlODBC ¤È OpenLink ODBC ¤ÎÆó¤Ä¤Î ODBC ¥É¥é¥¤¥Ð¡¼¤¬ÍøÍѲÄǽ¤Ç¤¹¡£
-
-PsqlODBC ¤Ï¼¡¤Î¾ì½ê¤«¤é¥À¥¦¥ó¥í¡¼¥É¤Ç¤¤Þ¤¹¡£ http://gborg.postgresql.org/
-project/psqlodbc/projdisplay.php
-
-OpenLink ODBC ¤Ï http://www.openlinksw.com/¤«¤éÆþ¼ê¤Ç¤¤Þ¤¹¡£É¸½àŪ¤Ê ODBC ¥¯¥é
-¥¤¥¢¥ó¥È¡¦¥½¥Õ¥È¥¦¥§¥¢¤Ç»È¤¨¤Þ¤¹¤Î¤Ç¡¢»Ù±ç¤·¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥×¥é¥Ã¥È¥Û¡¼¥à(Win,
-Mac, Unix, VMS)¤«¤é PostgreSQL ¤Î ODBC ¤¬ÍøÍѤǤ¤Þ¤¹¡£
-
-¤¿¤Ö¤óÈà¤é¤Ï¡¢¾¦ÍÑÉʼÁ¤Î¥µ¥Ý¡¼¥È¤ÎɬÍפʿ͡¹¤ËÇä¤Ã¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢¥Õ¥ê¡¼¥¦
-¥§¥¢ÈǤϤ¤¤Ä¤Ç¤âÆþ¼ê²Äǽ¤Î¤è¤¦¤Ç¤¹¡£¼ÁÌä¤Ï¡¢postgres95@openlink.co.uk ¤ØÁ÷¤Ã¤Æ
-²¼¤µ¤¤¡£
-
-Programmer's Guide ¤Î ODBC ¤Î¾Ï¤â¤´Í÷¤¯¤À¤µ¤¤¡£
-
-2.2) PostgreSQL ¤ò Web ¥Ú¡¼¥¸¤ÈÏ¢·È¤µ¤»¤ë¤Ë¤Ï¤É¤ó¤Ê¥Ä¡¼¥ë¤¬¤¢¤ê¤Þ¤¹¤«¡©
-
-¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò΢¤Ë»ý¤Ä Web ¥Ú¡¼¥¸¤Ë¤Ä¤¤¤Æ¤ÎÁÇÀ²¤é¤·¤¤¾Ò²ð¤¬¡¢
-http://www.webreview.com¤Ë¤¢¤ê¤Þ¤¹¡£
-
-Web ¤Ø¤Î³ÈÄ¥¤Î¤¿¤á¤Ë¤Ï¡¢PHP ¤¬Âî±Û¤·¤¿¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£http://
-www.php.net/¤Ë¤¢¤ê¤Þ¤¹¡£
-
+ 1.11) PostgreSQL¤ÏÀ¾Îñ2000ǯÌäÂê(Y2K)¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¤«¡©
+
+ Âбþ¤·¤Æ¤Þ¤¹¡£À¾Îñ2000ǯ¤è¤ê¸å¤ÎÆüÉդ⡢µª¸µÁ°2000ǯ¤è¤êÁ°¤ÎÆüÉդ⡢´Ê
+ ñ¤Ë°·¤¨¤Þ¤¹¡£
+
+ 1.12) ³«È¯¥Á¡¼¥à¤Ë¤Ï¤É¤Î¤è¤¦¤Ë»²²Ã¤·¤Þ¤¹¤«¡©
+
+ ¤Þ¤ººÇ½é(£±ÈÖÌÜ)¤Ë¡¢ºÇ¿·¤Î¥½¡¼¥¹¤ò¥À¥¦¥ó¥í¡¼¥É¤·¡¢²æ¡¹¤Î Web
+ ¥µ¥¤¥È¤«ÇÛÉۤ˴ޤޤì¤Æ¤¤¤ëPostgreSQL Developers¤Îʸ½ñ¤òÆɤߤޤ¹¡£
+ £²ÈÖÌܤˡ¢pgsql-hackers ¤È pgsql-patches
+ ¥á¡¼¥ê¥ó¥°¡¦¥ê¥¹¥È¤ò¹ØÆÉ(subscribe)¤·¤Þ¤¹¡£
+ £³ÈÖÌܤˡ¢¹âÉʼÁ¤Î¥Ñ¥Ã¥Á¤òpgsql-patches¤Ëȯ¿®¤·¤Þ¤¹¡£
+
+ ¤ª¤è¤½½½¿Í¤Á¤ç¤Ã¤È¤Î¿Í㤬¡¢PostgreSQL
+ CVS¥¢¡¼¥«¥¤¥Ö¤Ë¥³¥ß¥Ã¥È¤¹¤ë¸¢¸Â¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£
+ ¤½¤Î¤½¤ì¤¾¤ì¤Î¿Í㤬Âô»³¤Î¹âÉʼÁ¤Ê¥Ñ¥Ã¥Á¤òȯ¿®¤¹¤ë¤Î¤Ç¡¢¸½ºß¥³¥ß¥Ã¥¿¡¼
+ ¤È¤Ê¤Ã¤Æ¤¤¤ë¿Íã¤Ï¤½¤ì¤ËÄɤ¤ÉÕ¤¯¤Î¤¬ÂçÊѤǤ¹¤¬¡¢²æ¡¹¤ÏÈà¤é¤¬¥³¥ß¥Ã¥È¤·
+ ¤¿¥Ñ¥Ã¥Á¤Ï¹âÉʼÁ¤Ç¤¢¤ë¤È³Î¿®¤·¤Æ¤¤¤Þ¤¹¡£
+
+ 1.13) ¥Ð¥°¥ì¥Ý¡¼¥È¤Ï¤É¤Î¤è¤¦¤Ëȯ¿®¤·¤Þ¤¹¤«¡©
+
+ http://www.postgresql.org/support/submitbug ¤ÎPostgreSQL
+ ¥Ð¥°¥Õ¥©¡¼¥à¤òˬ¤ì¤Æ²¼¤µ¤¤¡£
+ ¥Ð¥°¥ì¥Ý¡¼¥È¤òÄó½Ð¤¹¤ë»ÅÊý¤Ë¤Ä¤¤¤Æ¤Î¼ê°ú¤È»Ø¿Ë¤¬¤¢¤ê¤Þ¤¹¡£
+
+ ¤½¤ì¤ÈƱ»þ¤Ë ftp ¥µ¥¤¥È
+ ftp://ftp.PostgreSQL.org/pub/¤Ç¡¢¤â¤Ã¤È¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Î PostgreSQL
+ ¤¢¤ë¤¤¤Ï¥Ñ¥Ã¥Á¤ò¤µ¤¬¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡£
+
+ 1.14) ¾¤ÎDBMS¤ÈÈæ¤Ù¤ÆPostgreSQL¤Ï¤É¤¦¤Ê¤Î¤Ç¤¹¤«¡©
+
+ ¥½¥Õ¥È¥¦¥§¥¢¤ò·×¤ëÊýË¡¤Ë¤Ï¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£µ¡Ç½¤ÈÀǽ¤È¿®ÍêÀ
+ ¤È¥µ¥Ý¡¼¥È¤È²Á³Ê¤Ç¤¹¡£
+
+ µ¡Ç½(Features)
+ PostgreSQL¤Ï¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¡¢ÉûÌ䤤¹ç¤ï¤»¡¢¥È¥ê¥¬¡¼¡¢¥Ó¥å¡¼¡
+ ¢³°Éô¥¡¼À°¹çÀ
+ »²¾È¡¢¤ª¤è¤Ó¡¢ÀöÎý¤µ¤ì¤¿¥í¥Ã¥¯µ¡¹½¤Ê¤É¡¢Â絬ÌϾ¦ÍÑDBMS¤¬»ý¤Äµ¡Ç
+ ½¤ò¤Û¤È¤ó¤É»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¤µ¤é¤Ë
+ PostgreSQL¤Ï¡¢¥æ¡¼¥¶ÄêµÁ·¿¡¢·Ñ¾µ¡¢¥ë¡¼¥ë¡¢¤½¤ì¤«¤é¡¢¥í¥Ã¥¯¶¥¹ç¤
+ ò½Ì¾®¤¹¤ë¥Þ¥ë¥Á¥Ð¡¼¥¸¥ç¥óƱ»þÀ
+ À©¸æ¤Ê¤É¡¢¾¦ÍÑDBMS¤â»ý¤Á¹ç¤ï¤»¤Ê¤¤¤è¤¦¤Êµ¡Ç½¤ò¤¤¤¯¤Ä¤«»ý¤Á¹ç¤ï¤
+ »¤Æ¤¤¤Þ¤¹¡£
+
+ Àǽ(Performance)
+ PostgreSQL¤Ï¾¤Î¾¦ÍѤ¢¤ë¤¤¤Ï¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤È¸ß³Ñ¤
+ ÎÀ
+ ǽ¤â»ý¤Á¤Þ¤¹¡£¤¢¤ëÌ̤ǤϤè¤êÁᤫ¤Ã¤¿¤ê¡¢¤Û¤«¤ÎÌ̤ǤϤè¤êÃÙ¤«¤Ã¤
+ ¿¤ê¤·¤Þ¤¹¡£MySQL¤Ê¤É¤ÎÆò½·¿¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥·¥¹¥Æ¥à¤Ë¤¯¤é¤Ù¤Æ¡¢P
+ ostgreSQL ¤ÏÊ£¿ô¥æ¡¼¥¶¤äÊ£»¨¤ÊÌ䤤¹ç¤ï¤»¡¢¤Þ¤¿¡¢ read/write
+ Ì䤤¹ç¤ï¤»¤Î¥í¡¼¥É¤¬¤è¤ê¹â®¤Ç¤¹¡£MySQL¤Ï¾¯¤Ê¤¤¥æ¡¼¥¶¤Ç¤Îñ½ã¤Ê
+ SELECT Ì䤤¹ç¤ï¤»¤Ç¤Ï¹â®¤Ç¤¹¡£¤â¤Á¤í¤ó¡¢MySQL¤Ë¤Ï¾åµ
+ ¤ÎFeatures¤ÎÀá¤Ë¼¨¤¹¤è¤¦¤Êµ¡Ç½¤Ï¤Û¤È¤ó¤É¤¢¤ê¤Þ¤»¤ó¡£²æ¡¹¤Ï¡¢Pos
+ tgreSQL¤Ë½ÀÆðÀ¤Èµ¡Ç½À¤òÁȤ߹þ¤ß¤Ê¤¬¤é¤â¡¢À䤨¤ºÀ
+ ǽ¤Î²þÁ±¤ò³¤±¤Æ¤¤¤Þ¤¹¡£
+
+ ¿®ÍêÀ(Reliability)
+ ²æ¡¹¤Ï¡¢DBMS¤Î¿®ÍêÀ
+ ¤¬¹â¤¯¤Ê¤¯¤Æ¤Ï¤½¤Î²ÁÃͤ¬Ìµ¤¤¤³¤È¤òÍý²ò¤·¤Æ¤Þ¤¹¡£½½Ê¬¥Æ¥¹¥È¤·¤Æ¡
+ ¢°ÂÄꤷ¤¿¥³¡¼¥É¤ò¥Ð¥°¤òºÇ¾®¤Ë¤·¤Æ¤«¤é¥ê¥ê¡¼¥¹¤¹¤ë¤è¤¦¤ËÅؤá¤Æ¤Þ
+ ¤¹¡£¤½¤ì¤¾¤ì¤Î¥ê¥ê¡¼¥¹¤Ï¾¯¤Ê¤¯¤È¤â1¥«·î°Ê¾å¤Î¥Ù¡¼¥¿¡¦¥Æ¥¹¥È¤ò¹Ô
+ ¤Ê¤¤¡¢¤³¤ì¤Þ¤Ç¤Î¥ê¥ê¡¼¥¹¤ÎÍúÎò¤¬¡¢À½ÉÊÈǤȤ·¤Æ°ÂÄꤷ¤¿·ø¸Ç¤Ê¥ê¥
+ ꡼¥¹¤Ç¤¢¤ë¤³¤È¤òʪ¸ì¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤ÎʬÌî¤Ç¤Ï¡¢Â¾¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹
+ ¤ÈÈæ¤Ù¤Æ¤â½¿§¤¬¤Ê¤¤¤³¤È¤Ë¼«¿®¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£
+
+ ¥µ¥Ý¡¼¥È(Support)
+ ²æ¡¹¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ï¡¢Áø¶ø¤¹¤ë¤¤¤«¤Ê¤ëÌäÂê¤Ë¤Ä¤¤¤Æ¤â²ò·è¤Ø¤
+ μê½õ¤±¤ò¤·¤Æ¤¯¤ì¤ë¡¢³«È¯¼Ô¤ä¥æ¡¼¥¶¤ÎÂç¤
+ ¤Ê½¸¤Þ¤ê¤Ø¤ÎÀÜÅÀ¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡£²æ¡¹¤ÏÌäÂê¤Î²ò·è¤òÊݾڤ¹¤ë¤³¤
+ ȤϤǤ
+ ¤Þ¤»¤ó¤¬¡¢¾¦Íѥǡ¼¥¿¥Ù¡¼¥¹¤Ç¤¢¤Ã¤Æ¤â¾ï¤Ë²ò·è¤µ¤ì¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤
+ Þ¤»¤ó¡£³«È¯¼Ô¤ä¡¢¥æ¡¼¥¶¡¦¥³¥ß¥å¥Ë¥Æ¥£¡¢¥Þ¥Ë¥å¥¢¥ëÎà¡¢¤½¤ì¤Ë¡¢¥½
+ ¡¼¥¹¥³¡¼¥É¤Ê¤É¤ØľÀÜ¥¢¥¯¥»¥¹¤Ç¤
+ ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢PostgreSQL¤Î¥µ¥Ý¡¼¥È¤Ï¡¢Â¾¤ÎDBMS¥µ¥Ý¡¼¥È¤è¤ê¤âÍ
+ ¥¤ì¤¿¤â¤Î¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¸æÍ×˾¤ËÅú¤¨¤Æ¡¢»öÊÁËè¤Î¾¦ÍÑ¥µ¥Ý¡¼¥È¤Ê
+ ¤É¤â¤¢¤ê¤Þ¤¹¡ÊFAQ1.6Àá¤ò¤´Í÷²¼¤µ¤¤¡Ë¡£
+
+ ²Á³Ê(Price)
+ PostgreSQL¤ÎÍøÍѤϡ¢¾¦ÍѤǤâÈó¾¦ÍѤǤ⡢¤¹¤Ù¤Æ̵ÎÁ¤Ç¤¹¡£¾åµ
+ ¤Ë¼¨¤·¤Æ¤¢¤ëBSD¥¹¥¿¥¤¥ë¤Î»ÈÍѵöÂú¤Ë³°¤ì¤Ê¤¤¸Â¤ê¡¢PostgreSQL¤Î¥³
+ ¡¼¥É¤òÀ©¸Â̵¤·¤Ç¾¦ÉʤËÁȤ߹þ¤à¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+
+ 1.15) PostgreSQL¤ò»ñ¶âÌ̤DZç½õ¤¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤è¤¤¤Ç¤¹¤«¡©
+
+ PostgreSQL¤Ï¡¢²æ¡¹¤¬»Ï¤á¤¿ 1996ǯ°ÊÍè¡¢ºÇ¹â¥¯¥é¥¹¤Î¾ðÊó´ðÈפò»ý¤Ã¤Æ¤¤
+ ¤Þ¤¹¡£¤³¤ì¤Ï¤¹¤Ù¤Æ¡¢Marc
+ Fournie¤µ¤ó¤Î¤ª¤«¤²¤Ç¡¢Èà¤Ï¤³¤Î´ðÈפòÁϤê½Ð¤·¡¢²¿Ç¯¤Ë¤â¤ï¤¿¤Ã¤Æ´ÉÍý¤·¤
+ Ƥ¤Þ¤·¤¿¡£
+
+ ¼Á¤ÎÎɤ¤´ðÈפϡ¢¥ª¡¼¥×¥ó¥½¡¼¥¹¡¦¥×¥í¥¸¥§¥¯¥È¤Ë¤È¤Ã¤Æ¤Ï¤È¤Æ¤âÂçÀڤʤâ¤Î
+ ¤Ç¡¢¥×¥í¥¸¥§¥¯¥È¤¬Á°¿Ê¤¹¤ëÀª¤¤¤ò¼º¤Ã¤ÆʬÎö¤¹¤ë¤Î¤ò²óÈò¤·¤Þ¤¹¡£
+
+ ¤â¤Á¤í¤ó¡¢¤³¤Î´ðÈפϰ¤¤¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£°Ý»ý¤·Â³¤±¤ë¤¿¤á¤Ë¤ÏËè·î¤¢
+ ¤ë¤¤¤Ï°ì»þŪ¤Ë·ÐÈñ¤¬¤«¤«¤ê¤Þ¤¹¡£¤â¤·¡¢¤¢¤Ê¤¿¤ä¤¢¤Ê¤¿¤Î²ñ¼Ò¤Ë¡¢¤³¤¦¤·¤¿
+ ÅØÎϤΤ¿¤á¤Î»ñ¶â¤Î±ç½õ¤ò»Ü¤¹¤³¤È¤¬¤Ç¤
+ ¤ë¤è¤¦¤Ç¤·¤¿¤é¡¢http://store.pgsql.com/shopping/¤«¤é´óÉÕ¤ò¤ª´ê¤¤¤·¤Þ¤¹
+ ¡£
+
+ ¤Þ¤¿¡¢Web¥Ú¡¼¥¸¤Ë¤Ï PostgreSQL,Inc ¤È¤¢¤ê¤Þ¤¹¤¬¡¢¤½¤³¤Î
+ "¹×¸¥(contributions)"¤È¤¤¤¦¹àÌܤϡ¢ PostgreSQL
+ ¥×¥í¥¸¥§¥¯¥È¤ò»Ù±ç¤¹¤ë¤À¤±¤Î¤¿¤á¤Ç¡¢·è¤·¤ÆÆÃÄê¤Î²ñ¼Ò¤Î¤¿¤á¤Î»ñ¶â¤Ç¤Ï¤¢
+ ¤ê¤Þ¤»¤ó¡£¤â¤·¡¢¾®ÀÚ¼ê(check)¤ÎÊý¤¬ÅÔ¹ç¤è¤±¤ì¤ÐÏ¢ÍíÀè¤Î½»½ê¤Ø¤ªÁ÷¤ê²¼¤
+ µ¤¤¡£
+
+ ¤µ¤é¤Ë¡¢PostgreSQL¤ò»È¤Ã¤¿À®¸ù»öÎã¤ò¤ª»ý¤Á¤Ç¤¢¤ì¤Ð¡¢¤¼¤Ò¡¢¤ï¤ì¤ï¤ì¤Î
+ »öÎã¾Ò²ð¥ê¥¹¥È pgsql-advocacy@postgresql.org ¤Ø¤ªÁ÷¤ê¤¯¤À¤µ¤¤¡£
+ _________________________________________________________________
+
+ ¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¤¥¢¥ó¥È¤Î¼ÁÌä
+
+ 2.1) PostgreSQL ¤Î¤¿¤á¤Î ODBC ¥É¥é¥¤¥Ð¡¼¤Ï¤¢¤ê¤Þ¤¹¤«¡©
+
+ PsqlODBC ¤È OpenLink ODBC ¤ÎÆó¤Ä¤Î ODBC ¥É¥é¥¤¥Ð¡¼¤¬ÍøÍѲÄǽ¤Ç¤¹¡£
+
+ PsqlODBC ¤Ï¼¡¤Î¾ì½ê¤«¤é¥À¥¦¥ó¥í¡¼¥É¤Ç¤¤Þ¤¹¡£
+ http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
+
+ OpenLink ODBC ¤Ï http://www.openlinksw.com/¤«¤éÆþ¼ê¤Ç¤¤Þ¤¹¡£É¸½àŪ¤Ê
+ ODBC
+ ¥¯¥é¥¤¥¢¥ó¥È¡¦¥½¥Õ¥È¥¦¥§¥¢¤Ç»È¤¨¤Þ¤¹¤Î¤Ç¡¢»Ù±ç¤·¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥×¥é¥Ã¥È
+ ¥Û¡¼¥à(Win, Mac, Unix, VMS)¤«¤é PostgreSQL ¤Î ODBC ¤¬ÍøÍѤǤ¤Þ¤¹¡£
+
+ ¤¿¤Ö¤óÈà¤é¤Ï¡¢¾¦ÍÑÉʼÁ¤Î¥µ¥Ý¡¼¥È¤ÎɬÍפʿ͡¹¤ËÇä¤Ã¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢
+ ¥Õ¥ê¡¼¥¦¥§¥¢ÈǤϤ¤¤Ä¤Ç¤âÆþ¼ê²Äǽ¤Î¤è¤¦¤Ç¤¹¡£¼ÁÌä¤Ï¡¢postgres95@openlin
+ k.co.uk ¤ØÁ÷¤Ã¤Æ²¼¤µ¤¤¡£
+
+ Programmer's Guide ¤Î ODBC ¤Î¾Ï¤â¤´Í÷¤¯¤À¤µ¤¤¡£
+
+ 2.2) PostgreSQL ¤ò Web ¥Ú¡¼¥¸¤ÈÏ¢·È¤µ¤»¤ë¤Ë¤Ï¤É¤ó¤Ê¥Ä¡¼¥ë¤¬¤¢¤ê¤Þ¤¹¤«¡©
+
+ ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò΢¤Ë»ý¤Ä Web ¥Ú¡¼¥¸¤Ë¤Ä¤¤¤Æ¤ÎÁÇÀ²¤é¤·¤¤¾Ò²ð¤¬¡¢
+ http://www.webreview.com¤Ë¤¢¤ê¤Þ¤¹¡£
+
+ Web ¤Ø¤Î³ÈÄ¥¤Î¤¿¤á¤Ë¤Ï¡¢PHP
+ ¤¬Âî±Û¤·¤¿¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£http://www.php.net/¤Ë¤¢¤ê¤Þ¤
+ ¹¡£
[ÌõÃí:
- PHP¤Ë´Ø¤¹¤ëÆüËܸì¤Î¾ðÊó¤Ï¡¢2000ǯ4·î19Æü¤Ëȯ¤·¤¿ÆüËÜPHP¥æ¡¼¥¶²ñ¤Î¥µ¥¤¥È
+ PHP¤Ë´Ø¤¹¤ëÆüËܸì¤Î¾ðÊó¤Ï¡¢2000ǯ4·î19Æü¤Ëȯ¤·¤¿ÆüËÜPHP¥æ¡¼¥¶²ñ¤Î¥µ¥¤¥È
http://www.php.gr.jp/
¤¢¤ë¤¤¤Ï¡¢×¢Àî Îव¤ó¤Î¥µ¥¤¥È
http://www.geocities.jp/rui_hirokawa/php/
¤Ë¤«¤Ê¤ê¤Þ¤È¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£
]
-½èÍý¤¬Ê£»¨¤Ê¾ì¹ç¡¢Â¿¤¯¤Î¿Í¤Ï Perl ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤È CGI.pm ¤« mod_perl ¤ò»È¤¤
-¤Þ¤¹¡£
-
+ ½èÍý¤¬Ê£»¨¤Ê¾ì¹ç¡¢Â¿¤¯¤Î¿Í¤Ï Perl ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤È CGI.pm ¤«
+ mod_perl ¤ò»È¤¤¤Þ¤¹¡£
[ÌõÃí:
WDB ¤Ï¡¢Web ¤«¤é DataBase ¤Ø¤Î Perl ¤Î Interface ¤Ç¤¹¡£
wdb-p95 ¤Ø¤Î¥ê¥ó¥¯¤ÏÀÚ¤ì¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£¤ª¤½¤é¤¯¡¢Perl DBI ·Ðͳ¤Ç DBD::Pg ¤ÎÍøÍѤ¬²Äǽ¤È»×¤ï¤ì¤Þ¤¹¡£
¤È¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î·Ð°Þ¤Ï¤è¤¯¤ï¤«¤ê¤Þ¤»¤ó¡£
]
-2.3) PostgreSQL ¤Ë¥°¥é¥Õ¥£¥«¥ë¡¦¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï¤¢¤ê¤Þ¤¹¤«¡©
-
-¤â¤Á¤í¤ó¡¢PostgreSQL ¤Ø¤Î¥°¥é¥Õ¥£¥«¥ë¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£¤½¤ÎÃæ
-¤ËPgAccess http://www.pgaccess.org ¤â´Þ¤Þ¤ì¤Þ¤¹¡£ PgAdmin III (http://
-www.pgadmin.org)¤â¤¢¤ê¤Þ¤¹¡£ RHDB Admin (http://sources.redhat.com/rhdb/ )¡¢
-TORA (http://www.globecom.net/tora/ (ÉôʬŪ¤Ë¾¦ÍÑ)) ¤ª¤è¤Ó¡¢ Rekall ( http://
-www.thekompany.com/products/rekall/, proprietary)¤â¤¢¤ê¤Þ¤¹¡£ PhpPgAdmin (
-http://phppgadmin.sourceforge.net/ ) ¤ÏPostgreSQL¤Ø¤ÎWeb¥Ù¡¼¥¹¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤
-¥¹¤òÄ󶡤·¤Þ¤¹¡£
-
-¤è¤ê¾ÜºÙ¤Ê¥ê¥¹¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢http://techdocs.postgresql.org/guides/GUITools ¤ò¤´
-Í÷¤¯¤À¤µ¤¤¡£
-
-2.4) ¤É¤Î¤è¤¦¤Ê¸À¸ì¤Ç PostgreSQL ¤ÈÄÌ¿®¤Ç¤¤¹¤«¡©
-
-¿Íµ¤¤Î¤¢¤ë¤Û¤È¤ó¤É¤Î¸À¸ì¤ÏPostgreSQL¤Ø¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£¤¢¤Ê¤¿
-¤¬»È¤¦¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î³ÈÄ¥¥â¥¸¥å¡¼¥ë¤Î¥ê¥¹¥È¤òÇÁ¤¤¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
-
-°Ê²¼¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ÏPostgreSQL¤ÎÇÛÉۤ˴ޤޤì¤Æ¤¤¤Þ¤¹¡£
-
- ¡¦ C (libpq)
- ¡¦ Ëä¤á¹þ¤ßC (ecpg)
- ¡¦ Java (jdbc)
- ¡¦ Python (PyGreSQL)
- ¡¦ TCL (libpgtcl)
-
-¤½¤Î¾¤ÎÍøÍѲÄǽ¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï http://gborg.postgresql.org ¤ÎDrivers/
-Interfaces¤Î¥»¥¯¥·¥ç¥ó¤Ë¤¢¤ê¤Þ¤¹¡£
-
+ 2.3) PostgreSQL ¤Ë¥°¥é¥Õ¥£¥«¥ë¡¦¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï¤¢¤ê¤Þ¤¹¤«¡©
+
+ ¤â¤Á¤í¤ó¡¢PostgreSQL
+ ¤Ø¤Î¥°¥é¥Õ¥£¥«¥ë¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£ ¤½¤ÎÃæ¤ËPgAccess
+ http://www.pgaccess.org ¤â´Þ¤Þ¤ì¤Þ¤¹¡£ PgAdmin III
+ (http://www.pgadmin.org)¤â¤¢¤ê¤Þ¤¹¡£ RHDB Admin
+ (http://sources.redhat.com/rhdb/ )¡¢TORA
+ (http://www.globecom.net/tora/ (ÉôʬŪ¤Ë¾¦ÍÑ)) ¤ª¤è¤Ó¡¢ Rekall (
+ http://www.thekompany.com/products/rekall/, proprietary)¤â¤¢¤ê¤Þ ¤¹¡£
+ PhpPgAdmin ( http://phppgadmin.sourceforge.net/ )
+ ¤ÏPostgreSQL¤Ø¤ÎWeb¥Ù¡¼¥¹¤Î ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤òÄ󶡤·¤Þ¤¹¡£
+
+ ¤è¤ê¾ÜºÙ¤Ê¥ê¥¹¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢http://techdocs.postgresql.org/guides/GUIT
+ ools ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£
+
+ 2.4) ¤É¤Î¤è¤¦¤Ê¸À¸ì¤Ç PostgreSQL ¤ÈÄÌ¿®¤Ç¤¤¹¤«¡©
+
+ ¿Íµ¤¤Î¤¢¤ë¤Û¤È¤ó¤É¤Î¸À¸ì¤ÏPostgreSQL¤Ø¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹
+ ¡£
+ ¤¢¤Ê¤¿¤¬»È¤¦¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î³ÈÄ¥¥â¥¸¥å¡¼¥ë¤Î¥ê¥¹¥È¤òÇÁ¤¤¤Æ¤ß¤Æ¤¯¤À
+ ¤µ¤¤¡£
+
+ °Ê²¼¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ÏPostgreSQL¤ÎÇÛÉۤ˴ޤޤì¤Æ¤¤¤Þ¤¹¡£
+ * C (libpq)
+ * Ëä¤á¹þ¤ßC (ecpg)
+ * Java (jdbc)
+ * Python (PyGreSQL)
+ * TCL (libpgtcl)
+
+ ¤½¤Î¾¤ÎÍøÍѲÄǽ¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï http://gborg.postgresql.org
+ ¤ÎDrivers/Interfaces¤Î¥»¥¯¥·¥ç¥ó¤Ë¤¢¤ê¤Þ¤¹¡£
[ÌõÃí¡§
±Ê°Â¸ç»Ë¤µ¤ó¤Ï Palm ÈǤΠlibpq ¤ò³«È¯¤µ¤ì¤Þ¤·¤¿¡£
http://www.snaga.org/libpq/
]
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- ´ÉÍý¾å¤Î¼ÁÌä
-
-3.1) ¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð /usr/local/pgsql °Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¤Þ¤¹¤«¡©
-
-´Êñ¤ÊÊýË¡¤Ï¡¢ configure ¤òÁö¤é¤»¤ë¤È¤¤Ë --prefix ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤¹
-¡£
-
-3.2) postmaster ¤òÁö¤é¤»¤ë¤È¡¢Bad System Call ¤È¤«¥³¥¢¡¦¥À¥ó¥×¤·¤¿¤È¤Î¥á¥Ã¥»¡¼
-¥¸¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
-
-¤µ¤Þ¤¶¤Þ¤ÊÌäÂ꤬¹Í¤¨¤é¤ì¤Þ¤¹¤¬¡¢¤Þ¤ººÇ½é¤Ë¤¢¤Ê¤¿¤Î¥«¡¼¥Í¥ë¤Ë System V IPC ¤Î³È
-Ä¥¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Æ¸«¤Æ¤¯¤À¤µ¤¤¡£PostgreSQL ¤Ï¥«¡¼¥Í¥ë¤Ë¤è¤ë
-¶¦Í¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Î¥µ¥Ý¡¼¥È¤òɬÍפȤ·¤Þ¤¹¡£
-
-3.3) postmaster ¤òÁö¤é¤»¤è¤¦¤È¤¹¤ë¤È¡¢IpcMemoryCreate ¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹
-¤«¡©
-
-¥«¡¼¥Í¥ë¤¬¶¦Í¥á¥â¥ê¡¼¤ò»ý¤ÄÀßÄê¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¤«¡¢¤Ç¤Ê¤±¤ì¤Ð¡¢¥«¡¼¥Í¥ë¤ËÂÐ
-¤·¤Æ»È¤¨¤ë¶¦Í¥á¥â¥ê¡¼¤ÎÂ礤µ¤òÂ礤¯ÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¶ñÂÎŪ¤ÊÂ礤µ¤Ï
-¡¢»È¤Ã¤Æ¤¤¤ë¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Èpostmaster ¤òÁö¤é¤»¤ë¤È¤¤ËÀßÄꤹ¤ë¥Ð¥Ã¥Õ¥¡¤Î¿ô¤È¥Ð
-¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤Ë°Í¸¤·¤Þ¤¹¡£¤Û¤È¤ó¤É¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢´ûÄêÃͤΥХåե¡¥µ¥¤¥º
-¤Î¤Þ¤Þ¤Ç¡¢¾¯¤Ê¤¯¤È¤âÌó1MB¤¬É¬ÍפǤ¹¡£ PostgreSQL Administrator's Guide/Server
-Run-time Environment/Managing Kernel Resources ¤Ë¶¦Í¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Ë¤Ä¤¤¤Æ
-¤Î¾ðÊó¤Î¾ÜºÙ¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¤´Í÷¤¯¤À¤µ¤¤¡£
-
-3.4) postmaster¤òÁö¤é¤»¤è¤¦¤È¤¹¤ë¤È¡¢IpcSemaphoreCreate ¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç
-¤¹¤«¡©
-
-¤â¤·¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬IpcSemaphoreCreate: semget failed (No space left on
-device)¤Ç¤¢¤ì¤Ð¡¢¥«¡¼¥Í¥ë¤¬½½Ê¬¤Ê¥»¥Þ¥Õ¥©¤ò»È¤¨¤ë¤è¤¦¤Ë¹½À®¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£
-Postgres¤ÏÀøºßŪ¤Ê¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹Ëè¤Ë°ì¤Ä¤Î¥»¥Þ¥Õ¥©¤òɬÍפȤ·¤Þ¤¹¡£¤È¤ê¤¢
-¤¨¤º¤Î²ò·èºö¤Ïpostmaster¤òµ¯Æ°¤¹¤ë¤È¤¤Ë¡¢¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤Î¿ô¤ò¤è¤ê¾¯¤Ê¤¯
-À©¸Â¤ò¤¹¤ë¤³¤È¤Ç¤¹¡£´ûÄêÃͤÎ32¤è¤ê¾®¤µ¤Ê¿ô¤Î¥Ñ¥é¥á¡¼¥¿¤ò-N¤Ç»È¤¤¤Þ¤¹¡£¤è¤ê¹±µ×
-Ū¤Ê²ò·èºö¤Ï¡¢¥«¡¼¥Í¥ë¤ÎSEMMNS ¤È SEMMNI ¥Ñ¥é¥á¡¼¥¿¤òÁý¤ä¤¹¤³¤È¤Ç¤¹¡£
-
-ÁàºîÉÔǽ¤Î¥»¥Þ¥Õ¥©¤â²áÅ٤ʥǡ¼¥¿¥Ù¡¼¥¹¥¢¥¯¥»¥¹¤Î´Ö¤Ë¥¯¥é¥Ã¥·¥å¤òµ¯¤³¤¹²ÄǽÀ¤¬
-¤¢¤ê¤Þ¤¹¡£
-
-¤â¤·¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬¤Ê¤Ë¤«Â¾¤Î¤â¤Î¤Ç¤¢¤ì¤Ð¡¢¥«¡¼¥Í¥ë¤Î¹½À®¤Ç¤Þ¤Ã¤¿¤¯¥»¥Þ¥Õ
-¥©¤Î¥µ¥Ý¡¼¥È¤ò¤·¤Æ¤¤¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ PostgreSQL Administrator's Guide ¤Ë¶¦
-Í¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤Î¾ÜºÙ¤¬¤¢¤ê¤Þ¤¹¡£
-
-3.5) ¾¤Î¥Û¥¹¥È¤«¤é¤ÎÀܳ¤Ï¤É¤Î¤è¤¦¤ËÀ©¸æ¤·¤Þ¤¹¤«¡©
-
-´ûÄêÃͤǤϡ¢PostgreSQL ¤Ï Unix ¥É¥á¥¤¥ó¥½¥±¥Ã¥È¡¢¤Þ¤¿¤Ï¡¢TCP/IPÀܳ¤Î¥í¡¼¥«¥ë¥Þ
-¥·¥ó¤«¤é¤ÎÀܳ¤·¤«µö¤·¤Þ¤»¤ó¡£postgresql.conf ¤ÎÃæ¤Î listen_addresses ¤ò½¤Àµ¤·
-¡¢¤«¤Ä¡¢$PGDATA/pg_hba.conf ¥Õ¥¡¥¤¥ë¤òŬÀڤ˾¤·¤Æ¡¢¥Û¥¹¥È¼çƳ·¿Ç§¾Ú¤ò͸ú¤Ë¤·
-¤Ê¤¤¤«¤®¤ê¤Ï¡¢Â¾¤Î¥Þ¥·¥ó¤«¤é¤ÏÀܳ¤Ç¤¤Ê¤¤¤Ç¤·¤ç¤¦¡£
-
-3.6) ¤è¤êÎɤ¤Àǽ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¨¥ó¥¸¥ó¤ò¤É¤Î¤è¤¦¤ËÄ´À°¤¹¤ì¤ÐÎÉ
-¤¤¤Ç¤¹¤«¡©
-
-³Î¤«¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÏÌ䤤¹ç¤ï¤»¤Î®ÅÙ¤òÁý¤·¤Þ¤¹¡£EXPLAIN ANALYZE¥³¥Þ¥ó¥É¤Ç
-PostgreSQL ¤¬¤É¤Î¤è¤¦¤Ë¤¢¤Ê¤¿¤ÎÌ䤤¹ç¤ï¤»¤òËÝÌõ¤·¤Æ¤¤¤ë¤«¤ò¸«¤ë¤³¤È¤¬¤Ç¤¡¢¤½¤·
-¤Æ¡¢¤É¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤ï¤ì¤Æ¤¤¤ë¤«¤ò¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
-
-¤â¤· INSERT ¤ò¿ÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢COPY ¥³¥Þ¥ó¥É¤ò»È¤Ã¤ÆÂ礤ʥХåÁ½èÍý¤Ç¤½¤ì¤ò
-¹Ô¤Ê¤¦¤³¤È¤ò¸¡Æ¤¤·¤Æ²¼¤µ¤¤¡£¤³¤ì¤Ï¡¢INSERT ¤òÊÌ¡¹¤Ë¹Ô¤Ê¤¦¤è¤ê¤â¤Ã¤È¹â®¤Ç¤¹¡£¼¡
-¤Ë¡¢BEGIN WORK/COMMIT ¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¡¦¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ë̵¤¤Ê¸¤Ï¡¢¤½¤ì¤é¼«¿È¤¬
-¤½¤ì¤¾¤ì¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ËÆþ¤Ã¤Æ¤¤¤ë¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£¤¤¤¯¤Ä¤«¤Îʸ¤ò°ì¤Ä¤Î¥È¥é
-¥ó¥¶¥¯¥·¥ç¥ó¡¦¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ç¹Ô¤Ê¤¦¤³¤È¤ò¹Í¤¨¤Æ²¼¤µ¤¤¡£¤³¤ì¤Ë¤è¤ê¥È¥é¥ó¥¶¥¯¥·¥ç
-¥ó¤Î¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤¬¸º¤ê¤Þ¤¹¡£¤Þ¤¿¡¢Â礤ʥǡ¼¥¿¤ÎÊѹ¹¤ò¹Ô¤Ê¤¦ºÝ¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹
-¤ò°ìÅÙ³°¤·¤Æ¡¢ºî¤êľ¤¹¤³¤È¤ò¹Í¤¨¤Æ¤ß¤Æ²¼¤µ¤¤¡£
-
-Administration Guide/Server Run-time Environment/Run-time Configuration¤Ë¤Ï¡¢¥Á
-¥å¡¼¥Ë¥ó¥°¤Î¥ª¥×¥·¥ç¥ó¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£fsync¥ª¥×¥·¥ç¥ó¤Çfsync() ¤ò̵¸ú¤Ë¤¹¤ë
-¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤Ã¤Æ¡¢³Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥óËè¤Ë fsync() ¤Ç¥Ç¥£¥¹¥¯¤ò¹¹¿·¤¹
-¤ë¤Î¤ò»ß¤á¤µ¤»¤Þ¤¹¡£
-
-shared_buffers¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¥Ð¥Ã¥¯¥¨¥ó¥É¡¦¥×¥í¥»¥¹¤Ë¤è¤ê»È¤ï¤ì¤ë¶¦Í¥á¥â¥ê
-¡¼¡¦¥Ð¥Ã¥Õ¥¡¤òÂ礤¯¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤â¤·¡¢¤³¤Î¥Ñ¥é¥á¡¼¥¿¤ò¹â¤¯¤·¤¹¤®¤ë¤È¡¢
-¥«¡¼¥Í¥ë¤Î¶¦Í¥á¥â¥ê¡¼¶õ´Ö¤ÎÀ©¸ÂÃͤò±Û¤¨¤Æ¤·¤Þ¤¦¤¿¤á¤Ë postmaster ¤¬Áö¤é¤Ê¤¯¤Ê
-¤ë¤Ç¤·¤ç¤¦¡£´ûÄêÃͤǤϡ¢¤½¤ì¤¾¤ì¤Î¥Ð¥Ã¥Õ¥¡¤ÎÂ礤µ¤Ï 8K ¤Ç¡¢¥Ð¥Ã¥Õ¥¡¿ô¤Ï 1000
-¤Ç¤¹¡£
-
-sort_mem (PostgreSQL 8.0¤«¤é¤Ï: work_mem)¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¡¢¤½¤ì¤¾¤ì¤Î¥Ð¥Ã¥¯¥¨
-¥ó¥É¡¦¥×¥í¥»¥¹¤¬°ì»þŪ¤ÊʤÙÂؤ¨¤Ë¤è¤Ã¤Æ»È¤¦¥á¥â¥ê¡¼¤ÎºÇÂ祵¥¤¥º¤òÁý¤ä¤¹¤³¤È¤â
-¤Ç¤¤Þ¤¹¡£´ûÄêÃÍ¤Ï 1024 (¤¹¤Ê¤ï¤Á¡¢1MB)¤Ç¤¹¡£
-
-¤Þ¤¿¡¢CLUSTER ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¡¢¥Æ¡¼¥Ö¥ë¤Î¥Ç¡¼¥¿¤ò¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ë¹ç¤ï¤»¤ë¤¿¤á¤Ë
-¥°¥ë¡¼¥×²½¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¾Ü¤·¤¯¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç CLUSTER ¤ò¸«¤Æ²¼
-¤µ¤¤¡£
-
-3.7) ¤É¤Î¤è¤¦¤Ê¥Ç¥Ð¥°µ¡Ç½¤¬»È¤¨¤Þ¤¹¤«¡©
-
-PostgreSQL ¤Ï¡¢¥Ç¥Ð¥°¤Î¤¿¤á¤Ë°ÕÌ£¤Î¤¢¤ë¡¢¾õÂÖ¾ðÊó¤òÊó¹ð¤¹¤ë¤¤¤¯¤Ä¤«¤Îµ¡Ç½¤ò»ý¤Á
-¤Þ¤¹¡£
-
-¤Þ¤º¡¢--enable-cassert ¥ª¥×¥·¥ç¥ó¤Ç configure ¤òÁö¤é¤»¤Þ¤¹¡£¤½¤¦¤·¤Æ¥³¥ó¥Ñ¥¤¥ë
-¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢Âô»³¤Î assert() ¤¬¡¢¥Ð¥Ã¥¯¥¨¥ó¥É¤Î¿ÊĽ¾õ¶·¤ò´Æ»ë¤·¡¢²¿¤«Í½´ü¤»
-¤Ì¤³¤È¤¬µ¯¤¤ë¤È¥×¥í¥°¥é¥à¤òÄä»ß¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
-
-postmaster ¤È postgres ¤ÎξÊý¤Ç¤¤¤¯¤Ä¤«¤Î¥Ç¥Ð¥°¡¦¥ª¥×¥·¥ç¥ó¤ÎÍøÍѤ¬¤Ç¤¤Þ¤¹¡£¤Þ
-¤º¡¢¼¡¤Î¤è¤¦¤Ë postmaster ¤òµ¯Æ°¤¹¤ë¤È¤¤Ï¤¤¤Ä¤Ç¤â¡¢É¸½à½ÐÎϤȥ¨¥é¡¼½ÐÎϤò¥í¥°
-¡¦¥Õ¥¡¥¤¥ë¤ËÁ÷¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ë¤³¤È¤ò³Î¤«¤á¤Æ²¼¤µ¤¤¡£
-
+ _________________________________________________________________
+
+ ´ÉÍý¾å¤Î¼ÁÌä
+
+ 3.1) ¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð /usr/local/pgsql °Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¤Þ¤¹¤«¡©
+
+ ´Êñ¤ÊÊýË¡¤Ï¡¢ configure ¤òÁö¤é¤»¤ë¤È¤¤Ë --prefix
+ ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤¹¡£
+
+ 3.2) postmaster ¤òÁö¤é¤»¤ë¤È¡¢Bad System Call
+ ¤È¤«¥³¥¢¡¦¥À¥ó¥×¤·¤¿¤È¤Î¥á¥Ã¥»¡¼¥¸¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
+
+ ¤µ¤Þ¤¶¤Þ¤ÊÌäÂ꤬¹Í¤¨¤é¤ì¤Þ¤¹¤¬¡¢¤Þ¤ººÇ½é¤Ë¤¢¤Ê¤¿¤Î¥«¡¼¥Í¥ë¤Ë System V
+ IPC ¤Î³ÈÄ¥¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Æ¸«¤Æ¤¯¤À¤µ¤¤¡£PostgreSQL
+ ¤Ï¥«¡¼¥Í¥ë¤Ë¤è¤ë¶¦Í¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Î¥µ¥Ý¡¼¥È¤òɬÍפȤ·¤Þ¤¹¡£
+
+ 3.3) postmaster ¤òÁö¤é¤»¤è¤¦¤È¤¹¤ë¤È¡¢IpcMemoryCreate
+ ¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
+
+ ¥«¡¼¥Í¥ë¤¬¶¦Í
+ ¥á¥â¥ê¡¼¤ò»ý¤ÄÀßÄê¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¤«¡¢¤Ç¤Ê¤±¤ì¤Ð¡¢¥«¡¼¥Í¥ë¤ËÂФ·¤Æ»È
+ ¤¨¤ë¶¦Í¥á¥â¥ê¡¼¤ÎÂ礤µ¤òÂ礤¯ÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¶ñÂÎŪ¤ÊÂç¤
+ ¤µ¤Ï¡¢»È¤Ã¤Æ¤¤¤ë¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Èpostmaster ¤òÁö¤é¤»¤ë¤È¤
+ ¤ËÀßÄꤹ¤ë¥Ð¥Ã¥Õ¥¡¤Î¿ô¤È¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤Ë°Í¸¤·¤Þ¤¹¡£¤Û¤È¤ó¤É¤Î¥·
+ ¥¹¥Æ¥à¤Ç¤Ï¡¢´ûÄêÃͤΥХåե¡¥µ¥¤¥º¤Î¤Þ¤Þ¤Ç¡¢¾¯¤Ê¤¯¤È¤âÌó1MB¤¬É¬ÍפǤ¹¡
+ £ PostgreSQL Administrator's Guide/Server Run-time
+ Environment/Managing Kernel Resources ¤Ë¶¦Í
+ ¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤Î¾ÜºÙ¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¤´Í÷¤¯¤À¤µ¤¤¡£
+
+ 3.4) postmaster¤òÁö¤é¤»¤è¤¦¤È¤¹¤ë¤È¡¢IpcSemaphoreCreate
+ ¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
+
+ ¤â¤·¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬IpcSemaphoreCreate: semget failed (No space left
+ on
+ device)¤Ç¤¢¤ì¤Ð¡¢¥«¡¼¥Í¥ë¤¬½½Ê¬¤Ê¥»¥Þ¥Õ¥©¤ò»È¤¨¤ë¤è¤¦¤Ë¹½À®¤µ¤ì¤Æ¤¤¤Þ¤
+ »¤ó¡£Postgres¤ÏÀøºßŪ¤Ê¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹Ëè¤Ë°ì¤Ä¤Î¥»¥Þ¥Õ¥©¤òɬÍפȤ
+ ·¤Þ¤¹¡£¤È¤ê¤¢¤¨¤º¤Î²ò·èºö¤Ïpostmaster¤òµ¯Æ°¤¹¤ë¤È¤
+ ¤Ë¡¢¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤Î¿ô¤ò¤è¤ê¾¯¤Ê¤¯À©¸Â¤ò¤¹¤ë¤³¤È¤Ç¤¹¡£´ûÄêÃͤÎ32
+ ¤è¤ê¾®¤µ¤Ê¿ô¤Î¥Ñ¥é¥á¡¼¥¿¤ò-N¤Ç»È¤¤¤Þ¤¹¡£¤è¤ê¹±µ×Ū¤Ê²ò·èºö¤Ï¡¢¥«¡¼¥Í¥ë
+ ¤ÎSEMMNS ¤È SEMMNI ¥Ñ¥é¥á¡¼¥¿¤òÁý¤ä¤¹¤³¤È¤Ç¤¹¡£
+
+ ÁàºîÉÔǽ¤Î¥»¥Þ¥Õ¥©¤â²áÅ٤ʥǡ¼¥¿¥Ù¡¼¥¹¥¢¥¯¥»¥¹¤Î´Ö¤Ë¥¯¥é¥Ã¥·¥å¤ò
+ µ¯¤³¤¹²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£
+
+ ¤â¤·¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬¤Ê¤Ë¤«Â¾¤Î¤â¤Î¤Ç¤¢¤ì¤Ð¡¢¥«¡¼¥Í¥ë¤Î¹½À®¤Ç¤Þ¤Ã¤¿
+ ¤¯¥»¥Þ¥Õ¥©¤Î¥µ¥Ý¡¼¥È¤ò¤·¤Æ¤¤¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ PostgreSQL
+ Administrator's Guide ¤Ë¶¦Í
+ ¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤Î¾ÜºÙ¤¬¤¢¤ê¤Þ¤¹¡£
+
+ 3.5) ¾¤Î¥Û¥¹¥È¤«¤é¤ÎÀܳ¤Ï¤É¤Î¤è¤¦¤ËÀ©¸æ¤·¤Þ¤¹¤«¡©
+
+ ´ûÄêÃͤǤϡ¢PostgreSQL ¤Ï Unix
+ ¥É¥á¥¤¥ó¥½¥±¥Ã¥È¡¢¤Þ¤¿¤Ï¡¢TCP/IPÀܳ¤Î¥í¡¼¥«¥ë¥Þ¥·¥ó¤«¤é¤ÎÀܳ¤·¤«µö¤·
+ ¤Þ¤»¤ó¡£postgresql.conf ¤ÎÃæ¤Î listen_addresses
+ ¤ò½¤Àµ¤·¡¢¤«¤Ä¡¢$PGDATA/pg_hba.conf
+ ¥Õ¥¡¥¤¥ë¤òŬÀڤ˾¤·¤Æ¡¢¥Û¥¹¥È¼çƳ·¿Ç§¾Ú¤òÍ
+ ¸ú¤Ë¤·¤Ê¤¤¤«¤®¤ê¤Ï¡¢Â¾¤Î¥Þ¥·¥ó¤«¤é¤ÏÀܳ¤Ç¤¤Ê¤¤¤Ç¤·¤ç¤¦¡£
+
+ 3.6) ¤è¤êÎɤ¤À
+ ǽ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¨¥ó¥¸¥ó¤ò¤É¤Î¤è¤¦¤ËÄ´À°¤¹¤ì¤ÐÎɤ¤¤Ç¤¹¤«¡©
+
+ ³Î¤«¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÏÌ䤤¹ç¤ï¤»¤Î®ÅÙ¤òÁý¤·¤Þ¤¹¡£EXPLAIN
+ ANALYZE¥³¥Þ¥ó¥É¤Ç PostgreSQL
+ ¤¬¤É¤Î¤è¤¦¤Ë¤¢¤Ê¤¿¤ÎÌ䤤¹ç¤ï¤»¤òËÝÌõ¤·¤Æ¤¤¤ë¤«¤ò¸«¤ë¤³¤È¤¬¤Ç¤
+ ¡¢¤½¤·¤Æ¡¢¤É¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤ï¤ì¤Æ¤¤¤ë¤«¤ò¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+
+ ¤â¤· INSERT ¤ò¿ÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢COPY ¥³¥Þ¥ó¥É¤ò»È¤Ã¤ÆÂç¤
+ ¤Ê¥Ð¥Ã¥Á½èÍý¤Ç¤½¤ì¤ò¹Ô¤Ê¤¦¤³¤È¤ò¸¡Æ¤¤·¤Æ²¼¤µ¤¤¡£¤³¤ì¤Ï¡¢INSERT
+ ¤òÊÌ¡¹¤Ë¹Ô¤Ê¤¦¤è¤ê¤â¤Ã¤È¹â®¤Ç¤¹¡£¼¡¤Ë¡¢BEGIN WORK/COMMIT
+ ¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¡¦¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ë̵¤¤Ê¸¤Ï¡¢¤½¤ì¤é¼«¿È¤¬¤½¤ì¤¾¤ì¤Î¥È¥é
+ ¥ó¥¶¥¯¥·¥ç¥ó¤ËÆþ¤Ã¤Æ¤¤¤ë¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£¤¤¤¯¤Ä¤«¤Îʸ¤ò°ì¤Ä¤Î¥È¥é¥ó¥¶¥¯
+ ¥·¥ç¥ó¡¦¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ç¹Ô¤Ê¤¦¤³¤È¤ò¹Í¤¨¤Æ²¼¤µ¤¤¡£¤³¤ì¤Ë¤è¤ê¥È¥é¥ó¥¶¥¯¥·
+ ¥ç¥ó¤Î¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤¬¸º¤ê¤Þ¤¹¡£¤Þ¤¿¡¢Âç¤
+ ¤Ê¥Ç¡¼¥¿¤ÎÊѹ¹¤ò¹Ô¤Ê¤¦ºÝ¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò°ìÅÙ³°¤·¤Æ¡¢ºî¤êľ¤¹¤³¤È¤ò¹Í¤¨
+ ¤Æ¤ß¤Æ²¼¤µ¤¤¡£
+
+ Administration Guide/Server Run-time Environment/Run-time
+ Configuration¤Ë¤Ï¡¢
+ ¥Á¥å¡¼¥Ë¥ó¥°¤Î¥ª¥×¥·¥ç¥ó¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£fsync¥ª¥×¥·¥ç¥ó¤Çfsync()
+ ¤ò̵¸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤Ã¤Æ¡¢³Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥óËè¤Ë
+ fsync() ¤Ç¥Ç¥£¥¹¥¯¤ò¹¹¿·¤¹¤ë¤Î¤ò»ß¤á¤µ¤»¤Þ¤¹¡£
+
+ shared_buffers¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¥Ð¥Ã¥¯¥¨¥ó¥É¡¦¥×¥í¥»¥¹¤Ë¤è¤ê»È¤ï¤ì¤ë¶¦
+ Í¥á¥â¥ê¡¼¡¦¥Ð¥Ã¥Õ¥¡¤òÂ礤¯¤¹¤ë¤³¤È¤â¤Ç¤
+ ¤Þ¤¹¡£¤â¤·¡¢¤³¤Î¥Ñ¥é¥á¡¼¥¿¤ò¹â¤¯¤·¤¹¤®¤ë¤È¡¢¥«¡¼¥Í¥ë¤Î¶¦Í
+ ¥á¥â¥ê¡¼¶õ´Ö¤ÎÀ©¸ÂÃͤò±Û¤¨¤Æ¤·¤Þ¤¦¤¿¤á¤Ë postmaster
+ ¤¬Áö¤é¤Ê¤¯¤Ê¤ë¤Ç¤·¤ç¤¦¡£´ûÄêÃͤǤϡ¢¤½¤ì¤¾¤ì¤Î¥Ð¥Ã¥Õ¥¡¤ÎÂ礤µ¤Ï 8K
+ ¤Ç¡¢¥Ð¥Ã¥Õ¥¡¿ô¤Ï 1000 ¤Ç¤¹¡£
+
+ sort_mem (PostgreSQL 8.0¤«¤é¤Ï:
+ work_mem)¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¡¢¤½¤ì¤¾¤ì¤Î¥Ð¥Ã¥¯¥¨¥ó¥É¡¦¥×¥í¥»¥¹¤¬°ì»þŪ¤
+ ÊʤÙÂؤ¨¤Ë¤è¤Ã¤Æ»È¤¦¥á¥â¥ê¡¼¤ÎºÇÂ祵¥¤¥º¤òÁý¤ä¤¹¤³¤È¤â¤Ç¤¤Þ¤¹¡£
+ ´ûÄêÃÍ¤Ï 1024 (¤¹¤Ê¤ï¤Á¡¢1MB)¤Ç¤¹¡£
+
+ ¤Þ¤¿¡¢CLUSTER
+ ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¡¢¥Æ¡¼¥Ö¥ë¤Î¥Ç¡¼¥¿¤ò¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ë¹ç¤ï¤»¤ë¤¿¤á¤Ë¥°¥ë¡¼
+ ¥×²½¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¾Ü¤·¤¯¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç CLUSTER
+ ¤ò¸«¤Æ²¼¤µ¤¤¡£
+
+ 3.7) ¤É¤Î¤è¤¦¤Ê¥Ç¥Ð¥°µ¡Ç½¤¬»È¤¨¤Þ¤¹¤«¡©
+
+ PostgreSQL
+ ¤Ï¡¢¥Ç¥Ð¥°¤Î¤¿¤á¤Ë°ÕÌ£¤Î¤¢¤ë¡¢¾õÂÖ¾ðÊó¤òÊó¹ð¤¹¤ë¤¤¤¯¤Ä¤«¤Îµ¡Ç½¤ò»ý¤Á¤Þ
+ ¤¹¡£
+
+ ¤Þ¤º¡¢--enable-cassert ¥ª¥×¥·¥ç¥ó¤Ç configure
+ ¤òÁö¤é¤»¤Þ¤¹¡£¤½¤¦¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢Âô»³¤Î assert()
+ ¤¬¡¢¥Ð¥Ã¥¯¥¨¥ó¥É¤Î¿ÊĽ¾õ¶·¤ò´Æ»ë¤·¡¢²¿¤«Í½´ü¤»¤Ì¤³¤È¤¬µ¯¤
+ ¤ë¤È¥×¥í¥°¥é¥à¤òÄä»ß¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
+
+ postmaster ¤È postgres
+ ¤ÎξÊý¤Ç¤¤¤¯¤Ä¤«¤Î¥Ç¥Ð¥°¡¦¥ª¥×¥·¥ç¥ó¤ÎÍøÍѤ¬¤Ç¤¤Þ¤¹¡£¤Þ¤º¡¢¼¡¤Î¤è¤¦¤Ë
+ postmaster ¤òµ¯Æ°¤¹¤ë¤È¤
+ ¤Ï¤¤¤Ä¤Ç¤â¡¢É¸½à½ÐÎϤȥ¨¥é¡¼½ÐÎϤò¥í¥°¡¦¥Õ¥¡¥¤¥ë¤ËÁ÷¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ë¤³
+ ¤È¤ò³Î¤«¤á¤Æ²¼¤µ¤¤¡£
cd /usr/local/pgsql
./bin/postmaster >server.log 2>&1 &
-¤³¤ì¤Ë¤è¤ê PostgreSQL ¤ÎºÇ¾åÉô¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë server.log ¥Õ¥¡¥¤¥ë¤¬ÃÖ¤«¤ì¤Þ¤¹
-¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¥µ¡¼¥Ð¡¼¤¬Áø¶ø¤·¤¿ÌäÂê¤ä¥¨¥é¡¼¤Ë¤Ä¤¤¤ÆÍÍѤʾðÊó¤ò´Þ¤ß¤Þ¤¹¡£
-Postmaster ¤Ï¹¹¤Ë¾ÜºÙ¤Ê¾ðÊó¤òÊó¹ð¤¹¤ë¤¿¤á¤Î -d ¥ª¥×¥·¥ç¥ó¤ò»ý¤Á¤Þ¤¹¡£¤½¤Î -d ¥ª
-¥×¥·¥ç¥ó¤Ï¡¢¥Ç¥Ð¥°¡¦¥ì¥Ù¥ë¤ò»ØÄꤷ¤Þ¤¹¡£¹â¤¤¥Ç¥Ð¥°¡¦¥ì¥Ù¥ë¤Ç¤Ï¡¢Âç¤¤Ê¥í¥°¥Õ¥¡
-¥¤¥ë¤òÀ¸À®¤¹¤ë¤³¤È¤ËÃí°Õ¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£
-
-¤â¤·¡¢postmaster¤¬Áö¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢postgres¥Ð¥Ã¥¯¥¨¥ó¥É¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤éÁö
-¤é¤»¤ë¤³¤È¤¬¤Ç¤¡¢Ä¾ÀÜSQLʸ¤ò¥¿¥¤¥×¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤Î¤ä¤ê¤«¤¿¤Ï¡¢¥Ç¥Ð¥°ÌÜ
-Ū¤Î¤È¤¤À¤±¤ª¾©¤á¤·¤Þ¤¹¡£¥»¥ß¥³¥í¥ó¤Ç¤Ï¤Ê¤¯¡¢²þ¹Ô¤¬Ì䤤¹ç¤ï¤»¤Î½ª¤ê¤Ë¤Ê¤ë¤³¤È
-¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¤â¤·¡¢¥Ç¥Ð¥°¥·¥ó¥Ü¥ë¤òÆþ¤ì¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤ì¤Ð¡¢¥Ç¥Ð¥Ã¥¬
-¤ò»È¤Ã¤Æ²¿¤¬µ¯¤¤Æ¤¤¤ë¤«¤ò¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£postmaster ¤«¤é¥Ð¥Ã¥¯¥¨¥ó¥É¤ò³«»Ï
-¤·¤¿¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢ÆÈΩ¤Ê´Ä¶¤ÇÁö¤Ã¤Æ¤¤¤ë¤Î¤Ç¤Ï¤Ê¤¯¥í¥Ã¥¯¡¿¥Ð¥Ã¥¯¥¨¥ó¥É¤È¤Î
-ÂÐÏäÎÌäÂ꤬½ÅÊ£¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
-
-¤â¤·¡¢postmaster¤¬Áö¤Ã¤Æ¤¤¤ì¤Ð¡¢¤¢¤ë¥¦¥£¥ó¥É¥¦¤Çpsql¤ò³«»Ï¤¹¤ë¤È¡¢
-
-SELECT pg_backend_pid()
-
-¤ò»È¤Ã¤Æ¡¢psql ¤Ç»È¤ï¤ì¤ë postgres ¥×¥í¥»¥¹¤ÎPID¤¬¸«¤Ä¤«¤ê¤Þ¤¹¡£¥Ç¥Ð¥Ã¥¬¤ò»È¤Ã
-¤Æpostgres¤ÎPID¤Ë¥¢¥¿¥Ã¥Á(attach)¤·¤Þ¤¹¡£¥Ç¥Ð¥Ã¥¬¤ÎÃ椫¤é¥Ö¥ì¡¼¥¯¡¦¥Ý¥¤¥ó¥È¤ò¥»
-¥Ã¥È¤·¡¢psql ¤«¤éÌ䤤¹ç¤ï¤»¤òȯ¹Ô¤·¤Þ¤¹¡£¥Ç¥Ð¥°¤Î¤¿¤á¤Ëpostgres¤ò»ÏÆ°¤¹¤ë¾ì¹ç¤Ï
-¡¢PGOPTIONS="-W n" ¤òÀßÄê¤Ç¤¡¢¤½¤ì¤«¤é¡¢psql ¤ò³«»Ï¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢n Éó«
-»Ï¤òÃ٤餻¤ë¤Ï¤º¤Ê¤Î¤Ç¡¢¥Ç¥Ð¥Ã¥¬¤Ç¥×¥í¥»¥¹¤Ë¥¢¥¿¥Ã¥Á¤·¤Æ¡¢¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤òÀß
-Äꤷ¡¢³«»Ï¤«¤é½ç¤òÄɤäƸ«¤Æ¤æ¤¯¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
-
-¤¤¤¯¤Ä¤«¤Î
-
-log_*
-
-¥µ¡¼¥Ð¹½À®ÊÑ¿ô¤Ï¡¢¥Ç¥Ð¥Ã¥°¤ÈÀǽ¬Äê¤Ë¤È¤Æ¤âÌò¤ËΩ¤Ä¥×¥í¥»¥¹¤ÎÅý·×¤Î°õºþ¤ò²Äǽ
-¤Ë¤·¤Þ¤¹¡£
-
-²¿¤È¤¤¤¦´Ø¿ô¤¬¤É¤Î¤¯¤é¤¤¼Â¹Ô»þ´Ö¤ò¿©¤Ã¤Æ¤¤¤ë¤«¤ò¸«¤ë¤¿¤á¤Ë¡¢¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¡Ê
-¥×¥í¥Õ¥£¡¼¥ëÉÕ¤¡Ë¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¤½¤Î¥Ð¥Ã¥¯¥¨¥ó¥É¤Î¥×¥í¥Õ¥£¡¼
-¥ë¡¦¥Õ¥¡¥¤¥ë¤Ï pgsql/data/base/dbname ¥Ç¥£¥ì¥¯¥È¥ê¤Ë³ÊǼ¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£¥¯¥é¥¤
-¥¢¥ó¥È¤Î¥×¥í¥Õ¥£¡¼¥ë¤Ï¥¯¥é¥¤¥¢¥ó¥È¤Î¸½¹Ô¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤ë¤Ç¤·¤ç¤¦¡£Linux
-¤Ç¤Þ¤È¤â¤Ê¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¤ò¹Ô¤¦¤Ë¤Ï -DLINUX_PROFILE ¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ê
-¤Þ¤¹¡£
-
-3.8) Àܳ¤·¤è¤¦¤È¤¹¤ë¤È¤¤Ë 'Sorry, too many clients' ¤¬½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-
-postmaster¤¬Æ±»þ»ÏÆ°¤Ç¤¤ë¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤ËÂФ¹¤ëÀ©¸Â¿ô¤òÁý¤ä¤¹É¬Íפ¬¤¢¤ê
-¤Þ¤¹¡£
-
-´ûÄê¤ÎºÇÂç¥×¥í¥»¥¹¤Ï32¥×¥í¥»¥¹¤Ç¤¹¡£-N¤ËŬÀÚ¤ÊÃͤò°ú¿ô¤Ë¤·¤Æpostmaster¤òºÆµ¯Æ°
-¤¹¤ë¤«¡¢PostgreSQL.conf ¤ò½¤Àµ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤½¤ÎÃͤòÁý¤ä¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
-
-¤â¤·¡¢-N ¤ò 32¤è¤ê¤âÂ礤¯¤¹¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢-B¤â´ûÄê¤Î64¤è¤êÂ礤¤ÃͤËÁý²Ã¤µ¤»¤Ê
-¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤·¡¢-B ¤Ï¾¯¤Ê¤¯¤È¤â -N ¤Î2ÇܤϤʤ¯¤Æ¤Ï¤Ê¤é¤º¡¢¤ª¤½¤é¤¯ºÇ¹âÀǽ¤ò
-˾¤à¤Ê¤é¤Ð¤½¤ì¤è¤êÂ礤¤Ãͤ¬É¬ÍפʤϤº¤Ç¤¹¡£¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤ò¤¿¤¯¤µ¤ó¤Ë¤¹
-¤ë¤È¡¢¤¤¤í¤¤¤í¤ÊUnix¥«¡¼¥Í¥ë¹½À®¥Ñ¥é¥á¡¼¥¿¤âÁý¤ä¤¹¤³¤È¤¬É¬Íפˤʤ뤫¤â¤·¤ì¤Þ¤»
-¤ó¡£¶¦Í¥á¥â¥ê¡¼¡¦¥Ö¥í¥Ã¥¯¤ÎºÇÂçÃÍ(SHMMAX)¡¢¥»¥Þ¥Õ¥©¤ÎºÇÂç¿ô(SEMMNS¤ÈSEMMNI)¡¢
-¥×¥í¥»¥¹¤ÎºÇÂç¿ô(NPROC)¡¢¥æ¡¼¥¶Ëè¤ÎºÇÂç¥×¥í¥»¥¹¿ô(MAXUPRC)¡¢³«¤¯¥Õ¥¡¥¤¥ë¤ÎºÇÂç
-¿ô(NFILE¤ÈNINODE) ¤â³Îǧ»ö¹à¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£ PostgreSQL¤Ëµö¤µ¤ì¤ë¥Ð¥Ã¥¯¥¨¥ó¥É¤Î¥×
-¥í¥»¥¹¿ô¤¬À©¸Â¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï¡¢¥·¥¹¥Æ¥à¤Î¥ê¥½¡¼¥¹¤ò»È¤¤²Ì¤·¤Æ¤·¤Þ¤¦¤³¤È¤òÈò¤±¤ë
-¤¿¤á¤Ç¤¹¡£
-
-3.9) pgsql_tmp ¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¤Ï²¿¤¬¤¢¤ê¤Þ¤¹¤«¡©
-
-Ì䤤¹ç¤ï¤»¼Â¹Ô¥â¥¸¥å¡¼¥ë¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤¿°ì»þŪ¤Ê¥Õ¥¡¥¤¥ë¤¬¡¢¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê
-¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£Î㤨¤Ð¡¢¤â¤· ORDER BY ¶ç¤òËþ¤¿¤¹¤¿¤á¤Ë¥Ð¥Ã¥¯¥¨¥ó¥É¤Î -S ¥Ñ¥é¥á¡¼
-¥¿¤Çµö²Ä¤·¤¿Ãͤè¤ê¤âÂ礤ʥ¹¥Ú¡¼¥¹¤¬¥½¡¼¥È¤ÎºÝ¤ËɬÍפÀ¤È¤¹¤ë¤È¡¢°î¤ì¤¿¥Ç¡¼¥¿¤ò
-ÊÝ»ý¤¹¤ë¤¿¤á¤Ë°ì»þŪ¤Ê¥Õ¥¡¥¤¥ë¤¬¤¤¤¯¤Ä¤«¤³¤³¤ËÀ¸À®¤µ¤ì¤Þ¤¹¡£
-
-°ì»þŪ¤Ê¥Õ¥¡¥¤¥ë¤Ï¼«Æ°Åª¤Ë¾Ã¤·µî¤é¤ì¤ë¤Ï¤º¤Ç¤¹¤¬¡¢¤â¤·¡¢¥½¡¼¥È¤ÎÅÓÃæ¤Ç¥Ð¥Ã¥¯¥¨
-¥ó¥É¤¬¥¯¥é¥Ã¥·¥å¤·¤Æ¤·¤Þ¤¦¤È¤½¤¦¤Ï¤Ê¤ê¤Þ¤»¤ó¡£postmaster¤ÎÄä»ß¤È¥ê¥¹¥¿¡¼¥È¤Ç¤³
-¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¾Ã¤·¤µ¤é¤ì¤Þ¤¹¡£
-
+ ¤³¤ì¤Ë¤è¤ê PostgreSQL ¤ÎºÇ¾åÉô¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë server.log
+ ¥Õ¥¡¥¤¥ë¤¬ÃÖ¤«¤ì¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¥µ¡¼¥Ð¡¼¤¬Áø¶ø¤·¤¿ÌäÂê¤ä¥¨¥é¡¼¤Ë¤Ä
+ ¤¤¤ÆÍÍѤʾðÊó¤ò´Þ¤ß¤Þ¤¹¡£Postmaster ¤Ï¹¹¤Ë¾ÜºÙ¤Ê¾ðÊó¤òÊó¹ð¤¹¤ë¤¿¤á¤Î
+ -d ¥ª¥×¥·¥ç¥ó¤ò»ý¤Á¤Þ¤¹¡£¤½¤Î -d
+ ¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Ç¥Ð¥°¡¦¥ì¥Ù¥ë¤ò»ØÄꤷ¤Þ¤¹¡£¹â¤¤¥Ç¥Ð¥°¡¦¥ì¥Ù¥ë¤Ç¤Ï¡¢Âç¤
+ ¤Ê¥í¥°¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤³¤È¤ËÃí°Õ¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£
+
+ ¤â¤·¡¢postmaster¤¬Áö¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢postgres¥Ð¥Ã¥¯¥¨¥ó¥É¤ò¥³¥Þ¥ó¥É¥é¥¤
+ ¥ó¤«¤éÁö¤é¤»¤ë¤³¤È¤¬¤Ç¤¡¢Ä¾ÀÜSQLʸ¤ò¥¿¥¤¥×¤¹¤ë¤³¤È¤¬¤Ç¤
+ ¤Þ¤¹¡£¤³¤Î¤ä¤ê¤«¤¿¤Ï¡¢¥Ç¥Ð¥°ÌÜŪ¤Î¤È¤
+ ¤À¤±¤ª¾©¤á¤·¤Þ¤¹¡£¥»¥ß¥³¥í¥ó¤Ç¤Ï¤Ê¤¯¡¢²þ¹Ô¤¬Ì䤤¹ç¤ï¤»¤Î½ª¤ê¤Ë¤Ê¤ë¤³¤È
+ ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¤â¤·¡¢¥Ç¥Ð¥°¥·¥ó¥Ü¥ë¤òÆþ¤ì¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤ì¤Ð¡¢
+ ¥Ç¥Ð¥Ã¥¬¤ò»È¤Ã¤Æ²¿¤¬µ¯¤¤Æ¤¤¤ë¤«¤ò¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£postmaster
+ ¤«¤é¥Ð¥Ã¥¯¥¨¥ó¥É¤ò³«»Ï¤·¤¿¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢ÆÈΩ¤Ê´Ä¶
+ ¤ÇÁö¤Ã¤Æ¤¤¤ë¤Î¤Ç¤Ï¤Ê¤¯¥í¥Ã¥¯¡¿¥Ð¥Ã¥¯¥¨¥ó¥É¤È¤ÎÂÐÏäÎÌäÂ꤬½ÅÊ£¤¹¤ë¤³¤È
+ ¤Ï¤¢¤ê¤Þ¤»¤ó¡£
+
+ ¤â¤·¡¢postmaster¤¬Áö¤Ã¤Æ¤¤¤ì¤Ð¡¢¤¢¤ë¥¦¥£¥ó¥É¥¦¤Çpsql¤ò³«»Ï¤¹¤ë¤È¡¢SELE
+ CT pg_backend_pid()¤ò»È¤Ã¤Æ¡¢psql ¤Ç»È¤ï¤ì¤ë postgres
+ ¥×¥í¥»¥¹¤ÎPID¤¬¸«¤Ä¤«¤ê¤Þ¤¹¡£
+ ¥Ç¥Ð¥Ã¥¬¤ò»È¤Ã¤Æpostgres¤ÎPID¤Ë¥¢¥¿¥Ã¥Á(attach)¤·¤Þ¤¹¡£¥Ç¥Ð¥Ã¥¬¤ÎÃ椫¤
+ é¥Ö¥ì¡¼¥¯¡¦¥Ý¥¤¥ó¥È¤ò¥»¥Ã¥È¤·¡¢psql
+ ¤«¤éÌ䤤¹ç¤ï¤»¤òȯ¹Ô¤·¤Þ¤¹¡£¥Ç¥Ð¥°¤Î¤¿¤á¤Ëpostgres¤ò»ÏÆ°¤¹¤ë¾ì¹ç¤Ï¡¢PG
+ OPTIONS="-W n" ¤òÀßÄê¤Ç¤¡¢¤½¤ì¤«¤é¡¢psql ¤ò³«»Ï¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢n
+ Éó«»Ï¤òÃ٤餻¤ë¤Ï¤º¤Ê¤Î¤Ç¡¢¥Ç¥Ð¥Ã¥¬¤Ç¥×¥í¥»¥¹¤Ë¥¢¥¿¥Ã¥Á¤·¤Æ¡¢¥Ö¥ì¡¼¥¯
+ ¥Ý¥¤¥ó¥È¤òÀßÄꤷ¡¢³«»Ï¤«¤é½ç¤òÄɤäƸ«¤Æ¤æ¤¯¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+
+ ¤¤¤¯¤Ä¤«¤Îlog_*¥µ¡¼¥Ð¹½À®ÊÑ¿ô¤Ï¡¢¥Ç¥Ð¥Ã¥°¤ÈÀ
+ ǽ¬Äê¤Ë¤È¤Æ¤âÌò¤ËΩ¤Ä¥×¥í¥»¥¹¤ÎÅý·×¤Î°õºþ¤ò²Äǽ¤Ë¤·¤Þ¤¹¡£
+
+ ²¿¤È¤¤¤¦´Ø¿ô¤¬¤É¤Î¤¯¤é¤¤¼Â¹Ô»þ´Ö¤ò¿©¤Ã¤Æ¤¤¤ë¤«¤ò¸«¤ë¤¿¤á¤Ë¡¢¥×¥í¥Õ¥¡¥¤
+ ¥ê¥ó¥°¡Ê¥×¥í¥Õ¥£¡¼¥ëÉÕ¤
+ ¡Ë¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¤½¤Î¥Ð¥Ã¥¯¥¨¥ó¥É¤Î¥×¥í¥Õ¥£¡¼¥ë¡¦¥Õ¥¡
+ ¥¤¥ë¤Ï pgsql/data/base/dbname
+ ¥Ç¥£¥ì¥¯¥È¥ê¤Ë³ÊǼ¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£¥¯¥é¥¤¥¢¥ó¥È¤Î¥×¥í¥Õ¥£¡¼¥ë¤Ï¥¯¥é¥¤¥¢
+ ¥ó¥È¤Î¸½¹Ô¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤ë¤Ç¤·¤ç¤¦¡£Linux
+ ¤Ç¤Þ¤È¤â¤Ê¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¤ò¹Ô¤¦¤Ë¤Ï -DLINUX_PROFILE
+ ¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
+
+ 3.8) Àܳ¤·¤è¤¦¤È¤¹¤ë¤È¤¤Ë 'Sorry, too many clients' ¤¬½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+
+ postmaster¤¬Æ±»þ»ÏÆ°¤Ç¤
+ ¤ë¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤ËÂФ¹¤ëÀ©¸Â¿ô¤òÁý¤ä¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
+
+ ´ûÄê¤ÎºÇÂç¥×¥í¥»¥¹¤Ï32¥×¥í¥»¥¹¤Ç¤¹¡£-N¤ËŬÀÚ¤ÊÃͤò°ú¿ô¤Ë¤·¤Æpostmaster
+ ¤òºÆµ¯Æ°¤¹¤ë¤«¡¢PostgreSQL.conf
+ ¤ò½¤Àµ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤½¤ÎÃͤòÁý¤ä¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+
+ ¤â¤·¡¢-N ¤ò 32¤è¤ê¤âÂ礤¯¤¹¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢-B¤â´ûÄê¤Î64¤è¤êÂç¤
+ ¤¤ÃͤËÁý²Ã¤µ¤»¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤·¡¢-B ¤Ï¾¯¤Ê¤¯¤È¤â -N
+ ¤Î2ÇܤϤʤ¯¤Æ¤Ï¤Ê¤é¤º¡¢¤ª¤½¤é¤¯ºÇ¹âÀǽ¤ò˾¤à¤Ê¤é¤Ð¤½¤ì¤è¤êÂç¤
+ ¤¤Ãͤ¬É¬ÍפʤϤº¤Ç¤¹¡£¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤ò¤¿¤¯¤µ¤ó¤Ë¤¹¤ë¤È¡¢¤¤¤í¤¤¤í
+ ¤ÊUnix¥«¡¼¥Í¥ë¹½À®¥Ñ¥é¥á¡¼¥¿¤âÁý¤ä¤¹¤³¤È¤¬É¬Íפˤʤ뤫¤â¤·¤ì¤Þ¤»¤ó¡£
+ ¶¦Í¥á¥â¥ê¡¼¡¦¥Ö¥í¥Ã¥¯¤ÎºÇÂçÃÍ(SHMMAX)¡¢
+ ¥»¥Þ¥Õ¥©¤ÎºÇÂç¿ô(SEMMNS¤ÈSEMMNI)¡¢ ¥×¥í¥»¥¹¤ÎºÇÂç¿ô(NPROC)¡¢
+ ¥æ¡¼¥¶Ëè¤ÎºÇÂç¥×¥í¥»¥¹¿ô(MAXUPRC)¡¢
+ ³«¤¯¥Õ¥¡¥¤¥ë¤ÎºÇÂç¿ô(NFILE¤ÈNINODE) ¤â³Îǧ»ö¹à¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£
+ PostgreSQL¤Ëµö¤µ¤ì¤ë¥Ð¥Ã¥¯¥¨¥ó¥É¤Î¥×¥í¥»¥¹¿ô¤¬À©¸Â¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï¡¢
+ ¥·¥¹¥Æ¥à¤Î¥ê¥½¡¼¥¹¤ò»È¤¤²Ì¤·¤Æ¤·¤Þ¤¦¤³¤È¤òÈò¤±¤ë¤¿¤á¤Ç¤¹¡£
+
+ 3.9) pgsql_tmp ¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¤Ï²¿¤¬¤¢¤ê¤Þ¤¹¤«¡©
+
+ Ì䤤¹ç¤ï¤»¼Â¹Ô¥â¥¸¥å¡¼¥ë¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤¿°ì»þŪ¤Ê¥Õ¥¡¥¤¥ë¤¬¡¢¤³¤Î¥Ç¥£
+ ¥ì¥¯¥È¥ê¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£Î㤨¤Ð¡¢¤â¤· ORDER BY
+ ¶ç¤òËþ¤¿¤¹¤¿¤á¤Ë¥Ð¥Ã¥¯¥¨¥ó¥É¤Î -S ¥Ñ¥é¥á¡¼¥¿¤Çµö²Ä¤·¤¿Ãͤè¤ê¤âÂç¤
+ ¤Ê¥¹¥Ú¡¼¥¹¤¬¥½¡¼¥È¤ÎºÝ¤ËɬÍפÀ¤È¤¹¤ë¤È¡¢°î¤ì¤¿¥Ç¡¼¥¿¤òÊÝ»ý¤¹¤ë¤¿¤á¤Ë°ì
+ »þŪ¤Ê¥Õ¥¡¥¤¥ë¤¬¤¤¤¯¤Ä¤«¤³¤³¤ËÀ¸À®¤µ¤ì¤Þ¤¹¡£
+
+ °ì»þŪ¤Ê¥Õ¥¡¥¤¥ë¤Ï¼«Æ°Åª¤Ë¾Ã¤·µî¤é¤ì¤ë¤Ï¤º¤Ç¤¹¤¬¡¢¤â¤·¡¢¥½¡¼¥È¤ÎÅÓÃæ¤Ç
+ ¥Ð¥Ã¥¯¥¨¥ó¥É¤¬¥¯¥é¥Ã¥·¥å¤·¤Æ¤·¤Þ¤¦¤È¤½¤¦¤Ï¤Ê¤ê¤Þ¤»¤ó¡£postmaster¤ÎÄä»ß
+ ¤È¥ê¥¹¥¿¡¼¥È¤Ç¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¾Ã¤·¤µ¤é¤ì¤Þ¤¹¡£
[ÌõÃí¡§
- SYSLOGD ·Ðͳ¤Ç¥í¥°¤ò½ÐÎϤ¹¤ë¤Ë¤Ï¡¢¤Þ¤º¡¢configure ¤ò --enable-syslog
- ÉÕ¤¤ÇÁö¤é¤»¤¿¸å¡¢¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ë¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£
- ¼¡¤Ë¡¢syslog.conf ¤Ë local?.* ¤Î ½ÐÎÏÀè¤ò»ØÄꤷ(´Ä¶ÊÑ¿ô¤ÇÊѹ¹²Äǽ)¡¢
- syslogd ¤Ë HUP ¥·¥°¥Ê¥ë¤òÁ÷¤Ã¤Æ½é´ü²½¤·¤Æ¤ª¤¤Þ¤¹¡£¤½¤·¤Æ¡¢
- $PGDATA/pg_options ¤Ë syslog=2 ¤ò²Ã¤¨¤Æ¡¢ postmaster ¤ò -S
- ¥ª¥×¥·¥ç¥óÉÕ¤¤Ë¤Æ¥µ¡¼¥Ð¥â¡¼¥É¤Çµ¯Æ°¤·¤Þ¤¹¡£(¥Ð¡¼¥¸¥ç¥ó 7.1 ¤«¤é¤Ï
+ SYSLOGD ·Ðͳ¤Ç¥í¥°¤ò½ÐÎϤ¹¤ë¤Ë¤Ï¡¢¤Þ¤º¡¢configure ¤ò --enable-syslog
+ ÉÕ¤¤ÇÁö¤é¤»¤¿¸å¡¢¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ë¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£
+ ¼¡¤Ë¡¢syslog.conf ¤Ë local?.* ¤Î ½ÐÎÏÀè¤ò»ØÄꤷ(´Ä¶ÊÑ¿ô¤ÇÊѹ¹²Äǽ)¡¢
+ syslogd ¤Ë HUP ¥·¥°¥Ê¥ë¤òÁ÷¤Ã¤Æ½é´ü²½¤·¤Æ¤ª¤¤Þ¤¹¡£¤½¤·¤Æ¡¢
+ $PGDATA/pg_options ¤Ë syslog=2 ¤ò²Ã¤¨¤Æ¡¢ postmaster ¤ò -S
+ ¥ª¥×¥·¥ç¥óÉÕ¤¤Ë¤Æ¥µ¡¼¥Ð¥â¡¼¥É¤Çµ¯Æ°¤·¤Þ¤¹¡£(¥Ð¡¼¥¸¥ç¥ó 7.1 ¤«¤é¤Ï
pg_options ¤Ï PostgreSQL.conf ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£)
]
-3.10) PostgreSQL¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ò¥¢¥Ã¥×¥Ç¡¼¥È¤¹¤ë¤Î¤Ë¥À¥ó¥×¤È¥ê¥¹¥È¥¢¤ò¤·¤Ê
-¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-
-PostgreSQL¥Á¡¼¥à¤Ï¥Þ¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤Ç¤Ï¾®¤µ¤ÊÊѹ¹¤·¤«¹Ô¤Ê¤¤¤Þ¤»¤ó¤Î¤Ç¡¢7.2 ¤«¤é
-7.2.1 ¤Ø¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ï¥À¥ó¥×¤È¥ê¥¹¥È¥¢¤ÎɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤·¤«¤·¡¢¥á¥¸¥ã
-¡¼¥ê¥ê¡¼¥¹(¤¿¤È¤¨¤Ð¡¢7.2¤«¤é7.3¤Ø¤Î¤è¤¦¤Ê)¤Ç¤Ï¡¢¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤ä¥Ç¡¼¥¿¥Õ¥¡¥¤
-¥ë¤ÎÆâÉô¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÊѹ¹¤ò¤·¤Ð¤·¤Ð¹Ô¤Ê¤¤¤Þ¤¹¡£¤³¤ì¤é¤ÎÊѹ¹¤Ï¤¿¤¤¤Æ¤¤Ê£»¨¤Ç¡¢
-¤½¤Î¤¿¤á²æ¡¹¤Ï¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¤¿¤á¤Î¸åÊý¸ß´¹À¤ò°Ý»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤»¤ó¡£¥À¥ó
-¥×¤ÏÈÆÍÑ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¥Ç¡¼¥¿¤ò½ÐÎϤ·¡¢¤½¤ì¤ò¿·¤·¤¤ÆâÉô¥Õ¥©¡¼¥Þ¥Ã¥È¤ËÆɤ߹þ¤à¤³
-¤È¤¬¤Ç¤¤Þ¤¹¡£
-
-¥Ç¥£¥¹¥¯¾å¤Ç¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ËÊѹ¹¤Î¤Ê¤¤Æ±°ì¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ï¡¢¥À¥ó
-¥×¡¿¥ê¥¹¥È¥¢¤Ç¤Ï¤Ê¤¯¡¢pg_upgrade ¥¹¥¯¥ê¥×¥È¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥ê¥ê¡¼¥¹¥Î¡¼¥È
-¤Ë¤Ï¡¢pg_upgrade ¤¬ÍøÍѲÄǽ¤Ê¥ê¥ê¡¼¥¹¤«¤É¤¦¤«µ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
-
-3.11) ¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤Ï¤É¤ó¤Ê¥³¥ó¥Ô¥å¡¼¥¿¤ò»È¤¨¤Ð¤è¤¤¤Ç¤¹¤«¡©
-
-PC¥Ï¡¼¥É¥¦¥§¥¢¤Ï¤Û¤È¤ó¤É¸ß´¹À¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤Û¤È¤ó¤É¤Î¿Í¤Ï¡¢¤¹¤Ù¤Æ¤ÎPC¥Ï¡¼¥É
-¥¦¥§¥¢¤¬Æ±¤¸ÉʼÁ¤À¤È»×¤¤¹þ¤à·¹¸þ¤¬¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢¤½¤ì¤Ï´Ö°ã¤¤¤Ç¤¹¡£ECC RAM¡¢
-SCSI¡¢¤ª¤è¤Ó¡¢¹âÉʼÁ¥Þ¥¶¡¼¥Ü¡¼¥É¤Ï¡¢°Â¤¤¥Ï¡¼¥É¥¦¥§¥¢¤ËÈæ¤Ù¤ë¤È¡¢¤è¤ê¿®ÍêÀ¤¬¹â
-¤¯¡¢¤è¤êÀǽ¤âÎɤ¤¤Î¤Ç¤¹¡£PostgreSQL ¤Ï¤Û¤È¤ó¤É¤Î¥Ï¡¼¥É¥¦¥§¥¢¤Ç²ÔƯ¤·¤Þ¤¹¤¬¡¢¿®
-ÍêÀ¤äÀǽ¤¬½ÅÍפʾì¹ç¤Ï¡¢¥Ï¡¼¥É¥¦¥§¥¢¤Î¥ª¥×¥·¥ç¥ó¤ò¸¦µæ¤¹¤ë¤³¤È¤¬¸ÌÀ¤Ç¤¹¡£¥á
-¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ç¤â¥Ï¡¼¥É¥¦¥§¥¢¥ª¥×¥·¥ç¥ó¤È¥È¥ì¡¼¥É¥ª¥Õ¤Ë¤Ä¤¤¤ÆµÄÏÀ¤¹¤ë¤³¤È¤¬¤Ç
-¤¤Þ¤¹¡£
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- Áàºî¾å¤Î¼ÁÌä
-
-4.1) ¥Ð¥¤¥Ê¥ê¡¦¥«¡¼¥½¥ë¤ÈÄ̾參¡¼¥½¥ë¤È¤Î¸·Ì©¤Ê°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
-
-¾Ü½Ò¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç DECLARE ¤ò¸«¤Æ²¼¤µ¤¤¡£
-
-4.2) ºÇ½é¤Î¿ô¥í¥¦¤Î¤ß¤ò SELECT¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©¥é¥ó¥À¥à¤Ê¥í¥¦¡©
-
-¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤ÇFETCH¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£¤¢¤ë¤¤¤Ï¡¢SELECT ... LIMIT....¤ò»È¤Ã
-¤Æ¤ß¤Æ²¼¤µ¤¤¡£
-
-¤¿¤È¤¨¡¢Íߤ·¤¤¤Î¤ÏºÇ½é¤Î¿ô¥í¥¦¤À¤±¤Ç¤â¡¢¤¹¤Ù¤Æ¤ÎÌ䤤¹ç¤ï¤»¤òɾ²Á¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é
-¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ORDER BY ¤ò»ý¤Ã¤¿Ì䤤¹ç¤ï¤»¤ò»È¤¦¤³¤È¤ò¹Í¤¨¤Æ¤ß¤Æ²¼¤µ¤¤¡£¤â
-¤·¡¢ORDER BY¤Ë¹ç¤Ã¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬¤¢¤ë¤È¤¹¤ë¤È PostgreSQL¤ÏÍ׵ᤵ¤ì¤¿ºÇ½é¤Î¿ô¥í
-¥¦¤À¤±¤Çɾ²Á¤Ç¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢¤Ç¤Ê¤ì¤Ð¡¢PostgreSQL ¤Ï°Õ¿Þ¤·¤¿¥í¥¦¤¬À¸À®¤µ
-¤ì¤ë¤Þ¤Ç¤¹¤Ù¤Æ¤Î¥í¥¦¤òɾ²Á¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-
-¥é¥ó¥À¥à¤Ê¥í¥¦¤òSELECT¤¹¤ë¤Ë¤Ï¡¢¼¡¤Îʸ¤ò»È¤¤¤Þ¤¹¡§
-
+ 3.10)
+ PostgreSQL¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ò¥¢¥Ã¥×¥Ç¡¼¥È¤¹¤ë¤Î¤Ë¥À¥ó¥×¤È¥ê¥¹¥È¥¢¤ò¤·¤Ê¤¯¤
+ ƤϤʤé¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+
+ PostgreSQL¥Á¡¼¥à¤Ï¥Þ¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤Ç¤Ï¾®¤µ¤ÊÊѹ¹¤·¤«¹Ô¤Ê¤¤¤Þ¤»¤ó¤Î¤Ç¡¢
+ 7.2 ¤«¤é 7.2.1
+ ¤Ø¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ï¥À¥ó¥×¤È¥ê¥¹¥È¥¢¤ÎɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤·¤«¤·¡¢¥á¥¸
+ ¥ã¡¼¥ê¥ê¡¼¥¹(¤¿¤È¤¨¤Ð¡¢7.2¤«¤é7.3¤Ø¤Î¤è¤¦¤Ê)¤Ç¤Ï¡¢¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤ä¥Ç
+ ¡¼¥¿¥Õ¥¡¥¤¥ë¤ÎÆâÉô¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÊѹ¹¤ò¤·¤Ð¤·¤Ð¹Ô¤Ê¤¤¤Þ¤¹¡£¤³¤ì¤é¤ÎÊѹ¹
+ ¤Ï¤¿¤¤¤Æ¤¤Ê£»¨¤Ç¡¢¤½¤Î¤¿¤á²æ¡¹¤Ï¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¤¿¤á¤Î¸åÊý¸ß´¹À
+ ¤ò°Ý»ý¤¹¤ë¤³¤È¤¬¤Ç¤
+ ¤Þ¤»¤ó¡£¥À¥ó¥×¤ÏÈÆÍÑ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¥Ç¡¼¥¿¤ò½ÐÎϤ·¡¢¤½¤ì¤ò¿·¤·¤¤ÆâÉô¥Õ¥©
+ ¡¼¥Þ¥Ã¥È¤ËÆɤ߹þ¤à¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+
+ ¥Ç¥£¥¹¥¯¾å¤Ç¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ËÊѹ¹¤Î¤Ê¤¤Æ±°ì¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É
+ ¤Ï¡¢¥À¥ó¥×¡¿¥ê¥¹¥È¥¢¤Ç¤Ï¤Ê¤¯¡¢pg_upgrade ¥¹¥¯¥ê¥×¥È¤ò»È¤¦¤³¤È¤¬¤Ç¤
+ ¤Þ¤¹¡£¥ê¥ê¡¼¥¹¥Î¡¼¥È¤Ë¤Ï¡¢pg_upgrade ¤¬ÍøÍѲÄǽ¤Ê¥ê¥ê¡¼¥¹¤«¤É¤¦¤«µ
+ ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
+
+ 3.11) ¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤Ï¤É¤ó¤Ê¥³¥ó¥Ô¥å¡¼¥¿¤ò»È¤¨¤Ð¤è¤¤¤Ç¤¹¤«¡©
+
+ PC¥Ï¡¼¥É¥¦¥§¥¢¤Ï¤Û¤È¤ó¤É¸ß´¹À
+ ¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤Û¤È¤ó¤É¤Î¿Í¤Ï¡¢¤¹¤Ù¤Æ¤ÎPC¥Ï¡¼¥É¥¦¥§¥¢¤¬Æ±¤¸ÉʼÁ¤À¤È»×
+ ¤¤¹þ¤à·¹¸þ¤¬¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢¤½¤ì¤Ï´Ö°ã¤¤¤Ç¤¹¡£ECC
+ RAM¡¢SCSI¡¢¤ª¤è¤Ó¡¢¹âÉʼÁ¥Þ¥¶¡¼¥Ü¡¼¥É¤Ï¡¢°Â¤¤¥Ï¡¼¥É¥¦¥§¥¢¤ËÈæ¤Ù¤ë¤È¡¢¤
+ è¤ê¿®ÍêÀ¤¬¹â¤¯¡¢¤è¤êÀǽ¤âÎɤ¤¤Î¤Ç¤¹¡£PostgreSQL
+ ¤Ï¤Û¤È¤ó¤É¤Î¥Ï¡¼¥É¥¦¥§¥¢¤Ç²ÔƯ¤·¤Þ¤¹¤¬¡¢¿®ÍêÀ¤äÀ
+ ǽ¤¬½ÅÍפʾì¹ç¤Ï¡¢¥Ï¡¼¥É¥¦¥§¥¢¤Î¥ª¥×¥·¥ç¥ó¤ò¸¦µæ¤¹¤ë¤³¤È¤¬¸
+ ÌÀ¤Ç¤¹¡£¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ç¤â¥Ï¡¼¥É¥¦¥§¥¢¥ª¥×¥·¥ç¥ó¤È¥È¥ì¡¼¥É¥ª¥Õ¤Ë¤Ä¤¤
+ ¤ÆµÄÏÀ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+ _________________________________________________________________
+
+ Áàºî¾å¤Î¼ÁÌä
+
+ 4.1) ¥Ð¥¤¥Ê¥ê¡¦¥«¡¼¥½¥ë¤ÈÄ̾參¡¼¥½¥ë¤È¤Î¸·Ì©¤Ê°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
+
+ ¾Ü½Ò¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç DECLARE ¤ò¸«¤Æ²¼¤µ¤¤¡£
+
+ 4.2) ºÇ½é¤Î¿ô¥í¥¦¤Î¤ß¤ò SELECT¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©¥é¥ó¥À¥à¤Ê¥í¥¦¡©
+
+ ¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤ÇFETCH¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£¤¢¤ë¤¤¤Ï¡¢SELECT ...
+ LIMIT....¤ò»È¤Ã¤Æ¤ß¤Æ²¼¤µ¤¤¡£
+
+ ¤¿¤È¤¨¡¢Íߤ·¤¤¤Î¤ÏºÇ½é¤Î¿ô¥í¥¦¤À¤±¤Ç¤â¡¢¤¹¤Ù¤Æ¤ÎÌ䤤¹ç¤ï¤»¤òɾ²Á¤·¤Ê¤¯
+ ¤Æ¤Ï¤Ê¤é¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ORDER BY
+ ¤ò»ý¤Ã¤¿Ì䤤¹ç¤ï¤»¤ò»È¤¦¤³¤È¤ò¹Í¤¨¤Æ¤ß¤Æ²¼¤µ¤¤¡£ ¤â¤·¡¢ORDER
+ BY¤Ë¹ç¤Ã¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬¤¢¤ë¤È¤¹¤ë¤È
+ PostgreSQL¤ÏÍ׵ᤵ¤ì¤¿ºÇ½é¤Î¿ô¥í¥¦¤À¤±¤Çɾ²Á¤Ç¤
+ ¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢¤Ç¤Ê¤ì¤Ð¡¢PostgreSQL
+ ¤Ï°Õ¿Þ¤·¤¿¥í¥¦¤¬À¸À®¤µ¤ì¤ë¤Þ¤Ç¤¹¤Ù¤Æ¤Î¥í¥¦¤òɾ²Á¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤â
+ ¤·¤ì¤Þ¤»¤ó¡£
+
+ ¥é¥ó¥À¥à¤Ê¥í¥¦¤òSELECT¤¹¤ë¤Ë¤Ï¡¢¼¡¤Îʸ¤ò»È¤¤¤Þ¤¹¡§
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
-4.3) ¥Æ¡¼¥Ö¥ë¤ä¤½¤Î¾¤Î¾ðÊó¤Î¥ê¥¹¥È¤ò psql ¤Ç¸«¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-
-psql¤ÎÃæ¤Ç¡¢ \dt ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¥Æ¡¼¥Ö¥ë¤ò¸«¤Þ¤¹¡£psql ¤ÎÃæ¤Î¥³¥Þ¥ó¥É¤Î´°Á´¤Ê
-¥ê¥¹¥È¤Ë¤Ï \? ¤ò»È¤¨¤Þ¤¹¡£¤¢¤ë¤¤¤Ï¡¢psql¤Î¥½¡¼¥¹¥³¡¼¥É¤Îpgsql/src/bin/psql/
-describe.c¥Õ¥¡¥¤¥ë¤ò¸«¤ë¤³¤È¤â¤Ç¤¤Æ¡¢¤½¤ÎÃæ¤Ë¤Ïpsql¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¥³¥Þ¥ó¥É
-¤Î½ÐÎϤòÀ¸À®¤¹¤ëSQL¥³¥Þ¥ó¥É¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢psql¤ò -E ¥ª¥×¥·¥ç¥ó¤È°ì½ï¤Ë
-³«»Ï¤¹¤ë¤È¡¢¼Â¹Ô¤µ¤»¤¿¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë»È¤¦Ì䤤¹ç¤ï¤»¤ò½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê
-¤ê¤Þ¤¹¡£PostgreSQL¤Ï¤Þ¤¿¡¢SQLiÂбþ¤Î INFORMATION SCHEMA ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍÑ°Õ
-¤·¤Æ¤¤¤Æ¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÆÀ¤ë¤¿¤á¤ËÌ䤤¹ç¤ï¤»¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹
-¡£
-
-4.4) ¥Æ¡¼¥Ö¥ë¤«¤é¥«¥é¥à¤Îºï½ü¡¢¤¢¤ë¤¤¤Ï¡¢¥Ç¡¼¥¿·¿¤òÊѹ¹¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-
-DROP COLUMNµ¡Ç½¤¬¡¢ALTER TABLE DROP COLUMN ¤È¤·¤Æ¥ê¥ê¡¼¥¹7.3 ¤Ë²Ã¤¨¤é¤ì¤Þ¤·¤¿¡£
-¤½¤ì¤Þ¤Ç¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢¤½¤ÎÂå¤ï¤ê¤Ë¤³¤¦¤·¤Þ¤¹:
-
+ 4.3) ¥Æ¡¼¥Ö¥ë¤ä¤½¤Î¾¤Î¾ðÊó¤Î¥ê¥¹¥È¤ò psql ¤Ç¸«¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
+
+ psql¤ÎÃæ¤Ç¡¢ \dt ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¥Æ¡¼¥Ö¥ë¤ò¸«¤Þ¤¹¡£psql
+ ¤ÎÃæ¤Î¥³¥Þ¥ó¥É¤Î´°Á´¤Ê¥ê¥¹¥È¤Ë¤Ï \?
+ ¤ò»È¤¨¤Þ¤¹¡£¤¢¤ë¤¤¤Ï¡¢psql¤Î¥½¡¼¥¹¥³¡¼¥É¤Îpgsql/src/bin/psql/describe.
+ c¥Õ¥¡¥¤¥ë¤ò¸«¤ë¤³¤È¤â¤Ç¤
+ ¤Æ¡¢¤½¤ÎÃæ¤Ë¤Ïpsql¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¥³¥Þ¥ó¥É¤Î½ÐÎϤòÀ¸À®¤¹¤ëSQL¥³¥Þ¥ó¥
+ ɤ¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢psql¤ò -E
+ ¥ª¥×¥·¥ç¥ó¤È°ì½ï¤Ë³«»Ï¤¹¤ë¤È¡¢¼Â¹Ô¤µ¤»¤¿¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë»È¤¦Ìä
+ ¤¤¹ç¤ï¤»¤ò½ÐÎϤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£PostgreSQL¤Ï¤Þ¤¿¡¢SQLiÂбþ¤Î
+ INFORMATION SCHEMA
+ ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍÑ°Õ¤·¤Æ¤¤¤Æ¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤òÆÀ¤ë¤¿¤á¤Ë
+ Ì䤤¹ç¤ï¤»¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+
+ 4.4)
+ ¥Æ¡¼¥Ö¥ë¤«¤é¥«¥é¥à¤Îºï½ü¡¢¤¢¤ë¤¤¤Ï¡¢¥Ç¡¼¥¿·¿¤òÊѹ¹¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
+
+ DROP COLUMNµ¡Ç½¤¬¡¢ALTER TABLE DROP COLUMN ¤È¤·¤Æ¥ê¥ê¡¼¥¹7.3
+ ¤Ë²Ã¤¨¤é¤ì¤Þ¤·¤¿¡£¤½¤ì¤Þ¤Ç¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢¤½¤ÎÂå¤ï¤ê¤Ë¤³¤¦¤·¤Þ¤¹:
BEGIN;
LOCK TABLE old_table;
SELECT ... -- ºï½ü¤·¤¿¤¤¥«¥é¥à°Ê³°¤Î¥«¥é¥à¤ò¤¹¤Ù¤ÆÁªÂò¤·¤Þ¤¹¡£
ALTER TABLE new_table RENAME TO old_table;
COMMIT;
-¥«¥é¥à¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤Ï¼¡¤Îʸ¤ÇÊѤ¨¤é¤ì¤Þ¤¹¡§
-
+ ¥«¥é¥à¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤Ï¼¡¤Îʸ¤ÇÊѤ¨¤é¤ì¤Þ¤¹¡§
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;
-¤³¤ì¤ò¹Ô¤Ê¤Ã¤¿¤È¤¤Ï¡¢Ëõ¾Ã¤µ¤ì¤¿¹Ô¤¬»È¤Ã¤Æ¤¤¤ë¥Ç¥£¥¹¥¯¶õ´Ö¤ò²ó¼ý¤¹¤ë¤¿¤á¤Ë
-VACUUM FULL tab¤ò¤·¤¿¤Û¤¦¤¬Îɤ¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-
-4.5) ¥í¥¦¡¢¥Æ¡¼¥Ö¥ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º¤Ï¡©
-
-À©¸Â¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£
-
+ ¤³¤ì¤ò¹Ô¤Ê¤Ã¤¿¤È¤
+ ¤Ï¡¢Ëõ¾Ã¤µ¤ì¤¿¹Ô¤¬»È¤Ã¤Æ¤¤¤ë¥Ç¥£¥¹¥¯¶õ´Ö¤ò²ó¼ý¤¹¤ë¤¿¤á¤ËVACUUM FULL
+ tab¤ò¤·¤¿¤Û¤¦¤¬Îɤ¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£
+
+ 4.5) ¥í¥¦¡¢¥Æ¡¼¥Ö¥ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º¤Ï¡©
+
+ À©¸Â¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£
¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º? À©¸Â̵¤· (32 TB ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤â¸ºß¤·¤Þ¤¹)
¥Æ¡¼¥Ö¥ë¤ÎºÇÂ祵¥¤¥º? 32TB
¥í¥¦¤ÎºÇÂ祵¥¤¥º? 1.6TB
¥Æ¡¼¥Ö¥ëÆâ¤Ç¤ÎºÇÂ祫¥é¥à¿ô? ¥«¥é¥à¤Î·¿¤Ë¤è¤ê250-1600
¥Æ¡¼¥Ö¥ëÆâ¤Ç¤ÎºÇÂ祤¥ó¥Ç¥Ã¥¯¥¹¿ô? À©¸Â̵¤·
-¤â¤Á¤í¤ó¡¢¤³¤ì¤é¤Ï¼ÂºÝ¤Ï̵À©¸Â¤Ç¤Ï¤Ê¤¯¡¢¥Ç¥£¥¹¥¯ÍÆÎ̤ȥá¥â¥ê¡¼¤ä¥¹¥ï¥Ã¥×¥¹¥Ú¡¼
-¥¹¤ÎÂ礤µ¤Ë¤è¤êÀ©¸Â¤µ¤ì¤Þ¤¹¡£Àǽ¤Ï¤³¤ì¤é¤ÎÃͤ¬¤³¤È¤Î¤Û¤«Â礤ʻþ¤ËÀú¤ê¤ò¼õ¤±
-¤Þ¤¹¡£
-
-ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤Î32TB¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ë¤è¤ëµðÂç¥Õ¥¡¥¤¥ë¤Î¥µ¥Ý¡¼¥È
-¤ÏɬÍפȤ·¤Þ¤»¤ó¡£µðÂç¤Ê¥Æ¡¼¥Ö¥ë¤ÏÊ£¿ô¤Î1GB¤Î¥Õ¥¡¥¤¥ë¤Ëʬ¤±¤ÆÊݸ¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢
-¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÀ©¸Â¤Ï½ÅÍפǤϤ¢¤ê¤Þ¤»¤ó¡£
-
-¥Ç¥Õ¥©¥ë¥È¤Î¥Ö¥í¥Ã¥¯¥µ¥¤¥º¤ò32k¤Ë¤¹¤ë¤³¤È¤Ç¡¢ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤ÈºÇÂ祫¥é¥à¿ô¤È
-¤ò£´Çܤˤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
-
-4.6) °ìÈÌŪ¤Ê¥Æ¥¥¹¥È¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¥£¥¹¥¯ÍÆ
-Î̤ϤɤΤ¯¤é¤¤É¬ÍפǤ¹¡©
-
-ÉáÄ̤Υƥ¥¹¥È¥Õ¥¡¥¤¥ë¤ò PostgreSQL ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤¹¤ë¤Ë¤Ï¡¢ºÇÂç¤ÇÌó5ÇܤÎ
-¥Ç¥£¥¹¥¯ÍÆÎ̤òɬÍפȤ·¤Þ¤¹¡£
-
-ÎãÂê¤È¤·¤Æ¡¢³Æ¹Ô¤ËÀ°¿ô¤È¥Æ¥¥¹¥Èµ½Ò¤ò»ý¤Ä 100,000¹Ô¤Î¥Õ¥¡¥¤¥ë¤ò¹Í¤¨¤Æ¤ß¤Þ¤·¤ç
-¤¦¡£¥Æ¥¥¹¥È¤Îʸ»úÎó¤ÎÊ¿¶ÑŤµ¤ò20¥Ð¥¤¥È¤È²¾Äꤹ¤ë¤È¡¢¥Õ¥é¥Ã¥È¥Õ¥¡¥¤¥ë¤ÎÂ礤µ
-¤ÏÌó2.8MB ¤Ç¤¹¡£¤³¤Î¥Ç¡¼¥¿¤ò´Þ¤à PostgreSQL ¥Ç¡¼¥¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤ÎÂ礤µ¤Ï¼¡¤Î
-¤è¤¦¤ËÌó6.4MB¤È¸«ÀѤâ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡§
-
+ ¤â¤Á¤í¤ó¡¢¤³¤ì¤é¤Ï¼ÂºÝ¤Ï̵À©¸Â¤Ç¤Ï¤Ê¤¯¡¢¥Ç¥£¥¹¥¯ÍÆÎ̤ȥá¥â¥ê¡¼¤ä¥¹¥ï¥Ã
+ ¥×¥¹¥Ú¡¼¥¹¤ÎÂ礤µ¤Ë¤è¤êÀ©¸Â¤µ¤ì¤Þ¤¹¡£Àǽ¤Ï¤³¤ì¤é¤ÎÃͤ¬¤³¤È¤Î¤Û¤«Âç¤
+ ¤Ê»þ¤ËÀú¤ê¤ò¼õ¤±¤Þ¤¹¡£
+
+ ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤Î32TB¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ë¤è¤ëµðÂç¥Õ¥¡¥¤¥ë¤Î
+ ¥µ¥Ý¡¼¥È¤ÏɬÍפȤ·¤Þ¤»¤ó¡£µðÂç¤Ê¥Æ¡¼¥Ö¥ë¤ÏÊ£¿ô¤Î1GB¤Î¥Õ¥¡¥¤¥ë¤Ëʬ¤±¤ÆÊ
+ ݸ¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÀ©¸Â¤Ï½ÅÍפǤϤ¢¤ê¤Þ¤»¤ó¡£
+
+ ¥Ç¥Õ¥©¥ë¥È¤Î¥Ö¥í¥Ã¥¯¥µ¥¤¥º¤ò32k¤Ë¤¹¤ë¤³¤È¤Ç¡¢ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤ÈºÇÂç¥
+ «¥é¥à¿ô¤È¤ò£´Çܤˤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+
+ 4.6) °ìÈÌŪ¤Ê¥Æ¥
+ ¥¹¥È¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¥£¥¹¥¯ÍÆÎ̤ϤɤΤ¯¤é¤
+ ¤É¬ÍפǤ¹¡©
+
+ ÉáÄ̤Υƥ¥¹¥È¥Õ¥¡¥¤¥ë¤ò PostgreSQL
+ ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤¹¤ë¤Ë¤Ï¡¢ºÇÂç¤ÇÌó5ÇܤΥǥ£¥¹¥¯ÍÆÎ̤òɬÍפȤ·¤Þ¤¹¡
+ £
+
+ ÎãÂê¤È¤·¤Æ¡¢³Æ¹Ô¤ËÀ°¿ô¤È¥Æ¥¥¹¥Èµ½Ò¤ò»ý¤Ä 100,000¹Ô¤Î¥Õ¥¡¥¤¥ë¤ò¹Í¤¨
+ ¤Æ¤ß¤Þ¤·¤ç¤¦¡£¥Æ¥
+ ¥¹¥È¤Îʸ»úÎó¤ÎÊ¿¶ÑŤµ¤ò20¥Ð¥¤¥È¤È²¾Äꤹ¤ë¤È¡¢¥Õ¥é¥Ã¥È ¥Õ¥¡¥¤¥ë¤ÎÂç¤
+ ¤µ¤ÏÌó2.8MB ¤Ç¤¹¡£¤³¤Î¥Ç¡¼¥¿¤ò´Þ¤à PostgreSQL ¥Ç¡¼¥¿¥Ù¡¼¥¹
+ ¥Õ¥¡¥¤¥ë¤ÎÂ礤µ¤Ï¼¡¤Î¤è¤¦¤ËÌó6.4MB¤È¸«ÀѤâ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡§
32 bytes: ³Æ¥í¥¦¤Î¥Ø¥Ã¥À(³µ»»)
- 24 bytes: À°¿ô(int)¥Õ¥£¡¼¥ë¥É¤È¥Æ¥¥¹¥È(text)¥Õ¥£¡¼¥ë¥É
+ 24 bytes: À°¿ô(int)¥Õ¥£¡¼¥ë¥É¤È¥Æ¥¥¹¥È(text)¥Õ¥£¡¼¥ë¥É
+ 4 bytes: ¥Ú¡¼¥¸¾å¤Î¥¿¥Ã¥×¥ë¤Ø¤Î¥Ý¥¤¥ó¥¿
----------------------------------------
60 bytes per row
100000 data rows
-------------------- = 782 database pages (ÀÚ¤ê¾å¤²)
128 rows per page
-
- 735 database pages * 8192 bytes per page = 6,021,120 bytes (6 MB)
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢¤³¤ì¤Û¤É¤Î¥ª¡¼¥Ð¥Ø¥Ã¥É¤ÏÍ׵ᤷ¤Þ¤»¤ó¤¬¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹ÉÕ¤±¤µ¤ì¤ë
-¥Ç¡¼¥¿¤ò´Þ¤à°Ê¾å¡¢¤½¤ì¤Ê¤ê¤ËÂ礤¯¤Ê¤ê¤Þ¤¹¡£
-
-NULL¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¤È¤·¤ÆÊݸ¤µ¤ì¤Æ¤¤¤Æ¡¢¤½¤ì¤é¤¬¤ï¤º¤«¤Ë¥¹¥Ú¡¼¥¹¤ò»È¤¤¤Þ¤¹¡£
-
-4.7) ÄêµÁ¤µ¤ì¤¿¥Æ¡¼¥Ö¥ë¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¢¤ª¤è¤Ó¡¢¥æ¡¼¥¶¤ò¤É¤Î¤è¤¦¤Ë
-¤·¤Æ¸«¤Ä¤±½Ð¤·¤Þ¤¹¤«¡©
-
-psql ¤Ë¤Ï¤¤¤í¤¤¤í¤Ê¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¡¦¥³¥Þ¥ó¥É¤¬¤¢¤ê¡¢¤³¤¦¤·¤¿¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£
-¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¡¦¥³¥Þ¥ó¥É¤Î¼ïÎà¤ò¸«¤ë¤Ë¤Ï \? ¤ò»È¤Ã¤Æ²¼¤µ¤¤¡£¤Þ¤¿¡¢pg_ ¤Ç»Ï¤Þ
-¤ë¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤Ë¤âµ½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤µ¤é¤Ë¡¢psql -l ¤Ï¤¹¤Ù¤Æ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹
-¤ò¥ê¥¹¥Èɽ¼¨¤·¤Þ¤¹¡£
-
-¤Þ¤¿¡¢pgsql/src/tutorial/syscat.source ¥Õ¥¡¥¤¥ë¤òÁö¤é¤»¤Æ¤ß¤Æ²¼¤µ¤¤¡£¤½¤ì¤Ï¡¢Âô
-»³¤Î SELECT ʸ¤Ë¤è¤êɬÍפʾðÊó¤ò¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥·¥¹¥Æ¥à¡¦¥Æ¡¼¥Ö¥ë¤«¤é¼è¤ê½Ð¤·¤Æ
-Î㼨¤·¤Æ¤¯¤ì¤Þ¤¹¡£
-
-4.8) Ì䤤¹ç¤ï¤»¤¬ÃÙ¤¤¤¦¤¨¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¤¤¤ëÍͻҤ¬¤¢¤ê¤Þ¤»¤ó¡£¤Ê¤¼¤Ç¤¹¤«
-¡©
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¼«Æ°Åª¤Ë¤¹¤Ù¤Æ¤ÎÌ䤤¹ç¤ï¤»¤Ç»È¤ï¤ì¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥Æ¡¼¥Ö¥ë
-¤¬ºÇ¾®¥µ¥¤¥º¤è¤êÂ礤¯¡¢Ì䤤¹ç¤ï¤»¤Ç¤½¤Î¤ï¤º¤«¤Ê¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸¤Î¥í¥¦¤òÁªÂò¤¹¤ë
-»þ¤À¤±¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï»È¤ï¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥¥ã¥ó¤Ë¤è¤êµ¯¤³¤µ¤ì¤ë¥é
-¥ó¥À¥à¤Ê¥Ç¥£¥¹¥¯¥¢¥¯¥»¥¹¤Ï¡¢¥Æ¡¼¥Ö¥ë¤ò¥¹¥È¥ì¡¼¥È¤ËÆɤà½ç¼¡Áöºº¤è¤ê¤âÃÙ¤¯¤Ê¤ë¤³
-¤È¤¬¤¢¤ë¤«¤é¤Ç¤¹¡£
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤«¤ò·èÄꤹ¤ë¤¿¤á¤Ë¡¢PostgreSQL ¤Ï¥Æ¡¼¥Ö¥ë¤Ë¤Ä¤¤¤Æ¤ÎÅý·×¾ðÊó¤ò
-»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤³¤ÎÅý·×¾ðÊó¤Ï¡¢VACUUM ANALYZE¤Þ¤¿¤Ï¡¢Ã±¤Ë ANALYZE ¤ò»È
-¤Ã¤Æ¼ý½¸¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Åý·×¾ðÊó¤ò»È¤Ã¤Æ¥ª¥Ö¥Æ¥£¥Þ¥¤¥¶¤Ï¥Æ¡¼¥Ö¥ë¤ÎÃæ¤Ë¤¢¤ë
-¥í¥¦¿ô¤òÃΤꡢ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ù¤¤«¤Î·èÄê¤ò¤è¤êÀµ¤·¤¯¤Ç¤¤Þ¤¹¡£Åý·×¾ðÊó¤ÏºÇ
-Ŭ¤Ê·ë¹ç½ç¤ä·ë¹çÊýË¡¤ò·è¤á¤ë¾å¤Ç¤âµ®½Å¤Ê¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£Åý·×¾ðÊó¤Î¼ý½¸¤Ï¡¢¥Æ¡¼
-¥Ö¥ë¤ÎÆâÍƤ¬¤«¤ï¤ë¤ÈËè¤Ë·«ÊÖ¤·¤Ê¤µ¤ì¤ë¤Ù¤¤Ç¤¹¡£
-
-¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢Ä̾ï ORDER BY ¤ä·ë¹ç¤ò¹Ô¤Ê¤¦¤¿¤á¤Ë¤Ï»È¤ï¤ì¤Þ¤»¤ó¡£½ç¼¡¥¹¥¥ã¥ó
-¤Ë³¤¯ÌÀ¼¨Åª¥½¡¼¥È¤Ï¡¢µðÂç¤Ê¥Æ¡¼¥Ö¥ë¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥¥ã¥ó¤è¤ê¤âÉáÄ̤Ϲ⮤Ǥ¹
-¡£
-¤·¤«¤·¡¢ORDER BY¤ÈÁȤ߹ç¤ï¤µ¤ì¤¿LIMIT ¤Ï¡¢¥Æ¡¼¥Ö¥ë¤Î¾®¤µ¤ÊÉôʬ¤òÊÖ¤¹¤¿¤á¤Ë¤¿¤Ó
-¤¿¤Ó¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ç¤·¤ç¤¦¡£¼ÂºÝ¡¢MAX() ¤ä MIN() ¤¬¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤ï¤Ê¤¤¤È
-¤·¤Æ¤â¡¢¤³¤Î¤è¤¦¤ÊÃͤò ORDER BY ¤È LIMIT ¤ò»È¤Ã¤Æ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¼è¤ê½Ð¤¹¤³
-¤È¤¬²Äǽ¤Ç¤¹:
+ 735 database pages * 8192 bytes per page = 6,021,120 bytes (6 MB)
+ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢¤³¤ì¤Û¤É¤Î¥ª¡¼¥Ð¥Ø¥Ã¥É¤ÏÍ׵ᤷ¤Þ¤»¤ó¤¬¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹ÉÕ
+ ¤±¤µ¤ì¤ë¥Ç¡¼¥¿¤ò´Þ¤à°Ê¾å¡¢¤½¤ì¤Ê¤ê¤ËÂ礤¯¤Ê¤ê¤Þ¤¹¡£
+
+ NULL¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¤È¤·¤ÆÊݸ¤µ¤ì¤Æ¤¤¤Æ¡¢¤½¤ì¤é¤¬¤ï¤º¤«¤Ë¥¹¥Ú¡¼¥¹¤ò»È¤¤
+ ¤Þ¤¹¡£
+
+ 4.7)
+ ÄêµÁ¤µ¤ì¤¿¥Æ¡¼¥Ö¥ë¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¢¤ª¤è¤Ó¡¢¥æ¡¼¥¶¤ò¤É¤Î¤è¤¦¤Ë¤
+ ·¤Æ¸«¤Ä¤±½Ð¤·¤Þ¤¹¤«¡©
+
+ psql
+ ¤Ë¤Ï¤¤¤í¤¤¤í¤Ê¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¡¦¥³¥Þ¥ó¥É¤¬¤¢¤ê¡¢¤³¤¦¤·¤¿¾ðÊó¤òɽ¼¨¤·¤Þ
+ ¤¹¡£¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¡¦¥³¥Þ¥ó¥É¤Î¼ïÎà¤ò¸«¤ë¤Ë¤Ï \?
+ ¤ò»È¤Ã¤Æ²¼¤µ¤¤¡£¤Þ¤¿¡¢pg_ ¤Ç»Ï¤Þ¤ë¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤Ë¤âµ
+ ½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤µ¤é¤Ë¡¢psql -l
+ ¤Ï¤¹¤Ù¤Æ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¥ê¥¹¥Èɽ¼¨¤·¤Þ¤¹¡£
+
+ ¤Þ¤¿¡¢pgsql/src/tutorial/syscat.source
+ ¥Õ¥¡¥¤¥ë¤òÁö¤é¤»¤Æ¤ß¤Æ²¼¤µ¤¤¡£¤½¤ì¤Ï¡¢Âô»³¤Î SELECT
+ ʸ¤Ë¤è¤êɬÍפʾðÊó¤ò¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥·¥¹¥Æ¥à¡¦¥Æ¡¼¥Ö¥ë¤«¤é¼è¤ê½Ð¤·¤ÆÎ㼨
+ ¤·¤Æ¤¯¤ì¤Þ¤¹¡£
+
+ 4.8)
+ Ì䤤¹ç¤ï¤»¤¬ÃÙ¤¤¤¦¤¨¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¤¤¤ëÍͻҤ¬¤¢¤ê¤Þ¤»¤ó¡£¤Ê¤¼¤Ç¤¹¤«¡
+ ©
+
+ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¼«Æ°Åª¤Ë¤¹¤Ù¤Æ¤ÎÌ䤤¹ç¤ï¤»¤Ç»È¤ï¤ì¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
+ ¥Æ¡¼ ¥Ö¥ë¤¬ºÇ¾®¥µ¥¤¥º¤è¤êÂç¤
+ ¤¯¡¢Ì䤤¹ç¤ï¤»¤Ç¤½¤Î¤ï¤º¤«¤Ê¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸¤Î¥í¥¦¤ò
+ ÁªÂò¤¹¤ë»þ¤À¤±¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï»È¤ï¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥
+ ¥ã¥ó¤Ë¤è
+ ¤êµ¯¤³¤µ¤ì¤ë¥é¥ó¥À¥à¤Ê¥Ç¥£¥¹¥¯¥¢¥¯¥»¥¹¤Ï¡¢¥Æ¡¼¥Ö¥ë¤ò¥¹¥È¥ì¡¼¥È¤ËÆɤà½ç
+ ¼¡ Áöºº¤è¤ê¤âÃÙ¤¯¤Ê¤ë¤³¤È¤¬¤¢¤ë¤«¤é¤Ç¤¹¡£
+
+ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤«¤ò·èÄꤹ¤ë¤¿¤á¤Ë¡¢PostgreSQL ¤Ï¥Æ¡¼¥Ö¥ë¤Ë¤Ä¤¤
+ ¤Æ¤ÎÅý·×¾ðÊó¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤³¤ÎÅý·×¾ðÊó¤Ï¡¢VACUUM
+ ANALYZE¤Þ¤¿¤Ï¡¢Ã±¤Ë ANALYZE ¤ò»È¤Ã¤Æ¼ý½¸¤¹¤ë¤³¤È ¤¬¤Ç¤
+ ¤Þ¤¹¡£Åý·×¾ðÊó¤ò»È¤Ã¤Æ¥ª¥Ö¥Æ¥£¥Þ¥¤¥¶¤Ï¥Æ¡¼¥Ö¥ë¤ÎÃæ¤Ë¤¢¤ë¥í¥¦¿ô¤òÃÎ
+ ¤ê¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ù¤¤«¤Î·èÄê¤ò¤è¤êÀµ¤·¤¯¤Ç¤¤Þ¤¹¡£Åý·×¾ðÊó¤ÏºÇŬ
+ ¤Ê·ë¹ç½ç¤ä·ë¹çÊýË¡¤ò·è¤á¤ë¾å¤Ç¤âµ®½Å¤Ê¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£Åý·×¾ðÊó¤Î¼ý½¸¤Ï
+ ¡¢ ¥Æ¡¼¥Ö¥ë¤ÎÆâÍƤ¬¤«¤ï¤ë¤ÈËè¤Ë·«ÊÖ¤·¤Ê¤µ¤ì¤ë¤Ù¤¤Ç¤¹¡£
+
+ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢Ä̾ï ORDER BY ¤ä·ë¹ç¤ò¹Ô¤Ê
+ ¤¦¤¿¤á¤Ë¤Ï»È¤ï¤ì¤Þ¤»¤ó¡£½ç¼¡¥¹¥
+ ¥ã¥ó¤Ë³¤¯ÌÀ¼¨Åª¥½¡¼¥È¤Ï¡¢µðÂç¤Ê¥Æ¡¼¥Ö¥ë ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥
+ ¥ã¥ó¤è¤ê¤âÉáÄ̤Ϲ⮤Ǥ¹¡£
+
+ ¤·¤«¤·¡¢ORDER BY¤ÈÁȤ߹ç¤ï¤µ¤ì¤¿LIMIT
+ ¤Ï¡¢¥Æ¡¼¥Ö¥ë¤Î¾®¤µ¤ÊÉôʬ¤òÊÖ¤¹¤¿¤á¤Ë¤¿¤Ó¤¿¤Ó¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ç¤·¤ç¤¦
+ ¡£ ¼ÂºÝ¡¢MAX() ¤ä MIN()
+ ¤¬¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤ï¤Ê¤¤¤È¤·¤Æ¤â¡¢¤³¤Î¤è¤¦¤ÊÃͤò ORDER BY ¤È LIMIT
+ ¤ò»È¤Ã¤Æ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¼è¤ê½Ð¤¹¤³¤È¤¬²Äǽ¤Ç¤¹:
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
-¤â¤·¡¢¥ª¥×¥Æ¥£¥Þ¥¤¥¶¤¬´Ö°ã¤Ã¤Æ¥·¡¼¥±¥ó¥·¥ã¥ë¥¹¥¥ã¥ó¤òÁªÂò¤·¤¿¤³¤È¤Ëµ¿¤¤¤¬¤Ê¤±
-¤ì¤Ð¡¢SET enable_seqscan TO 'off'¤ò»È¤Ã¤Æ¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥¥ã¥ó¤Ç¤Þ¤Á¤¬¤¤¤Ê¤¯Â®¤¯
-¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò¥Æ¥¹¥È¤ò¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
-
-LIKE ¤¢¤ë¤¤¤Ï ~ ¤Î¤è¤¦¤Ê¥ï¥¤¥ë¥É¥«¡¼¥É±é»»»Ò¤ÏÆÃÊ̤ʴĶ¤Ç¤·¤«»È¤¨¤Þ¤»¤ó¡§
-
- ¡¦ ¸¡º÷ʸ»úÎó¤¬Ê¸»úÎó¤ÎºÇ½é¤Ë¤¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡§
- ¢¢ LIKE ¥Ñ¥¿¡¼¥ó¤¬%¤Ç»Ï¤Þ¤é¤Ê¤¤
- ¢¢ ~ (Àµµ¬É½¸½) ¥Ñ¥¿¡¼¥ó¤Ï^¤Ç»Ï¤Þ¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤
- ¡¦ ¸¡º÷ʸ»úÎó¤òʸ»ú¥¯¥é¥¹¤«¤é»Ï¤á¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢[a-e]¡£
- ¡¦ ILIKE ¤ä ~* ¤Î¤è¤¦¤ÊÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Ï»È¤¨¤Þ¤»¤ó¡£¤½¤Î¤«¤ï¤ê
- ¡¢¤³¤ÎFAQ¤Î4.12Àá¤ÇÀâÌÀ¤¹¤ë´Ø¿ô¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤¨¤Þ¤¹¡£
- ¡¦ initdb ¤Ë¤ª¤¤¤Æ¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤ÇC¥í¥±¡¼¥ë¤¬»È¤ï¤ì¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¤½¤ÎÍý
- ͳ¤Ï¡¢C¥í¥±¡¼¥ë°Ê³°¤Ç¤Ï¼¡¤ËÂ礤Êʸ»ú¤òÃΤ뤳¤È¤¬¤Ç¤¤Ê¤¤¤«¤é¤Ç¤¹¡£¤³¤Î¤è¤¦
- ¤Ê¾ì¹ç¡¢
+ ¤â¤·¡¢¥ª¥×¥Æ¥£¥Þ¥¤¥¶¤¬´Ö°ã¤Ã¤Æ¥·¡¼¥±¥ó¥·¥ã¥ë¥¹¥
+ ¥ã¥ó¤òÁªÂò¤·¤¿¤³¤È¤Ëµ¿¤¤¤¬¤Ê¤±¤ì¤Ð¡¢SET enable_seqscan TO
+ 'off'¤ò»È¤Ã¤Æ¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥
+ ¥ã¥ó¤Ç¤Þ¤Á¤¬¤¤¤Ê¤¯Â®¤¯¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò¥Æ¥¹¥È¤ò¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
- LIKE
-
- ¥¤¥ó¥Ç¥¯¥·¥ó¥°¤Ë¤À¤±Æ¯¤¯¤è¤¦¤Ê¡¢ÆÃÊ̤Ê
+ LIKE ¤¢¤ë¤¤¤Ï ~ ¤Î¤è¤¦¤Ê¥ï¥¤¥ë¥É¥«¡¼¥É±é»» »Ò¤ÏÆÃÊ̤ʴĶ
+ ¤Ç¤·¤«»È¤¨¤Þ¤»¤ó¡§
+ * ¸¡º÷ʸ»úÎó¤¬Ê¸»úÎó¤ÎºÇ½é¤Ë¤¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡§
+ + LIKE ¥Ñ¥¿¡¼¥ó¤¬%¤Ç»Ï¤Þ¤é¤Ê¤¤
+ + ~ (Àµµ¬É½¸½) ¥Ñ¥¿¡¼¥ó¤Ï^¤Ç»Ï¤Þ¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤
+ * ¸¡º÷ʸ»úÎó¤òʸ»ú¥¯¥é¥¹¤«¤é»Ï¤á¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢[a-e]¡£
+ * ILIKE ¤ä ~* ¤Î¤è¤¦¤ÊÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·
+ ¤Ê¤¤¸¡º÷¤Ï»È¤¨¤Þ¤»¤ó¡£¤½¤Î¤«¤ï¤ê¡¢¤³¤ÎFAQ¤Î4.12Àá¤ÇÀâÌÀ¤¹¤ë´Ø¿ô¤Î¥
+ ¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤¨¤Þ¤¹¡£
+ * initdb ¤Ë¤ª¤¤¤Æ¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤ÇC¥í¥±¡¼¥ë¤¬»È¤ï¤ì¤Ê
+ ¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¤½¤ÎÍýͳ¤Ï¡¢C¥í¥±¡¼¥ë°Ê³°¤Ç¤Ï¼¡¤ËÂç¤
+ ¤Êʸ»ú¤òÃΤ뤳¤È ¤¬¤Ç¤
+ ¤Ê¤¤¤«¤é¤Ç¤¹¡£¤³¤Î¤è¤¦¤Ê¾ì¹ç¡¢LIKE¥¤¥ó¥Ç¥¯¥·¥ó¥°¤Ë¤À¤±
+ Ư¤¯¤è¤¦¤Ê¡¢ÆÃÊ̤Êtext_pattern_ops¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºîÀ®
+ ¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
+
+ 8.0¤è¤êÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢¥Ç¡¼¥¿·¿¤¬¤Á¤ç¤¦¤É¥¤¥ó¥Ç¥Ã¥¯¥
+ ¹¤Î¥«¥é¥à¤Î·¿¤È°ìÃפ·¤Ê¤±¤ì¤Ð¡¢»È¤¨¤Ê¤¤¤³¤È¤¬¤·¤Ð¤·¤Ð¤¢¤ê¤Þ¤·¤¿¡£¤ª¤½¤
+ 餯¡¢int2, int8, ¤ª¤è¤Ó numeric Åù¤Î¥«¥é¥à¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬¤½¤¦¤Ç¤¹¡£
+ [ÌõÃí¡§ ¶¯À©Åª¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ë¤Ï SET enable_seqscan = off
+ ¤ò¼Â¹Ô¤·¤Þ¤¹¡£ ]
- text_pattern_ops
+ 4.9)
+ Ì䤤¹ç¤ï¤»¥ª¥Ö¥Æ¥£¥Þ¥¤¥¶¤¬¤É¤Î¤è¤¦¤ËÌ䤤¹ç¤ï¤»¤òɾ²Á¤¹¤ë¤Î¤«¤ò¸«¤ë¤Ë¤Ï¤É¤¦¤
+ ·¤Þ¤¹¤«¡©
- ¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºîÀ®¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
-
-8.0¤è¤êÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢¥Ç¡¼¥¿·¿¤¬¤Á¤ç¤¦¤É¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î¥«¥é¥à
-¤Î·¿¤È°ìÃפ·¤Ê¤±¤ì¤Ð¡¢»È¤¨¤Ê¤¤¤³¤È¤¬¤·¤Ð¤·¤Ð¤¢¤ê¤Þ¤·¤¿¡£¤ª¤½¤é¤¯¡¢int2, int8,
-¤ª¤è¤Ó numeric Åù¤Î¥«¥é¥à¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬¤½¤¦¤Ç¤¹¡£
-
-[ÌõÃí¡§¶¯À©Åª¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ë¤Ï SET enable_seqscan = off ¤ò¼Â¹Ô¤·¤Þ¤¹¡£ ]
-
-4.9) Ì䤤¹ç¤ï¤»¥ª¥Ö¥Æ¥£¥Þ¥¤¥¶¤¬¤É¤Î¤è¤¦¤ËÌ䤤¹ç¤ï¤»¤òɾ²Á¤¹¤ë¤Î¤«¤ò¸«¤ë¤Ë¤Ï¤É¤¦
-¤·¤Þ¤¹¤«¡©
-
-¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç EXPLAIN ¤ò¸«¤Æ²¼¤µ¤¤¡£
-
-4.10) R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤È¤Ï²¿¤Ç¤¹¤«¡©
-
-R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¶õ´ÖŪ¤Ê¥Ç¡¼¥¿¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤òÉÕ¤±¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹¡£¥Ï¥Ã
-¥·¥å¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤ÏÈϰϤθ¡º÷¤¬¤Ç¤¤Þ¤»¤ó¡£¤Þ¤¿¡¢B-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï¡¢£±¼¡
-¸µ¤Ç¤·¤«ÈϰϤθ¡º÷¤¬¤Ç¤¤Þ¤»¤ó¡£R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤¢¤ì¤Ð¿¼¡¸µ¤Î¥Ç¡¼¥¿¤ò°·¤¨
-¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤â¤· R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò point ·¿¤Î°À¤ËÉÕ¤±¤ë¤³¤È¤¬¤Ç¤¤ë¤È
-¤¹¤ë¤È¥·¥¹¥Æ¥à¤Ï¡¢¡ÖĹÊý·Á¤Ë°Ï¤Þ¤ì¤¿ÅÀ¤ò¤¹¤Ù¤ÆÁªÂò¤¹¤ë¡×¤È¤¤¤¦¤è¤¦¤ÊÌ䤤¹ç¤ï¤»
-¤Ë¡¢¤è¤ê¸úΨÎɤ¯Åú¤¨¤é¤ì¤Þ¤¹¡£
-
-R-Tree ¤ÎÀ߷פθ¶Åµ¤È¤Ê¤ë¸¢°Ò¤¢¤ëÏÀʸ¤Ï:
-
-Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching."
-Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
-
-¤³¤ÎÏÀʸ¤Ï¡¢Stonebraker ¶µ¼ø¤Î "Readings in Database Systems" ¤Ç¤â¼è¤ê¾å¤²¤é¤ì
-¤Æ¤¤¤Þ¤¹¡£
-
+ ¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç EXPLAIN ¤ò¸«¤Æ²¼¤µ¤¤¡£
+
+ 4.10) R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤È¤Ï²¿¤Ç¤¹¤«¡©
+
+ R-tree
+ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¶õ´ÖŪ¤Ê¥Ç¡¼¥¿¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤òÉÕ¤±¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹¡£¥Ï
+ ¥Ã¥·¥å¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤ÏÈϰϤθ¡º÷¤¬¤Ç¤¤Þ¤»¤ó¡£¤Þ¤¿¡¢B-tree
+ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï¡¢£±¼¡¸µ¤Ç¤·¤«ÈϰϤθ¡º÷¤¬¤Ç¤¤Þ¤»¤ó¡£R-tree
+ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤¢¤ì¤Ð¿¼¡¸µ¤Î¥Ç¡¼¥¿¤ò°·¤¨¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤â¤· R-tree
+ ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò point ·¿¤Î°À¤ËÉÕ¤±¤ë¤³¤È¤¬¤Ç¤
+ ¤ë¤È¤¹¤ë¤È¥·¥¹¥Æ¥à¤Ï¡¢¡ÖĹÊý·Á¤Ë°Ï¤Þ¤ì¤¿ÅÀ¤ò¤¹¤Ù¤ÆÁªÂò¤¹¤ë¡×¤È¤¤¤¦¤è¤¦
+ ¤ÊÌ䤤¹ç¤ï¤»¤Ë¡¢¤è¤ê¸úΨÎɤ¯Åú¤¨¤é¤ì¤Þ¤¹¡£
+
+ R-Tree ¤ÎÀ߷פθ¶Åµ¤È¤Ê¤ë¸¢°Ò¤¢¤ëÏÀʸ¤Ï:
+
+ Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial
+ Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of
+ Data, 45-57.
+
+ ¤³¤ÎÏÀʸ¤Ï¡¢Stonebraker ¶µ¼ø¤Î "Readings in Database Systems"
+ ¤Ç¤â¼è¤ê¾å¤²¤é¤ì¤Æ¤¤¤Þ¤¹¡£
[ÌõÃí¡§
- ÆàÎÉÀèüÂç¤ÎÀÐÀî²Â¼£¤µ¤ó¤è¤êR-Tree´Ø·¸¤Îʸ¸¥¤ò¾Ò²ð¤·¤Æĺ¤¤Þ¤·¤¿¡£
- ÆüËܸì Postgres ML ¤Î¥¢¡¼¥«¥¤¥Ö¤«¤é "Subject: [postgres95 801] spatial data structures"
+ ÆàÎÉÀèüÂç¤ÎÀÐÀî²Â¼£¤µ¤ó¤è¤êR-Tree´Ø·¸¤Îʸ¸¥¤ò¾Ò²ð¤·¤Æĺ¤¤Þ¤·¤¿¡£
+ ÆüËܸì Postgres ML ¤Î¥¢¡¼¥«¥¤¥Ö¤«¤é "Subject: [postgres95 801] spatialdata structures"
http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html
¤ò¤´Í÷²¼¤µ¤¤¡£
]
-Áȹþ¤ß¤Î R-Tree ¤Ç¥Ý¥ê¥´¥ó¤ä¥Ü¥Ã¥¯¥¹¤òÁàºî¤Ç¤¤Þ¤¹¡£ÍýÏÀŪ¤Ë¤ÏR-Tree ¤Ï¤â¤Ã¤È¹â
-¤¤¼¡¸µ¤òÁàºî¤¹¤ë¤è¤¦¤Ë¤â³ÈÄ¥¤Ç¤¤Þ¤¹¡£¼Â¼ÁŪ¤Ë¤Ï¡¢R-Tree ¤Î³ÈÄ¥¤Ë¤Ï¤Á¤ç¤Ã¤È¤·¤¿
-ºî¶È¤¬É¬ÍפǤ·¤Æ¡¢¸½ºß¡¢²æ¡¹¤Ï¤½¤ì¤ò¤É¤Î¤è¤¦¤Ë¤¹¤ë¤«¤Ë¤Ä¤¤¤Æ¤Îʸ½ñ¤ò»ý¤Ã¤Æ¤¤¤Þ
-¤»¤ó¡£
-
+ Áȹþ¤ß¤Î R-Tree ¤Ç¥Ý¥ê¥´¥ó¤ä¥Ü¥Ã¥¯¥¹¤òÁàºî¤Ç¤¤Þ¤¹¡£ÍýÏÀŪ¤Ë¤ÏR-Tree
+ ¤Ï¤â¤Ã¤È¹â¤¤¼¡¸µ¤òÁàºî¤¹¤ë¤è¤¦¤Ë¤â³ÈÄ¥¤Ç¤¤Þ¤¹¡£¼Â¼ÁŪ¤Ë¤Ï¡¢R-Tree
+ ¤Î³ÈÄ¥¤Ë¤Ï¤Á¤ç¤Ã¤È¤·¤¿ºî¶È¤¬É¬ÍפǤ·¤Æ¡¢¸½ºß¡¢²æ¡¹¤Ï¤½¤ì¤ò¤É¤Î¤è¤¦¤Ë¤¹
+ ¤ë¤«¤Ë¤Ä¤¤¤Æ¤Îʸ½ñ¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£
[ÌõÃí¡§
R-Tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÏGiST¤Ç³«È¯¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
http://www.sai.msu.su/~megera/postgres/gist/
]
-4.11) °äÅÁŪÌ䤤¹ç¤ï¤»ºÇŬ²½¤È¤Ï²¿¤Ç¤¹¤«¡©
-
-GEQO ¥â¥¸¥å¡¼¥ë¤Ï¡¢Âô»³¤Î¥Æ¡¼¥Ö¥ë¤ò·ë¹ç¤¹¤ë¤È¤¤Ë¡¢°äÅÁŪ¥¢¥ë¥´¥ê¥º¥à(GA)¤ÇÌä¹ç
-¤ï¤»¤ò¹â®²½¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¤·¤é¤ß¤Ä¤Ö¤·¤Ëõº÷¤ò¹Ô¤Ê¤ï¤Ê¤¯¤Æ¤â¡¢Â礤ʷë¹ç
-(join queries)¤ò°·¤¦¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
-
-4.12) Àµµ¬É½¸½¤Ç¤Î¸¡º÷¤äÂçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤Àµµ¬É½¸½¸¡º÷¤Ï¤É¤Î¤è¤¦¤Ë¼Â
-¸½¤·¤Þ¤¹¤«¡©Âçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Î¤¿¤á¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¤É¤Î¤è¤¦¤Ë»È
-¤¤¤Þ¤¹¤«¡©
-
-~±é»»»Ò¤ÏÀµµ¬É½¸½¾È¹ç¤ò¹Ô¤Ê¤¤¡¢~* ¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤
-(case-insensitive)Àµµ¬É½¸½¾È¹ç¤ò¹Ô¤¤¤Þ¤¹¡£Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤ LIKE ±é»»
-»Ò¤ò ILIKE ¤È¤¤¤¤¤Þ¤¹¡£
-
-Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤ÅùÃÍÈæ³Ó¤Ï¼¡¤Î¤è¤¦¤Ëɽ¸½¤Ç¤¤ë¡§
-
+ 4.11) °äÅÁŪÌ䤤¹ç¤ï¤»ºÇŬ²½¤È¤Ï²¿¤Ç¤¹¤«¡©
+
+ GEQO ¥â¥¸¥å¡¼¥ë¤Ï¡¢Âô»³¤Î¥Æ¡¼¥Ö¥ë¤ò·ë¹ç¤¹¤ë¤È¤
+ ¤Ë¡¢°äÅÁŪ¥¢¥ë¥´¥ê¥º¥à(GA)¤ÇÌä¹ç¤ï¤»¤ò¹â®²½¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¤·¤é¤ß
+ ¤Ä¤Ö¤·¤Ëõº÷¤ò¹Ô¤Ê¤ï¤Ê¤¯¤Æ¤â¡¢Â礤ʷë¹ç(join queries)¤ò°·¤¦¤³¤È¤¬¤Ç¤
+ ¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
+
+ 4.12)
+ Àµµ¬É½¸½¤Ç¤Î¸¡º÷¤äÂçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤Àµµ¬É½¸½¸¡º÷¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤
+ ·¤Þ¤¹¤«¡©Âçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Î¤¿¤á¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¤É¤Î¤è¤¦¤Ë»È
+ ¤¤¤Þ¤¹¤«¡©
+
+ ~±é»»»Ò¤ÏÀµµ¬É½¸½¾È¹ç¤ò¹Ô¤Ê¤¤¡¢~*
+ ¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤(case-insensitive)Àµµ¬É½¸½¾È¹ç¤ò¹Ô¤¤¤Þ¤¹¡£
+ Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤ LIKE ±é»»»Ò¤ò ILIKE ¤È¤¤¤¤¤Þ¤¹¡£
+
+ Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤ÅùÃÍÈæ³Ó¤Ï¼¡¤Î¤è¤¦¤Ëɽ¸½¤Ç¤¤ë¡§
SELECT *
FROM tab
WHERE lower(col) = 'abc';
-ɸ½à¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï»È¤ï¤ì¤º¡¢¤·¤«¤·¤Ê¤¬¤é¡¢¤â¤·´Ø¿ô¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºî¤Ã¤¿¤Ê¤é¤½
-¤ì¤¬»È¤ï¤ì¤ë¤Ç¤·¤ç¤¦¡£
-
+ ɸ½à¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï»È¤ï¤ì¤º¡¢¤·¤«¤·¤Ê¤¬¤é¡¢¤â¤·´Ø¿ô¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò
+ ºî¤Ã¤¿¤Ê¤é¤½¤ì¤¬»È¤ï¤ì¤ë¤Ç¤·¤ç¤¦¡£
CREATE INDEX tabindex ON tab (lower(col));
-
-
-4.13) Ì䤤¹ç¤ï¤»¤ÎÃæ¤Ç¡¢¥Õ¥£¡¼¥ë¥É¤¬ NULL ¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ð¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«
-¡©
-
-¥«¥é¥à¤ò IS NULL ¤È IS NOT NULL ¤È¤Ç»î¤·¤Æ¤ß¤Þ¤¹¡£
-4.14) ÍÍ¡¹¤Êʸ»ú·¿¤Î¤½¤ì¤¾¤ì¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
+ 4.13) Ì䤤¹ç¤ï¤»¤ÎÃæ¤Ç¡¢¥Õ¥£¡¼¥ë¥É¤¬ NULL
+ ¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ð¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
+
+ ¥«¥é¥à¤ò IS NULL ¤È IS NOT NULL ¤È¤Ç»î¤·¤Æ¤ß¤Þ¤¹¡£
+
+ 4.14) ÍÍ¡¹¤Êʸ»ú·¿¤Î¤½¤ì¤¾¤ì¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
+
Type Internal Name Notes
--------------------------------------------------
VARCHAR(n) varchar ºÇÂçĹ¤Î¥µ¥¤¥º¤ò»ØÄꤹ¤ë¡¢µÍ¤áʪ̵¤·
CHAR(n) bpchar »ØÄꤵ¤ì¤¿¸ÇÄêĹ¤È¤Ê¤ë¤è¤¦¤Ë¶õÇò¤¬µÍ¤á¤é¤ì¤ë
-TEXT text Ťµ¤Ë¾å¸Â¤Î̵¤¤¥Æ¥¥¹¥È
+TEXT text Ťµ¤Ë¾å¸Â¤Î̵¤¤¥Æ¥¥¹¥È
BYTEA bytea ²ÄÊÑĹ¤Î¥Ð¥¤¥ÈÇÛÎó(null-byte safe)
"char" char £±Ê¸»ú
-ÆâÉô̾¤Ë¤ªÌܤˤ«¤«¤ë¤Î¤Ï¡¢¥·¥¹¥Æ¥à¡¦¥«¥¿¥í¥°¤òÄ´¤Ù¤ë¤È¤¤ä¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò
-¼õ¤±¼è¤ë¤È¤¤Ç¤¹¡£
-
-¾åµ¤Î·¿¤Î¤¦¤ÁºÇ½é¤Î£´¤Ä¤Î·¿¤Ï "varlena" ·¿¤Ç¤¹(¤¹¤Ê¤ï¤Á¡¢¥Ç¥£¥¹¥¯¤ÎºÇ½é¤Î£´¥Ð
-¥¤¥È¤¬¥Ç¡¼¥¿Ä¹¤Ç¡¢¤½¤ì¤Î¸å¤Ë¼ÂºÝ¤Î¥Ç¡¼¥¿¤¬Â³¤¤Þ¤¹)¡£¤³¤Î¤è¤¦¤Ë¼ÂºÝ¤Î¶õ´Ö¤ÏÀë¸À
-¤µ¤ì¤¿Â礤µ¤è¤ê¤â¾¯¤·Â礤¯¤Ê¤ê¤Þ¤¹¡£¤·¤«¤·¡¢¤³¤ì¤é¤Î¥Ç¡¼¥¿·¿¤ÏTOAST¤Ë¤è¤ê°µ½Ì
-¤µ¤ì¤¿¤êÊ£¿ô¥í¥¦¤ËÅϤäÆÊݸ¤µ¤ì¤¿¤ê¤·¤Æ¡¢¥Ç¥£¥¹¥¯¾å¤Î¶õ´Ö¤Ï»×¤Ã¤¿¤è¤ê¾®¤µ¤¯¤Ê
-¤ê¤Þ¤¹¡£
-
-VARCHAR(n) ¤Ï²ÄÊÑŤÎʸ»úÎó¤òÊݸ¤¹¤ë¤Î¤ËºÇŬ¤Ç¤¹¤¬¡¢Êݸ¤Ç¤¤ëʸ»úÎó¤ÎŤµ¤ËÀ©
-¸Â¤¬¤¢¤ê¤Þ¤¹¡£TEXT ¤ÏŤµ¤ËÀ©¸Â¤Î̵¤¤Ê¸»úÎó¤ÎÊݸ¤Î¤¿¤á¤Î¤â¤Î¤Ç¡¢ºÇÂç¤Ç 1¥®¥¬¥Ð
-¥¤¥È¤Ç¤¹¡£ CHAR(n)¤Ï¡¢VARCHAR(n)¤¬Í¿¤¨¤é¤ì¤¿Ê¸»ú¤À¤±¤òÊݸ¤¹¤ë¤Î¤ËÂФ·¡¢¥Ö¥é¥ó
-¥¯¤òµÍ¤á¹þ¤ó¤Ç¤¤¤Ä¤âƱ¤¸Ä¹¤µ¤Çʸ»úÎó¤òÊݸ¤¹¤ë¤Î¤ËºÇŬ¤Ç¤¹¡£BYTEA¤Ï¡¢ÉôʬŪ¤Ë
-NULL ¤Î¥Ð¥¤¥È¤ò´Þ¤à¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£¤³¤ì¤é¤Î¥¿¥¤¥×¤ÏƱ¤¸
-¤¯¤é¤¤¤ÎÀǽÆÃÀ¤ò¤â¤Á¤Þ¤¹¡£
-
-4.15.1) ÄÌÈÖ(serial)¡¿¼«Æ°Áýʬ¥Õ¥£¡¼¥ë¥É¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
-
-PostgreSQL ¤Ï SERIAL ¥Ç¡¼¥¿·¿¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¥«¥é¥à¾å¤Ë¥·¡¼¥±¥ó¥¹¤ò¼«Æ°ºîÀ®¤·
-¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢
-
- CREATE TABLE person (
- id SERIAL,
- name TEXT
+ ÆâÉô̾¤Ë¤ªÌܤˤ«¤«¤ë¤Î¤Ï¡¢¥·¥¹¥Æ¥à¡¦¥«¥¿¥í¥°¤òÄ´¤Ù¤ë¤È¤
+ ¤ä¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ë¤È¤¤Ç¤¹¡£
+
+ ¾åµ¤Î·¿¤Î¤¦¤ÁºÇ½é¤Î£´¤Ä¤Î·¿¤Ï "varlena"
+ ·¿¤Ç¤¹(¤¹¤Ê¤ï¤Á¡¢¥Ç¥£¥¹¥¯¤ÎºÇ½é¤Î£´¥Ð¥¤¥È¤¬¥Ç¡¼¥¿Ä¹¤Ç¡¢¤½¤ì¤Î¸å¤Ë¼ÂºÝ¤
+ Υǡ¼¥¿¤¬Â³¤¤Þ¤¹)¡£¤³¤Î¤è¤¦¤Ë¼ÂºÝ¤Î¶õ´Ö¤ÏÀë¸À¤µ¤ì¤¿Â礤µ¤è¤ê¤â¾¯¤·Âç¤
+ ¤¯¤Ê¤ê¤Þ¤¹¡£¤·¤«¤·¡¢¤³¤ì¤é¤Î¥Ç¡¼¥¿·¿¤ÏTOAST¤Ë¤è¤ê°µ½Ì¤µ¤ì¤¿¤êÊ£¿ô¥í¥¦¤
+ ËÅϤäÆÊݸ¤µ¤ì¤¿¤ê¤·¤Æ¡¢¥Ç¥£¥¹¥¯¾å¤Î¶õ´Ö¤Ï»×¤Ã¤¿¤è¤ê¾®¤µ¤¯¤Ê¤ê¤Þ¤¹¡£
+
+ VARCHAR(n) ¤Ï²ÄÊÑŤÎʸ»úÎó¤òÊݸ¤¹¤ë¤Î¤ËºÇŬ¤Ç¤¹¤¬¡¢Êݸ¤Ç¤
+ ¤ëʸ»úÎó¤ÎŤµ¤ËÀ©¸Â¤¬¤¢¤ê¤Þ¤¹¡£TEXT
+ ¤ÏŤµ¤ËÀ©¸Â¤Î̵¤¤Ê¸»úÎó¤ÎÊݸ¤Î¤¿¤á¤Î¤â¤Î¤Ç¡¢ºÇÂç¤Ç 1¥®¥¬¥Ð¥¤¥È¤Ç¤¹¡£
+ CHAR(n)¤Ï¡¢VARCHAR(n)¤¬Í¿¤¨¤é¤ì¤¿Ê¸»ú¤À¤±¤òÊݸ¤¹¤ë¤Î¤ËÂФ·¡¢¥Ö¥é¥ó¥¯¤
+ òµÍ¤á¹þ¤ó¤Ç¤¤¤Ä¤âƱ¤¸Ä¹¤µ¤Çʸ»úÎó¤òÊݸ¤¹¤ë¤Î¤ËºÇŬ¤Ç¤¹¡£BYTEA¤Ï¡¢Éôʬ
+ Ū¤ËNULL
+ ¤Î¥Ð¥¤¥È¤ò´Þ¤à¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£¤³¤ì¤é¤Î¥¿¥¤¥×¤Ï
+ Ʊ¤¸¤¯¤é¤¤¤ÎÀǽÆÃÀ¤ò¤â¤Á¤Þ¤¹¡£
+
+ 4.15.1) ÄÌÈÖ(serial)¡¿¼«Æ°Áýʬ¥Õ¥£¡¼¥ë¥É¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
+
+ PostgreSQL ¤Ï SERIAL
+ ¥Ç¡¼¥¿·¿¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¥«¥é¥à¾å¤Ë¥·¡¼¥±¥ó¥¹¤ò¼«Æ°ºîÀ®¤·¤Þ¤¹¡£¤¿¤È¤¨
+ ¤Ð¡¢
+ CREATE TABLE person (
+ id SERIAL,
+ name TEXT
);
-¤Ï¼«Æ°Åª¤Ë¼¡¤Î¤è¤¦¤ËËÝÌõ¤µ¤ì¤Þ¤¹:
-
+ ¤Ï¼«Æ°Åª¤Ë¼¡¤Î¤è¤¦¤ËËÝÌõ¤µ¤ì¤Þ¤¹:
CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
+ CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
+ name TEXT
);
[ÌõÃí¡§
¤Ï¡¢ 7.3 ¤«¤é¤Ï¼«Æ°Åª¤Ë¤Ï¹Ô¤Ê¤ï¤ì¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£
]
-ÄÌÈ֤ˤĤ¤¤Æ¤Î¤â¤Ã¤È¾Ü¤·¤¤¾ðÊó¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç create_sequence ¤ò¤´Í÷
-²¼¤µ¤¤¡£
-
-¤Þ¤¿¡¢³Æ¥í¥¦¤ÎOID¥Õ¥£¡¼¥ë¥É¤ò°ì°ÕÃͤȤ·¤Æ»È¤¦¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤·¤«¤·¤Ê¤¬¤é¡¢¤â¤·
-¤â¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¥À¥ó¥×¤·¤Æ¥ê¥í¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢OID¤ò²¹Â¸¤¹¤ë¤¿¤á¤Ë
-pg_dump ¤Ç -o¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤«¡¢¤Þ¤¿¤Ï¡¢COPY WITH OIDS¥ª¥×¥·¥ç¥ó¤ò»È¤¦É¬Íפ¬¤¢
-¤ê¤Þ¤¹¡£
-
-4.15.2) SERIAL¥Ç¡¼¥¿·¿¤ËÁÞÆþ¤µ¤ì¤ëÃͤϡ¢¤É¤¦¤¹¤ì¤ÐÆÀ¤é¤ì¤Þ¤¹¤«¡©
-
-¤Ò¤È¤Ä¤ÎÊýË¡¤Ï¡¢nextval() ´Ø¿ô¤ò»È¤Ã¤Æ¤½¤ÎÃͤòÁÞÆþ¤¹¤ëÁ°(before)¤Ë SEQUENCE ¥ª
-¥Ö¥¸¥§¥¯¥È¤«¤é¼¡¤Î SERIAL Ãͤò¼è¤ê½Ð¤·¡¢¤½¤ì¤«¤é¼ÂºÝ¤ËÁÞÆþ¤ò¤¹¤ë¤³¤È¤Ç¤¹¡£
-4.15.1 ¤Î¥Æ¡¼¥Ö¥ë¤ÎÎã¤ò»È¤¦¤È¤¹¤ë¤È¡¢µ¿»÷¸À¸ì¤Ç¤Ï¤³¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
-
+ ÄÌÈ֤ˤĤ¤¤Æ¤Î¤â¤Ã¤È¾Ü¤·¤¤¾ðÊó¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç
+ create_sequence ¤ò¤´Í÷²¼¤µ¤¤¡£
+
+ ¤Þ¤¿¡¢³Æ¥í¥¦¤ÎOID¥Õ¥£¡¼¥ë¥É¤ò°ì°ÕÃͤȤ·¤Æ»È¤¦¤³¤È¤â¤Ç¤
+ ¤Þ¤¹¡£¤·¤«¤·¤Ê¤¬¤é¡¢¤â¤·¤â¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¥À¥ó¥×¤·¤Æ¥ê¥í¡¼¥É¤¹¤ëɬÍפ¬¤¢
+ ¤ë¾ì¹ç¤Ï¡¢OID¤ò²¹Â¸¤¹¤ë¤¿¤á¤Ëpg_dump ¤Ç
+ -o¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤«¡¢¤Þ¤¿¤Ï¡¢COPY WITH
+ OIDS¥ª¥×¥·¥ç¥ó¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
+
+ 4.15.2) SERIAL¥Ç¡¼¥¿·¿¤ËÁÞÆþ¤µ¤ì¤ëÃͤϡ¢¤É¤¦¤¹¤ì¤ÐÆÀ¤é¤ì¤Þ¤¹¤«¡©
+
+ ¤Ò¤È¤Ä¤ÎÊýË¡¤Ï¡¢nextval() ´Ø¿ô¤ò»È¤Ã¤Æ¤½¤ÎÃͤòÁÞÆþ¤¹¤ëÁ°(before)¤Ë
+ SEQUENCE ¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼¡¤Î SERIAL
+ Ãͤò¼è¤ê½Ð¤·¡¢¤½¤ì¤«¤é¼ÂºÝ¤ËÁÞÆþ¤ò¤¹¤ë¤³¤È¤Ç¤¹¡£4.15.1
+ ¤Î¥Æ¡¼¥Ö¥ë¤ÎÎã¤ò»È¤¦¤È¤¹¤ë¤È¡¢µ¿»÷¸À¸ì¤Ç¤Ï¤³¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
new_id = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-¤½¤¦¤·¤Æ¡¢new_id ¤ËÊݸ¤·¤¿¿·¤·¤¤Ãͤò¾¤ÎÌ䤤¹ç¤ï¤»¤Ë(¤¿¤È¤¨¤Ð¡¢person ¥Æ¡¼¥Ö¥ë
-¤ËÂФ¹¤ë³°Éô¥¡¼(foreign key)¤Î¤è¤¦¤Ë)»È¤¦¤È¤è¤¤¤Ç¤·¤ç¤¦¡£¼«Æ°Åª¤Ëºî¤é¤ì¤¿
-SEQUENCE¥ª¥Ö¥¸¥§¥¯¥È¤Î̾Á°¤Ï¡¢<table>_<serialcolumn>_seq ¤Î¤è¤¦¤Ë¤Ê¤ê¡¢¤³¤Î¤¦¤Á
-¡¢table ¤È serialcolumn ¤Ï¤½¤ì¤¾¤ì¥Æ¡¼¥Ö¥ë¤Î̾Á°¤ÈSERIAL¥«¥é¥à¤Î̾Á°¤Ç¤¹¡£
-
-¤¢¤ë¤¤¤Ï¡¢Í¿¤¨¤é¤ì¤¿SERIALÃͤò¡¢¤½¤ì¤¬´ûÄêÃͤȤ·¤ÆÁÞÆþ¤µ¤ì¤¿¸å¤Ç(after)¡¢
-currval() ´Ø¿ô¤ò»È¤Ã¤Æ¼è¤ê½Ð¤¹¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢
-
+ ¤½¤¦¤·¤Æ¡¢new_id ¤ËÊݸ¤·¤¿¿·¤·¤¤Ãͤò¾¤ÎÌ䤤¹ç¤ï¤»¤Ë(¤¿¤È¤¨¤Ð¡¢person
+ ¥Æ¡¼¥Ö¥ë¤ËÂФ¹¤ë³°Éô¥¡¼(foreign
+ key)¤Î¤è¤¦¤Ë)»È¤¦¤È¤è¤¤¤Ç¤·¤ç¤¦¡£¼«Æ°Åª¤Ëºî¤é¤ì¤¿SEQUENCE¥ª¥Ö¥¸¥§¥¯¥È¤
+ Î̾Á°¤Ï¡¢<table>_<serialcolumn>_seq ¤Î¤è¤¦¤Ë¤Ê¤ê¡¢¤³¤Î¤¦¤Á¡¢table ¤È
+ serialcolumn ¤Ï¤½¤ì¤¾¤ì¥Æ¡¼¥Ö¥ë¤Î̾Á°¤ÈSERIAL¥«¥é¥à¤Î̾Á°¤Ç¤¹¡£
+
+ ¤¢¤ë¤¤¤Ï¡¢Í¿¤¨¤é¤ì¤¿SERIALÃͤò¡¢¤½¤ì¤¬´ûÄêÃͤȤ·¤ÆÁÞÆþ¤µ¤ì¤¿¸å¤Ç(after
+ )¡¢ currval() ´Ø¿ô¤ò»È¤Ã¤Æ¼è¤ê½Ð¤¹¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = execute("SELECT currval('person_id_seq')");
-ºÇ¸å¤Ë¡¢INSERTʸ¤«¤éÊÖ¤ëOID¤ò»È¤Ã¤Æ¡¢´ûÄêÃͤò¤ß¤Ä¤±¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¤¬¡¢¤·¤«¤·¡¢
-oid¤ÎÃͤÏ40²¯¤Ë㤹¤ë¤È¤â¤È¤ËÌá¤Ã¤Æ¤·¤Þ¤¤¡¢ºÇ¤â°Ü¿¢À¤ÎÄ㤤¤ä¤êÊý¤È¤Ê¤ë¤Ç¤·¤ç¤¦
-¡£Perl DBI ¤Î DBD::Pg ¥â¥¸¥å¡¼¥ë¤ò»È¤¨¤Ð¡¢$sth->execute() ¤Î¸å¤Ë $sth->
-{pg_oid_status} ¤ò·Ðͳ¤·¤Æ¤½¤Î OID Ãͤò»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤¹¡£
-
-4.15.3) currval() ¤Ï¾¤Î¥æ¡¼¥¶¤È¤Î¶¥¹ç¾õÂ֤˴٤뤳¤È¤Ï¤Ê¤¤¤Ç¤¹¤«¡©
-
-¤½¤ì¤Ï¤¢¤ê¤Þ¤»¤ó¡£currval() ¤Ï¡¢¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¤¢¤Ê¤¿¤Î¥Ð¥Ã¥¯
-¥¨¥ó¥É¤ËÍ¿¤¨¤é¤ì¤¿¸½ºß¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£
-
-4.15.4) ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÃæÃǤ·¤¿¤È¤¤Ë¤â¤¦¤¤¤Á¤É¥·¡¼¥±¥ó¥¹Èֹ椬»È¤ï¤ì¤Ê¤¤¤Î
-¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¥·¡¼¥±¥ó¥¹¡¿SERIAL¥«¥é¥à¤Ë¶õ¤¤¬¤¢¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-
-Ʊ»þÀ¤ò²þÁ±¤¹¤ë¤¿¤á¤Ë¡¢¼Â¹ÔÃæ¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ë¡¢É¬Íפǥȥé¥ó¥¶¥¯¥·¥ç¥ó¤¬½ª
-λ¤¹¤ë¤Þ¤Ç¥í¥Ã¥¯¤µ¤ì¤Ê¤¤¥·¡¼¥±¥ó¥¹ÃͤòÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£¤³¤Î¤¿¤á¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬
-ÃæÃǤµ¤ì¤ë¤ÈÈÖ¹æ³ä¤êÅö¤Æ¤Ë¥®¥ã¥Ã¥×¤òÀ¸¤¸¤Þ¤¹¡£
-
-4.16) OID ¤È¤Ï²¿¤Ç¤¹¤«¡© TID ¤È¤Ï²¿¤Ç¤¹¤«¡©
-
-OID ¤È¤Ï°ì°Õ¤Î¥í¥¦ID ¤ËÂФ¹¤ë PostgreSQL ¤ÎÅú¤¨¤Ç¤¹¡£PostgreSQL ¤ÎÃæ¤Ç¤Ä¤¯¤é¤ì
-¤ë¤¹¤Ù¤Æ¤Î¥í¥¦¤Ï°ì°Õ¤Î OID ¤òÆÀ¤Þ¤¹¡£initdb ¤ÇȯÀ¸¤µ¤ì¤ë OID ¤Ï¤¹¤Ù¤Æ 16384
-(include/access/transam.h ¤«¤é)¤è¤ê¾®¤µ¤ÊÃͤǤ¹¡£initdb ¸å¤Î¤¹¤Ù¤Æ¤Î OID (¥æ¡¼
-¥¶ºîÀ®)¤Ï¤½¤ì°Ê¾å¤ÎÃͤˤʤê¤Þ¤¹¡£´ûÄê¤Ç¤Ï¡¢¤³¤ì¤é¤¹¤Ù¤Æ¤Î OID¤Ï°ì¤Ä¤Î¥Ç¡¼¥Ö¥ë¤ä
-¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤Ëα¤Þ¤é¤º¡¢PostgreSQL ¥¤¥ó¥¹¥È¥ì¡¼¥·¥ç¥óÁ´ÂΤÎÃæ¤Ç°ì°Õ¤Ç¤¹¡£
-
-PostgreSQL ¤Ï¥Æ¡¼¥Ö¥ë´Ö¤Î¥í¥¦¤ò·ë¤Ó¤Ä¤±¤ë¤¿¤á¤Ë¡¢¤½¤Î¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ëÆâ¤Ë OID
-¤ò»È¤¤¤Þ¤¹¡£¤³¤Î OID ¤ÏÆÃÄê¤Î¥æ¡¼¥¶¤Î¥í¥¦¤ò¼±Ê̤¹¤ë¤¿¤á¤ä·ë¹ç¤ÎÃæ¤Ç»È¤ï¤ì¤ë¤³¤È
-¤¬¤Ç¤¤Þ¤¹¡£OID ¤ÎÃͤòÊݸ¤¹¤ë¤¿¤á¤Ë¤Ï OID ·¿¤ò¥«¥é¥à¤Ë»È¤¦¤³¤È¤ò¾©¤á¤Þ¤¹¡£¤è¤ê
-®¤¯¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë OID ¥Õ¥£¡¼¥ë¥É¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºî¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ OID
-¤Ï¡¢Á´¤Æ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç»È¤ï¤ì¤ëÃæ±ûÎΰ褫¤é¡¢Á´¤Æ¤Î¿·¤·¤¤¥í¥¦¤Ë³ä¤êÅö¤Æ¤é¤ì¤Þ
-¤¹¡£OID ¤ò¾¤Î²¿¤«¤ËÊѤ¨¤¿¤¤¡¢¤¢¤ë¤¤¤Ï¸µ¤Î OID ¤â¥Æ¡¼¥Ö¥ë¤È°ì½ï¤Ë¥³¥Ô¡¼¤·¤¿¤¤¤Î
-¤Ê¤é¡¢¤Ç¤¤Ê¤¯¤Ï¤¢¤ê¤Þ¤»¤ó¡£
-
+ ºÇ¸å¤Ë¡¢INSERTʸ¤«¤éÊÖ¤ëOID¤ò»È¤Ã¤Æ¡¢´ûÄêÃͤò¤ß¤Ä¤±¤ë¤³¤È¤â¤Ç¤
+ ¤Þ¤¹¤¬¡¢¤·¤«¤·¡¢oid¤ÎÃͤÏ40²¯¤Ë㤹¤ë¤È¤â¤È¤ËÌá¤Ã¤Æ¤·¤Þ¤¤¡¢ºÇ¤â°Ü¿¢À
+ ¤ÎÄ㤤¤ä¤êÊý¤È¤Ê¤ë¤Ç¤·¤ç¤¦¡£Perl DBI ¤Î DBD::Pg
+ ¥â¥¸¥å¡¼¥ë¤ò»È¤¨¤Ð¡¢$sth->execute() ¤Î¸å¤Ë $sth->{pg_oid_status}
+ ¤ò·Ðͳ¤·¤Æ¤½¤Î OID Ãͤò»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤¹¡£
+
+ 4.15.3) currval() ¤Ï¾¤Î¥æ¡¼¥¶¤È¤Î¶¥¹ç¾õÂ֤˴٤뤳¤È¤Ï¤Ê¤¤¤Ç¤¹¤«¡©
+
+ ¤½¤ì¤Ï¤¢¤ê¤Þ¤»¤ó¡£currval()
+ ¤Ï¡¢¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¤¢¤Ê¤¿¤Î¥Ð¥Ã¥¯¥¨¥ó¥É¤ËÍ¿¤¨¤é¤ì¤¿¸½
+ ºß¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£
+
+ 4.15.4) ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÃæÃǤ·¤¿¤È¤
+ ¤Ë¤â¤¦¤¤¤Á¤É¥·¡¼¥±¥ó¥¹Èֹ椬»È¤ï¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¥·¡¼¥±¥ó¥¹¡¿SERIAL¥«¥
+ é¥à¤Ë¶õ¤¤¬¤¢¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+
+ Ʊ»þÀ
+ ¤ò²þÁ±¤¹¤ë¤¿¤á¤Ë¡¢¼Â¹ÔÃæ¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ë¡¢É¬Íפǥȥé¥ó¥¶¥¯¥·¥ç¥ó¤¬
+ ½ªÎ»¤¹¤ë¤Þ¤Ç¥í¥Ã¥¯¤µ¤ì¤Ê¤¤¥·¡¼¥±¥ó¥¹ÃͤòÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£¤³¤Î¤¿¤á¥È¥é¥ó¥¶
+ ¥¯¥·¥ç¥ó¤¬ÃæÃǤµ¤ì¤ë¤ÈÈÖ¹æ³ä¤êÅö¤Æ¤Ë¥®¥ã¥Ã¥×¤òÀ¸¤¸¤Þ¤¹¡£
+
+ 4.16) OID ¤È¤Ï²¿¤Ç¤¹¤«¡© TID ¤È¤Ï²¿¤Ç¤¹¤«¡©
+
+ OID ¤È¤Ï°ì°Õ¤Î¥í¥¦ID ¤ËÂФ¹¤ë PostgreSQL ¤ÎÅú¤¨¤Ç¤¹¡£PostgreSQL
+ ¤ÎÃæ¤Ç¤Ä¤¯¤é¤ì¤ë¤¹¤Ù¤Æ¤Î¥í¥¦¤Ï°ì°Õ¤Î OID ¤òÆÀ¤Þ¤¹¡£initdb ¤ÇȯÀ¸¤µ¤ì¤ë
+ OID ¤Ï¤¹¤Ù¤Æ 16384 (include/access/transam.h
+ ¤«¤é)¤è¤ê¾®¤µ¤ÊÃͤǤ¹¡£initdb ¸å¤Î¤¹¤Ù¤Æ¤Î OID
+ (¥æ¡¼¥¶ºîÀ®)¤Ï¤½¤ì°Ê¾å¤ÎÃͤˤʤê¤Þ¤¹¡£ ´ûÄê¤Ç¤Ï¡¢¤³¤ì¤é¤¹¤Ù¤Æ¤Î
+ OID¤Ï°ì¤Ä¤Î¥Ç¡¼¥Ö¥ë¤ä¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤Ëα¤Þ¤é¤º¡¢PostgreSQL
+ ¥¤¥ó¥¹¥È¥ì¡¼¥·¥ç¥óÁ´ÂΤÎÃæ¤Ç°ì°Õ¤Ç¤¹¡£
+
+ PostgreSQL
+ ¤Ï¥Æ¡¼¥Ö¥ë´Ö¤Î¥í¥¦¤ò·ë¤Ó¤Ä¤±¤ë¤¿¤á¤Ë¡¢¤½¤Î¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ëÆâ¤Ë OID
+ ¤ò»È¤¤¤Þ¤¹¡£¤³¤Î OID
+ ¤ÏÆÃÄê¤Î¥æ¡¼¥¶¤Î¥í¥¦¤ò¼±Ê̤¹¤ë¤¿¤á¤ä·ë¹ç¤ÎÃæ¤Ç»È¤ï¤ì¤ë¤³¤È¤¬¤Ç¤
+ ¤Þ¤¹¡£OID ¤ÎÃͤòÊݸ¤¹¤ë¤¿¤á¤Ë¤Ï OID
+ ·¿¤ò¥«¥é¥à¤Ë»È¤¦¤³¤È¤ò¾©¤á¤Þ¤¹¡£¤è¤ê®¤¯¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë OID
+ ¥Õ¥£¡¼¥ë¥É¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºî¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ OID
+ ¤Ï¡¢Á´¤Æ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç»È¤ï¤ì¤ëÃæ±ûÎΰ褫¤é¡¢Á´¤Æ¤Î¿·¤·¤¤¥í¥¦¤Ë³ä¤êÅö
+ ¤Æ¤é¤ì¤Þ¤¹¡£OID ¤ò¾¤Î²¿¤«¤ËÊѤ¨¤¿¤¤¡¢¤¢¤ë¤¤¤Ï¸µ¤Î OID
+ ¤â¥Æ¡¼¥Ö¥ë¤È°ì½ï¤Ë¥³¥Ô¡¼¤·¤¿¤¤¤Î¤Ê¤é¡¢¤Ç¤¤Ê¤¯¤Ï¤¢¤ê¤Þ¤»¤ó¡£
CREATE TABLE new_table(mycol int);
SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table;
COPY tmp_table TO '/tmp/pgtable';
COPY new_table WITH OIDS FROM '/tmp/pgtable';
DROP TABLE tmp_table;
-OID ¤Ï¡¢4¥Ð¥¤¥È¤ÎÀ°¿ô¤È¤·¤ÆÊݸ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢40²¯¤ò±Û¤¨¤ë¤È°î¤ì¤Æ¤·¤Þ¤¦¤Ç¤·¤ç
-¤¦¡£Ã¯¤â¤³¤ì¤¬µ¯¤¤¿¤ÈÊó¹ð¤·¤Æ¤¯¤ë¿Í¤Ï¤¤¤Þ¤»¤ó¤Ç¤·¤¿¤¬¡¢¤½¤¦¤Ê¤ëÁ°¤Ë¤³¤ÎÀ©¸Â¤ò
-¼è¤ê½ü¤¯¤³¤È¤ò·×²è¤·¤Æ¤¤¤Þ¤¹¡£
-
-TID ¤ÏÆÃÄê¤ÎʪÍý¥í¥¦¤ò¤½¤Î¥Ö¥í¥Ã¥¯¤È¥ª¥Õ¥»¥Ã¥ÈÃͤǼ±Ê̤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹¡£TID
-¤Ï¥í¥¦¤¬½¤Àµ¤µ¤ì¤¿¤êºÆ¥í¡¼¥É¤µ¤ì¤ë¤ÈÊѤï¤ê¤Þ¤¹¡£¤½¤ì¤é¤Î TID ¤Ï¡¢ÊªÍý¥í¥¦¤ò»Ø¤¹
-¤¿¤á¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹µºÜ¤Ç»È¤ï¤ì¤Þ¤¹¡£
-
-4.17) PostgreSQL ¤Ç»È¤ï¤ì¤ë¤¤¤¯¤Ä¤«¤ÎÍѸì¤Î°ÕÌ£¤Ï²¿¤Ç¤¹¤«¡©
-
-¤¤¤¯¤Ä¤«¤Î¥½¡¼¥¹¥³¡¼¥É¤ä¸Å¤¤Ê¸½ñ¤ÎÃæ¤Ë¤Ï¡¢¤½¤ì¤¾¤ÎÀìÌçʬÌî¤ÎÃæ¤Ç¤â¤Ã¤È°ìÈÌŪ¤Ë
-»È¤ï¤ì¤ëÀìÌçÍѸ줬»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£
-
- ¡¦ ¥Æ¡¼¥Ö¥ë(table)¡¢´Ø·¸(relation)¡¢¥¯¥é¥¹(class)
- ¡¦ ¥í¥¦(row)¡¢¥ì¥³¡¼¥É(record)¡¢¥¿¥Ã¥×¥ë(tuple)
- ¡¦ ¥«¥é¥à(column)¡¢¥Õ¥£¡¼¥ë¥É(field)¡¢Â°À(attribute)
- ¡¦ ¼èÆÀ(retrieve)¡¢ÁªÂò(select)
- ¡¦ ÃÖ´¹(replace)¡¢¹¹¿·(update)
- ¡¦ ÄɲÃ(append)¡¢ÁÞÆþ(insert)
- ¡¦ OID, Ï¢ÈÖ(serial value)
- ¡¦ ¥Ý¡¼¥¿¥ë(portal), ¥«¡¼¥½¥ë(cursor)
- ¡¦ ÎΰèÊÑ¿ô(range variable)¡¢¥Æ¡¼¥Ö¥ë̾(table name)¡¢¥Æ¡¼¥Ö¥ëÊÌ̾(table alias)
-
-°ìÈÌŪ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹ÍѸì¤Î¥ê¥¹¥È¤Ï¡§http://hea-www.harvard.edu/MST/simul/
-software/docs/pkgs/pgsql/glossary/glossary.html ¤Ç¸«¤Ä¤±¤é¤ì¤Þ¤¹¡£
-
-4.18) ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ "ERROR: Memory exhausted in AllocSetAlloc()"¤¬½Ð¤ë¤Î¤Ï¤Ê
-¤¼¤Ç¤¹¤«¡©
-
-¤ª¤½¤é¤¯¡¢¥·¥¹¥Æ¥à¤Î²¾ÁÛ¥á¥â¥ê¡¼¤òÁ´¤Æ»È¤¤²Ì¤¿¤·¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë²ÄǽÀ¤¬¤¢¤ë¤«¡¢
-¥«¡¼¥Í¥ë¤¬¤¢¤ë¥ê¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ¤â¤ÄÀ©¸ÂÃͤ¬Ä㤹¤®¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ postmaster
-¤ò»ÏÆ°¤¹¤ëÁ°¤Ë¤³¤ì¤ò»î¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡§
-
+ OID
+ ¤Ï¡¢4¥Ð¥¤¥È¤ÎÀ°¿ô¤È¤·¤ÆÊݸ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢40²¯¤ò±Û¤¨¤ë¤È°î¤ì¤Æ¤·¤Þ¤¦¤
+ Ǥ·¤ç¤¦¡£Ã¯¤â¤³¤ì¤¬µ¯¤
+ ¤¿¤ÈÊó¹ð¤·¤Æ¤¯¤ë¿Í¤Ï¤¤¤Þ¤»¤ó¤Ç¤·¤¿¤¬¡¢¤½¤¦¤Ê¤ëÁ°¤Ë¤³¤ÎÀ©¸Â¤ò¼è¤ê½ü¤¯¤³
+ ¤È¤ò·×²è¤·¤Æ¤¤¤Þ¤¹¡£
+
+ TID
+ ¤ÏÆÃÄê¤ÎʪÍý¥í¥¦¤ò¤½¤Î¥Ö¥í¥Ã¥¯¤È¥ª¥Õ¥»¥Ã¥ÈÃͤǼ±Ê̤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹
+ ¡£TID ¤Ï¥í¥¦¤¬½¤Àµ¤µ¤ì¤¿¤êºÆ¥í¡¼¥É¤µ¤ì¤ë¤ÈÊѤï¤ê¤Þ¤¹¡£¤½¤ì¤é¤Î TID
+ ¤Ï¡¢ÊªÍý¥í¥¦¤ò»Ø¤¹¤¿¤á¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹µºÜ¤Ç»È¤ï¤ì¤Þ¤¹¡£
+
+ 4.17) PostgreSQL ¤Ç»È¤ï¤ì¤ë¤¤¤¯¤Ä¤«¤ÎÍѸì¤Î°ÕÌ£¤Ï²¿¤Ç¤¹¤«¡©
+
+ ¤¤¤¯¤Ä¤«¤Î¥½¡¼¥¹¥³¡¼¥É¤ä¸Å¤¤Ê¸½ñ¤ÎÃæ¤Ë¤Ï¡¢¤½¤ì¤¾¤ÎÀìÌçʬÌî¤ÎÃæ¤Ç¤â¤Ã¤È
+ °ìÈÌŪ¤Ë»È¤ï¤ì¤ëÀìÌçÍѸ줬»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£
+ * ¥Æ¡¼¥Ö¥ë(table)¡¢´Ø·¸(relation)¡¢¥¯¥é¥¹(class)
+ * ¥í¥¦(row)¡¢¥ì¥³¡¼¥É(record)¡¢¥¿¥Ã¥×¥ë(tuple)
+ * ¥«¥é¥à(column)¡¢¥Õ¥£¡¼¥ë¥É(field)¡¢Â°À(attribute)
+ * ¼èÆÀ(retrieve)¡¢ÁªÂò(select)
+ * ÃÖ´¹(replace)¡¢¹¹¿·(update)
+ * ÄɲÃ(append)¡¢ÁÞÆþ(insert)
+ * OID, Ï¢ÈÖ(serial value)
+ * ¥Ý¡¼¥¿¥ë(portal), ¥«¡¼¥½¥ë(cursor)
+ * ÎΰèÊÑ¿ô(range variable)¡¢¥Æ¡¼¥Ö¥ë̾(table
+ name)¡¢¥Æ¡¼¥Ö¥ëÊÌ̾(table alias)
+
+ °ìÈÌŪ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹ÍѸì¤Î¥ê¥¹¥È¤Ï¡§http://hea-www.harvard.edu/MST/sim
+ ul/software/docs/pkgs/pgsql/glossary/glossary.html ¤Ç¸«¤Ä¤±¤é¤ì¤Þ¤¹¡£
+
+ 4.18) ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ "ERROR: Memory exhausted in
+ AllocSetAlloc()"¤¬½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+
+ ¤ª¤½¤é¤¯¡¢¥·¥¹¥Æ¥à¤Î²¾ÁÛ¥á¥â¥ê¡¼¤òÁ´¤Æ»È¤¤²Ì¤¿¤·¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë²ÄǽÀ
+ ¤¬¤¢¤ë¤«¡¢¥«¡¼¥Í¥ë¤¬¤¢¤ë¥ê¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ¤â¤ÄÀ©¸ÂÃͤ¬Ä㤹¤®¤ë²ÄǽÀ
+ ¤¬¤¢¤ê¤Þ¤¹¡£ postmaster ¤ò»ÏÆ°¤¹¤ëÁ°¤Ë¤³¤ì¤ò»î¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡§
ulimit -d 262144
limit datasize 256m
-¥·¥§¥ë¤Ë¤è¤Ã¤Æ¡¢¤É¤Á¤é¤«¤Ò¤È¤Ä¤¬À®¸ù¤¹¤ë¤Ç¤·¤ç¤¦¤¬¡¢¤³¤ì¤Ï¥×¥í¥»¥¹¤Î¥Ç¡¼¥¿¥»¥°
-¥á¥ó¥ÈÀ©¸Â¤ò¤è¤ê¹â¤¯ÀßÄꤷ¡¢¤¿¤Ö¤óÌ䤤¹ç¤ï¤»¤¬´°·ë¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£¤³¤Î
-¥³¥Þ¥ó¥É¤Ï¸½¹Ô¤Î¥×¥í¥»¥¹¤È¡¢¤³¤Î¥³¥Þ¥ó¥É¤òÁö¤é¤»¤¿¸å¤Ëºî¤é¤ì¤ëÁ´¤Æ¤Î¥µ¥Ö¥×¥í¥»
-¥¹¤Ë¤Ä¤¤¤ÆŬÍѤµ¤ì¤Þ¤¹¡£¥Ð¥Ã¥¯¥¨¥ó¥É¤¬¤È¤Æ¤â¿¤¯¤Î¥Ç¡¼¥¿¤òÊÖ¤¹¤¿¤á¤ËSQL ¥¯¥é¥¤
-¥¢¥ó¥È¤ÇÌäÂ꤬³¤¤¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢¥¯¥é¥¤¥¢¥ó¥È¤ò³«»Ï¤¹¤ëÁ°¤Ë¤³¤ì¤ò»î¤·¤Æ¤ß¤Æ
-¤¯¤À¤µ¤¤¡£
-
-4.19) ¤É¤Î¥Ð¡¼¥¸¥ç¥ó¤Î PostgreSQL ¤òÁö¤é¤»¤Æ¤¤¤ë¤«¤òÄ´¤Ù¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-
-psql ¤«¤é SELECT version(); ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£
-
-4.20) ¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Çinvalid large obj descriptor ¤ò¼õ¤±¼è¤ê¤Þ¤·¤¿
-¡£¤Ê¤¼¤Ç¤·¤ç¤¦¤«¡©
-
-¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÁàºî¤ò¤¹¤ë¤È¤¤Ï¡¢Á°¸å¤ËBEGIN WORK¤ÈCOMMIT¤òÉÕ¤±¤ëɬÍפ¬¤¢
-¤ê¤Þ¤¹¡£¤¹¤Ê¤ï¤Á¡¢lo_open ... lo_close¤ò¤Ï¤µ¤ß¹þ¤ß¤Þ¤¹¡£
-
-¸½ºß¤Ï¡¢PostgreSQL¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Î¥³¥ß¥Ã¥È»þ¤Ë¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥È¡¦¥Ï¥ó¥É
-¥ë¤òÊĤ¸¤ë¤³¤È¤Ë¤è¤ê¡¢lo_open¥³¥Þ¥ó¥É¤¬´°Î»¤·¤¿Ä¾¸å¤Ë¶¯À©Åª¤Ë¥ë¡¼¥ë¤ò¼Â¹Ô¤·¤Þ¤¹
-¡£¤³¤Î¤¿¤á¡¢ºÇ½é¤Ë¥Ï¥ó¥É¥ë¤ËÂФ·¤Æ²¿¤«¤ò¤·¤è¤¦¤È¤¹¤ë¤È¡¢invalid large obj
-descriptor(¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Îµ½Ò»Ò¤¬ÉÔÀµ)¤È¤Ê¤ê¤Þ¤¹¡£¤½¤ì¤Ç¡¢¤â¤·¡¢¥È¥é¥ó
-¥¶¥¯¥·¥ç¥ó¤ò»È¤¦¤Î¤ò˺¤ì¤ë¤È¡¢¡Ê¾¯¤Ê¤¯¤È¤â¤Û¤È¤ó¤É¤Î»þ´Ö¡ËƯ¤¤¤Æ¤¤¤¿¥³¡¼¥É¤¬¥¨
-¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½Ð¤¹¤Î¤Ç¤¹¡£
-
-¤â¤·¡¢ODBC¤Î¤è¤¦¤Ê¥¯¥é¥¤¥¢¥ó¥È¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ò¤ª»È¤¤¤Ê¤é¡¢auto-commit off¤òÀß
-Äꤹ¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-
-4.21) ¸½ºß¤Î»þ¹ï¤¬¥Ç¥Õ¥©¥ë¥È¤È¤Ê¤ë¤è¤¦¤Ê¥«¥é¥à¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
-
-CURRENT_TIMESTAMP¤ò»È¤¤¤Þ¤¹:
-
+ ¥·¥§¥ë¤Ë¤è¤Ã¤Æ¡¢¤É¤Á¤é¤«¤Ò¤È¤Ä¤¬À®¸ù¤¹¤ë¤Ç¤·¤ç¤¦¤¬¡¢¤³¤ì¤Ï¥×¥í¥»¥¹¤Î¥Ç
+ ¡¼¥¿¥»¥°¥á¥ó¥ÈÀ©¸Â¤ò¤è¤ê¹â¤¯ÀßÄꤷ¡¢¤¿¤Ö¤óÌ䤤¹ç¤ï¤»¤¬´°·ë¤¹¤ë¤è¤¦¤Ë¤Ê
+ ¤ë¤Ç¤·¤ç¤¦¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¸½¹Ô¤Î¥×¥í¥»¥¹¤È¡¢¤³¤Î¥³¥Þ¥ó¥É¤òÁö¤é¤»¤¿¸å¤Ë
+ ºî¤é¤ì¤ëÁ´¤Æ¤Î¥µ¥Ö¥×¥í¥»¥¹¤Ë¤Ä¤¤¤ÆŬÍѤµ¤ì¤Þ¤¹¡£¥Ð¥Ã¥¯¥¨¥ó¥É¤¬¤È¤Æ¤â¿
+ ¤¯¤Î¥Ç¡¼¥¿¤òÊÖ¤¹¤¿¤á¤ËSQL
+ ¥¯¥é¥¤¥¢¥ó¥È¤ÇÌäÂ꤬³¤¤¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢¥¯¥é¥¤¥¢¥ó¥È¤ò³«»Ï¤¹¤ëÁ°¤Ë¤³
+ ¤ì¤ò»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
+
+ 4.19) ¤É¤Î¥Ð¡¼¥¸¥ç¥ó¤Î PostgreSQL
+ ¤òÁö¤é¤»¤Æ¤¤¤ë¤«¤òÄ´¤Ù¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
+
+ psql ¤«¤é SELECT version(); ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£
+
+ 4.20) ¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Çinvalid large obj descriptor
+ ¤ò¼õ¤±¼è¤ê¤Þ¤·¤¿¡£¤Ê¤¼¤Ç¤·¤ç¤¦¤«¡©
+
+ ¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÁàºî¤ò¤¹¤ë¤È¤¤Ï¡¢Á°¸å¤ËBEGIN
+ WORK¤ÈCOMMIT¤òÉÕ¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¹¤Ê¤ï¤Á¡¢lo_open ...
+ lo_close¤ò¤Ï¤µ¤ß¹þ¤ß¤Þ¤¹¡£
+
+ ¸½ºß¤Ï¡¢PostgreSQL¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Î¥³¥ß¥Ã¥È»þ¤Ë¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥È
+ ¡¦¥Ï¥ó¥É¥ë¤òÊĤ¸¤ë¤³¤È¤Ë¤è¤ê¡¢lo_open¥³¥Þ¥ó¥É¤¬´°Î»¤·¤¿Ä¾¸å¤Ë¶¯À©Åª¤Ë¥
+ 롼¥ë¤ò¼Â¹Ô¤·¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢ºÇ½é¤Ë¥Ï¥ó¥É¥ë¤ËÂФ·¤Æ²¿¤«¤ò¤·¤è¤¦¤È¤¹¤ë¤
+ È¡¢invalid large obj descriptor(¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Îµ
+ ½Ò»Ò¤¬ÉÔÀµ)¤È¤Ê¤ê¤Þ¤¹¡£¤½¤ì¤Ç¡¢¤â¤·¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ò»È¤¦¤Î¤ò˺¤ì¤ë¤
+ È¡¢¡Ê¾¯¤Ê¤¯¤È¤â¤Û¤È¤ó¤É¤Î»þ´Ö¡ËƯ¤¤¤Æ¤¤¤¿¥³¡¼¥É¤¬¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½Ð¤
+ ¹¤Î¤Ç¤¹¡£
+
+ ¤â¤·¡¢ODBC¤Î¤è¤¦¤Ê¥¯¥é¥¤¥¢¥ó¥È¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ò¤ª»È¤¤¤Ê¤é¡¢auto-commi
+ t off¤òÀßÄꤹ¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
+
+ 4.21) ¸½ºß¤Î»þ¹ï¤¬¥Ç¥Õ¥©¥ë¥È¤È¤Ê¤ë¤è¤¦¤Ê¥«¥é¥à¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
+
+ CURRENT_TIMESTAMP¤ò»È¤¤¤Þ¤¹:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-4.22) ¤Ê¤¼¡¢IN¤ò»È¤¦ÉûÌ䤤¹ç¤ï¤»¤¬¤È¤Æ¤âÃÙ¤¤¤Î¤Ç¤¹¤«¡©
-
-7.4 ¤è¤êÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢ÉûÌ䤤¹ç¤ï¤»¤Ï¡¢ÉûÌ䤤¹ç¤ï¤»¤Î·ë²Ì¤ò³°ÉôÌ䤤¹ç¤ï¤»
-¤Î³Æ¥í¥¦¤Ë¤Ä¤¤¤Æ½ç¼¡Áöºº¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢³°Éô¤ÎÌ䤤¹ç¤ï¤»¤Ë·ë¹ç¤µ¤»¤é¤ì¤ë¡£Éû
-Ì䤤¹ç¤ï¤»¤¬¤ï¤º¤«¤Ê¥í¥¦¤·¤«ÊÖ¤µ¤º¡¢³°ÉôÌ䤤¹ç¤ï¤»¤¬Âô»³¤Î¥í¥¦¤òÊÖ¤¹¾ì¹ç¤Ï¡¢IN
-¤¬ºÇ¤âÁᤤ¤Ç¤¹¡£Â¾¤ÎÌ䤤¹ç¤ï¤»¤ò¹â®²½¤¹¤ë¤Ë¤Ï¡¢IN¤òEXISTS¤ËÃÖ´¹¤·¤Þ¤¹:
-
+ 4.22) ¤Ê¤¼¡¢IN¤ò»È¤¦ÉûÌ䤤¹ç¤ï¤»¤¬¤È¤Æ¤âÃÙ¤¤¤Î¤Ç¤¹¤«¡©
+
+ 7.4
+ ¤è¤êÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢ÉûÌ䤤¹ç¤ï¤»¤Ï¡¢ÉûÌ䤤¹ç¤ï¤»¤Î·ë²Ì¤ò³°ÉôÌ䤤¹ç
+ ¤ï¤»¤Î³Æ¥í¥¦¤Ë¤Ä¤¤¤Æ½ç¼¡Áöºº¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢³°Éô¤ÎÌ䤤¹ç¤ï¤»¤Ë·ë¹ç¤µ
+ ¤»¤é¤ì¤ë¡£
+ ÉûÌ䤤¹ç¤ï¤»¤¬¤ï¤º¤«¤Ê¥í¥¦¤·¤«ÊÖ¤µ¤º¡¢³°ÉôÌ䤤¹ç¤ï¤»¤¬Âô»³¤Î¥í¥¦¤òÊÖ¤¹
+ ¾ì¹ç¤Ï¡¢IN¤¬ºÇ¤âÁᤤ¤Ç¤¹¡£Â¾¤ÎÌ䤤¹ç¤ï¤»¤ò¹â®²½¤¹¤ë¤Ë¤Ï¡¢IN¤òEXISTS¤Ë
+ ÃÖ´¹¤·¤Þ¤¹:
SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab)
-¤ò¡¢ÃÖ¤´¹¤¨¤Æ¡§
-
+ ¤ò¡¢ÃÖ¤´¹¤¨¤Æ¡§
SELECT *
FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
-¤È¤·¤Þ¤¹¡£¤³¤ì¤¬¼ê¤Ã¼è¤êÁᤤ¤Ç¤¹¤¬¡¢subcol¤Ïº÷°úÉÕ¤¥«¥é¥à¤Ç¤¢¤ë¤Ù¤¤Ç¤¹¡£
-
-¥Ð¡¼¥¸¥ç¥ó7.4°Ê¹ß¤Ç¤Ï¡¢IN¤Ï¡¢Ä̾ï¤ÎÌ䤤¹ç¤ï¤»¤ÈƱÍͤÎÀöÎý¤µ¤ì¤¿¥¸¥ç¥¤¥ó¤Îµ»½Ñ¤ò
-¼ÂºÝ¤Ë»È¤¤¡¢EXISTS¤ò»È¤¦¤³¤È¤ò¹¥¤ß¤Þ¤¹¡£
-
-4.23) ³°Éô·ë¹ç(outer join)¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤·¤Þ¤¹¤«?
-
-PostgreSQL ¤Ï SQL ɸ½à¹½Ê¸¤ò»È¤¦³°Éô·ë¹ç(¥¢¥¦¥¿¡¼¥¸¥ç¥¤¥ó)¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤³
-¤³¤Ë 2¤Ä¤ÎÎãÂ꤬¤¢¤ê¤Þ¤¹¡£
-
+ ¤È¤·¤Þ¤¹¡£ ¤³¤ì¤¬¼ê¤Ã¼è¤êÁᤤ¤Ç¤¹¤¬¡¢subcol¤Ïº÷°úÉÕ¤¥«¥é¥à¤Ç¤¢¤ë¤Ù¤
+ ¤Ç¤¹¡£
+
+ ¥Ð¡¼¥¸¥ç¥ó7.4°Ê¹ß¤Ç¤Ï¡¢IN¤Ï¡¢Ä̾ï¤ÎÌ䤤¹ç¤ï¤»¤ÈƱÍͤÎÀöÎý¤µ¤ì¤¿¥¸¥ç¥¤¥
+ ó¤Îµ»½Ñ¤ò¼ÂºÝ¤Ë»È¤¤¡¢EXISTS¤ò»È¤¦¤³¤È¤ò¹¥¤ß¤Þ¤¹¡£
+
+ 4.23) ³°Éô·ë¹ç(outer join)¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤·¤Þ¤¹¤«?
+
+ PostgreSQL ¤Ï SQL
+ ɸ½à¹½Ê¸¤ò»È¤¦³°Éô·ë¹ç(¥¢¥¦¥¿¡¼¥¸¥ç¥¤¥ó)¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤³¤³¤Ë
+ 2¤Ä¤ÎÎãÂ꤬¤¢¤ê¤Þ¤¹¡£
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-¤¢¤ë¤¤¤Ï
-
+ ¤¢¤ë¤¤¤Ï
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
-¤³¤ì¤é¤Î¾ÝħŪ¤ÊÌ䤤¹ç¤ï¤»¤Ç¤Ï t1.col ¤ò t2.col ¤È·ë¹ç¤·¤Æ¡¢t1 ¤Î·ë¹ç¤µ¤ì¤Ê¤«¤Ã
-¤¿¥í¥¦(t2 ¤È°ìÃפ·¤Ê¤«¤Ã¤¿¥í¥¦)¤âÊÖ¤·¤Æ¤¤¤Þ¤¹¡£RIGHT ·ë¹ç¤Ï t2 ¤Î·ë¹ç¤µ¤ì¤Ê¤«¤Ã
-¤¿¥í¥¦¤ò²Ã¤¨¤ë¤Ç¤·¤ç¤¦¡£FULL ·ë¹ç¤Ï¡¢°ìÃפ·¤¿¥í¥¦¤Ë t1 ¤È t2 ¤«¤é¤Ï·ë¹ç¤µ¤ì¤Ê¤«
-¤Ã¤¿¥í¥¦¤òÊÖ¤¹¤Ç¤·¤ç¤¦¡£OUTER ¤È¤¤¤¦¸ÀÍդϥª¥×¥·¥ç¥ó¤Ç LEFT, RIGHT, ¤Þ¤¿¤Ï FULL
-¤Ê¤É¤Î·ë¹ç¤ò²¾Äꤵ¤ì¤Æ¤¤¤Þ¤¹¡£Ä̾·ë¹ç¤ÏINNER·ë¹ç¤È¸Æ¤Ð¤ì¤Þ¤¹¡£°ÊÁ°¤Î¥ê¥ê¡¼¥¹
-¤Ç¤Ï³°Éô·ë¹ç(outer join)¤òUNION ¤È NOT IN ¤ò»È¤Ã¤Æ¥·¥ß¥å¥ì¡¼¥È¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨
-¤Ð¡¢tab1 ¤È tab2 ¤ò·ë¹ç¤¹¤ë¤È¤¤Ï¡¢¼¡¤ÎÌ䤤¹ç¤ï¤»¤ÇÆó¤Ä¤Î¥Æ¡¼¥Ö¥ë¤ò³°Éô·ë¹ç¤·¤Þ
-¤¹¡£
-
+ ¤³¤ì¤é¤Î¾ÝħŪ¤ÊÌ䤤¹ç¤ï¤»¤Ç¤Ï t1.col ¤ò t2.col ¤È·ë¹ç¤·¤Æ¡¢t1
+ ¤Î·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿¥í¥¦(t2 ¤È°ìÃפ·¤Ê¤«¤Ã¤¿¥í¥¦)¤âÊÖ¤·¤Æ¤¤¤Þ¤¹¡£RIGHT
+ ·ë¹ç¤Ï t2 ¤Î·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿¥í¥¦¤ò²Ã¤¨¤ë¤Ç¤·¤ç¤¦¡£FULL
+ ·ë¹ç¤Ï¡¢°ìÃפ·¤¿¥í¥¦¤Ë t1 ¤È t2
+ ¤«¤é¤Ï·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿¥í¥¦¤òÊÖ¤¹¤Ç¤·¤ç¤¦¡£OUTER
+ ¤È¤¤¤¦¸ÀÍդϥª¥×¥·¥ç¥ó¤Ç LEFT, RIGHT, ¤Þ¤¿¤Ï FULL
+ ¤Ê¤É¤Î·ë¹ç¤ò²¾Äꤵ¤ì¤Æ¤¤¤Þ¤¹¡£Ä̾·ë¹ç¤ÏINNER·ë¹ç¤È¸Æ¤Ð¤ì¤Þ¤¹¡£
+
+ °ÊÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï³°Éô·ë¹ç(outer join)¤òUNION ¤È NOT IN
+ ¤ò»È¤Ã¤Æ¥·¥ß¥å¥ì¡¼¥È¤Ç¤¤Þ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢tab1 ¤È tab2 ¤ò·ë¹ç¤¹¤ë¤È¤
+ ¤Ï¡¢¼¡¤ÎÌ䤤¹ç¤ï¤»¤ÇÆó¤Ä¤Î¥Æ¡¼¥Ö¥ë¤ò³°Éô·ë¹ç¤·¤Þ¤¹¡£
SELECT tab1.col1, tab2.col2
FROM tab1, tab2
WHERE tab1.col1 = tab2.col1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
ORDER BY col1
-4.24) Ê£¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¦Ì䤤¹ç¤ï¤»¤Ï¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤Ç¤¤Þ¤¹¤«¡©
-
-¸½¹Ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹°Ê³°¤Ø¤ÎÌ䤤¹ç¤ï¤»ÊýË¡¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤È¤¤¤¦¤Î¤âPostgreSQL¤¬¥Ç
-¡¼¥¿¥Ù¡¼¥¹»ÅÍͤΥ·¥¹¥Æ¥à¥«¥¿¥í¥°¤òÆɤ߹þ¤à¤¿¤á¤Ç¡¢¤½¤³¤Ë¤Ï¡¢¤¿¤È¤¨¤½¤Î¤Õ¤ê¤ò¤¹
-¤ë¤À¤±¤Ë¤·¤í¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò±Û¤¨¤ÆÌ䤤¹ç¤ï¤»¤ò¤¹¤ë¤¹¤Ù¤¬¤¢¤ê¤Þ¤»¤ó¡£
-
-contrib/dblink ¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹´Ö(cross-database)¤ÎÌ䤤¹ç¤ï¤»¤ò´Ø¿ô¸Æ½Ð¤·¤Ë¤è¤êµö
-¤·¤Þ¤¹¡£¤â¤Á¤í¤ó¡¢¥¯¥é¥¤¥¢¥ó¥È¤ÏƱ»þ¤ËÀܳ¤òÊ̤Υǡ¼¥¿¥Ù¡¼¥¹¤Ø¤âÄ¥¤é¤Ê¤¯¤Æ¤Ï¤Ê
-¤é¤º¡¢·ë²Ì¤ò¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¥Þ¡¼¥¸¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£
-
-4.25) ´Ø¿ô¤ÇÊ£¿ô¤Î¥í¥¦¤Þ¤¿¤Ï¥«¥é¥à¤òÊÖ¤¹¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
-
-7.3¤Ç¤Ï´Ø¿ô¤«¤é¡¢Ê£¿ô¤Î¥í¥¦¤äÊ£¿ô¥«¥é¥à¤ò´Êñ¤ËÊÖ¤»¤Þ¤¹¡£ http://
-techdocs.postgresql.org/guides/SetReturningFunctions¡£
-
-4.26)¤Ê¤¼¡¢PL/PgSQL ´Ø¿ô¤ÎÃ椫¤é°ì»þ¥Æ¡¼¥Ö¥ë¤ò³Î¼Â¤Ë create/drop ¤¹¤ë¤³¤È¤¬¤Ç¤
-¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©
-
-PL/PgSQL ¤Ï´Ø¿ô¤ÎÆâÍƤò¥¥ã¥Ã¥·¥å¤·¡¢¤½¤ÎÉÔ¹¬¤ÊÉûºîÍѤΤ¿¤á¡¢¤â¤· PL/PgSQL ´Ø¿ô
-¤¬°ì»þ¥Æ¡¼¥Ö¥ë¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤È¡¢¤½¤Î¥Æ¡¼¥Ö¥ë¤Ï¤¢¤È¤Ç¥É¥í¥Ã¥×¤µ¤ìºÆºîÀ®¤µ¤ì¤Þ¤¹
-¤¬¡¢´Ø¿ô¤¬ºÆ¤Ó¸Æ¤Ó½Ð¤µ¤ì¤ë¤È¡¢¥¥ã¥Ã¥·¥å¤µ¤ì¤Æ¤¤¤ë¤½¤Î´Ø¿ô¤ÎÆâÍƤϤޤÀ¸Å¤¤°ì»þ
-¥Æ¡¼¥Ö¥ë¤ò°ÍÁ³¤È¤·¤Æ»Ø¤·¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£²ò·èºö¤Ï¡¢ PL/PgSQL ¤ÎÃæ¤Ç EXECUTE ¤ò°ì
-»þ¥Æ¡¼¥Ö¥ë¥¢¥¯¥»¥¹¤Î¤¿¤á¤Ë»È¤¦¤³¤È¤Ç¤¹¡£¤³¤ì¤Ç¡¢Ëè²óÌ䤤¹ç¤ï¤»¤ò¥Ñ¡¼¥¹¤·Ä¾¤¹¤³
-¤È¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£
-
-4.27) ¤É¤Î¤è¤¦¤Ê°Å¹æ²½¥ª¥×¥·¥ç¥ó¤òÍøÍѤǤ¤Þ¤¹¤«?
-
- ¡¦ contrib/pgcrypto¤Ë¤ÏSQLÌ䤤¹ç¤ï¤»¤ÎÃæ¤Ç»È¤¦¤¿¤á¤ÎÂô»³¤Î°Å¹æ²½¤ò´Þ¤ß¤Þ¤¹¡£
- ¡¦ ¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¤È¤Î´Ö¤ÎÅÁÁ÷¤ò°Å¹æ²½¤¹¤ë¤Ë¤Ï¡¢¥µ¡¼¥Ð¤Ç¤Ïpostgresql.conf
- ¤Îssl¥ª¥×¥·¥ç¥ó¤òtrue ¤ËÀßÄꤷ¡¢pg_hba.conf¤Ë¤ÏŬÍѤ¹¤ëhost¤¢¤ë¤¤¤Ïhostssl
- ¤Î¹Ô¤¬¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¤½¤·¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È¤Ç¤Ïsslmode¤òdisable¤Ë¤·¤Æ¤Ï
- ¤Ê¤ê¤Þ¤»¤ó¡£ (PostgreSQL½ãÀµ¤ÎSSLÀܳ¤Î¤«¤ï¤ê¤Ë¡¢stunnel ¤ä ssh ¥µ¡¼¥É¥Ñ¡¼
- ¥Æ¥£À½¤Î°Å¹æ²½Å¾Á÷¤ò»È¤¦¤³¤È¤â²Äǽ¤Ç¤¢¤ë¤³¤È¤âµ¤·¤Æ¤ª¤¤Þ¤¹¡£)
- ¡¦ ¥Ð¡¼¥¸¥ç¥ó7.3 ¤Ç¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¥æ¡¼¥¶¤Î¥Ñ¥¹¥ï¡¼¥É¤ÏÊݸ¤µ¤ì¤ë»þ¤Ë¼«Æ°Åª¤Ë°Å
- ¹æ²½¤µ¤ì¤Þ¤¹¡£¤½¤ì¤è¤êÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ïpostgresql.confÃæ¤Ç
- PASSWORD_ENCRYPTION¤ò͸ú¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
- ¡¦ ¥µ¡¼¥Ð¡¼¤òÁö¤é¤»¤ë¤Î¤Ë°Å¹æ²½¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò»È¤¦¤³¤È¤â¤Ç¤¤Þ¤¹¡£
-
+ 4.24) Ê£¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¦Ì䤤¹ç¤ï¤»¤Ï¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤Ç¤¤Þ¤¹¤«¡©
+
+ ¸½¹Ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹°Ê³°¤Ø¤ÎÌ䤤¹ç¤ï¤»ÊýË¡¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤È¤¤¤¦¤Î¤âPostgr
+ eSQL¤¬¥Ç¡¼¥¿¥Ù¡¼¥¹»ÅÍͤΥ·¥¹¥Æ¥à¥«¥¿¥í¥°¤òÆɤ߹þ¤à¤¿¤á¤Ç¡¢¤½¤³¤Ë¤Ï¡¢¤¿
+ ¤È¤¨¤½¤Î¤Õ¤ê¤ò¤¹¤ë¤À¤±¤Ë¤·¤í¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò±Û¤¨¤ÆÌ䤤¹ç¤ï¤»¤ò¤¹¤ë¤¹¤Ù
+ ¤¬¤¢¤ê¤Þ¤»¤ó¡£
+
+ contrib/dblink
+ ¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹´Ö(cross-database)¤ÎÌ䤤¹ç¤ï¤»¤ò´Ø¿ô¸Æ½Ð¤·¤Ë¤è¤êµö¤·¤Þ¤¹
+ ¡£¤â¤Á¤í¤ó¡¢¥¯¥é¥¤¥¢¥ó¥È¤ÏƱ»þ¤ËÀܳ¤òÊ̤Υǡ¼¥¿¥Ù¡¼¥¹¤Ø¤âÄ¥¤é¤Ê¤¯¤Æ¤Ï
+ ¤Ê¤é¤º¡¢·ë²Ì¤ò¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¥Þ¡¼¥¸¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£
+
+ 4.25) ´Ø¿ô¤ÇÊ£¿ô¤Î¥í¥¦¤Þ¤¿¤Ï¥«¥é¥à¤òÊÖ¤¹¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
+
+ 7.3¤Ç¤Ï´Ø¿ô¤«¤é¡¢Ê£¿ô¤Î¥í¥¦¤äÊ£¿ô¥«¥é¥à¤ò´Êñ¤ËÊÖ¤»¤Þ¤¹¡£
+ http://techdocs.postgresql.org/guides/SetReturningFunctions¡£
+
+ 4.26)¤Ê¤¼¡¢PL/PgSQL ´Ø¿ô¤ÎÃ椫¤é°ì»þ¥Æ¡¼¥Ö¥ë¤ò³Î¼Â¤Ë create/drop
+ ¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©
+
+ PL/PgSQL ¤Ï´Ø¿ô¤ÎÆâÍƤò¥¥ã¥Ã¥·¥å¤·¡¢¤½¤ÎÉÔ¹¬¤ÊÉûºîÍѤΤ¿¤á¡¢¤â¤·
+ PL/PgSQL
+ ´Ø¿ô¤¬°ì»þ¥Æ¡¼¥Ö¥ë¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤È¡¢¤½¤Î¥Æ¡¼¥Ö¥ë¤Ï¤¢¤È¤Ç¥É¥í¥Ã¥×¤µ¤ìºÆ
+ ºîÀ®¤µ¤ì¤Þ¤¹¤¬¡¢´Ø¿ô¤¬ºÆ¤Ó¸Æ¤Ó½Ð¤µ¤ì¤ë¤È¡¢¥
+ ¥ã¥Ã¥·¥å¤µ¤ì¤Æ¤¤¤ë¤½¤Î´Ø¿ô¤ÎÆâÍƤϤޤÀ¸Å¤¤°ì»þ¥Æ¡¼¥Ö¥ë¤ò°ÍÁ³¤È¤·¤Æ»Ø¤·
+ ¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£²ò·èºö¤Ï¡¢ PL/PgSQL ¤ÎÃæ¤Ç EXECUTE
+ ¤ò°ì»þ¥Æ¡¼¥Ö¥ë¥¢¥¯¥»¥¹¤Î¤¿¤á¤Ë»È¤¦¤³¤È¤Ç¤¹¡£¤³¤ì¤Ç¡¢Ëè²óÌ䤤¹ç¤ï¤»¤ò¥Ñ
+ ¡¼¥¹¤·Ä¾¤¹¤³¤È¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£
+
+ 4.27) ¤É¤Î¤è¤¦¤Ê°Å¹æ²½¥ª¥×¥·¥ç¥ó¤òÍøÍѤǤ¤Þ¤¹¤«?
+
+ * contrib/pgcrypto¤Ë¤ÏSQLÌ䤤¹ç¤ï¤»¤ÎÃæ¤Ç»È¤¦¤¿¤á¤ÎÂô»³¤Î°Å¹æ²½¤ò´Þ¤
+ ߤޤ¹¡£
+ * ¥¯¥é¥¤¥¢¥ó¥È¤È¥µ¡¼¥Ð¤È¤Î´Ö¤ÎÅÁÁ÷¤ò°Å¹æ²½¤¹¤ë¤Ë¤Ï¡¢¥µ¡¼¥Ð¤Ç¤Ïpostgr
+ esql.conf¤Îssl¥ª¥×¥·¥ç¥ó¤òtrue
+ ¤ËÀßÄꤷ¡¢pg_hba.conf¤Ë¤ÏŬÍѤ¹¤ëhost¤¢¤ë¤¤¤Ïhostssl¤Î¹Ô¤¬¤Ê¤¯¤Æ¤Ï
+ ¤Ê¤ê¤Þ¤»¤ó¡£¤½¤·¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È¤Ç¤Ïsslmode¤òdisable¤Ë¤·¤Æ¤Ï¤Ê¤ê¤Þ
+ ¤»¤ó¡£ (PostgreSQL½ãÀµ¤ÎSSLÀܳ¤Î¤«¤ï¤ê¤Ë¡¢stunnel ¤ä ssh
+ ¥µ¡¼¥É¥Ñ¡¼¥Æ¥£À½¤Î°Å¹æ²½Å¾Á÷¤ò»È¤¦¤³¤È¤â²Äǽ¤Ç¤¢¤ë¤³¤È¤âµ¤·¤Æ¤ª¤
+ ¤Þ¤¹¡£)
+ * ¥Ð¡¼¥¸¥ç¥ó7.3
+ ¤Ç¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¥æ¡¼¥¶¤Î¥Ñ¥¹¥ï¡¼¥É¤ÏÊݸ¤µ¤ì¤ë»þ¤Ë¼«Æ°Åª¤Ë°Å¹æ²½¤µ
+ ¤ì¤Þ¤¹¡£
+ ¤½¤ì¤è¤êÁ°¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ïpostgresql.confÃæ¤ÇPASSWORD_ENCRYPTION¤ò
+ ͸ú¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
+ * ¥µ¡¼¥Ð¡¼¤òÁö¤é¤»¤ë¤Î¤Ë°Å¹æ²½¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò»È¤¦¤³¤È¤â¤Ç¤¤Þ¤¹¡£
+
[ÌõÃí
¥ì¥×¥ê¥±¡¼¥·¥ç¥ó´ØÏ¢¤Î¹àÌܤ¬¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¤¬¡¢ÌõÃí¤Î¤ß»Ä¤·¤Æ¤¢¤ê¤Þ¤¹¡£
- Jan Wieck¤µ¤ó¤Ë¤è¤ë¥«¥¹¥±¡¼¥É²Äǽ¤Ê¥Þ¥¹¥¿¡¼¡¦¥¹¥ì¡¼¥Ö·¿¤Î¥ì¥×¥ê¥±¡¼¥·¥ç¥ó Slony-I
+ Jan Wieck¤µ¤ó¤Ë¤è¤ë¥«¥¹¥±¡¼¥É²Äǽ¤Ê¥Þ¥¹¥¿¡¼¡¦¥¹¥ì¡¼¥Ö·¿¤Î¥ì¥×¥ê¥±¡¼¥·¥ç¥ó Slony-I
http://gborg.postgresql.org/project/slony1/projdisplay.php
ÀаæãÉפµ¤ó¤Ë¤è¤ë¥³¥Í¥¯¥·¥ç¥ó¥×¡¼¥ë ¥µ¡¼¥Ð PGPool
¤Î¼ÂÁõ¤ò¹Ô¤¤¤Þ¤·¤¿¡£
http://www.postgresql.jp/wg/dt/index.html
]
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
- PostgreSQL¤Î³ÈÄ¥¤Ë¤Ä¤¤¤Æ¤Î¼ÁÌä
-
-5.1) ¼«Ê¬¤Ç½ñ¤¤¤¿¥æ¡¼¥¶ÄêµÁ´Ø¿ô¤ò psql ¤ÎÃæ¤Ç¼Â¹Ô¤¹¤ë¤È¥³¥¢¡¦¥À¥ó¥×¤·¤Æ¤·¤Þ¤¦¤Î
-¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
-
-ÌäÂê¤Ï¿§¡¹¤È¹Í¤¨¤é¤ì¤Þ¤¹¤¬¡¢¤Þ¤ººÇ½é¤Ë¡¢ºîÀ®¤·¤¿¥æ¡¼¥¶ÄêµÁ´Ø¿ô¤òñÆȤΥƥ¹¥È¥×
-¥í¥°¥é¥à¤Ë¤·¤Æ»î¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡£
-
-5.2) PostgreSQL ÍѤ˽ñ¤¤¤¿¤Á¤ç¤Ã¤ÈÁÇŨ¤Ê¿·¤·¤¤·¿¤ä´Ø¿ô¤òÄ󶡤·¤Æ¥×¥í¥¸¥§¥¯¥È¤Ë
-¹×¸¥¤·¤¿¤¤¤Î¤Ç¤¹¤¬¡©
-
-³§¤µ¤ó¤Î¹Ô¤Ê¤Ã¤¿³ÈÄ¥¤ò¡¢pgsql-hackers ¥á¡¼¥ê¥ó¥°¡¦¥ê¥¹¥È¤ËÁ÷¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤½¤·
-¤Æ¡¢¤æ¤¯¤æ¤¯¤Ï¤½¤¦¤·¤¿³ÈÄ¥¤¬ contrib/ ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤ËÆþ¤ë¤³¤È¤Ë¤Ê¤ë¤Ç¤·
-¤ç¤¦¡£
-
-5.3) ¥¿¥×¥ë¤òÊÖ¤¹ C¸À¸ì¤Î´Ø¿ô¤Ï¤É¤Î¤è¤¦¤Ë½ñ¤¤Þ¤¹¤«¡©
-
-¥Ð¡¼¥¸¥ç¥ó7.3°Ê¹ß¤ÎPostgreSQL¤Ç¤Ï¡¢¥Æ¡¼¥Ö¥ë¤òÊÖ¤¹´Ø¿ô¤ò C, PL/PgSQL¡¢¤½¤·¤Æ SQL
-¤Ë¤Æ´°Á´¤Ë¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¾Ü¤·¤¯¤Ï¥×¥í¥°¥é¥Þ¥¬¥¤¥É¤Î¾ðÊó¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£C¤ÇÄêµÁ
-¤µ¤ì¤¿É½¤òÊÖ¤¹´Ø¿ô¤ÎÎãÂ꤬contrib/tablefunc¤ÎÃæ¤Ë¤¢¤ê¤Þ¤¹¡£
-
-5.4) ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤Þ¤·¤¿¡£ºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤âÊѲ½¤¬¸«¤é¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼
-¤Ç¤¹¤«¡©
-
-¤¤¤¯¤Ä¤«¤Î Makefile ¤¬¥¤¥ó¥¯¥ë¡¼¥É¡¦¥Õ¥¡¥¤¥ë¤ËÂФ·¤ÆŬÀڤʰ͸´Ø·¸¤ò»ý¤Ã¤Æ¤¤¤Þ
-¤»¤ó¡£make clean ¤ò¤·¤Æ¤«¤é¤â¤¦°ìÅÙ make ¤ò¹Ô¤Ê¤ï¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¤â¤·¡¢GCC
-¤ò¤ª»È¤¤¤Ç¤¢¤ì¤Ð configure ¤Î --enable-depend ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¡¢¥³¥ó¥Ñ¥¤¥é¤Ë
-°Í¸´Ø·¸¤ò¼«Æ°Åª¤ËÄ´¤Ù¤µ¤»¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
-
-¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬¨¬
-
+ _________________________________________________________________
+
+ PostgreSQL¤Î³ÈÄ¥¤Ë¤Ä¤¤¤Æ¤Î¼ÁÌä
+
+ 5.1) ¼«Ê¬¤Ç½ñ¤¤¤¿¥æ¡¼¥¶ÄêµÁ´Ø¿ô¤ò psql
+ ¤ÎÃæ¤Ç¼Â¹Ô¤¹¤ë¤È¥³¥¢¡¦¥À¥ó¥×¤·¤Æ¤·¤Þ¤¦¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+
+ ÌäÂê¤Ï¿§¡¹¤È¹Í¤¨¤é¤ì¤Þ¤¹¤¬¡¢¤Þ¤ººÇ½é¤Ë¡¢ºîÀ®¤·¤¿¥æ¡¼¥¶ÄêµÁ´Ø¿ô¤òñÆȤÎ
+ ¥Æ¥¹¥È¥×¥í¥°¥é¥à¤Ë¤·¤Æ»î¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡£
+
+ 5.2) PostgreSQL
+ ÍѤ˽ñ¤¤¤¿¤Á¤ç¤Ã¤ÈÁÇŨ¤Ê¿·¤·¤¤·¿¤ä´Ø¿ô¤òÄ󶡤·¤Æ¥×¥í¥¸¥§¥¯¥È¤Ë¹×¸¥¤·¤¿¤¤¤Î¤
+ Ǥ¹¤¬¡©
+
+ ³§¤µ¤ó¤Î¹Ô¤Ê¤Ã¤¿³ÈÄ¥¤ò¡¢pgsql-hackers
+ ¥á¡¼¥ê¥ó¥°¡¦¥ê¥¹¥È¤ËÁ÷¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤½¤·¤Æ¡¢¤æ¤¯¤æ¤¯¤Ï¤½¤¦¤·¤¿³ÈÄ¥¤¬
+ contrib/ ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤ËÆþ¤ë¤³¤È¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£
+
+ 5.3) ¥¿¥×¥ë¤òÊÖ¤¹ C¸À¸ì¤Î´Ø¿ô¤Ï¤É¤Î¤è¤¦¤Ë½ñ¤¤Þ¤¹¤«¡©
+
+ ¥Ð¡¼¥¸¥ç¥ó7.3°Ê¹ß¤ÎPostgreSQL¤Ç¤Ï¡¢¥Æ¡¼¥Ö¥ë¤òÊÖ¤¹´Ø¿ô¤ò C,
+ PL/PgSQL¡¢¤½¤·¤Æ SQL
+ ¤Ë¤Æ´°Á´¤Ë¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¾Ü¤·¤¯¤Ï¥×¥í¥°¥é¥Þ¥¬¥¤¥É¤Î¾ðÊó¤ò¸«¤Æ¤¯¤À¤µ¤¤
+ ¡£C¤ÇÄêµÁ¤µ¤ì¤¿É½¤òÊÖ¤¹´Ø¿ô¤ÎÎãÂ꤬contrib/tablefunc¤ÎÃæ¤Ë¤¢¤ê¤Þ¤¹¡£
+
+ 5.4)
+ ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤Þ¤·¤¿¡£ºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤âÊѲ½¤¬¸«¤é¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤
+ Ǥ¹¤«¡©
+
+ ¤¤¤¯¤Ä¤«¤Î Makefile
+ ¤¬¥¤¥ó¥¯¥ë¡¼¥É¡¦¥Õ¥¡¥¤¥ë¤ËÂФ·¤ÆŬÀڤʰ͸´Ø·¸¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£make
+ clean ¤ò¤·¤Æ¤«¤é¤â¤¦°ìÅÙ make ¤ò¹Ô¤Ê¤ï¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¤â¤·¡¢GCC
+ ¤ò¤ª»È¤¤¤Ç¤¢¤ì¤Ð configure ¤Î --enable-depend
+ ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¡¢¥³¥ó¥Ñ¥¤¥é¤Ë°Í¸´Ø·¸¤ò¼«Æ°Åª¤ËÄ´¤Ù¤µ¤»¤ë¤³¤È¤â¤Ç¤
+ ¤Þ¤¹¡£
+ _________________________________________________________________
+
[ÌõÃí¡§
ÆüËܸìÈǤÎÀ½ºî¤Ë¤Ä¤¤¤Æ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
ºÇ½ª¹¹¿·Æü: 2005ǯ01·î12Æü
ËÝÌõ¼Ô: ·¬Â¼ ½á (Jun Kuwamura <juk at PostgreSQL.jp>)
- ¤³¤ÎFAQ¤ÎÏÂÌõ¤ÎºîÀ®¤Ë¤¢¤¿¤ê¶¨ÎϤò¤·¤Æ¤¯¤À¤µ¤Ã¤¿Êý¡¹(·É¾Î¤Ïά¤µ¤»¤Æ¤¤¤¿¤À¤¤Þ¤¹):
+ ¤³¤ÎFAQ¤ÎÏÂÌõ¤ÎºîÀ®¤Ë¤¢¤¿¤ê¶¨ÎϤò¤·¤Æ¤¯¤À¤µ¤Ã¤¿Êý¡¹(·É¾Î¤Ïά¤µ¤»¤Æ¤¤¤¿¤À¤¤Þ¤¹):
- ÅÄÃç Ì(Minoru TANAKA <Tanaka.Minoru at keiken.co.jp>)
+ ÅÄÃç Ì(Minoru TANAKA <Tanaka.Minoru at keiken.co.jp>)
Àаæ ãÉ×(Tatsuo ISHII <t-ishii at sra.co.jp>)
óîÆ£ ÃοÍ(Tomohito SAITOH <tomos at elelab.nsc.co.jp>)
ÇϾì È¥(Hajime BABA <baba at kusastro.kyoto-u.ac.jp>)
²¬ËÜ °ì¹¬(Kazuyuki OKAMOTO <kokamoto at itg.hitachi.co.jp>)
¾®¿û ¾¼°ì(Shoichi Kosuge <s-kosuge at str.hitachi.co.jp>)
»³²¼ µÁÇ·(Yoshiyuki YAMASHITA <dica at eurus.dti.ne.jp>)
- ¶ ¿¿ÂÀϺ(Sintaro SAKAI <s_sakai at mxn.mesh.ne.jp>)
+ ¶ ¿¿ÂÀϺ(Sintaro SAKAI <s_sakai at mxn.mesh.ne.jp>)
À¸±Û ¾»¸Ê(Masami OGOSHI <ogochan at zetabits.com>)
ÀÐÀî ½Ó¹Ô(Toshiyuki ISHIKAWA <tosiyuki at gol.com>)
- ËÜÅÄ Ìй(Shigehiro HONDA <fwif0083 at mb.infoweb.ne.jp>)
+ ËÜÅÄ Ìй(Shigehiro HONDA <fwif0083 at mb.infoweb.ne.jp>)
¤»¤» ¤¸¤å¤ó(Jun SESE <sesejun at linet.gr.jp>)
¿Àë ±Ñ¹§(Hidetaka KAMIYA <hkamiya at catvmics.ne.jp>)
¿û¸¶ ÆØ(Atsushi SUGAWARA <asugawar at f3.dion.ne.jp>)
°ðÍÕ ¹áÍý(Kaori Inaba <i-kaori at sra.co.jp>)
Àаæ ãÉ×(Tatsuo Ishii <t-ishii at sra.co.jp>)
- ¤ò¤Ï¤¸¤á¡¢¥Ý¥¹¥È¥°¥ì¥¹¤Ë´Ø¤¹¤ëÏÃÂêËÉÙ¤ÊÆüËܸì¥Ý¥¹¥È¥°¥ì¥¹¡¦¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¡¢
-ÏÂÌõ¤Î¤¤Ã¤«¤±¤òºî¤Ã¤Æ¤¯¤ì¤¿ JF(Linux Japanese FAQ Mailing List)¥×¥í¥¸¥§¥¯¥È¡¢FreeBSD ¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¥×¥í¥¸¥§¥¯¥È¡¢
+ ¤ò¤Ï¤¸¤á¡¢¥Ý¥¹¥È¥°¥ì¥¹¤Ë´Ø¤¹¤ëÏÃÂêËÉÙ¤ÊÆüËܸì¥Ý¥¹¥È¥°¥ì¥¹¡¦¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¡¢
+ÏÂÌõ¤Î¤¤Ã¤«¤±¤òºî¤Ã¤Æ¤¯¤ì¤¿ JF(Linux Japanese FAQ Mailing List)¥×¥í¥¸¥§¥¯¥È¡¢FreeBSD ¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¥×¥í¥¸¥§¥¯¥È¡¢
¤½¤Î¾¡¢Ä¾Àܤ¢¤ë¤¤¤Ï´ÖÀÜŪ¤Ë¤«¤«¤ï¤Ã¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥ª¡¼¥×¥ó¥½¡¼¥¹¥³¥ß¥å¥Ë¥Æ¥£¡¼¤Î³§¤µ¤ó¤Ë´¶¼Õ¤·¤Þ¤¹¡£
ÆüËܸìÈǤΤ³¤Îʸ½ñ¤Ï¡¢°Ê²¼¤«¤é¤â¤¿¤É¤ì¤Þ¤¹¡£
¤Ê¤ª¡¢¤³¤ÎÏÂÌõ¤Ë´Ø¤¹¤ë¤´°Õ¸«¤Ï(juk at PostgreSQL.jp)¤Þ¤Ç¤ª´ó¤»²¼¤µ¤¤¡£
]
-
PostgreSQL Data Base Management System
- Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
+ Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
Portions Copyright (c) 1994-6 Regents of the University of California
Permission to use, copy, modify, and distribute this software and its
DROP COLUMN. We wczesniejszych wersjach mozesz zrobic tak:
BEGIN;
LOCAL TABLE old_table;
- SELECT ... -- wybierz wszystkie kolumny poza ta jedna której chcesz sie po
-zbyc
+ SELECT ... -- wybierz wszystkie kolumny poza ta jedna której chcesz sie pozbyc
INTO TABLE new_table
FROM old_table;
DROP TABLE old_table;
Maksymalny rozmiar dla rzedu? 1.6 TB
Maksymalny rozmiar pola? 1 GB
Maksymalna liczba rzedów w tabeli? nieograniczona
- Maksymalna liczba kolumn w tabeli? 250-1600 w zalezonosci od typów ko
-lumn
+ Maksymalna liczba kolumn w tabeli? 250-1600 w zalezonosci od typów kolumn
Makasymalna liczba indeksów na tabeli? nieograniczona
Oczywiscie "nieograniczony" nie jest prawda tak do konca, istnieja
Strona danych w PostgreSQL zajmuje 8192 bajtów (8 KB), wiec:
8192 bajtów na strone
- --------------------- = 128 rzedów na jedna strone w bazie (zaokraglone w
- dól/)
+ --------------------- = 128 rzedów na jedna strone w bazie (zaokraglone w dól/)
64 bajtów na rzad
100000 rzedów danych
zl/aczen (join). Sekwencyjne przeszukiwanie po którym nastepuje
sortowanie jest zazwyczaj szybsze nie wyszukiwanie za pomoca indeksu
na duzej tabeli.
+
Jakkolwiek LIMIT w pol/aczeniu z ORDER BY czesto bedzie wykorzystywal/
indeksy poniewaz jedynie mal/a czesc z tabeli jest zwracana. W
rzeczywistosci, chociaz MAX() i MIN() nie uzywaja indeksów, mozliwe
Type Nazwa wewnetrzna Uwagi
--------------------------------------------------
-VARCHAR(n) varchar rozmiar okresla maksymalna dl/ugosc, nie ma
-tutaj wypel/niania
-CHAR(n) bpchar wypel/niane pustymi znakami do podanej dl/ug
-osci
+VARCHAR(n) varchar rozmiar okresla maksymalna dl/ugosc, nie matutaj wypel/niania
+CHAR(n) bpchar wypel/niane pustymi znakami do podanej dl/ugosci
TEXT text bez limitu na dl/ugosc l/ancucha
-BYTEA bytea zmiennej dl/ugosci tablica bajtów (null-byte
- safe)
+BYTEA bytea zmiennej dl/ugosci tablica bajtów (null-byte safe)
"char" char 1 znak
Jesli bedziesz przegladac katalogi systemowe lub komunikaty o bl/edach
zadeklarowany rozmiar. Te typy takze podlegaja kompresji lub moga byc
przechowywane out-of-line jako TOAST, wiec faktyczne zuzycie miejsca
na dysku moze byc mniejsze niz oczekiwane.
+
VARCHAR(n) jest najodpowiedniejszy do przechowywania l/ancuchów o
róznej dl/ugosci ale okresla on maksymalna jego dl/ugosc. TEXT jest
najlepszy dla l/ancuchów o dowolnej dl/ugosci, nie przekraczajacej
4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
- Jest kilka opcji aby stosowac replikacje typu master/slave. Ten typ pozwala
- jedynie masterowi na dokonywanie zmian w bazie danych, a slave moze jedynie
- te zmiany odczytywac. Na stronie
- http://gborg.PostgreSQL.org/genpage?replication_research znajduje sie ich
- lista. Replikacja typu multi-master jest w trakcie prac, opis projektu
- znajduje sie pod adresem:
- http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
+ Jest kilka opcji aby stosowac replikacje typu master/slave. Ten typ
+ pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a slave
+ moze jedynie te zmiany odczytywac. Na stronie
+ http://gborg.PostgreSQL.org/genpage?replication_research znajduje sie
+ ich lista. Replikacja typu multi-master jest w trakcie prac, opis
+ projektu znajduje sie pod adresem:
+ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
+
4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
* contrib/pgcrypto zawiera wiele funkcji za pomoca, których mozemy
5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program zrzuca
pamiec (dump core)?
- Problem moze byc spowodowany przez bardzo wiele rzeczy. Spróbuj najpierw
- przetestowac Twoja funkcje w samodzielnie dzial/ajacym programie.
+ Problem moze byc spowodowany przez bardzo wiele rzeczy. Spróbuj
+ najpierw przetestowac Twoja funkcje w samodzielnie dzial/ajacym
+ programie.
+
5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL?
- Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy
- prawdopodobnie Twój kod znajdzie sie w katalogu contrib/.
+ Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy
+ prawdopodobnie Twój kod znajdzie sie w katalogu contrib/.
+
5.3) Jak napisac funkcje C zwracajaca krotke (tuple)?
- W wersjach PostgreSQL od numeru 7.3, funckje zwracajace tabele sa w pelni
- wspierane w C, PL/PgSQL i SQL. Sprawdz w Programmer's Guide aby uzyskac
- wiecej informacji. Przykl/ad funkcji napisanej w C zwracajacej tabele
- zostal/ umieszczony w contrib/tablefunc.
+ W wersjach PostgreSQL od numeru 7.3, funckje zwracajace tabele sa w
+ pelni wspierane w C, PL/PgSQL i SQL. Sprawdz w Programmer's Guide aby
+ uzyskac wiecej informacji. Przykl/ad funkcji napisanej w C zwracajacej
+ tabele zostal/ umieszczony w contrib/tablefunc.
+
5.4) Zmienil/em plik zródl/owy. Dlaczego po rekompilacji nie widac zmiany?
- Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla plików
- nagl/ówkowych (include files). Wykonaj najpierw make clean, a nastepnie
- ponownie make. Jesli uzywasz GCC mozesz uzyc opcji --enable-depend przy
- wykonywaniu configure aby kompilator mógl/ okreslic zaleznosci
- samodzielnie.
+ Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla
+ plików nagl/ówkowych (include files). Wykonaj najpierw make clean, a
+ nastepnie ponownie make. Jesli uzywasz GCC mozesz uzyc opcji
+ --enable-depend przy wykonywaniu configure aby kompilator mógl/
+ okreslic zaleznosci samodzielnie.
Proizvol'noj stroki?
Dlya polucheniya tol'ko neskol'kih strok, esli vy znaete ih
- kolichestvo na moment vypolneniya SELECT ispol'zujte LIMIT.
- Esli est' kakoj-libo indeks, kotoryj sovpadaet s ORDER BY, to
- vozmozhno, chto ves' zapros vypolnen i ne budet. Esli vy ne znaete
- kolichestva neobhodimyh strok na moment vypolneniya SELECT,
- ispol'zujte kursor i FETCH.
+ kolichestvo na moment vypolneniya SELECT ispol'zujte LIMIT. Esli est'
+ kakoj-libo indeks, kotoryj sovpadaet s ORDER BY, to vozmozhno, chto
+ ves' zapros vypolnen i ne budet. Esli vy ne znaete kolichestva
+ neobhodimyh strok na moment vypolneniya SELECT, ispol'zujte kursor i
+ FETCH.
To SELECT a random row, use:
SELECT col
TID ispol'zuetsya dlya identifikacii special'nyh fizicheskih zapisej s
blochnymi i offset znacheniyami. TID izmenyaetsya posle togo kak
- stroki v tablice byli izmeneny ili peregruzheny.
-
- TID ispol'zuetsya indeksnymi zapisyami v kachestve ukazatelya na
- fizicheskie zapisi.
+ stroki v tablice byli izmeneny ili peregruzheny. TID ispol'zuetsya
+ indeksnymi zapisyami v kachestve ukazatelya na fizicheskie zapisi.
4.13) Pochemu ya poluchayu oshibku "ERROR: Memory exhausted in
AllocSetAlloc()"?
-PostgreSQL için Sýkça Sorulan Sorular (SSS)
-
-Son güncelleme : 15 Kasým 2004 Pazartesi - 14:47:20
-
-Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
-
-Çevirenler : Devrim Gündüz (devrim@tdmsoft.com)
-Nicolai Tufar (ntufar@tdmsoft.com)
-Volkan YAZICI (volkany@phreaker.net)
-
-Bu belgenin en güncel hali, http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
-http://www.gunduz.org/seminer/pg/FAQ_turkish.html adreslerinde görülebilir.
-
-Platforma özel sorularýnýz, http://www.PostgreSQL.org/docs/index.html adresinde yanýtlanýr.
-Genel Sorular
-1.1) PostgreSQL nedir? Nasýl okunur?
-1.2) PostgreSQL'in haklarý nedir?
-1.3) PostgreSQL, hangi Unix platformlarýnda çalýþýr?
-1.4) Hangi Unix olmayan uyarlamalarý bulunmaktadýr?
-1.5) PostgreSQL'i nereden indirebilirim?
-1.6) Desteði nereden alabilirim?
-1.7) En son sürümü nedir?
-1.8) Hangi belgelere ulaþabilirim?
-1.9) Bilinen hatalar ya da eksik özelliklere nereden ulasabilirim?
-1.10) Nasýl SQL öðrenebilirim?
-1.11) PostgreSQL 2000 yýlýna uyumlu mudur?
-1.12) Geliþtirme takýmýna nasýl katýlabilirim??
-1.13) Bir hata raporunu nasýl gönderebilirim?
-1.14) PostgreSQL, diðer VTYS(DBMS) lerle nasýl karþýlaþtýrýlabilir?
-1.15) PostgreSQL'e maddi açýdan nasýl destek olabilirim?
-Kullanýcý/istemci Sorularý
-2.1) PostgreSQL için ODBC sürücüleri var mý?
-2.2) PostgreSQL'i web sayfalarýnda kullanabilmek için hangi araçlar bulunmaktadýr?
-2.3) PostgreSQL'in grafik kullanýcý arabirimi var mýdýr?
-2.4) PostgreSQL ile iletiþimi kurabilmek için hangi dilleri kullanabilirim?
-Yönetimsel Sorular
-3.1) PostgreSQL'i /usr/local/pgsql dizininden baþka dizinlere nasýl kurabilirim?
-3.2) Postmaster'ý baþlattýðýmda Bad System Call ya da core dumped mesajý alýyorum. Neden?
-3.3) Postmaster'ý baþlattýðýmda, IpcMemoryCreate hatasý alýyorum. Neden?
-3.4) Postmaster'ý, baþlattýðýmda, IpcSemaphoreCreate hatasý alýyorum. Neden?
-3.5) Diðer bilgisayarlarýn benim PostgreSQL veritabaný sunucuma baðlantýlarýný nasýl kontrol edebilirim?
-3.6) Veritabaný motorunu daha iyi baþarým icin nasýl ayarlayabilirim?
-3.7) Hangi hata ayýklama özellikleri bulunmaktadýr?
-3.8) Baðlanmaya çalýþýrken, neden "Sorry, too many clients" hatasýný alýyorum. Neden?
-3.9) pgsql_tmpdizinin içindeki dosyalar nelerdir?
-3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload iþlemi gerçekleþtirmek zorundayým?
-3.11) Nasýl bir donaným kullanmalýyým?br>
-Ýþletimsel Sorular
-4.1) Binary cursor ve normal cursor arasýndaki fark nedýr?
-4.2) Sorgunun sadece ilk birkaç satýrýný nasýl SELECT edebilirim?
-4.3) psql'in içinde gördügüm tablolarýn ya da diðer þeylerin listesini nasýl alabilirim?
-4.4) Bir tablodan bir kolonu nasýl kaldýrabilirim?
-4.5) Bir satýr, tablo ve veritabaný için en fazla büyüklük nedir?
-4.6) Tipik bir metin dosyasýndaki veriyi saklamak için ne kadar disk alaný gereklidir?
-4.7) Veritabanýnda hangi tablo ya da index'lerin tanýmlandýðýný nasýl görebilirim?
-4.8) Sorgularým cok yavaþ, ya da index'lerimi kullanmýyorlar. Neden?
-4.9) Query-optimizer'ýn sorgularýmý nasýl deðerlendirdiðini, iþleme soktuðunu nasýl görebilirim?
-4.10) R-tree index nedir?
-4.11) Genetic Query Optimizer nedir?
-4.12) Düzenli ifade (Regular Expression) aramalarýný ve büyük/küçük harfe duyarsýz aramalarý nasýl yapabilirim? Bu
-büyük/küçük harfe duyarlý aramalar için index'i nasýl kullanabilirim?
-4.13) Bir sorguda, bir alanýn NULL olduðunu nasýl ortaya çýkarabilirim?
-4.14) Çesitli karakter tipleri arasýndaki farklar nelerdir?
-4.15.1) Nasýl serial/otomatik artan (auto-incrementing) bir alan yaratabilirim?
-4.15.2) Serial giriþinin deðerini nasýl alabilirim?
-4.15.3) currval() ve nextval() diðer kullanýcýlara sorun yaratmaz mý?
-4.15.4) Neden sequence sayýlarýn transaction iþleminin iptalinden sonra yeniden kullanýlýyor? Neden sequence/SERIAL
-kolonumdaki sayýlarda atlamalar oluyor?
-4.16) OID nedir? TID nedir?
-4.17) PostgreSQL' de kullanýlan bazý terimlerin anlamlarý nelerdir?
-4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatasýný alýyorum?
-4.19) Hangi PostgreSQL sürümünü çalýstýrdýðýmý nasýl görebilirim?
-4.20) Neden large-object iþlemlerim, "invalid large obj descriptor" hatasýný veriyor?
-4.21) Þu andaki zamaný öntanýmlý deðer olarak kabul eden kolonu nasýl yaratýrým?
-4.22) Neden IN kullanan subquery'lerim çok yavaþ?
-4.23) Outer join iþlemini nasýl yapabilirim?
-4.24) Ayný anda birden fazla veritabanýnda nasýl iþlem yapabilirim?
-4.25) Bir fonksiyondan nasýl çoklu satýr ya da kolon döndürebilirim?
-4.26) Neden Pl/PgSQL fonksiyonlarý içinden güvenli bir þekilde tablo yaratma/kaldýrma iþlemlerini yapamýyoruz?
-4.27) Hangi þifreleme seçenekleri bulunmaktadýr?
-PostgreSQL Özelliklerini Geniþletmek
-5.1) Kullanýcý-tanýmlý bir fonksiyon yazdým. psql'de çalýþtýrdýðým zaman neden core dump ediyor?
-5.2) PostgreSQL'e nasýl yeni veri tipleri/fonksiyonlar ekleyebilirim?
-5.3) Bir tuple döndürmek için bir C fonksiyonunu nasýl yazarým?
-5.4) Bir kaynak dosyasýnda deðiþiklik yaptým. Yeniden derlememe raðmen deðiþiklik geçerli olmuyor. Neden?
-Genel Sorular
-1.1) PostgreSQL nedir? Nasýl okunur?
-
-PostgreSQL, Post-Gres-Q-L. olarak okunur
-
-PostgreSQL, yeni-nesil VTYS araþtýrma prototipi olan POSTGRES veritabaný yönetim sisteminin geliþtirilmesidir.
-POSTGRES'in zengin veri tiplerini ve güçlü veri modelini tutarken, SQL'in geliþtirilmiþ alt kümesi olan PostQuel dilini
-kullanýr. PostgreSQL ücretsizdir ve kaynak kodu açýk daðýtýlýr.
-
-PostgreSQL, PostgreSQL geliþtirme listesine üye olan bir Internet geliþtirici takýmý tarafýndan geliþtirilir. Þu andaki
-koordinatör, Marc G. Fournier (scrappy@PostgreSQL.org). (Bu takýma nasýl katýlacagýnýzý öðrenmek için 1.6 numaralý
-maddeyi okuyunuz.) Bu takým, tüm PostgreSQL geliþiminden sorumludur.
-
-PostgreSQL 1.01 sürümünün yazarlarý Andrew Yu ve Jolly Chen idi. Bunlarýn dýþýnda bir kaç kisi de uyarlama, hata
-ayýklama ve kodun geliþtirilmesi için çalýsmýþtý. PostgreSQL'in türediði orijinal Postgres kodu, lisans, lisansüstü ve
-akademisyenler tarafýndan, Professor Michael Stonebraker (University of California, Berkeley) koordinatörlügünde
-yazýlmýþtýr.
-
-Berkley'deki yazýlýmýn adý Postgres idi. SQL uyumluluðu 1995'te eklenince, adý Postgres 95 oldu. 1996 yýlýnýn
-sonlarýnda adý PostgreSQL olarak deðiþtirildi.
-1.2) PostgreSQL'in haklarý nedir?
-
-PostgreSQL Data Base Management System
-
-Portions copyright (c) 1996-2002, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the
-University of California
-
-Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and
-without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the
-following two paragraphs appear in all copies.
-
-IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
-CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
-THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
-BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
-MODIFICATIONS.
-
-Üstteki metin klasik açýk-kod lisansý olan BSD lisansýdýr. Kaynak kodun nasýl kullanýlabileceðine dair sýnýrlamalarý
-yoktur. Bu lisansý seviyoruz. Deðiþtirme niyetimiz bulunmamaktadýr.
-1.3) PostgreSQL, hangi Unix platforlarýnda çalýþýr?
-
-Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i çalýþtýracaktýr. Ayrýntýlý bilgi için kurulum belgelerine
-bakabilirsiniz.
-1.4) Hangi Unix olmayan uyarlamalarý bulunmaktadýr?
-
-PostgreSQL 8.0 sürümü ile , PostgreSQL artýk Win2000, WinXP ve Win2003 gibi Microsoft Windows NT tabanlý iþletim
-sistemlerinde doðal olarak çalýþmaya baþlamýþtýr. Paketlenmiþ bir kurulum programý, http://pgfoundry.org/projects/pginstaller
-adresinden indirilebilir.
-
-Ayrýca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktadýr.
-1.5) PostgreSQL'i nereden indirebilirim?
-
-PostgreSQL için ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub adresidir. Yansýlar için, ana web sayfamýza
-bakabilirsiniz.
-1.6) Nereden destek alabilirim?
-
-Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL konusundaki tartýþmalara açýktýr. Üye olmak için,
-aþaðýdaki satýrlarý e-postanýzýn body kýsmýna (konu kýsmýna deðil) yazýp, pgsql-general-request@PostgreSQL.org adresine
-gönderin:
+ PostgreSQL için Sýkça Sorulan Sorular (SSS)
+
+ Son güncelleme : 15 Kasým 2004 Pazartesi - 15:03:23
+
+ Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
+
+ Çevirenler : Devrim Gündüz (devrim@tdmsoft.com)
+ Nicolai Tufar (ntufar@tdmsoft.com)
+ Volkan YAZICI (volkany@phreaker.net)
+
+ Bu belgenin en güncel hali,
+ http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
+ http://www.gunduz.org/seminer/pg/FAQ_turkish.html adreslerinde
+ görülebilir.
+
+ Platforma özel sorularýnýz, http://www.PostgreSQL.org/docs/index.html
+ adresinde yanýtlanýr.
+ _________________________________________________________________
+
+ Genel Sorular
+
+ 1.1) PostgreSQL nedir? Nasýl okunur?
+ 1.2) PostgreSQL'in haklarý nedir?
+ 1.3) PostgreSQL, hangi Unix platformlarýnda çalýþýr?
+ 1.4) Hangi Unix olmayan uyarlamalarý bulunmaktadýr?
+ 1.5) PostgreSQL'i nereden indirebilirim?
+ 1.6) Desteði nereden alabilirim?
+ 1.7) En son sürümü nedir?
+ 1.8) Hangi belgelere ulaþabilirim?
+ 1.9) Bilinen hatalar ya da eksik özelliklere nereden ulasabilirim?
+ 1.10) Nasýl SQL öðrenebilirim?
+ 1.11) PostgreSQL 2000 yýlýna uyumlu mudur?
+ 1.12) Geliþtirme takýmýna nasýl katýlabilirim??
+ 1.13) Bir hata raporunu nasýl gönderebilirim?
+ 1.14) PostgreSQL, diðer VTYS(DBMS) lerle nasýl karþýlaþtýrýlabilir?
+ 1.15) PostgreSQL'e maddi açýdan nasýl destek olabilirim?
+
+ Kullanýcý/istemci Sorularý
+
+ 2.1) PostgreSQL için ODBC sürücüleri var mý?
+ 2.2) PostgreSQL'i web sayfalarýnda kullanabilmek için hangi araçlar
+ bulunmaktadýr?
+ 2.3) PostgreSQL'in grafik kullanýcý arabirimi var mýdýr?
+ 2.4) PostgreSQL ile iletiþimi kurabilmek için hangi dilleri
+ kullanabilirim?
+
+ Yönetimsel Sorular
+
+ 3.1) PostgreSQL'i /usr/local/pgsql dizininden baþka dizinlere nasýl
+ kurabilirim?
+ 3.2) Postmaster'ý baþlattýðýmda Bad System Call ya da core dumped
+ mesajý alýyorum. Neden?
+ 3.3) Postmaster'ý baþlattýðýmda, IpcMemoryCreate hatasý alýyorum.
+ Neden?
+ 3.4) Postmaster'ý, baþlattýðýmda, IpcSemaphoreCreate hatasý alýyorum.
+ Neden?
+ 3.5) Diðer bilgisayarlarýn benim PostgreSQL veritabaný sunucuma
+ baðlantýlarýný nasýl kontrol edebilirim?
+ 3.6) Veritabaný motorunu daha iyi baþarým icin nasýl ayarlayabilirim?
+ 3.7) Hangi hata ayýklama özellikleri bulunmaktadýr?
+ 3.8) Baðlanmaya çalýþýrken, neden "Sorry, too many clients" hatasýný
+ alýyorum. Neden?
+ 3.9) pgsql_tmpdizinin içindeki dosyalar nelerdir?
+ 3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload
+ iþlemi gerçekleþtirmek zorundayým?
+ 3.11) Nasýl bir donaným kullanmalýyým?br>
+
+ Ýþletimsel Sorular
+
+ 4.1) Binary cursor ve normal cursor arasýndaki fark nedýr?
+ 4.2) Sorgunun sadece ilk birkaç satýrýný nasýl SELECT edebilirim?
+ 4.3) psql'in içinde gördügüm tablolarýn ya da diðer þeylerin listesini
+ nasýl alabilirim?
+ 4.4) Bir tablodan bir kolonu nasýl kaldýrabilirim?
+ 4.5) Bir satýr, tablo ve veritabaný için en fazla büyüklük nedir?
+ 4.6) Tipik bir metin dosyasýndaki veriyi saklamak için ne kadar disk
+ alaný gereklidir?
+ 4.7) Veritabanýnda hangi tablo ya da index'lerin tanýmlandýðýný nasýl
+ görebilirim?
+ 4.8) Sorgularým cok yavaþ, ya da index'lerimi kullanmýyorlar. Neden?
+ 4.9) Query-optimizer'ýn sorgularýmý nasýl deðerlendirdiðini, iþleme
+ soktuðunu nasýl görebilirim?
+ 4.10) R-tree index nedir?
+ 4.11) Genetic Query Optimizer nedir?
+ 4.12) Düzenli ifade (Regular Expression) aramalarýný ve büyük/küçük
+ harfe duyarsýz aramalarý nasýl yapabilirim? Bu büyük/küçük harfe
+ duyarlý aramalar için index'i nasýl kullanabilirim?
+ 4.13) Bir sorguda, bir alanýn NULL olduðunu nasýl ortaya
+ çýkarabilirim?
+ 4.14) Çesitli karakter tipleri arasýndaki farklar nelerdir?
+ 4.15.1) Nasýl serial/otomatik artan (auto-incrementing) bir alan
+ yaratabilirim?
+ 4.15.2) Serial giriþinin deðerini nasýl alabilirim?
+ 4.15.3) currval() ve nextval() diðer kullanýcýlara sorun yaratmaz mý?
+ 4.15.4) Neden sequence sayýlarýn transaction iþleminin iptalinden
+ sonra yeniden kullanýlýyor? Neden sequence/SERIAL kolonumdaki
+ sayýlarda atlamalar oluyor?
+ 4.16) OID nedir? TID nedir?
+ 4.17) PostgreSQL' de kullanýlan bazý terimlerin anlamlarý nelerdir?
+ 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatasýný
+ alýyorum?
+ 4.19) Hangi PostgreSQL sürümünü çalýstýrdýðýmý nasýl görebilirim?
+ 4.20) Neden large-object iþlemlerim, "invalid large obj descriptor"
+ hatasýný veriyor?
+ 4.21) Þu andaki zamaný öntanýmlý deðer olarak kabul eden kolonu nasýl
+ yaratýrým?
+ 4.22) Neden IN kullanan subquery'lerim çok yavaþ?
+ 4.23) Outer join iþlemini nasýl yapabilirim?
+ 4.24) Ayný anda birden fazla veritabanýnda nasýl iþlem yapabilirim?
+ 4.25) Bir fonksiyondan nasýl çoklu satýr ya da kolon döndürebilirim?
+ 4.26) Neden Pl/PgSQL fonksiyonlarý içinden güvenli bir þekilde tablo
+ yaratma/kaldýrma iþlemlerini yapamýyoruz?
+ 4.27) Hangi þifreleme seçenekleri bulunmaktadýr?
+
+ PostgreSQL Özelliklerini Geniþletmek
+
+ 5.1) Kullanýcý-tanýmlý bir fonksiyon yazdým. psql'de çalýþtýrdýðým
+ zaman neden core dump ediyor?
+ 5.2) PostgreSQL'e nasýl yeni veri tipleri/fonksiyonlar ekleyebilirim?
+ 5.3) Bir tuple döndürmek için bir C fonksiyonunu nasýl yazarým?
+ 5.4) Bir kaynak dosyasýnda deðiþiklik yaptým. Yeniden derlememe raðmen
+ deðiþiklik geçerli olmuyor. Neden?
+ _________________________________________________________________
+
+ Genel Sorular
+
+ 1.1) PostgreSQL nedir? Nasýl okunur?
+
+ PostgreSQL, Post-Gres-Q-L. olarak okunur
+
+ PostgreSQL, yeni-nesil VTYS araþtýrma prototipi olan POSTGRES
+ veritabaný yönetim sisteminin geliþtirilmesidir. POSTGRES'in zengin
+ veri tiplerini ve güçlü veri modelini tutarken, SQL'in geliþtirilmiþ
+ alt kümesi olan PostQuel dilini kullanýr. PostgreSQL ücretsizdir ve
+ kaynak kodu açýk daðýtýlýr.
+
+ PostgreSQL, PostgreSQL geliþtirme listesine üye olan bir Internet
+ geliþtirici takýmý tarafýndan geliþtirilir. Þu andaki koordinatör,
+ Marc G. Fournier (scrappy@PostgreSQL.org). (Bu takýma nasýl
+ katýlacagýnýzý öðrenmek için 1.6 numaralý maddeyi okuyunuz.) Bu takým,
+ tüm PostgreSQL geliþiminden sorumludur.
+
+ PostgreSQL 1.01 sürümünün yazarlarý Andrew Yu ve Jolly Chen idi.
+ Bunlarýn dýþýnda bir kaç kisi de uyarlama, hata ayýklama ve kodun
+ geliþtirilmesi için çalýsmýþtý. PostgreSQL'in türediði orijinal
+ Postgres kodu, lisans, lisansüstü ve akademisyenler tarafýndan,
+ Professor Michael Stonebraker (University of California, Berkeley)
+ koordinatörlügünde yazýlmýþtýr.
+
+ Berkley'deki yazýlýmýn adý Postgres idi. SQL uyumluluðu 1995'te
+ eklenince, adý Postgres 95 oldu. 1996 yýlýnýn sonlarýnda adý
+ PostgreSQL olarak deðiþtirildi.
+
+ 1.2) PostgreSQL'in haklarý nedir?
+
+ PostgreSQL Data Base Management System
+
+ Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
+ Portions Copyright (c) 1994-6 Regents of the University of California
+
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose, without fee, and without a written
+ agreement is hereby granted, provided that the above copyright notice
+ and this paragraph and the following two paragraphs appear in all
+ copies.
+
+ IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
+ FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+ INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
+ ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+ PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+ CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+ UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+ Üstteki metin klasik açýk-kod lisansý olan BSD lisansýdýr. Kaynak
+ kodun nasýl kullanýlabileceðine dair sýnýrlamalarý yoktur. Bu lisansý
+ seviyoruz. Deðiþtirme niyetimiz bulunmamaktadýr.
+
+ 1.3) PostgreSQL, hangi Unix platforlarýnda çalýþýr?
+
+ Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i
+ çalýþtýracaktýr. Ayrýntýlý bilgi için kurulum belgelerine
+ bakabilirsiniz.
+
+ 1.4) Hangi Unix olmayan uyarlamalarý bulunmaktadýr?
+
+ PostgreSQL 8.0 sürümü ile , PostgreSQL artýk Win2000, WinXP ve Win2003
+ gibi Microsoft Windows NT tabanlý iþletim sistemlerinde doðal olarak
+ çalýþmaya baþlamýþtýr. Paketlenmiþ bir kurulum programý,
+ http://pgfoundry.org/projects/pginstaller. adresinden indirilebilir.
+
+ Ayrýca, http://forge.novell.com adresinde Novell Netware 6 portu
+ bulunmaktadýr.
+
+ 1.5) PostgreSQL'i nereden indirebilirim?
+
+ PostgreSQL için ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub
+ adresidir. Yansýlar için, ana web sayfamýza bakabilirsiniz.
+
+ 1.6) Nereden destek alabilirim?
+
+ Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL
+ konusundaki tartýþmalara açýktýr. Üye olmak için, aþaðýdaki satýrlarý
+ e-postanýzýn body kýsmýna (konu kýsmýna deðil) yazýp,
+ pgsql-general-request@PostgreSQL.org adresine gönderin:
subscribe
end
-Ayný zamanda, bir digest listesi bulunmaktadýr. Bu listeye üye olmak için, pgsql-general-digest-request@PostgreSQL.org
-adresine, body kýsmýnda
-
+ Ayný zamanda, bir digest listesi bulunmaktadýr. Bu listeye üye olmak
+ için, pgsql-general-digest-request@PostgreSQL.org adresine, body
+ kýsmýnda
subscribe
end
-yazan bir e-posta atmanýz yeterli olacaktýr.
-
-Digest postalar, ana liste 30k civarýnda e-postaya ulaþtýðýnda üyelere gönderilmektedir.
-
-Bug'lar için bir e-posta listesi bulunmaktadýr. Bu listeye üye olmak için, pgsql-bugs-request@PostgreSQL.org adresine,
-body kýsmýnda
-
+ yazan bir e-posta atmanýz yeterli olacaktýr.
+
+ Digest postalar, ana liste 30k civarýnda e-postaya ulaþtýðýnda üyelere
+ gönderilmektedir.
+
+ Bug'lar için bir e-posta listesi bulunmaktadýr. Bu listeye üye olmak
+ için, pgsql-bugs-request@PostgreSQL.org adresine, body kýsmýnda
subscribe
end
-yazan bir e-posta atmanýz yeterli olacaktýr.
-
-Ayný zamanda, geliþtiriciler için tartýþma listesi bulunmaktadýr. Bu listeye üye olmak için,
-pgsql-hackers-request@PostgreSQL.org adresine, body kýsmýnda
-
+ yazan bir e-posta atmanýz yeterli olacaktýr.
+
+ Ayný zamanda, geliþtiriciler için tartýþma listesi bulunmaktadýr. Bu
+ listeye üye olmak için, pgsql-hackers-request@PostgreSQL.org adresine,
+ body kýsmýnda
subscribe
end
-yazan bir e-posta atmanýz yeterli olacaktýr.
-
-Bunun dýþýndaki e-posta listelerine ve PostgreSQL hakkýnda bilgiye, PostgreSQL WWW ana sayfasýndan ulasabilirsiniz:
-http://www.PostgreSQL.org
-
-Ayný zamanda, EFNet üzerinde, #PostgreSQL adlý bir IRC kanalý bulunmaktadýr. Bunun için, irc -c '#PostgreSQL' "$USER"
-irc.phoenix.net Unix komutunu kullanabilirsiniz.
-
-Ticari destek veren firmalarýn listesine
-
-http://www.postgresql.org/users-lounge/commercial-support.html
-
-adresinden ulaþbilirsiniz.
-1.7) En son sürüm nedir?
-
-PostgreSQL'in son sürümü 7.4.6'dýr.
-
-Her 6-8 ayda ana sürüm çýkarýlmasý planlanmaktadýr.
-1.8) Hangi belgelere ulaþabilirim?
-
-Daðýtýmýn içinde, kitapçýklar, kitapçýk sayfalarý ve bazý küçük örnekler verilmektedir. /doc dizinine bakýnýz. Ayrýca,
-bu el kitapçýklarýný online olarak http://www.PostgreSQL.org/docs/ adresinden inceleyebilirsiniz.
-
-http://www.PostgreSQL.org/docs/awbook.html ve http://www.commandprompt.com/ppbook adreslerinde PostgreSQL kitaplarý
-bulunmaktadýr. PostgreSQL kitablarýnýn listesine, http://www.ca.PostgreSQL.org/books/ adresinden ulaþaiblirsiniz.
-Ayrýca, PostgreSQL konusundaki teknik makalelere de http://techdocs.PostgreSQL.org/ adresinden ulaþabilirsiniz.
-
-psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar, aggregate'ler, vb. ile ilgili güzel komutlarý vardýr.
-
-Web sitemiz daha fazla belgeyi içermektedir.
-1.9) Bilinen hatalar ya da eksik özelliklere nereden ulaþabilirim?
-
-PostgreSQL SQL-92 uyumluluðu içindedir, standartlardan fazla da özellikleri bulunmaktadýr. Bilinen hatalar, eksik
-özellikler ve gelecek ile ilgili planlar için TODO listesine bakýnýz.
-1.10) Nasýl SQL öðrenebilirim?
-
-http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL ögretecektir. http://www.commandprompt.com/ppbook
-adresinde de bir baska PostgreSQL kitabý bulunmaktadýr.
-
-http://www.intermedia.net/support/sql/sqltut.shtm,
-http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM http://sqlcourse.com ve http://sqlcourse2.com
-adreslerinde de güzel belgeler bulunmaktadýr.
-
-Bir baþkasý da, http://members.tripod.com/er4ebus/sql/index.htm adresinde bulunan "Teach Yourself SQL in 21 Days,
-Second Edition" kitabýdýr.
-
-Bazý kullanýcýlarýmýz da þu kitabý önermektedirler: "The Practical SQL Handbook, Bowman, Judith S., et
-al.,Addison-Wesley". Bazýlarý ise "The Complete Reference SQL, Groff et al., McGraw-Hill" kitabýný önermektedirler.
-1.11) PostgreSQL 2000 yýlýna uyumlu mudur?
-
-Evet.
-1.12) Geliþtirme takýmýna nasýl katýlabilirim?
-
-Öncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da daðýtýmýn içindeki PostgreSQL Developer belgesini
-okuyun. Ardýndan, pgsql-hackers ve pgsql-patches listelerine üye olun. Üçüncü olarak da, pgsql-pacthes listesine yüksek
-kalitede yamalar gönderin.
-
-PostgreSQL CVS arþivine eriþim izni olan, 10 kadar geliþtirici bulunmaktadýr. Hepsi defalarca, diðer kiþilerin
-yaptýðýndan çok daha yüksek-kaliteli yamalar göndermiþlerdir. Ayrýca biz de bu geliþtiricilerin ekledikleri yamalarýn
-yüksek kalitede olduðuna güveniyoruz.
-1.13) Bir hata raporunu nasýl gönderebilirim?
-
-PostgreSQL BugTool sayfasýna gidiniz. O sayfada bir bug bildirmek için neleri yapmanýz gerektiði anlatýlmýþtýr.
-
-Ayrýca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir PostgreSQL sürümü ya da yamasý olup olmadýðýni kontrol
-ediniz.
-1.14) PostgreSQL, diger DBMS'lerle nasýl karþýlastýrýlabilir?
-
-Bir yazýlýmýn gücünü ölçmek için çeþitli yollar vardýr: Yazýlýmýn özellikleri, baþarýmý, güvenilirliði, desteði ve
-ücreti.
-
-Özellikler:
-
-PostgreSQL mevcut büyük ticari veritabanlarýnýn, transaction, subselect, trigger, view, foreign key referential
-integrity ve sophisticated locking gibi (user-defined types), rules, inheritance ve lock cakýþmalarýný düþürmek için
-multi-version uyumluluk özellikleri bulunmaktadýr.
-
-Performans (Baþarým):
-
-PostgreSQL, diðer ticari ve açýk kaynak kodlu veritabanlarýyla yakýn baþarýmý saðlar. Bazý açýlardan daha hýzlýdýr,
-diðer açýlardan da yavaþtýr. MySQL ya da daha zayýf veritabanlarý ile karþýlaþtýrýldýðýnda, INSERT/UPDATE iþlemlerinde,
-transaction bazlý çalýstýðýmýz için daha yavaþýz. MySQL, yukarýdaki "özellikler" kýsmýnda belirtilenlerden hiç birine
-sahip deðildir. Biz, baþarýmýmýzý her sürümde arttýrsak da, esneklik ve geliþmiþ özellikler için yapýlanmýþ durumdayýz.
-PostgreSQL'i MySQL ile karþýlaþtýran þu web sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
-
-Güvenilirlik:
-
-DBMS'lerin güvenilir olmasý gerketiði, yoksa deðerleri olmayacaðýný düþünüyoruz. Çok iyi test edilmiþ, dengeli çalýsan
-minimum sayýda hata içeren kod sunmaya çalýþýyoruz. Her bir sürüm en az 1 aylýk beta testlerinden geçirilmektedir.
-Sürüm geçmiþine bakarsanýz, üretime hazýr, dengeli ve kararlý kodlar sunduðumuzu görebilirsiniz. Bu alanda, diðer
-veritabaný yazýlýmlarýna üstünlüðümüz olduðuna inanmaktayýz.
-
-Destek:
-
-E-posta listemiz, oluþan herhangi bir sorunu çözebilecek büyük sayýda kullanýcý ve geliþtirici grubunu içerir.
-Sorununuz için, en az bir ticari veritabaný kadar rahat çözüm bulabilirsiniz. Gelistiricilere, kullanýcý grubuna,
-belgelere ve kaynak koda direk olarak eriþebilme, PostgreSQL desteðini, diðer DBMS'lere göre daha önemli kýlar.
-Gereksinimi olanlara, ticari destek verilebilir. (Destek için 1.6 bölümüne bakýnýz.)
-
-Fiyat:
-
-Ticari ve ticari olmayan tüm kullanýmlarýnýz için PostgreSQL ücretsizdir. Kodumuzu, yukarýda belirtilen BSD-stili
-lisanstaki sýnýrlamalar hariç, ürününüzün içine ekleyebilirsiniz.
-1.15) PostgreSQL'e maddi açýdan nasýl destek olabilirim?
-
-PostgreSQL, 1996 yýlýndan beri 1. sýnýf altyapýya sahiptir. Bunun için, yýllar boyu çalýþýp bu altyapýyý oluþturup
-yöneten Marc Fournier'e teþekkürler.
-
-Bir açýk kaynak kodlu proje için, kaliteli altyapý çok önemlidir. Bu altyapý, projenin kesilmesini önler ve projenin
-ilerlemesini hýzlandýrýr.
-
-Tabii ki bu altyapý ucuz deðildir. Ýþlerin yürümesi için çeþitli yýlýk ve anlýk harcamalarýmýz olmaktadýr. Eðer siz ya
-da þirketinizin bu çabamýza baðýþta bulunabilecek parasý varsa, lütfen http://store.pgsql.com adresine gidiniz
-ve baðýþta, hibede bulununuz.
-
-Web sayfasýnýn 'PostgreSQL Inc.' den bahsetmesine raðmen, "katkýda bulunanlar" (contributors) maddesi sadece PostgreSQL
-projesini desteklemek içindir ve belirli bir þirketin para kaynaðý deðildir. isterseniz, baðlantý adresine bir çek
-gönderebilirsiniz.
-Kullanýcý/Ýstemci Sorularý
-2.1) PostgreSQL icin ODBC sürücüleri var mý?
-
-iki tane ODBC sürücüsü bulunmaktadýr: PsqlODBC ve OpenLink ODBC.
-
-PsqlODBC'i http://gborg.postgresql.org/project/psqlodbc/projdisplay.php adresinden indirebilirsiniz.
-
-OpenLink ODBC http://www.openlinksw.com adresinden alýnabilir.Bu sürücü, kendi standart ODBC istemci yazýlýmý ile
-çalýstýðýndan, destekledikleri her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC bulunmalidir.
-
-Ücretsiz sürümü olmakla beraber, ticari kalitede destek almak isteyenlere satmak isteyeceklerdir. Sorularýnýzý lütfen
-postgres95@openlink.co.uk adresine gönderiniz.
-2.2) PostgreSQL'i web sayfalarýnda kullanabilmek için hangi araçlar bulunmaktadýr?
-
-http://www.webreview.com/ adresinde, arka planda veritabaný çalýstýran Web sayfalarý için giriþ seviyesinde bilgi
-bulunmaktadýr.
-
-Web ile bütünleþme için, PHP () mükemmel bir arabirim sunar.
-
-Karmaþýk sorunlar için, çoðu kisi Perl arabirimini ve CGI.pm ya da mod_perl kullanýr.
-2.3) PostgreSQL'in grafik kullanýcý arabirimi var mýdýr?
-
-Çeþitli grafik arabirimlerimiz bulunmaktadýr. Bunlarýn arasýnda, PgAccess (http://www.pgaccess.org/), PgAdmin II
-(http://www.pgadmin.org/, sadece Win32 için), RHDB Admin (http://sources.redhat.com/rhdb/) ve Rekall
-(http://www.thekompany.com/products/rekall/) bulunmaktadýr. Ayrýca, PostgreSQL için web tabanlý bir arabirim olan
-PHPPgAdmin (http://phppgadmin.sourceforge.net/) bulunmaktadýr.
-
-Daha ayrýntýlý liste için http://techdocs.postgresql.org/guides/GUITools adresine bakabilirsiniz.
-2.4) PostgreSQL ile iletiþimi kurabilmek için hangi dilleri kullanabilirim?
-
- * C (libpq)
- * Embedded C (ecpg)
- * Java (jdbc)
- * Python (PyGreSQL)
- * TCL (libpgtcl)
-
-Diðerleri için, http://gborg.postgresql.org adresindeki Drivers/Interfaces bölümüne bakabilirsiniz.
-Yönetimsel Sorular
-3.1) PostgreSQL'i, /usr/local/pgsql dizininden baþka dizinlere nasýl kurabilirim?
-
-configure betiðini çalýstýrýrken, --prefix seçeneðini veriniz.
-3.2) postmaster'i baslattýgýmda, a Bad System Call ya da core dumped mesajý alýyorum. Neden?
-
-Bunun birçok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey, çekirdeginize System V uzantýlarýnýn kurulu olup
-olmadýgýný kontrol etmek olabilir. PostgreSQL shared memory ve semaphores için çekirdek destegine gereksinim duyar.
-3.3) postmaster'i baþlattýðýmda, ýpcMemoryCreate hatasý alýyorum. Neden?
-
-Ya çekirdeðinizde shared memory desteðiniz düzgünce yapýlandýrýlmamýþtýr, ya da çekirdeðinizdeki mevcut shared memory
-miktarýný büyütmeniz gerekecektir. Gereksinim duyacaðýnýz miktar, mimarinize ve postmaster için ayarladýgýnýz tampon
-ile backend iþlemi sayýsýna baðlýdýr. Tüm sistemler için, tamponlar ve iþlemlerde öntanýmlý sayýlarla, ~ 1MB kadar yere
-gereksinmeniz olacaktýr. PostgreSQL 7.3.2 Sistem Yöneticileri Rehberi'ne, shared memory ve semaphorelar hakkýndaki
-ayrýntýlý bilgi için bakabilirsiniz.
-3.4) postmaster'ý baþlattýðýmda, ýpcSemaphoreCreate hatasý alýyorum. Neden?
-
-Eðer hata, "ýpcSemaphoreCreate: semget failed (No space left on device)" ise, çekirdeðiniz yeterli semaphore ile
-yapýlandýrýlmamýþ demektir. Postgres, her bir potansiyel backend için bir semaphore gereksinimi duyar. Geçici bir
-çözüm, postmasterý backend iþlemleri için daha az miktarda sýnýrla baþlatmak olabilir. -N'i varsayýlan deðer olan
-32'den küçük bir deðerle baþlatýnýz. Daha kalýcý bir çözüm, çekirdeðinizin SEMMNS ve SEMMNI parametrelerini yükseltmek
-olacaktýr.
-
-Çalýþmayan semaphore'lar aðýr veritabaný iþlemlerinde çökme yaratabilirler.
-
-Eðer hata mesajýnýz baþka bir þey ise, çekirdeðinizde semaphore desteðini yapýlandýrmamýþ olabilirsiniz. Shared memory
-ve semaphore'lar hakkýndaki daha ayrýntýlý bilgi için PostgreSQL 7.3.2 Sistem Yöneticileri Rehberi'ne bakabilirsiniz.
-3.5) Diger bilgisayarlarýn benim PostgreSQL veritabaný sunucuma baðlantýlarýný nasýl kontrol edebilirim?
-
-Ön tanýmlý olarak, PostgreSQL sadece yerel makineden Unix domain sockets kullanarak baðlanýlmasýna izin verir. Diger
-makineler, postmaster'a -i etiketini geçirmezseniz ve $PGDATA/pg_hba.conf dosyasýný düzenleyerek host-based
-authentication'a olanak vermezseniz, baðlantý yapamayacaklardýr.
-3.6) Veritabani motorunu daha iyi baþarým için nasýl ayarlayabilirim?
-
-Index'ler sorgularý hýzlandýrabilir. EXPLAIN komutu, PostgreSQL'in sorgunuzu nasýl yorumladýðýný ve hangi index'leri
-kullandýðýný görmenize izin verir.
-
-Eðer cok fazla INSERT iþlemi yapýyorsanýz, bunlarý büyük bir toplu iþlem dosyasýkullanýp COPY komutu ile veritabanýna
-girmeyi deneyiniz. Bu, tekil INSERT'lerden daha hýzlýdýr. Ýkinci olarak, BEGIN WORK/COMMIT transaction bloðu içinde
-olmayan ifadeler kendi transaction'larýndaymýþ gibi düþünülür. Çoklu ifadeleri tek bir transaction bloðu içinde
-yapabilirsiniz. Bu, transaction overhead'ini düþürecektir. Tek bir transaction bloðu içinde birden çok ifadeyi
-çalýþtýrmayý deneyebilirsiniz. Bu da ayný þekilde, transaction overhead'ini düþürür.
-
-Çeþitli ayarlama seçenekleri mevcuttur. fsync() iþlemini, postmaster'ý -o -F seçeneði ile baþlatarak devre dýþý
-býrakabilirsiniz. Bu iþlem, fsync()'lerin her transactiondan sonra diski flush etmesini engelleyecektir.
-
-Ayný zamanda, postmaster'i -B seçeneði ile baþlatýp, backend iþlemleri tarafýndan kullanýlan shared memory buffers
-sayýlarýný arttýrabilirsiniz. Eðer bu parametreyi çok yüksek tutarsanýz, çekirdeðinizin shared memory bölgesindeki
-limiti aþma olasýlýðýnýz yüzünden postmaster baþlayamayabilir. Her bir tampon (buffer) 8K'dýr. Öntanýmlý sayý ise 64
-tampondur.
-
-Ayný þekilde, backend'in -S seçeneðini geçici sýralamalar için backend süreçleri tarafýndan kullanýlacak hafýzayý
-arttýrmak amacýyla kullanabilirsiniz. -S seçeneði kilobayt cinsinden deðer alýr ve ön tanýmlý deðeri 512'dir (512 K)
-
-Tablolardaki veriyi bir index'e eþlemek amacýyla gruplama için CLUSTER komutunu kullanabilirsiniz. Ayrýntýlý bilgi için
-CLUSTER komutunun yardým sayfasýna bakabilirsiniz.
-3.7) Hangi hata ayýklama özellikleri bulunmaktadýr?
-
-PostgreSQL, hata ayýklama amacýyla kullanýlabilecek durum bilgisi rapor eden çeþitli özeliklere sahiptir.
-
-Öncelikle, configure betiðini --enable-cassert seçeneðiyle çalýþtýrýrsanýz, bir çok assert() backend calýþmasýný
-gözlemler ve beklenmeyen bir durumda programý durdurur.
-
-Postmaster ve postgres çeþitli hata ayýklama seçeneklerine sahiptir. Öncelikle, postmaster'ý baþlattýðýnýzda, standart
-çýktýyý ve hatalarý bir log dosyasýna yönlendirdiðinize emin olun:
-
+ yazan bir e-posta atmanýz yeterli olacaktýr.
+
+ Bunun dýþýndaki e-posta listelerine ve PostgreSQL hakkýnda bilgiye,
+ PostgreSQL WWW ana sayfasýndan ulasabilirsiniz:
+ http://www.PostgreSQL.org
+
+ Ayný zamanda, EFNet üzerinde, #PostgreSQL adlý bir IRC kanalý
+ bulunmaktadýr. Bunun için, irc -c '#PostgreSQL' "$USER"
+ irc.phoenix.net Unix komutunu kullanabilirsiniz.
+
+ Ticari destek veren firmalarýn listesine
+
+ http://www.postgresql.org/users-lounge/commercial-support.html
+
+ adresinden ulaþbilirsiniz.
+
+ 1.7) En son sürüm nedir?
+
+ PostgreSQL'in son sürümü 7.4.6'dýr.
+
+ Her 6-8 ayda ana sürüm çýkarýlmasý planlanmaktadýr.
+
+ 1.8) Hangi belgelere ulaþabilirim?
+
+ Daðýtýmýn içinde, kitapçýklar, kitapçýk sayfalarý ve bazý küçük
+ örnekler verilmektedir. /doc dizinine bakýnýz. Ayrýca, bu el
+ kitapçýklarýný online olarak http://www.PostgreSQL.org/docs/
+ adresinden inceleyebilirsiniz.
+
+ http://www.PostgreSQL.org/docs/awbook.html ve
+ http://www.commandprompt.com/ppbook adreslerinde PostgreSQL kitaplarý
+ bulunmaktadýr. PostgreSQL kitablarýnýn listesine,
+ http://www.ca.PostgreSQL.org/books/ adresinden ulaþaiblirsiniz.
+ Ayrýca, PostgreSQL konusundaki teknik makalelere de
+ http://techdocs.PostgreSQL.org/ adresinden ulaþabilirsiniz.
+
+ psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar,
+ aggregate'ler, vb. ile ilgili güzel komutlarý vardýr.
+
+ Web sitemiz daha fazla belgeyi içermektedir.
+
+ 1.9) Bilinen hatalar ya da eksik özelliklere nereden ulaþabilirim?
+
+ PostgreSQL SQL-92 uyumluluðu içindedir, standartlardan fazla da
+ özellikleri bulunmaktadýr. Bilinen hatalar, eksik özellikler ve
+ gelecek ile ilgili planlar için TODO listesine bakýnýz.
+
+ 1.10) Nasýl SQL öðrenebilirim?
+
+ http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL
+ ögretecektir. http://www.commandprompt.com/ppbook adresinde de bir
+ baska PostgreSQL kitabý bulunmaktadýr.
+
+ http://www.intermedia.net/support/sql/sqltut.shtm,
+ http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
+ http://sqlcourse.com ve http://sqlcourse2.com adreslerinde de güzel
+ belgeler bulunmaktadýr.
+
+ Bir baþkasý da, http://members.tripod.com/er4ebus/sql/index.htm
+ adresinde bulunan "Teach Yourself SQL in 21 Days, Second Edition"
+ kitabýdýr.
+
+ Bazý kullanýcýlarýmýz da þu kitabý önermektedirler: "The Practical SQL
+ Handbook, Bowman, Judith S., et al.,Addison-Wesley". Bazýlarý ise "The
+ Complete Reference SQL, Groff et al., McGraw-Hill" kitabýný
+ önermektedirler.
+
+ 1.11) PostgreSQL 2000 yýlýna uyumlu mudur?
+
+ Evet.
+
+ 1.12) Geliþtirme takýmýna nasýl katýlabilirim?
+
+ Öncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da
+ daðýtýmýn içindeki PostgreSQL Developer belgesini okuyun. Ardýndan,
+ pgsql-hackers ve pgsql-patches listelerine üye olun. Üçüncü olarak da,
+ pgsql-pacthes listesine yüksek kalitede yamalar gönderin.
+
+ PostgreSQL CVS arþivine eriþim izni olan, 10 kadar geliþtirici
+ bulunmaktadýr. Hepsi defalarca, diðer kiþilerin yaptýðýndan çok daha
+ yüksek-kaliteli yamalar göndermiþlerdir. Ayrýca biz de bu
+ geliþtiricilerin ekledikleri yamalarýn yüksek kalitede olduðuna
+ güveniyoruz.
+
+ 1.13) Bir hata raporunu nasýl gönderebilirim?
+
+ PostgreSQL BugTool sayfasýna gidiniz. O sayfada bir bug bildirmek için
+ neleri yapmanýz gerektiði anlatýlmýþtýr.
+
+ Ayrýca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir
+ PostgreSQL sürümü ya da yamasý olup olmadýðýni kontrol ediniz.
+
+ 1.14) PostgreSQL, diger DBMS'lerle nasýl karþýlastýrýlabilir?
+
+ Bir yazýlýmýn gücünü ölçmek için çeþitli yollar vardýr: Yazýlýmýn
+ özellikleri, baþarýmý, güvenilirliði, desteði ve ücreti.
+
+ Özellikler:
+
+ PostgreSQL mevcut büyük ticari veritabanlarýnýn, transaction,
+ subselect, trigger, view, foreign key referential integrity ve
+ sophisticated locking gibi (user-defined types), rules, inheritance ve
+ lock cakýþmalarýný düþürmek için multi-version uyumluluk özellikleri
+ bulunmaktadýr.
+
+ Performans (Baþarým):
+
+ PostgreSQL, diðer ticari ve açýk kaynak kodlu veritabanlarýyla yakýn
+ baþarýmý saðlar. Bazý açýlardan daha hýzlýdýr, diðer açýlardan da
+ yavaþtýr. MySQL ya da daha zayýf veritabanlarý ile
+ karþýlaþtýrýldýðýnda, INSERT/UPDATE iþlemlerinde, transaction bazlý
+ çalýstýðýmýz için daha yavaþýz. MySQL, yukarýdaki "özellikler"
+ kýsmýnda belirtilenlerden hiç birine sahip deðildir. Biz, baþarýmýmýzý
+ her sürümde arttýrsak da, esneklik ve geliþmiþ özellikler için
+ yapýlanmýþ durumdayýz. PostgreSQL'i MySQL ile karþýlaþtýran þu web
+ sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
+
+ Güvenilirlik:
+
+ DBMS'lerin güvenilir olmasý gerketiði, yoksa deðerleri olmayacaðýný
+ düþünüyoruz. Çok iyi test edilmiþ, dengeli çalýsan minimum sayýda hata
+ içeren kod sunmaya çalýþýyoruz. Her bir sürüm en az 1 aylýk beta
+ testlerinden geçirilmektedir. Sürüm geçmiþine bakarsanýz, üretime
+ hazýr, dengeli ve kararlý kodlar sunduðumuzu görebilirsiniz. Bu
+ alanda, diðer veritabaný yazýlýmlarýna üstünlüðümüz olduðuna
+ inanmaktayýz.
+
+ Destek:
+
+ E-posta listemiz, oluþan herhangi bir sorunu çözebilecek büyük sayýda
+ kullanýcý ve geliþtirici grubunu içerir. Sorununuz için, en az bir
+ ticari veritabaný kadar rahat çözüm bulabilirsiniz. Gelistiricilere,
+ kullanýcý grubuna, belgelere ve kaynak koda direk olarak eriþebilme,
+ PostgreSQL desteðini, diðer DBMS'lere göre daha önemli kýlar.
+ Gereksinimi olanlara, ticari destek verilebilir. (Destek için 1.6
+ bölümüne bakýnýz.)
+
+ Fiyat:
+
+ Ticari ve ticari olmayan tüm kullanýmlarýnýz için PostgreSQL
+ ücretsizdir. Kodumuzu, yukarýda belirtilen BSD-stili lisanstaki
+ sýnýrlamalar hariç, ürününüzün içine ekleyebilirsiniz.
+
+ 1.15) PostgreSQL'e maddi açýdan nasýl destek olabilirim?
+
+ PostgreSQL, 1996 yýlýndan beri 1. sýnýf altyapýya sahiptir. Bunun
+ için, yýllar boyu çalýþýp bu altyapýyý oluþturup yöneten Marc
+ Fournier'e teþekkürler.
+
+ Bir açýk kaynak kodlu proje için, kaliteli altyapý çok önemlidir. Bu
+ altyapý, projenin kesilmesini önler ve projenin ilerlemesini
+ hýzlandýrýr.
+
+ Tabii ki bu altyapý ucuz deðildir. Ýþlerin yürümesi için çeþitli yýlýk
+ ve anlýk harcamalarýmýz olmaktadýr. Eðer siz ya da þirketinizin bu
+ çabamýza baðýþta bulunabilecek parasý varsa, lütfen
+ http://store.pgsql.com/ adresine gidiniz ve baðýþta, hibede bulununuz.
+
+ Web sayfasýnýn 'PostgreSQL Inc.' den bahsetmesine raðmen, "katkýda
+ bulunanlar" (contributors) maddesi sadece PostgreSQL projesini
+ desteklemek içindir ve belirli bir þirketin para kaynaðý deðildir.
+ isterseniz, baðlantý adresine bir çek gönderebilirsiniz.
+ _________________________________________________________________
+
+ Kullanýcý/Ýstemci Sorularý
+
+ 2.1) PostgreSQL icin ODBC sürücüleri var mý?
+
+ iki tane ODBC sürücüsü bulunmaktadýr: PsqlODBC ve OpenLink ODBC.
+
+ PsqlODBC'i
+ http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
+ adresinden indirebilirsiniz.
+
+ OpenLink ODBC http://www.openlinksw.com adresinden alýnabilir.Bu
+ sürücü, kendi standart ODBC istemci yazýlýmý ile çalýstýðýndan,
+ destekledikleri her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC
+ bulunmalidir.
+
+ Ücretsiz sürümü olmakla beraber, ticari kalitede destek almak
+ isteyenlere satmak isteyeceklerdir. Sorularýnýzý lütfen
+ postgres95@openlink.co.uk adresine gönderiniz.
+
+ 2.2) PostgreSQL'i web sayfalarýnda kullanabilmek için hangi araçlar
+ bulunmaktadýr?
+
+ http://www.webreview.com/ adresinde, arka planda veritabaný çalýstýran
+ Web sayfalarý için giriþ seviyesinde bilgi bulunmaktadýr.
+
+ Web ile bütünleþme için, PHP () mükemmel bir arabirim sunar.
+
+ Karmaþýk sorunlar için, çoðu kisi Perl arabirimini ve CGI.pm ya da
+ mod_perl kullanýr.
+
+ 2.3) PostgreSQL'in grafik kullanýcý arabirimi var mýdýr?
+
+ Çeþitli grafik arabirimlerimiz bulunmaktadýr. Bunlarýn arasýnda,
+ PgAccess (http://www.pgaccess.org/), PgAdmin II
+ (http://www.pgadmin.org/, sadece Win32 için), RHDB Admin
+ (http://sources.redhat.com/rhdb/) ve Rekall
+ (http://www.thekompany.com/products/rekall/) bulunmaktadýr. Ayrýca,
+ PostgreSQL için web tabanlý bir arabirim olan PHPPgAdmin
+ (http://phppgadmin.sourceforge.net/) bulunmaktadýr.
+
+ Daha ayrýntýlý liste için
+ http://techdocs.postgresql.org/guides/GUITools adresine
+ bakabilirsiniz.
+
+ 2.4) PostgreSQL ile iletiþimi kurabilmek için hangi dilleri kullanabilirim?
+
+ * C (libpq)
+ * Embedded C (ecpg)
+ * Java (jdbc)
+ * Python (PyGreSQL)
+ * TCL (libpgtcl)
+
+ Diðerleri için, http://gborg.postgresql.org adresindeki
+ Drivers/Interfaces bölümüne bakabilirsiniz.
+ _________________________________________________________________
+
+ Yönetimsel Sorular
+
+ 3.1) PostgreSQL'i, /usr/local/pgsql dizininden baþka dizinlere nasýl
+ kurabilirim?
+
+ configure betiðini çalýstýrýrken, --prefix seçeneðini veriniz.
+
+ 3.2) postmaster'i baslattýgýmda, a Bad System Call ya da core dumped mesajý
+ alýyorum. Neden?
+
+ Bunun birçok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey,
+ çekirdeginize System V uzantýlarýnýn kurulu olup olmadýgýný kontrol
+ etmek olabilir. PostgreSQL shared memory ve semaphores için çekirdek
+ destegine gereksinim duyar.
+
+ 3.3) postmaster'i baþlattýðýmda, ýpcMemoryCreate hatasý alýyorum. Neden?
+
+ Ya çekirdeðinizde shared memory desteðiniz düzgünce
+ yapýlandýrýlmamýþtýr, ya da çekirdeðinizdeki mevcut shared memory
+ miktarýný büyütmeniz gerekecektir. Gereksinim duyacaðýnýz miktar,
+ mimarinize ve postmaster için ayarladýgýnýz tampon ile backend iþlemi
+ sayýsýna baðlýdýr. Tüm sistemler için, tamponlar ve iþlemlerde
+ öntanýmlý sayýlarla, ~ 1MB kadar yere gereksinmeniz olacaktýr.
+ PostgreSQL 7.3.2 Sistem Yöneticileri Rehberi'ne, shared memory ve
+ semaphorelar hakkýndaki ayrýntýlý bilgi için bakabilirsiniz.
+
+ 3.4) postmaster'ý baþlattýðýmda, ýpcSemaphoreCreate hatasý alýyorum. Neden?
+
+ Eðer hata, "ýpcSemaphoreCreate: semget failed (No space left on
+ device)" ise, çekirdeðiniz yeterli semaphore ile yapýlandýrýlmamýþ
+ demektir. Postgres, her bir potansiyel backend için bir semaphore
+ gereksinimi duyar. Geçici bir çözüm, postmasterý backend iþlemleri
+ için daha az miktarda sýnýrla baþlatmak olabilir. -N'i varsayýlan
+ deðer olan 32'den küçük bir deðerle baþlatýnýz. Daha kalýcý bir çözüm,
+ çekirdeðinizin SEMMNS ve SEMMNI parametrelerini yükseltmek olacaktýr.
+
+ Çalýþmayan semaphore'lar aðýr veritabaný iþlemlerinde çökme
+ yaratabilirler.
+
+ Eðer hata mesajýnýz baþka bir þey ise, çekirdeðinizde semaphore
+ desteðini yapýlandýrmamýþ olabilirsiniz. Shared memory ve
+ semaphore'lar hakkýndaki daha ayrýntýlý bilgi için PostgreSQL 7.3.2
+ Sistem Yöneticileri Rehberi'ne bakabilirsiniz.
+
+ 3.5) Diger bilgisayarlarýn benim PostgreSQL veritabaný sunucuma
+ baðlantýlarýný nasýl kontrol edebilirim?
+
+ Ön tanýmlý olarak, PostgreSQL sadece yerel makineden Unix domain
+ sockets kullanarak baðlanýlmasýna izin verir. Diger makineler,
+ postmaster'a -i etiketini geçirmezseniz ve $PGDATA/pg_hba.conf
+ dosyasýný düzenleyerek host-based authentication'a olanak vermezseniz,
+ baðlantý yapamayacaklardýr.
+
+ 3.6) Veritabani motorunu daha iyi baþarým için nasýl ayarlayabilirim?
+
+ Index'ler sorgularý hýzlandýrabilir. EXPLAIN komutu, PostgreSQL'in
+ sorgunuzu nasýl yorumladýðýný ve hangi index'leri kullandýðýný
+ görmenize izin verir.
+
+ Eðer cok fazla INSERT iþlemi yapýyorsanýz, bunlarý büyük bir toplu
+ iþlem dosyasýkullanýp COPY komutu ile veritabanýna girmeyi deneyiniz.
+ Bu, tekil INSERT'lerden daha hýzlýdýr. Ýkinci olarak, BEGIN
+ WORK/COMMIT transaction bloðu içinde olmayan ifadeler kendi
+ transaction'larýndaymýþ gibi düþünülür. Çoklu ifadeleri tek bir
+ transaction bloðu içinde yapabilirsiniz. Bu, transaction overhead'ini
+ düþürecektir. Tek bir transaction bloðu içinde birden çok ifadeyi
+ çalýþtýrmayý deneyebilirsiniz. Bu da ayný þekilde, transaction
+ overhead'ini düþürür.
+
+ Çeþitli ayarlama seçenekleri mevcuttur. fsync() iþlemini, postmaster'ý
+ -o -F seçeneði ile baþlatarak devre dýþý býrakabilirsiniz. Bu iþlem,
+ fsync()'lerin her transactiondan sonra diski flush etmesini
+ engelleyecektir.
+
+ Ayný zamanda, postmaster'i -B seçeneði ile baþlatýp, backend iþlemleri
+ tarafýndan kullanýlan shared memory buffers sayýlarýný
+ arttýrabilirsiniz. Eðer bu parametreyi çok yüksek tutarsanýz,
+ çekirdeðinizin shared memory bölgesindeki limiti aþma olasýlýðýnýz
+ yüzünden postmaster baþlayamayabilir. Her bir tampon (buffer) 8K'dýr.
+ Öntanýmlý sayý ise 64 tampondur.
+
+ Ayný þekilde, backend'in -S seçeneðini geçici sýralamalar için backend
+ süreçleri tarafýndan kullanýlacak hafýzayý arttýrmak amacýyla
+ kullanabilirsiniz. -S seçeneði kilobayt cinsinden deðer alýr ve ön
+ tanýmlý deðeri 512'dir (512 K)
+
+ Tablolardaki veriyi bir index'e eþlemek amacýyla gruplama için CLUSTER
+ komutunu kullanabilirsiniz. Ayrýntýlý bilgi için CLUSTER komutunun
+ yardým sayfasýna bakabilirsiniz.
+
+ 3.7) Hangi hata ayýklama özellikleri bulunmaktadýr?
+
+ PostgreSQL, hata ayýklama amacýyla kullanýlabilecek durum bilgisi
+ rapor eden çeþitli özeliklere sahiptir.
+
+ Öncelikle, configure betiðini --enable-cassert seçeneðiyle
+ çalýþtýrýrsanýz, bir çok assert() backend calýþmasýný gözlemler ve
+ beklenmeyen bir durumda programý durdurur.
+
+ Postmaster ve postgres çeþitli hata ayýklama seçeneklerine sahiptir.
+ Öncelikle, postmaster'ý baþlattýðýnýzda, standart çýktýyý ve hatalarý
+ bir log dosyasýna yönlendirdiðinize emin olun:
cd /usr/local/pgsql
./bin/postmaster >server.log 2>&1 &
-Bu iþlem PostgreSQL ana dizinine server.log dosyasý yerleþtirecektir. Bu dosya sunucunun yaþadýðý sorunlar ya da
-hatalar hakkýnda yararlý bilgiler içerir. -d seçeneði, hata ayýklama seviyesini belirten bir rakam ile kullanýlýr.
-Yüksek hata ayýklama seviyelerinin büyük log dosyalarý oluþturacaðýný unutmayýnýz.
-
-Eðer postmaster çalýþmýyorsa, postgres backend'ini komut satýrýndan çalýþtýrabilir ve SQL ifadenizi direk olarak
-yazabilirsiniz. Bu sadece hata ayýklama amacýyla önerilir. Burada, noktalý virgülün deðil de yeni bir satýrýn sorguyu
-sonlandýrdýðýný unutmayýnýz. Eðer hata ayýklama sembolleri ile derlediyseniz, ne olduðunu görmek için bir hata
-ayýklayýcý kullanabilirsiniz. backend postmaster'dan baþlatýlmadýðýndan, eþdeðer bir ortamda çalýþmamaktadýr ve
-locking/backend etkileþim sorunlarý artabilir.
-
-Eðer postmaster çalýþýyorsa, bir pencerede psql'i çalýþtýrýn ve psql tarafýndan kullanýlan postgres sürecinin süreç
-numarasýný (PID) bulun. Postgres süreci ile iliþkilendirmek için bir hata ayýklarýcý kullanýn. Sorgularý psql aracýlýðý
-ile çalýþtýrabilirsiniz. Eðer postgres baþlangýcýnda hata ayýklamak istiyorsanýz, PGOPTIONS="-W n" seçeneðini
-ayarlayabilir ve psql'i baþlatabilirsiniz. Bu iþlem, baþlangýcýn n saniye kadar gecikmesini saðlayacaktýr; böylece hata
-ayýklayýcýyý sürece iliþkilendirdikten sonra baþlangýç sürecinin devam etmesini saðlayabilirsiniz.
-
-postgres programý hata ayýklama ve baþarým ölçümleri için -s, -A ve -t seçeneklerine sahiptir.
-3.8) Baðlanmaya çalýþýrken, neden "Sorry, too many clients" hatasýný alýyorum?
-
-Postmaster'ýn eþzamanlý olarak baþlatabileceði backend süreçleri sýnýrlarýný arttýrmanýz gerekmektedir.
-
-Ön tanýmlý deðer 32 süreçtir. Bunu, postmaster'ý uygun -N deðeri ile ya da postgresql.conf dosyasýný düzenleyerek
-yeniden baþlatmakla arttýrabilirsiniz.
-
-Eðer -N deðerini 32'den büyük yapacaksanýz, ayný zamanda -B deðerini de deðiþtirmeniz gerektiðini unutmayýn. -B, -N'nin
-en az 2 katý kadar olmalýdýr; daha iyi baþarým için bu sayýyý daha da arttýrmalýsýnýz. Yüksek sayýdaki backend
-süreçleri için, çeþitli çekirdek yapýlandýrma parametrelerini arttýrmanýz gerekecektir. Yapýlmasý gerekenler, SHMMAX,
-SEMMNS, SEMMNI, NPROC, MAXUPRC ve açýlabilecek dosyalarýn maksimum sayýsý olan NFILE ve NINODE deðerlerini
-karýþtýrmaktýr. Bunun nedeni, PostgreSQL'in izin verilen backend süreçlerinin sayýsý üzerinde bir sýnýrý olmasýdýr.
-Böylelikle sistem kaynaklarýnýn dýþýna çýkýlmayacaktýr.
-
-PostgreSQL'in 6.5 sürümüne kadar, en fazla backend sayýsý 64 idi ve bunu deðiþtirmek için include/storage/sinvaladt.h
-dosyasý içindeki MaxBAckendid sabitini deðiþtirdek sonra yazýlýmý yeniden derlemek gerekiyordu.
-3.9) pgsql_tmp dizinin içindeki dosyalar nelerdir?
-
-Sorgu çalýstýrýcý (query executer) tarafýndan yaratýlan geçici dosyalardýr. Örnegin, bir sýralama ORDER BY ile
-yapýlacaksa ve sýralama backend'in -s parametresinin izin verdiðinden daha fazla alana gereksinim duyuyorsa, ekstra
-veriyi tutmak için geçici dosyalar yaratýlýr.
-
-Geçici dosyalar, eðer sýralama sýrasýnda backend göçmezse otomatik olarak silinecektir. Eðer çalýþan durumda bir
-backend'iniz yoksa, pg_tempNNN.NN dosyalarýný silmeniz güvenlidir.
-3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload iþlemi gerçekleþtirmek zorundayým?
-
-PostgreSQL takýmý ara sürümlerde sadece küçük deðiþiklikler yapmaktadýr; bu yüzden 7.2 sürümünden 7.2.1'e yükseltmek
-dump/restore iþlemi gerekmemektedir. Ancak, esas sürümlerde (örnek: 7.2'den 7.3'e) çoðunlukla sistem tablolarýnýn ve
-veri dosyalarýnýn iç yapýsý deðiþtirilir. Bu deðiþiklikler çoðunlukla karmaþýktýr; dolayýsýyla veri dosyalarýnýn geriye
-dönük uyumluluðu iþlemlerini yapmýyoruz. Dump iþlemi, veriyi genel biçimde alacaðýndan yeniden yükleme esnasýnda veri,
-yeni iç biçime uygun þekilde yerleþtirilecektir.
-
-Disk biçiminin deðiþmediði sürümlerde, pg_upgrade betiði güncellemenin bir dump/restore gerektirmeden yapýlmasýný
-saðlayacaktýr. pg_upgrade betiðinin o sürüm için bulunup bulunmadýðýný sürüm notlarý içinde bulabilirsiniz.
-3.11) Nasýl bir donaným kullanmalýyým?
-
-PC donanýmý tamamen uyumlu olduðu için, insanlar tüm PC donanýmlarýnýn ayný kalitede olduðunu düþünürler. Oysa böyle
-deðildir. ECC RAM, SCSI ve kaliteli anakartlar daha ucuz donanýmlara göre daha çok güvenilirlerdir ve baþarýmlarý daha
-yüksektir. PostgreSQL hemen hemen tüm donanýmda çalýþabilmektedir, ancak güvenilirlik ve baþarým önemli ise donaným
-seçeneklerini çok iyi araþtýrmak gereklidir. E-posta listelerimi donanýmlarla ilgili sorular ve de ticaret için
-kullanýlabilir.
-Ýþletimsel Sorular
-4.1) Binary cursor ve normal cursor arasýndaki fark nedir?
-
-DECLARE yardým sayfasýna bakýnýz.
-4.2) Sorgunun sadece ilk birkaç satýrýný nasýl SELECT edebilirim?
-
-FETCH yardým sayfasýna bakýnýz, ya da SELECT ... LIMIT ... kullanýnýz.
-
-Ýlk birkaç satýrý almak isteseniz bile, tüm sorgu deðerlendirilmek durumunda kalýnabilir. ORDER BY içeren bir sorgu
-düþünün. Eðer ORDER BY iþe eþleþen bir index varsa, PostgreSQL istenen ilk birkaç satýrý iþleyebilir, ya da tüm sorgu
-istenen satýrlar üretilene kadar iþlenebilir.
-4.3) psql'in içinde gördügüm tablolarýn ya da diðer þeylerin listesini nasýl alabilirim?
-
-pgsql/src/bin/psql/describe.c içindeki psql kaynak kodunu okuyabilirsiniz. Bu kod, psql'in \ ile baþlayan komutlarýnýn
-çýktýsýný olusturan SQL komutlarýný içerir. Ayný zamanda, psql'i -E seçeneði ile baþlatýp, verdiðiniz komutlarý
-çalýþtýrmak için yaptýðý sorgularýn çýktýlarýný görebilirsiniz.
-4.4) Bir tablodan bir kolonu nasýl kaldýrabilirim?
-
-Bu özellik (ALTER TABLE DROP COLUMN) 7.3 sürümü ile gelmiþtir. Eski sürümlerde aþaðýdakileri uygulamalýsýnýz:
-
+ Bu iþlem PostgreSQL ana dizinine server.log dosyasý yerleþtirecektir.
+ Bu dosya sunucunun yaþadýðý sorunlar ya da hatalar hakkýnda yararlý
+ bilgiler içerir. -d seçeneði, hata ayýklama seviyesini belirten bir
+ rakam ile kullanýlýr. Yüksek hata ayýklama seviyelerinin büyük log
+ dosyalarý oluþturacaðýný unutmayýnýz.
+
+ Eðer postmaster çalýþmýyorsa, postgres backend'ini komut satýrýndan
+ çalýþtýrabilir ve SQL ifadenizi direk olarak yazabilirsiniz. Bu sadece
+ hata ayýklama amacýyla önerilir. Burada, noktalý virgülün deðil de
+ yeni bir satýrýn sorguyu sonlandýrdýðýný unutmayýnýz. Eðer hata
+ ayýklama sembolleri ile derlediyseniz, ne olduðunu görmek için bir
+ hata ayýklayýcý kullanabilirsiniz. backend postmaster'dan
+ baþlatýlmadýðýndan, eþdeðer bir ortamda çalýþmamaktadýr ve
+ locking/backend etkileþim sorunlarý artabilir.
+
+ Eðer postmaster çalýþýyorsa, bir pencerede psql'i çalýþtýrýn ve psql
+ tarafýndan kullanýlan postgres sürecinin süreç numarasýný (PID) bulun.
+ Postgres süreci ile iliþkilendirmek için bir hata ayýklarýcý kullanýn.
+ Sorgularý psql aracýlýðý ile çalýþtýrabilirsiniz. Eðer postgres
+ baþlangýcýnda hata ayýklamak istiyorsanýz, PGOPTIONS="-W n" seçeneðini
+ ayarlayabilir ve psql'i baþlatabilirsiniz. Bu iþlem, baþlangýcýn n
+ saniye kadar gecikmesini saðlayacaktýr; böylece hata ayýklayýcýyý
+ sürece iliþkilendirdikten sonra baþlangýç sürecinin devam etmesini
+ saðlayabilirsiniz.
+
+ postgres programý hata ayýklama ve baþarým ölçümleri için -s, -A ve -t
+ seçeneklerine sahiptir.
+
+ 3.8) Baðlanmaya çalýþýrken, neden "Sorry, too many clients" hatasýný
+ alýyorum?
+
+ Postmaster'ýn eþzamanlý olarak baþlatabileceði backend süreçleri
+ sýnýrlarýný arttýrmanýz gerekmektedir.
+
+ Ön tanýmlý deðer 32 süreçtir. Bunu, postmaster'ý uygun -N deðeri ile
+ ya da postgresql.conf dosyasýný düzenleyerek yeniden baþlatmakla
+ arttýrabilirsiniz.
+
+ Eðer -N deðerini 32'den büyük yapacaksanýz, ayný zamanda -B deðerini
+ de deðiþtirmeniz gerektiðini unutmayýn. -B, -N'nin en az 2 katý kadar
+ olmalýdýr; daha iyi baþarým için bu sayýyý daha da arttýrmalýsýnýz.
+ Yüksek sayýdaki backend süreçleri için, çeþitli çekirdek yapýlandýrma
+ parametrelerini arttýrmanýz gerekecektir. Yapýlmasý gerekenler,
+ SHMMAX, SEMMNS, SEMMNI, NPROC, MAXUPRC ve açýlabilecek dosyalarýn
+ maksimum sayýsý olan NFILE ve NINODE deðerlerini karýþtýrmaktýr. Bunun
+ nedeni, PostgreSQL'in izin verilen backend süreçlerinin sayýsý
+ üzerinde bir sýnýrý olmasýdýr. Böylelikle sistem kaynaklarýnýn dýþýna
+ çýkýlmayacaktýr.
+
+ PostgreSQL'in 6.5 sürümüne kadar, en fazla backend sayýsý 64 idi ve
+ bunu deðiþtirmek için include/storage/sinvaladt.h dosyasý içindeki
+ MaxBAckendid sabitini deðiþtirdek sonra yazýlýmý yeniden derlemek
+ gerekiyordu.
+
+ 3.9) pgsql_tmp dizinin içindeki dosyalar nelerdir?
+
+ Sorgu çalýstýrýcý (query executer) tarafýndan yaratýlan geçici
+ dosyalardýr. Örnegin, bir sýralama ORDER BY ile yapýlacaksa ve
+ sýralama backend'in -s parametresinin izin verdiðinden daha fazla
+ alana gereksinim duyuyorsa, ekstra veriyi tutmak için geçici dosyalar
+ yaratýlýr.
+
+ Geçici dosyalar, eðer sýralama sýrasýnda backend göçmezse otomatik
+ olarak silinecektir. Eðer çalýþan durumda bir backend'iniz yoksa,
+ pg_tempNNN.NN dosyalarýný silmeniz güvenlidir.
+
+ 3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload iþlemi
+ gerçekleþtirmek zorundayým?
+
+ PostgreSQL takýmý ara sürümlerde sadece küçük deðiþiklikler
+ yapmaktadýr; bu yüzden 7.2 sürümünden 7.2.1'e yükseltmek dump/restore
+ iþlemi gerekmemektedir. Ancak, esas sürümlerde (örnek: 7.2'den 7.3'e)
+ çoðunlukla sistem tablolarýnýn ve veri dosyalarýnýn iç yapýsý
+ deðiþtirilir. Bu deðiþiklikler çoðunlukla karmaþýktýr; dolayýsýyla
+ veri dosyalarýnýn geriye dönük uyumluluðu iþlemlerini yapmýyoruz. Dump
+ iþlemi, veriyi genel biçimde alacaðýndan yeniden yükleme esnasýnda
+ veri, yeni iç biçime uygun þekilde yerleþtirilecektir.
+
+ Disk biçiminin deðiþmediði sürümlerde, pg_upgrade betiði güncellemenin
+ bir dump/restore gerektirmeden yapýlmasýný saðlayacaktýr. pg_upgrade
+ betiðinin o sürüm için bulunup bulunmadýðýný sürüm notlarý içinde
+ bulabilirsiniz.
+
+ 3.11) Nasýl bir donaným kullanmalýyým?
+
+ PC donanýmý tamamen uyumlu olduðu için, insanlar tüm PC donanýmlarýnýn
+ ayný kalitede olduðunu düþünürler. Oysa böyle deðildir. ECC RAM, SCSI
+ ve kaliteli anakartlar daha ucuz donanýmlara göre daha çok
+ güvenilirlerdir ve baþarýmlarý daha yüksektir. PostgreSQL hemen hemen
+ tüm donanýmda çalýþabilmektedir, ancak güvenilirlik ve baþarým önemli
+ ise donaným seçeneklerini çok iyi araþtýrmak gereklidir. E-posta
+ listelerimi donanýmlarla ilgili sorular ve de ticaret için
+ kullanýlabilir.
+ _________________________________________________________________
+
+ Ýþletimsel Sorular
+
+ 4.1) Binary cursor ve normal cursor arasýndaki fark nedir?
+
+ DECLARE yardým sayfasýna bakýnýz.
+
+ 4.2) Sorgunun sadece ilk birkaç satýrýný nasýl SELECT edebilirim?
+
+ FETCH yardým sayfasýna bakýnýz, ya da SELECT ... LIMIT ... kullanýnýz.
+
+ Ýlk birkaç satýrý almak isteseniz bile, tüm sorgu deðerlendirilmek
+ durumunda kalýnabilir. ORDER BY içeren bir sorgu düþünün. Eðer ORDER
+ BY iþe eþleþen bir index varsa, PostgreSQL istenen ilk birkaç satýrý
+ iþleyebilir, ya da tüm sorgu istenen satýrlar üretilene kadar
+ iþlenebilir.
+
+ 4.3) psql'in içinde gördügüm tablolarýn ya da diðer þeylerin listesini
+ nasýl alabilirim?
+
+ pgsql/src/bin/psql/describe.c içindeki psql kaynak kodunu
+ okuyabilirsiniz. Bu kod, psql'in \ ile baþlayan komutlarýnýn çýktýsýný
+ olusturan SQL komutlarýný içerir. Ayný zamanda, psql'i -E seçeneði ile
+ baþlatýp, verdiðiniz komutlarý çalýþtýrmak için yaptýðý sorgularýn
+ çýktýlarýný görebilirsiniz.
+
+ 4.4) Bir tablodan bir kolonu nasýl kaldýrabilirim?
+
+ Bu özellik (ALTER TABLE DROP COLUMN) 7.3 sürümü ile gelmiþtir. Eski
+ sürümlerde aþaðýdakileri uygulamalýsýnýz:
BEGIN;
LOCK TABLE old_table;
SELECT ... -- select all columns but the one you want to remove
FROM old_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
-COMMIT;
-
-
-4.5) Bir satýr, tablo ve veritabaný için en fazla büyüklük nedir?
-
-Sýnýrlar:
-
-Veritabaný için en fazla büyüklük nedir?
-Sýnýrsýz (32 TB'lýk veritabaný bulunmaktadýr)
-
-Bir tablo için en fazla büyüklük nedir?
-32 TB
-
-Bir satýr için en fazla büyüklük nedir?
-1.6 TB
-
-Bir alan için en fazla büyüklük nedir?
-1 GB
-
-Tabloda en fazla satýr sayýsý kaçtýr?
-Sýnýrsýz
-
-Bir tabloda olabilecek en fazla kolon sayýsý kaçtýr?
-Kolon tiplerine baðlý olarak 250-1600
-
-Bir tabloda olabilecek en fazla index sayýsý kaçtýr?
-Sýnýrsýz
-
-Tabii ki bunlar aslýnda sýnýrsýz degildir. Burada belirtilen sýnýrlar, fiziksel sýnýrlarýn haricindeki sýnýrlardýr. Boþ
-disk alaný, hafýza/takas alaný na baðlý sýnýrlamalar vardýr. Baþarým, sýnýr deðerlere yaklaþtýkça, ya da deðerler çok
-büyük olduðunda düþebilir.
-
-Bir tablo için büyüklük sýnýrý olan 32 TB, iþletim sisteminin büyük dosya desteði olup olmamasýndan baðýmsýzdýr. Büyük
-tablolar, 1 GB'lik dosyalarda saklandýðý için, dosya sistemi sýnýrlarýnin bir önemi yoktur.
-
-Tablo ve kolon sayýsý büyüklükleri, ön tanýmlý blok büyüklüðü 32k ya çýkarýlarak arttýrýlabilir.
-4.6) Tipik bir metin dosyasýndaki veriyi saklamak için ne kadar disk alaný gereklidir?
-
-Bir PostgreSQL veritabaný, veriyi "flat" metin dosyasýnda saklamak için gereken alanýn 5 kat fazla disk alanýna
-gereksinim duyabilir.
-
-Her satýrýnda bir tamsayý ve metin (text) içeren, 100.000 satýrlýk bir dosya düþünün. Her satýrýn ortalama 20 byte
-olduðunu farzedelim. Metin dosyasý 2.8 MB olacaktýr. Bu veriyi tutan PostgreSQL veritabaný yaklaþýk 6.4 MB yer
-kaplayacaktýr.
-
+COMMIT;
+
+ 4.5) Bir satýr, tablo ve veritabaný için en fazla büyüklük nedir?
+
+ Sýnýrlar:
+
+ Veritabaný için en fazla büyüklük nedir?
+ Sýnýrsýz (32 TB'lýk veritabaný bulunmaktadýr)
+ Bir tablo için en fazla büyüklük nedir?
+ 32 TB
+ Bir satýr için en fazla büyüklük nedir?
+ 1.6 TB
+ Bir alan için en fazla büyüklük nedir?
+ 1 GB
+ Tabloda en fazla satýr sayýsý kaçtýr?
+ Sýnýrsýz
+ Bir tabloda olabilecek en fazla kolon sayýsý kaçtýr?
+ Kolon tiplerine baðlý olarak 250-1600
+ Bir tabloda olabilecek en fazla index sayýsý kaçtýr?
+ Sýnýrsýz
+
+ Tabii ki bunlar aslýnda sýnýrsýz degildir. Burada belirtilen sýnýrlar,
+ fiziksel sýnýrlarýn haricindeki sýnýrlardýr. Boþ disk alaný,
+ hafýza/takas alaný na baðlý sýnýrlamalar vardýr. Baþarým, sýnýr
+ deðerlere yaklaþtýkça, ya da deðerler çok büyük olduðunda düþebilir.
+
+ Bir tablo için büyüklük sýnýrý olan 32 TB, iþletim sisteminin büyük
+ dosya desteði olup olmamasýndan baðýmsýzdýr. Büyük tablolar, 1 GB'lik
+ dosyalarda saklandýðý için, dosya sistemi sýnýrlarýnin bir önemi
+ yoktur.
+
+ Tablo ve kolon sayýsý büyüklükleri, ön tanýmlý blok büyüklüðü 32k ya
+ çýkarýlarak arttýrýlabilir.
+
+ 4.6) Tipik bir metin dosyasýndaki veriyi saklamak için ne kadar disk alaný
+ gereklidir?
+
+ Bir PostgreSQL veritabaný, veriyi "flat" metin dosyasýnda saklamak
+ için gereken alanýn 5 kat fazla disk alanýna gereksinim duyabilir.
+
+ Her satýrýnda bir tamsayý ve metin (text) içeren, 100.000 satýrlýk bir
+ dosya düþünün. Her satýrýn ortalama 20 byte olduðunu farzedelim. Metin
+ dosyasý 2.8 MB olacaktýr. Bu veriyi tutan PostgreSQL veritabaný
+ yaklaþýk 6.4 MB yer kaplayacaktýr.
36 byte: Her bir satýr baþlýðý (yaklaþýk)
-+ 24 byte: Bir tamsayý (int) alaný ve bir metin (text) alaný
++ 24 byte: Bir tamsayý (int) alaný ve bir metin (text) alaný
+ 4 byte: Sayfada tuple a pointer
----------------------------------------
64 byte -> kayýt baþýna
-PostgreSQL'de veri sayfasý (data page) büyüklüðü 8192 byte (8k)dýr, dolayýsýyla:
-
+ PostgreSQL'de veri sayfasý (data page) büyüklüðü 8192 byte (8k)dýr,
+ dolayýsýyla:
8192 byte -> page baþýna
------------------------- = Her bir veritabaný page'ý baþýna 128 satýr (yaklaþýk)
Satýr baþýna 64 byte
-
+
100000 veri satýrý
-------------------- = 782 veritabaný sayfasý
128 satýr
-782 veritabaný sayfasý * sayfa baþýna 8192 byte = 6,406,144 bytes (6.4 MB)
-
-Index'ler çok fazla yere gereksinim duymazlar, ama index'lenmiþ veriyi tutacaklarýndan büyük olabilirler.
-
-NULL deðerler bitmapler içinde tutulur; dolayýsýyla çok az yer kaplarlar.
-4.7) Veritabanýnda hangi tablo ya da index'lerin tanýmlandýðýný nasýl görebilirim?
-
-psql, bu tür bilgileri göstermek için, \ ile baþlayan bir çok komut sunmaktadýr. \? komutu ile bu komutlarý
-görebilirsiniz. Ayrýca, bunlarý açýklayan ve pg_ ile baþlayan çok sayýda sistem tablosu bulunmaktadýr. Ayný zamanda,
-psql -l ile tüm veritabanlarýný listeyelebirsiniz.
-
-Ayrýca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu dosya, veritabaný sistem dosyalarýndan bilgiyi
-almak için gereksinim duyulan bir çok SELECT'leri gösterir.
-4.8) Sorgularým cok yavaþ, ya da index'lerimi kullanmýyorlar. Neden?
-
-Indexler her sorgu tarafýndan otomatik olarak kullanýlmazlar. Indexler eðer bir tablonun büyüklüðü minimum bir
-büyüklükten fazla ise ve sorgu tablodaki satýrlarýn sadece küçük bir yüzdesini seçiyorsa kullanýlýr. Bunun nedeni,
-index eriþiminin neden olduðu raslansal disk eriþimi nin diskin ya da tablonun sýralý okunmasýndan daha yavas
-olabilmesidir.
-
-Bir index'in kullanýlýp kullanýlmayacaðýný belirlemek için, PostgreSQL tablo hakkýndaki istatistiklere gereksinmesi
-vardýr. Bu istatistikler, VACUUM ANALYZE kullanýlarak toplanýrlar. Optimizer, istatistikleri kullanarak, tabloda kaç
-satýr olduðunu ve bilir ve indexin kullanýlýp kullanýlmayacaðýna daha iyi karar verir. Istatistikler, ayný zamanda en
-uygun join sýrasýný ve yöntemini belirlemekte çok önemlidir. Ýstatistik toplanmasý, tablo içerikleri deðiþtikçe
-periyodik olarak yapýlmalýdýr.
-
-Indexler normalde ORDER BY sorgularý ya da join iþlemlerini gerçekleþtirmek için kullanýlmazlar. Açýk bir sýralamayý
-takip eden sýralý bir arama (sequential scan), büyük bir tabloda index aramasý yapmaktan genelde daha hýzlýdýr.
-Ancak, ORDER BY ile birleþmiþ LIMIT genellikle bir index kullanacaktýr; çünkü tablonun sadece belirli bir miktarý
-döndürülecektir. Aslýnda, MAX() ve MIN() fonksiyonlarýnýn index kullanmamalarýndan dolayý, bu gibi deðerleri ORDER BY
-ve LIMIT kullanarak da almak olasýdýr:
-
+ 782 veritabaný sayfasý * sayfa baþýna 8192 byte = 6,406,144 bytes (6.4
+ MB)
+
+ Index'ler çok fazla yere gereksinim duymazlar, ama index'lenmiþ veriyi
+ tutacaklarýndan büyük olabilirler.
+
+ NULL deðerler bitmapler içinde tutulur; dolayýsýyla çok az yer
+ kaplarlar.
+
+ 4.7) Veritabanýnda hangi tablo ya da index'lerin tanýmlandýðýný nasýl
+ görebilirim?
+
+ psql, bu tür bilgileri göstermek için, \ ile baþlayan bir çok komut
+ sunmaktadýr. \? komutu ile bu komutlarý görebilirsiniz. Ayrýca,
+ bunlarý açýklayan ve pg_ ile baþlayan çok sayýda sistem tablosu
+ bulunmaktadýr. Ayný zamanda, psql -l ile tüm veritabanlarýný
+ listeyelebirsiniz.
+
+ Ayrýca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu
+ dosya, veritabaný sistem dosyalarýndan bilgiyi almak için gereksinim
+ duyulan bir çok SELECT'leri gösterir.
+
+ 4.8) Sorgularým cok yavaþ, ya da index'lerimi kullanmýyorlar. Neden?
+
+ Indexler her sorgu tarafýndan otomatik olarak kullanýlmazlar. Indexler
+ eðer bir tablonun büyüklüðü minimum bir büyüklükten fazla ise ve sorgu
+ tablodaki satýrlarýn sadece küçük bir yüzdesini seçiyorsa kullanýlýr.
+ Bunun nedeni, index eriþiminin neden olduðu raslansal disk eriþimi nin
+ diskin ya da tablonun sýralý okunmasýndan daha yavas olabilmesidir.
+
+ Bir index'in kullanýlýp kullanýlmayacaðýný belirlemek için, PostgreSQL
+ tablo hakkýndaki istatistiklere gereksinmesi vardýr. Bu istatistikler,
+ VACUUM ANALYZE kullanýlarak toplanýrlar. Optimizer, istatistikleri
+ kullanarak, tabloda kaç satýr olduðunu ve bilir ve indexin kullanýlýp
+ kullanýlmayacaðýna daha iyi karar verir. Istatistikler, ayný zamanda
+ en uygun join sýrasýný ve yöntemini belirlemekte çok önemlidir.
+ Ýstatistik toplanmasý, tablo içerikleri deðiþtikçe periyodik olarak
+ yapýlmalýdýr.
+
+ Indexler normalde ORDER BY sorgularý ya da join iþlemlerini
+ gerçekleþtirmek için kullanýlmazlar. Açýk bir sýralamayý takip eden
+ sýralý bir arama (sequential scan), büyük bir tabloda index aramasý
+ yapmaktan genelde daha hýzlýdýr.
+ Ancak, ORDER BY ile birleþmiþ LIMIT genellikle bir index
+ kullanacaktýr; çünkü tablonun sadece belirli bir miktarý
+ döndürülecektir. Aslýnda, MAX() ve MIN() fonksiyonlarýnýn index
+ kullanmamalarýndan dolayý, bu gibi deðerleri ORDER BY ve LIMIT
+ kullanarak da almak olasýdýr:
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
-Eðer optimizer'ýn sýralý arama yapmasýnýn yanlýþ olduðuna inanýyorsanýz, SET enable_seqscan TO 'off' kullanýn ve index
-kullanan aramalarýn hala daha hýzlý olup olmadýðýný görün.
-
-LIKE ya da ~ gibi operatörler kullanýyorsanýz, index'ler sadece aþaðýdaki koþullarda kullanýlabilir:
-
- * Arama dizininin baþý, dizinin baþý ile baðlanmalýdýr. Yani,
- o LIKE sorgularý % ile baþlamamalýdýr.
- o Düzenli ifade sorgularý ^ iþe baþlamamalýdýr.
- * Arama metni bir karakter sýnýfý ile baþlayamaz. Örnek: [a-e]
- * ILIKE ve ~* gibi büyük/küçük harfe duyarsýz aramalar index'lerden yararlanmazlar. Onun yerine, bölüm 4.12'de
-anlatýlan fonksiyonel index'leri kullanabilirsiniz.
- * initdb sýrasýnda öntanýmlý C locale'i kullanýlmalýdýr.
-
-4.9) query-optimizer'ýn sorgularýmý nasýl deðerlendirdiðini, iþleme soktuðunu nasýl görebilirim?
-
-EXPLAIN yardým sayfasýna bakýnýz.
-4.10) R-tree index nedir?
-
-R-tree index, uzaysal (spatial) verileri indexlemek için kullanýlýr. Bir hash index, dizi aramalarýnda (range search)
-kullanýlamaz. B-tree index dizi aramalarýnda sadece tek boyutlu çalýþmaktadýr. R-tree, çok boyutlu veriyi destekler.
-Örneðin, eðer bir R-tree index point veri tipi üzerinde inþa edililebilirse, sistem "select all points within a
-bounding rectangle" gibi sorgulara daha verimli yanýtlar verecektir.
-
-Orijinal R-tree tasarýmýný açýklayan belge:
-
-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.
-
-Bu belgeyi, Stonebraker'ýn "Readings in Database Systems" kitabýnda bulabilirsiniz.
-
-Gömülü R-tree indexleri poligon ve boxlarý kullanabilir. Teorik olarak, R-tree indexlerin özelliklerini geniþletmek bir
-miktar çaba gerektirir ve bunun nasýl yapýlacaðýna dair bir belgemiz henüz bulunmamaktadýr.
-4.11) Genetic Query Optimizer nedir?
-
-GEQO modülü, Genetic Algorithm(GA) kullanýlarak tablolar birleþtirildiðinde sorgu optimizasyonunu hýzlandýrýr.
-4.12) Düzenli ifade (Regular Expression) aramalarýný ve büyük/küçük harfe duyarsýz aramalarý nasýl yapabilirim? Bu
-büyük(küçük harfe duyarlý aramalar için index'i nasýl kullanabilirim?
-
-~ operatörü düzenli ifade eþleþmesi ve ~* büyük/küçük harfe duyarsýz düzenli ifade eþleþmesi yapar. Büyük/küçük harfe
-duyarlý olan LIKE'ýn büyük/küçük harfe duyarsýz olan biçimi ILIKE'týr ve PostgreSQL 7.1 sürümü ile birlikte gelmiþtir.
-
-Büyük-küçük harfe duyarsýz eþitlik karþýlaþtýrmalarý aþaðýdaki gibi ifade edilir:
-
+ Eðer optimizer'ýn sýralý arama yapmasýnýn yanlýþ olduðuna
+ inanýyorsanýz, SET enable_seqscan TO 'off' kullanýn ve index kullanan
+ aramalarýn hala daha hýzlý olup olmadýðýný görün.
+
+ LIKE ya da ~ gibi operatörler kullanýyorsanýz, index'ler sadece
+ aþaðýdaki koþullarda kullanýlabilir:
+ * Arama dizininin baþý, dizinin baþý ile baðlanmalýdýr. Yani,
+ + LIKE sorgularý % ile baþlamamalýdýr.
+ + Düzenli ifade sorgularý ^ iþe baþlamamalýdýr.
+ * Arama metni bir karakter sýnýfý ile baþlayamaz. Örnek: [a-e]
+ * ILIKE ve ~* gibi büyük/küçük harfe duyarsýz aramalar index'lerden
+ yararlanmazlar. Onun yerine, bölüm 4.12'de anlatýlan fonksiyonel
+ index'leri kullanabilirsiniz.
+ * initdb sýrasýnda öntanýmlý C locale'i kullanýlmalýdýr.
+
+ 4.9) query-optimizer'ýn sorgularýmý nasýl deðerlendirdiðini, iþleme
+ soktuðunu nasýl görebilirim?
+
+ EXPLAIN yardým sayfasýna bakýnýz.
+
+ 4.10) R-tree index nedir?
+
+ R-tree index, uzaysal (spatial) verileri indexlemek için kullanýlýr.
+ Bir hash index, dizi aramalarýnda (range search) kullanýlamaz. B-tree
+ index dizi aramalarýnda sadece tek boyutlu çalýþmaktadýr. R-tree, çok
+ boyutlu veriyi destekler. Örneðin, eðer bir R-tree index point veri
+ tipi üzerinde inþa edililebilirse, sistem "select all points within a
+ bounding rectangle" gibi sorgulara daha verimli yanýtlar verecektir.
+
+ Orijinal R-tree tasarýmýný açýklayan belge:
+
+ 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.
+
+ Bu belgeyi, Stonebraker'ýn "Readings in Database Systems" kitabýnda
+ bulabilirsiniz.
+
+ Gömülü R-tree indexleri poligon ve boxlarý kullanabilir. Teorik
+ olarak, R-tree indexlerin özelliklerini geniþletmek bir miktar çaba
+ gerektirir ve bunun nasýl yapýlacaðýna dair bir belgemiz henüz
+ bulunmamaktadýr.
+
+ 4.11) Genetic Query Optimizer nedir?
+
+ GEQO modülü, Genetic Algorithm(GA) kullanýlarak tablolar
+ birleþtirildiðinde sorgu optimizasyonunu hýzlandýrýr.
+
+ 4.12) Düzenli ifade (Regular Expression) aramalarýný ve büyük/küçük harfe
+ duyarsýz aramalarý nasýl yapabilirim? Bu büyük(küçük harfe duyarlý aramalar
+ için index'i nasýl kullanabilirim?
+
+ ~ operatörü düzenli ifade eþleþmesi ve ~* büyük/küçük harfe duyarsýz
+ düzenli ifade eþleþmesi yapar. Büyük/küçük harfe duyarlý olan LIKE'ýn
+ büyük/küçük harfe duyarsýz olan biçimi ILIKE'týr ve PostgreSQL 7.1
+ sürümü ile birlikte gelmiþtir.
+
+ Büyük-küçük harfe duyarsýz eþitlik karþýlaþtýrmalarý aþaðýdaki gibi
+ ifade edilir:
SELECT *
FROM tab
WHERE lower(col) = 'abc'
-
-
-Bu standart bir index yaratmayacaktýr. Ancak eðer fonksiyonel bir index yaratýrsanýz; o kullanýlacaktýr:
-
+
+ Bu standart bir index yaratmayacaktýr. Ancak eðer fonksiyonel bir
+ index yaratýrsanýz; o kullanýlacaktýr:
CREATE INDEX tabindex on tab (lower(col));
-4.13) Bir sorguda, bir alanin "NULL" olduðunu nasýl ortaya çýkarabilirim?
-
-Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
-4.14) Çesitli karakter tipleri arasýndaki farklar nelerdir?
-
-Veri Tipi Ýç Adý Not
+ 4.13) Bir sorguda, bir alanin "NULL" olduðunu nasýl ortaya çýkarabilirim?
+
+ Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
+
+ 4.14) Çesitli karakter tipleri arasýndaki farklar nelerdir?
+
+Veri Tipi Ýç Adý Not
--------------------------------------------------
VARCHAR(n) varchar boyut en büyük uzunluðu verir; sadece verilen kadar veri tutulur.
CHAR(n) bpchar belirtilen uzunluða kadar sonuna boþluk eklenir.
-TEXT text uzunlukta herhangi bir üst sýnýr yoktur.
+TEXT text uzunlukta herhangi bir üst sýnýr yoktur.
BYTEA bytea variable-length byte array (null-byte safe)
-"char" char bir karakter
-
-
-Ýç adlarý (internal name) sistem kataloglarýný ve bazý hata mesajlarýný incelerken göreceksiniz.
-
-Ýlk dört veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt uzunluktur; devamý da veridir.) Dolayýsýyla, kullanýlan
-gerçek alan, belirtilen alandan biraz daha büyüktür. Ancak, bu veri tipleri, sýkýþtýrýlmaya tabi tutulabilir;
-dolayýsýyla disk alaný beklenilenden küçük olabilir. VARCHAR(n) büyüklüðü artabilen ama en büyük uzunluðu sýnýrlý olan
-verileri saklamak için en uygun yöntemdir. TEXT, 1 GB büyüklüðe kadar olan verileri tutmak için kullanýlýr.
-
-CHAR(n), ayný uzunluktaki dizilerin saklanmasý için kullanýmýr. CHAR(n) belirtilen uzunluða kadar boþluk ile doldurur;
-ancak VARCHAR(n) sadece verilen karakterleri saklar. BYTEA binary veri saklamak içindir; ayrýca "NULL" bayt içeren
-deðerleri de saklar. Burada anlatýlan üç veri tipi de benzer baþarým karakteristiklere sahiptir.
-4.15.1) Nasýl serial/otomatik artan (auto-incrementing) bir alan yaratabilirim?
-
-PostgreSQL'de SERIAL veri tipi vardýr. Bu veri tipi bir sequence ve kolon üzerinde bir index yaratýr.
-
-Örnek, aþaðýdaki sorgu:
-
+"char" char bir karakter
+
+ Ýç adlarý (internal name) sistem kataloglarýný ve bazý hata
+ mesajlarýný incelerken göreceksiniz.
+
+ Ýlk dört veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt
+ uzunluktur; devamý da veridir.) Dolayýsýyla, kullanýlan gerçek alan,
+ belirtilen alandan biraz daha büyüktür. Ancak, bu veri tipleri,
+ sýkýþtýrýlmaya tabi tutulabilir; dolayýsýyla disk alaný beklenilenden
+ küçük olabilir. VARCHAR(n) büyüklüðü artabilen ama en büyük uzunluðu
+ sýnýrlý olan verileri saklamak için en uygun yöntemdir. TEXT, 1 GB
+ büyüklüðe kadar olan verileri tutmak için kullanýlýr.
+
+ CHAR(n), ayný uzunluktaki dizilerin saklanmasý için kullanýmýr.
+ CHAR(n) belirtilen uzunluða kadar boþluk ile doldurur; ancak
+ VARCHAR(n) sadece verilen karakterleri saklar. BYTEA binary veri
+ saklamak içindir; ayrýca "NULL" bayt içeren deðerleri de saklar.
+ Burada anlatýlan üç veri tipi de benzer baþarým karakteristiklere
+ sahiptir.
+
+ 4.15.1) Nasýl serial/otomatik artan (auto-incrementing) bir alan
+ yaratabilirim?
+
+ PostgreSQL'de SERIAL veri tipi vardýr. Bu veri tipi bir sequence ve
+ kolon üzerinde bir index yaratýr.
+
+ Örnek, aþaðýdaki sorgu:
CREATE TABLE person (
id SERIAL,
name TEXT
-);
-
-
-buna çevrilir:
-
+);
+
+ buna çevrilir:
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 );
-
-
-Sequenceler hakkýnda daha fazla bilgi için create_sequence yardým sayfasýna bakabilirsiniz. Her satýrýn OID alanýný
-tekil bir sayý olarak alabilirsiniz. Ancak, veritabanýnýzýn dump'ýný alýp yeniden yüklerseniz, OID deðerlerini
-koruyabilmek için pg_dump'ýn -o parametresini ya da "COPY WITH OIDS" seçeneðini kullanmanýz gerekecektir.
-4.15.2) SERIAL giriþinin degerini nasýl alabilirim?
-
-Bir yaklaþým, sequence nesnesindeki SERIAL deðerini, veriyi girmeden önce nextval() ile alýp, aldýðýnýz deðeri
-kendinizin girmesidir. 4.15.1'deki örnek tabloyu kullanarak bir örnek verelim:
-
+CREATE UNIQUE INDEX person_id_key ON person ( id );
+
+ Sequenceler hakkýnda daha fazla bilgi için create_sequence yardým
+ sayfasýna bakabilirsiniz. Her satýrýn OID alanýný tekil bir sayý
+ olarak alabilirsiniz. Ancak, veritabanýnýzýn dump'ýný alýp yeniden
+ yüklerseniz, OID deðerlerini koruyabilmek için pg_dump'ýn -o
+ parametresini ya da "COPY WITH OIDS" seçeneðini kullanmanýz
+ gerekecektir.
+
+ 4.15.2) SERIAL giriþinin degerini nasýl alabilirim?
+
+ Bir yaklaþým, sequence nesnesindeki SERIAL deðerini, veriyi girmeden
+ önce nextval() ile alýp, aldýðýnýz deðeri kendinizin girmesidir.
+ 4.15.1'deki örnek tabloyu kullanarak bir örnek verelim:
new_id = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-Diðer sorgular için new_id'de yeni deðerin saklanmasý gerekir. Otomatik olarak yaratýlan SEQUENE nesnesinin adý, __seq
-þeklinde olacaktýr (< > iþaretleri olmadan).
-
-Alternatif olarak, atanmýþ SERIAL deðerini, deðer girildikten sonra currval() fonksiyonu ile alabilirsiniz:
-
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
- new_id = execute("SELECT currval('person_id_seq')");
-
-
-Son olarak, ön tanýmlý deðeri bulmak için INSERT ifadesinden dönen OID deðerini kullanabilirsiniz; ancak bu en az
-taþýnabilir çözüm olacaktýr. Perl'de, Edmund Mergl'in DBD:Pg mödülü ile birlikte DBI kullanarak, OID deðeri
-$sth->execute() çalýþtýrýldýktan sonra $sth->(pg_oid_status) ile alýnabilir.
-4.15.3) currval() ve nextval() diðer kullanýcýlara sorun yaratmaz mý?
-
-Hayýr. curval(), tüm kullanýcýlar deðil, backend tarafýndan atanan geçerli deðeri döndürür.
-4.15.4) Neden sequence sayýlarý transaction iþleminin iptalinden sonra yeniden kullanýlýyor? Neden sequence/SERIAL
-kolonumdaki sayýlarda atlamalar oluyor?
-
-Uyumluluðu arttýrmak için, sequence deðerleri çalýþan transaction'lara gerektiði þekilde aktarýlýr ve transaction
-bitene kadar o deðer kilitlenmez. Bu, iptal edilen transaction iþlemleri nedeniyle boþluklara neden olur.
-4.16) OID nedir? TID nedir?
-
-OIDler, tekil satýr numaralarýna PostgreSQL'in yanýtýdýr. PostgreSQL'de yaratýlan her sayý, tekil bir OID alýr. initdb
-iþlemi sýrasýnda yaratýlan tüm OID'ler 16384'ten küçüktür (backend/access/transam.h). Kullanýcýlar tarafýndan yaratýlan
-tüm OID'ler bu sayýya eþit ya da bu sayýdan büyüktür. Varsayýlan durumda, tüm bu OIDler sadece bir tablo ya da
-veritabanýnda deðil, tüm PostgreSQL kurulumunda tekildir.
-
-PostgreSQL OIDleri, tablolar arasýnda satýrlarý iliþkilendirmek için kendi iç tablolarýnda kullanýr. Bu OIDler belirli
-kullanýcý satýrlarýný belirtmek için kullanabilir ve join iþlemlerinde kullanýlýr. OID deðerlerini saklamak için OID
-kolon tipini kullanmanýz önerinir. Daha hýzlý bir eriþim için, OID alanýnda bir index yaratabilirsiniz.
-
-OID'ler yeni satýrlara, tüm veritabanlarý tarafýnda kullanýlan ortak bir alandan atanýrlar. Eðer OID'i baþka bir deðere
-eþitlemek isterseniz ya da tablonun bir kopyasýný orijinal OIDler ile çýkarmak isterseniz, bu mümkündür:
-
- 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';
-
-
-OIDler 4-bit tamsayý olarak saklanýrlar ve 4 milyarda overflow olacaktýr. Kimse bu sayýya ulaþtýðýna dair bir bilgi
-iletmedi ve bu sýnýrý kimse bu sýnýra ulaþmadan kaldýracaðýz.
-
-TIDler, belirli fiziksel satýrlar block ve offset deðerleri ile belirtmekte kullanýlýr. TIDler, satýrlar deðiþtiðinde
-ya da yeniden yüklendiðinde deðiþirler. Index girdileri tarafýndan fiziksel satýrlarý göstermek için kullanýlýrlar.
-
-4.17) PostgreSQL'de kullanýlan bazý terimlerin anlamlarý nelerdir?
-
-Kaynak kodun bir kýsmý ve eski belgeler, daha geniþ kullaným alaný olan terimleri kullanýrlar. Bunlarýn bazýlarý:
-
- * table, relation, class
- * row, record, tuple
- * column, field, attribute
- * retrieve, select
- * replace, update
- * append, insert
- * OID, serial value
- * portal, cursor
- * range variable, table name, table alias
-
-Genel veritabaný terimleri, http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
-adresinde bulunabilir.
-4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatasýný alýyorum?
-
-Sisteminizde sanal belleðinizi tüketmiþ olabilirsiniz, ya da çekirdeðiniz belli kaynaklar icin düþük bir sýnýra sahip
-olabilir. postmaster'ý baþlatmadan önce aþaðýdakileri deneyebilirsiniz:
-
+ Diðer sorgular için new_id'de yeni deðerin saklanmasý gerekir.
+ Otomatik olarak yaratýlan SEQUENE nesnesinin adý, <tablo adý>_<serial
+ kolonu adý>_seq þeklinde olacaktýr (< > iþaretleri olmadan).
+
+ Alternatif olarak, atanmýþ SERIAL deðerini, deðer girildikten sonra
+ currval() fonksiyonu ile alabilirsiniz:
+ execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+ new_id = execute("SELECT currval('person_id_seq')");
+
+ Son olarak, ön tanýmlý deðeri bulmak için INSERT ifadesinden dönen OID
+ deðerini kullanabilirsiniz; ancak bu en az taþýnabilir çözüm
+ olacaktýr. Perl'de, Edmund Mergl'in DBD:Pg mödülü ile birlikte DBI
+ kullanarak, OID deðeri $sth->execute() çalýþtýrýldýktan sonra
+ $sth->(pg_oid_status) ile alýnabilir.
+
+ 4.15.3) currval() ve nextval() diðer kullanýcýlara sorun yaratmaz mý?
+
+ Hayýr. curval(), tüm kullanýcýlar deðil, backend tarafýndan atanan
+ geçerli deðeri döndürür.
+
+ 4.15.4) Neden sequence sayýlarý transaction iþleminin iptalinden sonra
+ yeniden kullanýlýyor? Neden sequence/SERIAL kolonumdaki sayýlarda atlamalar
+ oluyor?
+
+ Uyumluluðu arttýrmak için, sequence deðerleri çalýþan transaction'lara
+ gerektiði þekilde aktarýlýr ve transaction bitene kadar o deðer
+ kilitlenmez. Bu, iptal edilen transaction iþlemleri nedeniyle
+ boþluklara neden olur.
+
+ 4.16) OID nedir? TID nedir?
+
+ OIDler, tekil satýr numaralarýna PostgreSQL'in yanýtýdýr.
+ PostgreSQL'de yaratýlan her sayý, tekil bir OID alýr. initdb iþlemi
+ sýrasýnda yaratýlan tüm OID'ler 16384'ten küçüktür
+ (backend/access/transam.h). Kullanýcýlar tarafýndan yaratýlan tüm
+ OID'ler bu sayýya eþit ya da bu sayýdan büyüktür. Varsayýlan durumda,
+ tüm bu OIDler sadece bir tablo ya da veritabanýnda deðil, tüm
+ PostgreSQL kurulumunda tekildir.
+
+ PostgreSQL OIDleri, tablolar arasýnda satýrlarý iliþkilendirmek için
+ kendi iç tablolarýnda kullanýr. Bu OIDler belirli kullanýcý
+ satýrlarýný belirtmek için kullanabilir ve join iþlemlerinde
+ kullanýlýr. OID deðerlerini saklamak için OID kolon tipini kullanmanýz
+ önerinir. Daha hýzlý bir eriþim için, OID alanýnda bir index
+ yaratabilirsiniz.
+
+ OID'ler yeni satýrlara, tüm veritabanlarý tarafýnda kullanýlan ortak
+ bir alandan atanýrlar. Eðer OID'i baþka bir deðere eþitlemek
+ isterseniz ya da tablonun bir kopyasýný orijinal OIDler ile çýkarmak
+ isterseniz, bu mümkündür:
+ 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';
+
+ OIDler 4-bit tamsayý olarak saklanýrlar ve 4 milyarda overflow
+ olacaktýr. Kimse bu sayýya ulaþtýðýna dair bir bilgi iletmedi ve bu
+ sýnýrý kimse bu sýnýra ulaþmadan kaldýracaðýz.
+
+ TIDler, belirli fiziksel satýrlar block ve offset deðerleri ile
+ belirtmekte kullanýlýr. TIDler, satýrlar deðiþtiðinde ya da yeniden
+ yüklendiðinde deðiþirler. Index girdileri tarafýndan fiziksel
+ satýrlarý göstermek için kullanýlýrlar.
+
+ 4.17) PostgreSQL'de kullanýlan bazý terimlerin anlamlarý nelerdir?
+
+ Kaynak kodun bir kýsmý ve eski belgeler, daha geniþ kullaným alaný
+ olan terimleri kullanýrlar. Bunlarýn bazýlarý:
+ * table, relation, class
+ * row, record, tuple
+ * column, field, attribute
+ * retrieve, select
+ * replace, update
+ * append, insert
+ * OID, serial value
+ * portal, cursor
+ * range variable, table name, table alias
+
+ Genel veritabaný terimleri,
+ http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
+ /glossary.html adresinde bulunabilir.
+
+ 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatasýný alýyorum?
+
+ Sisteminizde sanal belleðinizi tüketmiþ olabilirsiniz, ya da
+ çekirdeðiniz belli kaynaklar icin düþük bir sýnýra sahip olabilir.
+ postmaster'ý baþlatmadan önce aþaðýdakileri deneyebilirsiniz:
ulimit -d 262144
-limit datasize 256m
-
-
-Kabuðunuza baðlý olarak, bunlardan sadece biri olumlu sonuç verecektir, ama bu iþlem veri segment sýnýrýnýzý
-arttýracak, ve belki de sorgunuzun tamamlanmasýný saðlayacaktýr. Bu komut, varolan iþleme (current process) ve komut
-çalýþtýrýldýktan sonraki tüm alt iþlemlere uygulanýr. Eðer SQL istemcinizle, backend'in çok fazla veri döndürmesi
-nedeniyle bir sorun yaþýyorsanýz, bunu istemciyi baþlatmadan önce deneyiniz.
-4.19) Hangi PostgreSQL sürümünü çalýþtýrdýðýmý nasýl görebilirim?
-
-psql arabiriminde, select version(); yazýnýz.
-4.20) Neden large-object iþlemlerim, "invalid large obj descriptor" hatasýný veriyor?
-
-Large object iþlemlerinizin uçlarýna, yani lo_open ... lo_close komutlarýnýn çevresine, BEGIN WORK ve COMMIT koymanýz
-gerekmektedir;
-
-Þu anda, PostgreSQL kurallarý large objectleri transaction commit edildiðinde kapatarak uygulamaktadýr. Dolayýsýyla
-handle ile yapýlacak ilk þey invalid large obj descriptor hatasý ile sonuçlanacaktýr.Dolayýsýyla çalýþan kodunuz eðer
-transaction kullanmazsanýz hata mesajlarý üretecektir.
-
-Eðer ODBC gibi bir istemci arabirimi kullanýyorsanýz, auto-commit'i kapatmanýz gerekebilir.
-4.21) Þu andaki zamaný öntanýmlý deðer olarak kabul eden How do I create a column that will default to the current
-time?
-
-Alttakini kullanabilirsiniz:
-
+limit datasize 256m
+
+ Kabuðunuza baðlý olarak, bunlardan sadece biri olumlu sonuç
+ verecektir, ama bu iþlem veri segment sýnýrýnýzý arttýracak, ve belki
+ de sorgunuzun tamamlanmasýný saðlayacaktýr. Bu komut, varolan iþleme
+ (current process) ve komut çalýþtýrýldýktan sonraki tüm alt iþlemlere
+ uygulanýr. Eðer SQL istemcinizle, backend'in çok fazla veri döndürmesi
+ nedeniyle bir sorun yaþýyorsanýz, bunu istemciyi baþlatmadan önce
+ deneyiniz.
+
+ 4.19) Hangi PostgreSQL sürümünü çalýþtýrdýðýmý nasýl görebilirim?
+
+ psql arabiriminde, select version(); yazýnýz.
+
+ 4.20) Neden large-object iþlemlerim, "invalid large obj descriptor"
+ hatasýný veriyor?
+
+ Large object iþlemlerinizin uçlarýna, yani lo_open ... lo_close
+ komutlarýnýn çevresine, BEGIN WORK ve COMMIT koymanýz gerekmektedir;
+
+ Þu anda, PostgreSQL kurallarý large objectleri transaction commit
+ edildiðinde kapatarak uygulamaktadýr. Dolayýsýyla handle ile yapýlacak
+ ilk þey invalid large obj descriptor hatasý ile
+ sonuçlanacaktýr.Dolayýsýyla çalýþan kodunuz eðer transaction
+ kullanmazsanýz hata mesajlarý üretecektir.
+
+ Eðer ODBC gibi bir istemci arabirimi kullanýyorsanýz, auto-commit'i
+ kapatmanýz gerekebilir.
+
+ 4.21) Þu andaki zamaný öntanýmlý deðer olarak kabul eden How do I create a
+ column that will default to the current time?
+
+ Alttakini kullanabilirsiniz:
CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-
-
-4.22) Neden IN kullanan subquery'lerim çok yavas?
-
-7.4 sürümünden önce, subqueryler. Eðer subquery sadece birkaç satýr ve outer query bol sayýda satýr döndürüyorsa, IN en
-hýzlýsýdýr. Sorgularý hýzlandýrmak için IN yerine EXISTS kullanýn:
-
+
+ 4.22) Neden IN kullanan subquery'lerim çok yavas?
+
+ 7.4 sürümünden önce, subqueryler. Eðer subquery sadece birkaç satýr ve
+ outer query bol sayýda satýr döndürüyorsa, IN en hýzlýsýdýr. Sorgularý
+ hýzlandýrmak için IN yerine EXISTS kullanýn:
SELECT *
FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2)
-
-
-sorgusunu, aþaðýdaki ile deðiþtirin:
-
+
+ sorgusunu, aþaðýdaki ile deðiþtirin:
SELECT *
FROM tab
- WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
-
-
-Bu iþlemin hýzlý olmasý için, subcol'un indexlenmiþ bir kolon olmasý gerekmektedir.
-
-7.4 sürümü ve sonrasýnda, IN aslýnda normal sorgularla ayný karmaþýk join tekniklerini kullanýr ve EXISTS'e tercih
-edilir.
-4.23) Outer join iþlemini nasýl yapabilirim?
-
-PostgreSQL outer joins islemlerini SQL standartlarýný kullanarak gerçekleþtirmektedir. Aþaðýda 2 örnek bulunmaktadýr:
-
+ WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
+
+ Bu iþlemin hýzlý olmasý için, subcol'un indexlenmiþ bir kolon olmasý
+ gerekmektedir.
+
+ 7.4 sürümü ve sonrasýnda, IN aslýnda normal sorgularla ayný karmaþýk
+ join tekniklerini kullanýr ve EXISTS'e tercih edilir.
+
+ 4.23) Outer join iþlemini nasýl yapabilirim?
+
+ PostgreSQL outer joins islemlerini SQL standartlarýný kullanarak
+ gerçekleþtirmektedir. Aþaðýda 2 örnek bulunmaktadýr:
SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-
-ya da
-
+FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+
+ ya da
SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-
-Bu özdeþ sorgular t1.col' i t2.col'ye join ederler ve ayný zamanda t1'deki unjoined satýrlarý (t2'de eþlenmemiþ
-olanlarla) döndürürler. RIGHT JOIN t2'nin unjoined satýrlarýný ekleyecektir. Bir FULL join, eþleþmiþ bütün satýrlarý ve
-t1 ile t2'den tüm baðlanmamýþ (unjoined) satýrlarý alýr. OUTER sözcüðü seçimseldir ve LEFT, RIGHT ve FULL join
-iþlemlerinde olduðu kabul edilir. Sýradan join iþlemleri INNER JOIN olarak adlandýrýlýr.
-
-Önceki sürümlerde, OUTER JOINler UNION ve NOT IN kullanýlarak simüle edilebiliyordu. Örneðin, tab1 ve tab2'yi
-birleþtirirken, aþaðýdaki sorgu iki tablonun dýþtan baðlanmasýný saðlar:
-
+FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+
+ Bu özdeþ sorgular t1.col' i t2.col'ye join ederler ve ayný zamanda
+ t1'deki unjoined satýrlarý (t2'de eþlenmemiþ olanlarla) döndürürler.
+ RIGHT JOIN t2'nin unjoined satýrlarýný ekleyecektir. Bir FULL join,
+ eþleþmiþ bütün satýrlarý ve t1 ile t2'den tüm baðlanmamýþ (unjoined)
+ satýrlarý alýr. OUTER sözcüðü seçimseldir ve LEFT, RIGHT ve FULL join
+ iþlemlerinde olduðu kabul edilir. Sýradan join iþlemleri INNER JOIN
+ olarak adlandýrýlýr.
+
+ Önceki sürümlerde, OUTER JOINler UNION ve NOT IN kullanýlarak simüle
+ edilebiliyordu. Örneðin, tab1 ve tab2'yi birleþtirirken, aþaðýdaki
+ sorgu iki tablonun dýþtan baðlanmasýný saðlar:
SELECT tab1.col1, tab2.col2
FROM tab1, tab2
WHERE tab1.col1 = tab2.col1
SELECT tab1.col1, NULL
FROM tab1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
-ORDER BY col1
-
-
-4.24) Ayný andan birden fazla veritabanýnda nasýl iþlem yapabilirim?
-
-Mevcut veritabanýnýz dýþýndaki baþka bir veritabanýnýzý sorgulamanýzýn bir yolu bulunmamaktadýr. Bunun nedeni,
-PostgreSQL'in veritabanýna özel sistem kataloglarý yüklemesidir. Bu nedenle, cross-database bir sorgunun nasýl
-davranacaðýný kestirmek zordur.
-
-contrib/dblink fonksiyon çaðrýlarýný kullanarak cross-database sorgulara izin verir. Tabii ki, bir istemci deðiþik
-veritabanlarýna ayný anda eriþim saðlayabilir ve bilgiyi bu þekilde birleþtirebilir.
-
-4.25) Bir fonksiyondan nasýl çoklu satýr ya da kolon döndürebilirim?
-
-7.3 sürümünde, bir fonksiyondan kolaylýkla çoklu satýr ya da sütun döndürebilirsiniz.
-(http://techdocs.postgresql.org/guides/SetReturningFunctions)
-
-4.26) Neden Pl/PgSQL fonksiyonlarý içinden güvenli bir þekilde tablo yaratma/kaldýrma iþlemlerini yapamýyoruz?
-
-PL/PgSQL fonksiyon içerikleri cache'ler. Bunun istenmeyen bir tarafý, eðer bir PL/PgSQL fonksiyonu geçici bir tabloya
-eriþiyorsa ve bu tablo ileride kaldýrýlýp yeniden oluþturulduktan sonra fonksiyon yeniden çaðrýlýrsa, fonksiyon
-çalýþmayacaktýr; çünkü cache'lenmiþ fonksiyon hala eski geçici tabloyu gösteriyor olacaktýr. Çözüm, geçici tablo
-eriþimleri için PL/PgSQL'de EXECUTE kullanmaktýr. Bu, sorgunun her seferinde yeniden iþlenmesini saðlayacaktýr.
-
-4.27) Hangi þifreleme seçenekleri bulunmaktadýr?
-
- * contrib/pgcrypto SQL sorgularýnda kullanýlabilmesi için þifreleme fonksiyonlarý içermektedir.
- * Ýstemciden sunucuya iletiþimi þifrelemek için, sunucuda ssl seçeneði postgresql.conf içinde açýk olmalýdýr.
-Ayrýca,pg_hba.conf dosyasý içinde host ya da hostssl kaydý mutlaka olmalýdýr ve istemci sslmode kapatýlmamalýdýr. (Ayný
-zamanda,PostgreSQL'in doðal SSL baðlantýlarý dýþýnda ssh ya da ssl gibi 3.parti þifrelenmiþ veri iletimi de mümkündür.)
- * Veritabaný kullanýcý adý ve þifreleri 7.3 sürümü ile birlikte otomatik olarak þifrelenirler. Önceki sürümlerde,
-postgresql.conf içindeki PASSWORD_ENCRYPTION seçeneðini aktif hale getirmeniz gerekmektedir.
- * Sunucunun kendisini þifreli dosya sistemi üzerinde çalýþtýrabilirsiniz.
-
-PostgreSQL Özelliklerini Geniþletmek
-
-5.1) Kullanýcý-tanýmlý bir fonksiyon yazdým. psql'de çalýþtýrdýðým zaman neden core dump ediyor?
-
-Sorunun nedeni birden fazla þey olabilir. Kullanýcý-tanýmlý fonksiyonunuzu stand-alone bir programda çalýþtýrmayý
-deneyiniz.
-
-5.2) PostgreSQL'e nasýl yeni tipler/fonksiyonlar ekleyebilirim?
-
-Çalýþmalarýnýzý pgsql-hackers e-posta listesine gönderiniz. Kodunuz incelendikten sonra /contrib dizinine konacaktýr.
-
-5.3) Bir tuple dondürmek icin bir C fonksiyonunu nasil yazarým?
-
-PostgreSQL 7.3 sürümü ile birlikte, C, PL/PgSQL ve SQL kullanýlarak tablo-döndüren fonksiyonlar tamamen
-desteklenmektedir. Ayrýntýlý bilgi için PostgreSQL 7.3.2 Kullanýcý Rehberi'ne bakabilrisiniz. Bir örneði
-contrib/tablefunc içinde bulabilirsiniz.
-
-5.4) Bir kaynak dosyasýnda deðiþiklik yaptým. Yeniden derlememe raðmen deðiþiklik geçerli olmuyor. Neden?
-
-Makefile'lar include dosyalarý için tam bir baðýmlýlýk içermezler. Öncelikle make clean, ardýndan da baska bir make
-iþlemi yapmanýz gerekir. GCC kullanýyorsanýz, configure betiðinin --enable-depend seçeneðini, derleyicinin
-baðýmlýlýklarý otomatik olarak hesaplamasý için kullanabilirsiniz.
-
+ORDER BY col1
+
+ 4.24) Ayný andan birden fazla veritabanýnda nasýl iþlem yapabilirim?
+
+ Mevcut veritabanýnýz dýþýndaki baþka bir veritabanýnýzý sorgulamanýzýn
+ bir yolu bulunmamaktadýr. Bunun nedeni, PostgreSQL'in veritabanýna
+ özel sistem kataloglarý yüklemesidir. Bu nedenle, cross-database bir
+ sorgunun nasýl davranacaðýný kestirmek zordur.
+
+ contrib/dblink fonksiyon çaðrýlarýný kullanarak cross-database
+ sorgulara izin verir. Tabii ki, bir istemci deðiþik veritabanlarýna
+ ayný anda eriþim saðlayabilir ve bilgiyi bu þekilde birleþtirebilir.
+
+ 4.25) Bir fonksiyondan nasýl çoklu satýr ya da kolon döndürebilirim?
+
+ 7.3 sürümünde, bir fonksiyondan kolaylýkla çoklu satýr ya da sütun
+ döndürebilirsiniz.
+ (http://techdocs.postgresql.org/guides/SetReturningFunctions)
+
+ 4.26) Neden Pl/PgSQL fonksiyonlarý içinden güvenli bir þekilde tablo
+ yaratma/kaldýrma iþlemlerini yapamýyoruz?
+
+ PL/PgSQL fonksiyon içerikleri cache'ler. Bunun istenmeyen bir tarafý,
+ eðer bir PL/PgSQL fonksiyonu geçici bir tabloya eriþiyorsa ve bu tablo
+ ileride kaldýrýlýp yeniden oluþturulduktan sonra fonksiyon yeniden
+ çaðrýlýrsa, fonksiyon çalýþmayacaktýr; çünkü cache'lenmiþ fonksiyon
+ hala eski geçici tabloyu gösteriyor olacaktýr. Çözüm, geçici tablo
+ eriþimleri için PL/PgSQL'de EXECUTE kullanmaktýr. Bu, sorgunun her
+ seferinde yeniden iþlenmesini saðlayacaktýr.
+
+ 4.27) 4.28) Hangi þifreleme seçenekleri bulunmaktadýr?
+
+ * contrib/pgcrypto SQL sorgularýnda kullanýlabilmesi için þifreleme
+ fonksiyonlarý içermektedir.
+ * Ýstemciden sunucuya iletiþimi þifrelemek için, sunucuda ssl
+ seçeneði postgresql.conf içinde açýk olmalýdýr. Ayrýca,pg_hba.conf
+ dosyasý içinde host ya da hostssl kaydý mutlaka olmalýdýr ve
+ istemci sslmode kapatýlmamalýdýr. (Ayný zamanda,PostgreSQL'in
+ doðal SSL baðlantýlarý dýþýnda ssh ya da ssl gibi 3.parti
+ þifrelenmiþ veri iletimi de mümkündür.)
+ * Veritabaný kullanýcý adý ve þifreleri 7.3 sürümü ile birlikte
+ otomatik olarak þifrelenirler. Önceki sürümlerde, postgresql.conf
+ içindeki PASSWORD_ENCRYPTION seçeneðini aktif hale getirmeniz
+ gerekmektedir.
+ * Sunucunun kendisini þifreli dosya sistemi üzerinde
+ çalýþtýrabilirsiniz.
+ _________________________________________________________________
+
+ PostgreSQL Özelliklerini Geniþletmek
+
+ 5.1) Kullanýcý-tanýmlý bir fonksiyon yazdým. psql'de çalýþtýrdýðým zaman
+ neden core dump ediyor?
+
+ Sorunun nedeni birden fazla þey olabilir. Kullanýcý-tanýmlý
+ fonksiyonunuzu stand-alone bir programda çalýþtýrmayý deneyiniz.
+
+ 5.2) PostgreSQL'e nasýl yeni tipler/fonksiyonlar ekleyebilirim?
+
+ Çalýþmalarýnýzý pgsql-hackers e-posta listesine gönderiniz. Kodunuz
+ incelendikten sonra /contrib dizinine konacaktýr.
+
+ 5.3) Bir tuple dondürmek icin bir C fonksiyonunu nasil yazarým?
+
+ PostgreSQL 7.3 sürümü ile birlikte, C, PL/PgSQL ve SQL kullanýlarak
+ tablo-döndüren fonksiyonlar tamamen desteklenmektedir. Ayrýntýlý bilgi
+ için PostgreSQL 7.3.2 Kullanýcý Rehberi'ne bakabilrisiniz. Bir örneði
+ contrib/tablefunc içinde bulabilirsiniz.
+
+ 5.4) Bir kaynak dosyasýnda deðiþiklik yaptým. Yeniden derlememe raðmen
+ deðiþiklik geçerli olmuyor. Neden?
+
+ Makefile'lar include dosyalarý için tam bir baðýmlýlýk içermezler.
+ Öncelikle make clean, ardýndan da baska bir make iþlemi yapmanýz
+ gerekir. GCC kullanýyorsanýz, configure betiðinin --enable-depend
+ seçeneðini, derleyicinin baðýmlýlýklarý otomatik olarak hesaplamasý
+ için kullanabilirsiniz.
alink="#0000ff">
<H1>Frequently Asked Questions (FAQ) for PostgreSQL</H1>
- <P>Last updated: Thu Feb 24 23:18:31 EST 2005</P>
+ <P>Last updated: Fri Mar 11 16:42:06 EST 2005</P>
<P>Current maintainer: Bruce Momjian (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)
and Win2003. A prepackaged installer is available at <a href=
"http://pgfoundry.org/projects/pginstaller">
http://pgfoundry.org/projects/pginstaller</a>. MSDOS-based versions
- of Windows (Win95, Win98, WinMe) can run PostgreSQL using Cygwin.
+ of Windows (Win95, Win98, WinMe) can run PostgreSQL using Cygwin.</P>
<p>There is also a Novell Netware 6 port at
<a href="http://forge.novell.com">http://forge.novell.com</a>,
via email. The main web site to subscribe to the email lists is
<a href="http://www.postgresql.org/community/lists/">
http://www.postgresql.org/community/lists/</a>. The <I>general</I>
- or <I>bugs</I> lists are a good place to start.
+ or <I>bugs</I> lists are a good place to start.</P>
<P>The major IRC channel is <I>#postgresql</I> on Freenode
(<I>irc.freenode.net</I>). To connect you can use the Unix
program <CODE>irc -c '#postgresql' "$USER" irc.freenode.net</CODE>
or use any of the other popular IRC clients. A Spanish one also exists
on the same network, (<I>#postgresql-es</I>), and a French one,
- (<I>#postgresqlfr</I>). There is also a PostgreSQL channel on EFNet.
+ (<I>#postgresqlfr</I>). There is also a PostgreSQL channel on EFNet.</P>
<P>A list of commercial support companies is available at <A href=
"http://techdocs.postgresql.org/companies.php">
<li>Use of Prepared queries</li>
<li>Use of <SMALL>ANALYZE</SMALL> to maintain accurate optimizer
statistics</li>
- <li>Regular use of <SMALL>VACUUM</SMALL> or <I>pg_autovacuum</I>
+ <li>Regular use of <SMALL>VACUUM</SMALL> or <I>pg_autovacuum</I></li>
<li>Dropping of indexes during large data changes</li>
</ul><BR>
<BR>
<SMALL>SELECT</SMALL> time, use a cursor and
<SMALL>FETCH</SMALL>.</P>
- <P>To <SMALL>SELECT</SMALL> a random row, use:
+ <P>To <SMALL>SELECT</SMALL> a random row, use:</P>
<PRE>
SELECT col
FROM tab
<H4><A name="4.3">4.3</A>) How do you change a column's data type?</H4>
<P>Changing the data type of a column can be done easily in 8.0
- and later with <SMALL>ALTER TABLE ALTER COLUMN TYPE</SMALL>.
+ and later with <SMALL>ALTER TABLE ALTER COLUMN TYPE</SMALL>.</P>
<P>In earlier releases, do this:</P>
<PRE>
<P>These are the limits:</P>
<BLOCKQUOTE>
-<TABLE BORDER=1>
+<TABLE >
<TR><TD>Maximum size for a database?</TD><TD>unlimited (32 TB databases
exist)</TD></TR>
<TR><TD>Maximum size for a table?</TD><TD>32 TB</TD></TR>
used if the table is larger than a minimum size, and the query
selects only a small percentage of the rows in the table. This is
because the random disk access caused by an index scan can be
- slower than a straight read through the table, or sequential scan.
+ slower than a straight read through the table, or sequential scan. </P>
<P>To determine if an index should be used, PostgreSQL must have
statistics about the table. These statistics are collected using
<H4><A name="4.10">4.10</A>) What is the difference between the
various character types?</H4>
<BLOCKQUOTE>
-<TABLE BORDER=1>
+<TABLE >
<TR><TH>Type</TH><TH>Internal Name</TH><TH>Notes</TH></TR>
<TR><TD>VARCHAR(n)</TD><TD>varchar</TD><TD>size specifies maximum
length, no padding</TD></TR>
<P>It is easy using set-returning functions,
<a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
- http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.
+ http://techdocs.postgresql.org/guides/SetReturningFunctions</a></P>.
<H4><A name="4.20">4.20</A>) Why do I get "relation with OID #####
does not exist" errors when accessing temporary tables in PL/PgSQL
<I>pg_hba.conf</I>, and the client <I>sslmode</I> must not be
<I>disable.</I> (Note that it is also possible to use a third-party
encrypted transport, such as stunnel or ssh, rather than PostgreSQL's
- native SSL connections.)
+ native SSL connections.)</LI>
<LI>Database user passwords are automatically encrypted when stored in
the system tables.</LI>
<LI>The server can run using an encrypted file system.</LI>
<H1>Developer's Frequently Asked Questions (FAQ) for
PostgreSQL</H1>
- <P>Last updated: Fri Mar 11 08:09:23 EST 2005</P>
+ <P>Last updated: Fri Mar 11 16:43:05 EST 2005</P>
<P>Current maintainer: Bruce Momjian (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
<BR>
- <CENTER>
<H2>General Questions</H2>
- </CENTER>
<A href="#1.1">1.1</A>) How do I get involved in PostgreSQL
development?<BR>
<A href="#1.2">1.2</A>) What development environment is required
site development?<BR>
- <CENTER>
<H2>Technical Questions</H2>
- </CENTER>
<A href="#2.1">2.1</A>) How do I efficiently access information in
tables from the backend code?<BR>
<A href="#2.2">2.2</A>) Why are table, column, type, function,
http://momjian.postgresql.org/cgi-bin/pgpatches</a>, and
those that are being kept for the next release,
<a href="http://momjian.postgresql.org/cgi-bin/pgpatches2">
- http://momjian.postgresql.org/cgi-bin/pgpatches2</a>.
+ http://momjian.postgresql.org/cgi-bin/pgpatches2</a>.</P>
<H3><A name="1.5">1.5</A>) Where can I learn more about the
code?</H3>
href=
"http://xzilla.postgresql.org/todo">http://xzilla.postgresql.org/todo</A></P>
- <CENTER>
<H2>Technical Questions</H2>
- </CENTER>
<H3><A name="2.1">2.1</A>) How do I efficiently access information
in tables from the backend code?</H3>
<i>pgsql-hackers-win32@postgresql.org</i>. You can subscribe by sending
an email body containing the word <i>subscribe</i> to <i><a
href="mailto:pgsql-hackers-win32-request@postgresql.org">pgsql-hackers-win32-request@postgresql.org</a></i>.<br>
-<ul>
-</ul>
<h2>Resources</h2>
There are several resources that helped us complete this port:<br>
<ul>
</P>
<P>Traduzido por: Euler Taveira de Oliveira (<A href=
- "mailto:eulerto@yahoo.com.br">eulerto@yahoo.com.br</A>)<BR>
+ "mailto:eulerto@yahoo.com.br">eulerto@yahoo.com.br</A>)</P>
<P>A versão mais recente desse documento pode ser vista em <A href=
"http://www.postgresql.org/files/documentation/faqs/FAQ.html">
baseados no NT tais como Win2000, WinXP e Win2003. Um instalador
está disponível em <a href=
"http://pgfoundry.org/projects/pginstaller">
- http://pgfoundry.org/projects/pginstaller</a> Versões do Windows
- baseados no MSDOS (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando o Cygwin.
+ http://pgfoundry.org/projects/pginstaller</a> Versões do Windows
+ baseados no MSDOS (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando o Cygwin.</P>
<P>Há também um porte para Novell Netware 6 em
<A href="http://forge.novell.com">http://forge.novell.com</A>
- e uma versão para OS/2 (eComStation) em <a href=
- "http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">
- http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>.</P>
+ e uma versão para OS/2 (eComStation) em <a href=
+ "http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">
+ http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>.</P>
<H4><A name="1.5">1.5</A>) Onde eu posso conseguir o PostgreSQL?</H4>
<P>Outras listas de discussões e informações sobre o PostgreSQL podem ser encontradas na homepage do PostgreSQL em:</P>
<BLOCKQUOTE>
- <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
+ <P><A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A></P>
</BLOCKQUOTE>
<P>O principal canal de IRC é o <I>#postgresql</I> na Freenode (<I>irc.freenode.net</I>). Para se conectar você pode utilizar o comando Unix <code>irc -c '#postgresql' "$USER" irc.freenode.net</code> ou utilizar qualquer outro cliente de IRC. Um canal hispânico (<I>#postgresql-es</I>) e um francês (<I>#postgresqlfr</I>) também existem na mesma rede. Há também um canal PostgreSQL na EFNet.</P>
<P>Se o <I>postmaster</I> não está sendo executado, você pode executar o núcleo do <I>postgres</I> a partir da linha de comando, e digitar a sua sentença <SMALL>SQL</SMALL> diretamente. Isso é recomendado <B>somente</B> para fins de depuração. Note que uma nova linha termina a consulta, e não um ponto-e-vírgula. Se você compilou com símbolos de depuração, você pode utilizar um depurador para ver o que está acontecendo. Como o núcleo (backend) não foi iniciado a partir do <I>postmaster</I>, ele não está executando em um ambiente idêntico e problemas de iteração com o núcleo/travamento não podem ser reproduzidos.</P>
-<P>Se o <i>postmaster</i> está sendo executado, inicie o <i>psql</i> em uma janela, e então encontre o <small>PID</small> do processo <i>postgres</i> utilizado pelo <i>psql</i> utilizando <pre>SELECT pg_backend_pid()</pre>. Utilize um depurador para anexar ao <small>PID</small> do <i>postgres</i>. Você pode definir pontos de parada (<i>breakpoints</i>) no depurador e digitar consultas no <i>psql</i>. Se você está depurando a inicialização do <i>postgres</i>, você pode definir PGOPTIONS="-W n" e então iniciar o <i>psql</i>. Isto retardará a inicialização por <i>n</i> segundos então você pode anexar o depurador ao processo, definir quaisquer pontos de parada e continuar pela sequência de inicialização.</p>
+<P>Se o <i>postmaster</i> está sendo executado, inicie o <i>psql</i> em uma janela, e então encontre o <small>PID</small> do processo <i>postgres</i> utilizado pelo <i>psql</i> utilizando <code>SELECT pg_backend_pid()</code>. Utilize um depurador para anexar ao <small>PID</small> do <i>postgres</i>. Você pode definir pontos de parada (<i>breakpoints</i>) no depurador e digitar consultas no <i>psql</i>. Se você está depurando a inicialização do <i>postgres</i>, você pode definir PGOPTIONS="-W n" e então iniciar o <i>psql</i>. Isto retardará a inicialização por <i>n</i> segundos então você pode anexar o depurador ao processo, definir quaisquer pontos de parada e continuar pela sequência de inicialização.</p>
-<P>Há várias variáveis de configuração do servidor <pre>log_*</pre> que habilitam a exibição de estatísticas que podem ser muito úteis para depuração e medidas de performance.</P>
+<P>Há várias variáveis de configuração do servidor <code>log_*</code> que habilitam a exibição de estatísticas que podem ser muito úteis para depuração e medidas de performance.</P>
<P>Você também pode compilar com perfil para ver que funções estão demandando tempo de execução. Os arquivo de perfil do núcleo (backend) serão colocados no diretório <I>pgsql/data/base/dbname</I>. O arquivo de perfil do cliente será colocado no diretório atual do cliente. O Linux requer uma compilação com <I>-DLINUX_PROFILE</I> para criação dos perfis.</P>
<H4><A name="3.11">3.11</A>) Que tipo de hardware eu devo usar?</H4>
- <P>Por causa do hardware de PC ser em sua maioria compatível, pessoas tendem a acreditar que todos os hardwares de PC são de mesma qualidade. Não é verdade. ECC RAM, SCSI e placas mãe de qualidade são mais confiáveis e têm uma melhor performance do que hardwares mais baratos. O PostgreSQL executará em quase todo hardware, mas se a confiabilidade e a performance forem importantes é prudente pesquisar sobre as opções de hardware. Nossas listas de discussão podem ser usadas para discutir opções de hardware e dilemas.</P>
+ <P>Por causa do hardware de PC ser em sua maioria compatível, pessoas tendem a acreditar que todos os hardwares de PC satilde;o de mesma qualidade. Natilde;o é verdade. ECC RAM, SCSI e placas mãe de qualidade são mais confiáveis e têm uma melhor performance do que hardwares mais baratos. O PostgreSQL executará em quase todo hardware, mas se a confiabilidade e a performance forem importantes é prudente pesquisar sobre as opções de hardware. Nossas listas de discussão podem ser usadas para discutir opções de hardware e dilemas.</P>
<HR>
<P>Toda a consulta tem que ser avaliada, mesmo se você só quer os primeiros registros. Considere utilizar uma consulta que tenha um <SMALL>ORDER BY</SMALL>. Se há um índice que combina com o <SMALL>ORDER BY</SMALL>, o PostgreSQL pode ser capaz de avaliar somente os primeiros registros requisitados, ou toda consulta tem que ser avaliada até que os registros desejados tenham sido gerados.</P>
- <P>Para obter um registro randômico, utilize:
+ <P>Para obter um registro randômico, utilize:</P>
<PRE>
SELECT col
FROM tab
utilizados se uma tabela é maior do que o tamanho mínimo e uma consulta
seleciona somente uma porcentagem pequena de registros de uma tabela. Isto porque
o acesso randômico ao disco causado por uma busca por índice pode ser
- mais lento do que uma leitura ao longo da tabela ou uma busca sequencial.
+ mais lento do que uma leitura ao longo da tabela ou uma busca sequencial.</p>
<P>Para determinar se um índice pode ser utilizado, o PostgreSQL deve ter
estatísticas sobre a tabela. Estas estatísticas são coletadas utilizando
<LI>A localidade padrão <I>C</I> deve ser utilizada durante o
<i>initdb</i> porque não é possível saber o próximo/maior caracter
em uma localidade que não seja a C. Você pode criar um índice
- especial <PRE>text_pattern_ops</PRE> para tais casos que funcionam somente para
- indexação utilizando <PRE>LIKE</PRE>.
+ especial <tt>text_pattern_ops</tt> para tais casos que funcionam somente para
+ indexação utilizando <tt>LIKE</tt>.
</LI>
</UL>
- <P>
<P>Em versões anteriores a 8.0, índices frequentemente não podiam ser usados a menos que os tipos de dados correspodessem aos tipos da coluna do índice. Isto é particularmente verdadeiro para índices de coluna int2, int8 e numeric.</P>
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
</PRE>
- por:
+<p>por:</p>
<PRE> SELECT *
FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
</PRE>
-
-Para isto ser rápido, <CODE>subcol</CODE> deve ser uma coluna indexada. <P>A partir da versão 7.4, <CODE>IN</CODE> utiliza a mesma técnica de agrupamento do que consultas normais, e é recomendado utilizar <CODE>EXISTS</CODE>.
-
+<p>
+Para isto ser rápido, <CODE>subcol</CODE> deve ser uma coluna indexada.</P>
+<P>A partir da versão 7.4, <CODE>IN</CODE> utiliza a mesma técnica de agrupamento do que consultas normais, e é recomendado utilizar <CODE>EXISTS</CODE>.
+</p>
<H4><A name="4.23">4.23</A>) Como eu faço uma junção externa (outer join)?</H4>
<P>PostgreSQL suporta junções externas utilizando a sintaxe padrão do SQL. Aqui temos dois exemplos:</P>
<H4><A name="4.25">4.25</A>) Como eu retorno múltiplos registros ou colunas de uma função?</H4>
- <P>No 7.3, você pode facilmente retornar múltiplos registros ou colunas de uma função, <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.
+ <P>No 7.3, você pode facilmente retornar múltiplos registros ou colunas de uma função, <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>
<H4><A name="4.26">4.26</A>) Por que eu não posso confiar na criação/remoção de tabelas temporárias em funções PL/PgSQL?</H4>
<P>PL/PgSQL armazena o conteúdo da função, e o efeito indesejado é que se uma função PL/PgSQL acessa uma tabela temporária, e aquela tabela é removida e criada novamente, e a função é chamada novamente, a função irá falhar porque o conteúdo armazenado da função ainda apontará para a tabela temporária antiga. A solução é utilizar o <SMALL>EXECUTE</SMALL> para acesso a tabelas temporárias no PL/PgSQL. Isto irá fazer com que a consulta seja avaliada toda vez.</P>
<H4><A name="4.27">4.27</A>) Que opções para encriptação estão disponíveis?</H4>
<UL>
<LI>No <I>contrib/pgcrypto</I> contém muitas funções de encriptação para serem utilizados em consultas <SMALL>SQL</SMALL>.</li>
- <LI>Para encriptar a transmissão do cliente ao servidor, o servidor deve ter a opção <I>ssl</I> definida como <I>true</I> no <I>postgresql.conf</I>, e um registro <I>host</I> ou <I>hostssl</I> deve existir no <I>pg_hba.conf</I>, e o <I>sslmode</I> no cliente não deve estar <I>disable</I>. (Note que também é possível utilizar outros esquemas de transporte encriptado, tais como stunnel ou ssh, ao invés da conexão SSL nativa do PostgreSQL.)
+ <LI>Para encriptar a transmissão do cliente ao servidor, o servidor deve ter a opção <I>ssl</I> definida como <I>true</I> no <I>postgresql.conf</I>, e um registro <I>host</I> ou <I>hostssl</I> deve existir no <I>pg_hba.conf</I>, e o <I>sslmode</I> no cliente não deve estar <I>disable</I>. (Note que também é possível utilizar outros esquemas de transporte encriptado, tais como stunnel ou ssh, ao invés da conexão SSL nativa do PostgreSQL.)</LI>
<LI>Senhas dos usuários do banco de dados são automaticamente encriptadas quando armazenadas na versão 7.3. Em versões anteriores, você deve habilitar a opção <I>PASSWORD_ENCRYPTION</I> no <I>postgresql.conf</I>.</li>
<li>O servidor pode executar utilizando um sistema de arquivos encriptado.</li>
</UL>
<H2 align="center">Obecné otázky</H2>
- <H4><A name="1.1">1.1</A>) Co je PostgreSQL? Jak se vyslovuje?</H2>
+ <H4><A name="1.1">1.1</A>) Co je PostgreSQL? Jak se vyslovuje?</H4>
<P>PostgreSQL se vyslovuje <I>Post-Gres-Q-L</I>. Zvukový záznam je
dostupný na adrese <A href="http://www.postgresql.org/postgresql.mp3"></A>.</P>
Win32 knihovny <I>libpq</I> a <I>psql</I>. K databázi PostgerSQL lze pøistupovat skrze
rozhraní <SMALL>ODBC</SMALL>.</P>
- <P><STRONG>Server</STRONG><P>
+ <P><STRONG>Server</STRONG></P>
<P>Server mù¾e být na WindowsNT a Win2k provozován pouze s knihovnou
Cygwin, Cygnus Unix/NT porting library. Více <I>pgsql/doc/FAQ_MSWIN</I> v
distribuci nebo MS Windows FAQ na adrese
- <A href="http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>.
+ <A href="http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>.</P>
<P>Na nativním portu pro MS Win NT/2000/XP se pracuje. Dal¹í informace
o aktuálním stavu PostgreSQL pro Windows naleznet na adrese
<A href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</A> a
<A href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">
- http://momjian.postgresql.org/main/writings/pgsql/win32.html</A>.
+ http://momjian.postgresql.org/main/writings/pgsql/win32.html</A>.</P>
<P>Existující port pro Novell Netware 6 naleznete na
<A href="http://forge.novell.com">http://forge.novell.com</A>.</P>
subscribe
end
</PRE>
- na adresu <A href="mailto:pgsql-general-request@PostgreSQL.org">
+<P>na adresu <A href="mailto:pgsql-general-request@PostgreSQL.org">
pgsql-general-request@PostgreSQL.org</A>.</P>
<P>Mù¾ete si vy¾ádat denní pøehled (diggest), který má zhruba 30K dennì
<P>Seznam dal¹ích konferencí naleznete na stránkách PostgreSQL:</P>
<BLOCKQUOTE>
- <A href="http://www.postgresql.org">http://www.postgresql.org</A>
+ <P><A href="http://www.postgresql.org">http://www.postgresql.org</A></P>
</BLOCKQUOTE>
<H4><A name="1.7">1.7</A>) Jaká je poslední verze?</H4>
<P>Nejdøíve si stáhnìte nejnovìj¹í zdroje a pøeètìte si vývojáøskou
dokumentaci na na¹em webu nebo v distribuci. Pak se pøihla¹te do
- konferencí <I>pgsql-hackers</I> a <P>pgsql-patches</I>. Kvalitní záplaty posílejte do
+ konferencí <I>pgsql-hackers</I> a <I>pgsql-patches</I>. Kvalitní záplaty posílejte do
pgsql-patches.</P>
<P>Právo commit má v <SMALL>CVS</SMALL> archivu asi tøinácti lidí. Ka¾dý z nich poslal
<SMALL>DBMS</SMALL>, napø. transakce, vnoøené dotazy, spou¹tì, pohledy, kontrolu
referenèní integrity a sofistikované zamykání. Podporuje nìkteré
vlastnosti, které tyto systémy nemají, u¾ivatelem definované typy,
- dìdiènost, pravidla, MVCC redukující zamykání.</BR></BR></DD>
+ dìdiènost, pravidla, MVCC redukující zamykání.<BR><BR></DD>
<DT><B>Výkon</B></DT>
<DD>Výkonnostnì je na tom PostgreSQL podobnì jako dal¹í komerèní ale
kód s minimem chyb. Ka¾dá verze je více ne¾ mìsíc v beta testování,
a na¹e historie verzí ukazuje, ¾e mù¾eme nabídnout stabilní, solidní
verze, které jsou pøipraveny pro reálné nasazení. V této oblasti
- jsme srovnatelní s dal¹ími databázemi.</BR></BR></DD>
+ jsme srovnatelní s dal¹ími databázemi.<BR><BR></DD>
<DT><B>Podpora</B></DT>
<DD>Na na¹í mailové konferenci mù¾ete kontaktovat velkou skupinu
kteøí vy¾adují podporu ke konkrétním pøípadùm, existuje placená
podpora (<A href="#1.6">FAQ sekce 1.6</A>).<BR><BR></DD>
- <DT><B>Cena</B><DT>
+ <DT><B>Cena</B></DT>
<DD>PosgreSQL lze volnì pou¾ívat pro nekomerèní i komerèní pou¾ití.
Mù¾ete do svých produktù pøidat ná¹ kód bez omezení, respektive
v souladu s podmínkami na¹í licenèní smlouvy (v duchu BSD licence).<BR>
napøíklad:</P>
<PRE>
cd /usr/local/pgsql
- ./bin/postmaster > server.log 2>&1 &
+ ./bin/postmaster > server.log 2>&1 &
</PRE>
<P>Tím se vytvoøí log v adresáøi PostgreSQL, Tento soubor obsahuje u¾iteèné
informace o problémech a chybách vyskytlých se na serveru. Postmaster má
<P>Jinak je tomu v pøípadì pou¾ití <SMALL>LIMIT</SMALL> a <SMALL>ORDER BY</SMALL>, pøi kterém se vìt¹inou
index pou¾ije, výsledkem je pouze malá èást tabulky. Funkce MAX() a
- MIN() nepou¾ívají indexy, ale je mo¾né tuté¾ hodnotu získat:
+ MIN() nepou¾ívají indexy, ale je mo¾né tuté¾ hodnotu získat:</P>
<PRE>
SELECT col
FROM tab
<UL>
<LI>vzor <SMALL>LIKE</SMALL> nesmí zaèínat <I>%</I></LI>
<LI><I>~</I> regulární výraz musí zaèínat <I>^</I></LI>
- </UL>
+ </UL></LI>
<LI>vzor nesmí zaèínat intervalem, napø. [a-e]</LI>
<LI>vyhledávaní, které není Case sensitiv jako je <SMALL>ILIKE</SMALL> nebo <I>~*</I>
nepou¾ívá indexy. Mù¾ete ale pou¾ít funkcionální indexy, které jsou
<P>Koneènì mù¾ete pou¾ít <SMALL>OID</SMALL> hodnotu vrácenou pøíkazem <SMALL>INSERT</SMALL>, ale to je
pravdìpodobnì nejménì pøenositelné øe¹ení. V Perlu pøi pou¾ití DBI
modulu Edmunda Mergleho DBD:Pg oid hodnotu získáme <I>$sth->{pg_oid_status}</I>
- po ka¾dém <I>$sth->execute()</I>.
+ po ka¾dém <I>$sth->execute()</I>.</P>
<H4><A name="4.15.3">4.15.3</A>) Nepovede <I>currval()</I> a <I>nextval()</I> k rozhození
podmínek pøi soubìhu s jinými u¾ivateli?</H4>
<LI> pøidání, vkládání (append, insert)</LI>
<LI> OID, serial value (OID, serial value)</LI>
<LI> portal, kurzor (portal, cursor)</LI>
- <LI> range variable, jméno tabulky, alias tabulky (range</LI>
+ <LI> range variable, jméno tabulky, alias tabulky (range
variable, table name, table alias)</LI>
</UL>
<P>Døívìj¹í verze (pøed 7.4) spojovali vnoøené dotazy k vnìj¹ím sekvenèním
ètením výsledku poddotazu pro ka¾dý øádek vnìj¹ího dotazu. Pokud poddotaz
vrátil nìkolik málo øádkù <SMALL>IN</SMALL> bylo rychlé. Pro ostatní pøípady je vhodné
- nahradit <SMALL>IN</SMALL> <SMALL>EXISTS</SMALL>:
+ nahradit <SMALL>IN</SMALL> <SMALL>EXISTS</SMALL>:</P>
<PRE>
SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
</PRE>
- na:
+<p>na:</p>
<PRE>
SELECT *
FROM tab
<P>V PostgreSQL 7.3 mù¾ete jednodu¹e vracet více øádkù nebo sloupcù z
funkce, viz:
- <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.
+ <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>
<H4><A name="4.26">4.26</A>) Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky v PL/pgSQL funkcích?</H4>
pøepínaè <I>--enable-depend</I> pøíkazu <I>configure</I> k automatickému øe¹ení
závislostí pøekladaèem.</P>
</BODY>
-</HTML>
\ No newline at end of file
+</HTML>
<P>PostgreSQL se prononce <I>Post-Gres-Q-L</I>. Un fichier audio est
disponible sur <A
- HREF="http://www.postgresql.org/postgresql.mp3">http://www.postgresql.org/postgresql.mp3</A>
+ href="http://www.postgresql.org/postgresql.mp3">http://www.postgresql.org/postgresql.mp3</A>
pour ceux souhaitant entendre la prononciation.</P>
<P>PostgreSQL est une amélioration du système de gestion de bases
développement de PostgreSQL. C'est un projet soutenu par une
communauté sans être contrôlé par une société. Pour y contribuer,
voir la FAQ des développeurs sur <A
- HREF="http://www.postgresql.org/docs/faqs/FAQ_DEV.html">http://www.postgresql.org/docs/faqs/FAQ_DEV.html</A>.</P>
+ href="http://www.postgresql.org/docs/faqs/FAQ_DEV.html">http://www.postgresql.org/docs/faqs/FAQ_DEV.html</A>.</P>
<P>Les auteurs de PostgreSQL 1.01 étaient Andrew Yu et Jolly Chen.
Beaucoup d'autres personnes ont contribué au portage, aux tests,
PostgreSQL sur le site web de PostgreSQL :</P>
<BLOCKQUOTE>
- <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
+ <p><A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A></p>
</BLOCKQUOTE>
<P>Il y a aussi un canal IRC sur Freenode et EFNet, le canal
l'intégralité de la requête peut être évaluée, jusqu'à générer les lignes
désirées.</P>
- <P>Pour faire un <SMALL>SELECT</SMALL> sur une ligne aléatoire :
+ <P>Pour faire un <SMALL>SELECT</SMALL> sur une ligne aléatoire :</P>
<PRE>
SELECT colonne
FROM table
<LI>La locale <I>C</I> par défaut doit être utilisée lors de
<i>initdb</i>.</LI>
</UL>
- <P>
<p>Dans les versions antérieures à la 8.0, les indexs ne peuvent souvent
pas être utilisés sauf si les types de données correspondent exactement au
<P>A partir de la 7.3, vous pouvez facilement renvoyer plusieurs lignes ou
colonnes à partir d'une fonction,
<a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">
- http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.
+ http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.</P>
<H4><A name="4.26">4.26</A>) Pourquoi ne puis-je pas créer/supprimer des
tables temporaires dans les fonctions PL/PgSQL de façon stable ?</H4>
exister dans <I>pg_hba.conf</I>, et le <I>sslmode</I> du client ne doit pas
être <I>désactivée</I>. Notez qu'il est aussi possible d'utiliser un
transport crypté d'une troisième partie, tel que stunnel ou ssh, plutôt que
- les connexions SSL natives de PostgreSQL.
+ les connexions SSL natives de PostgreSQL.</LI>
<LI>Les mots de passe des utilisateurs sont automatiquement cryptés depuis
la version 7.3. Pour les versions précédentes, vous devez activer l'option
<I>PASSWORD_ENCRYPTION</I> dans <I>postgresql.conf</I>.</LI>
<p>Eine Portierung für Novell Netware 6 gibt es unter <a href="http://forge.novell.com">http://forge.novell.com</a>.</p>
<p>Für OS/2 (eComStation) gibt es eine Version hier:
- <a href="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>
+ <a href="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a></p>
<h4><a name="1.5">1.5</a>) Woher bekomme ich PostgreSQL?</h4>
<h4><a name="1.6">1.6</a>) Wo bekomme ich Support für PostgreSQL?</h4>
<p>Die zentrale (englischsprachige) Mailing-Liste ist:
- <a href="mailto:pgsql-general@postgresql.org">mailto:pgsql-general@postgresql.org</a> .
+ <a href="mailto:pgsql-general@postgresql.org">mailto:pgsql-general@postgresql.org</a> .</p>
<p>Die Liste ist Themen vorbehalten, die PostgreSQL betreffen. Die Anmeldung
erfolgt mit einer Email an die Adresse <a href="mailto:pgsql-general-request@postgresql.org">pgsql-general-request@postgresql.org</a> mit folgenden Zeilen im Text
<p>Weitere Mailinglisten und Informationen zu PostgreSQL befinden sich auf der PostgreSQL-Homepage:</p>
<blockquote>
-<a href="http://www.postgresql.org">http://www.postgresql.org</a>
+<p><a href="http://www.postgresql.org">http://www.postgresql.org</a></p>
</blockquote>
<p>Es gibt außerdem einen IRC-Channel bei EFNet und bei Freenode, Channel
<em>#PostgreSQL</em>. Unter UNIX/Linux können Sie mit z.B.
<h4><a name="1.13">1.13</a>) Wie sende ich einen Fehlerbericht?</h4>
<p>Bitte besuchen Sie die PostgreSQL-BugTool-Seite <a href="http://www.postgresql.org/bugform.html">http://www.postgresql.org/bugform.html</a>,
- die Hinweise und Anleitungen zur Einreichung von Fehlerberichten enthält.
+ die Hinweise und Anleitungen zur Einreichung von Fehlerberichten enthält.</p>
<p>Überprüfe auch den ftp-Server <a href="ftp://ftp.postgresql.org/pub/">ftp://ftp.postgresql.org/pub/</a>,
um nachzusehen, ob es eine neuere PostgreSQL-Version oder neue Patches gibt.</p>
</a>) und Rekall (<a href="http://www.thekompany.com/products/rekall/">
http://www.thekompany.com/products/rekall/</a>, GPL/proprietär). Es gibt
außerdem phpPgAdmin (<a href="http://phppgadmin.sourceforge.net/">
- http://phppgadmin.sourceforge.net/ </a>), eine web-basierte Schnittstelle.
+ http://phppgadmin.sourceforge.net/ </a>), eine web-basierte Schnittstelle. </p>
<h4><a name="2.4">2.4</a>) Welche Programmiersprachen und Schnittstellen gibt es?</h4>
(Bereich <em>Drivers/Interfaces</em>) bezogen werden.
</p>
<hr />
- <h2 align="center">Administrative Fragen</h2><p>
+ <h2 align="center">Administrative Fragen</h2>
<h4><a name="3.1">3.1</a>) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?</h4>
<p>Wenn der <em>postmaster</em> hingegen läuft, führen Sie <em>psql</em> in einem Fenster aus,
ermitteln Sie die Prozessnummer (<small>PID</small>) des <em>postgres</em>-Prozesses, der von <em>psql</em>
- verwendet wird (mit <pre>SELECT pg_backend_pid()</pre>). Binden Sie einen Debugger an diese <small>PID</small>
+ verwendet wird (mit <code>SELECT pg_backend_pid()</code>). Binden Sie einen Debugger an diese <small>PID</small>
und führen Sie Abfragen von <em>psql</em> aus. Wenn Sie den postgres-Serverstart analysieren
wollen, setzen Sie die Umgebungsvariable <em>PGOPTIONS="-W </em>n<em>"</em>, und starten Sie
dann <em>psql</em>. Dies verzögert den Start um <em>n</em> Sekunden, damit Sie einen Debugger an
<h4><a name="4.2">4.2</a>) Wie wähle ich per <small>SELECT</small>-Anweisung nur die ersten paar
Zeilen bzw. eine beliebige Zeile in einer Abfrage aus?</h4>
- <p>Vgl. die <small>FETCH</small> Man-Page, oder benutzen Sie <small>SELECT ... LIMIT...</small> .
+ <p>Vgl. die <small>FETCH</small> Man-Page, oder benutzen Sie <small>SELECT ... LIMIT...</small> .</p>
<p>Selbst wenn Sie nur die ersten paar Zeilen einer Tabelle abfragen möchten,
muß unter Umständen die komplette Abfrage abgearbeitet werden. Ziehen Sie also
durch Block und Offset Werte zu identifizieren. T<small>ID</small>s
verändern sich, sobald Zeilen verändert oder zurückgeladen werden. Sie
werden in Indexeinträgen benutzt um auf die physikalischen Zeilen zu
- zeigen.
+ zeigen.</p>
<h4><a name="4.16">4.16</a>) Welche Bedeutung haben die verschiedenen Ausdrücke, die in
PostgreSQL benutzt werden (z.B. attribute, class,...)?</h4>
<HTML>
<HEAD>
<TITLE>PostgreSQL FAQ in Japanese</TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=x-euc-jp">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#A00000" ALINK="#0000FF">
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=x-euc-jp">
<H1>
PostgreSQL(¥Ý¥¹¥È¥°¥ì¥¹¡¦¥¥å¡¼¡¦¥¨¥ë)¤Ë¤Ä¤¤¤Æ¤è¤¯¤¢¤ë¼ÁÌä¤È¤½¤Î²òÅú(FAQ)</H1>
<P>
¸½ºß¤Î°Ý»ý´ÉÍý¼Ô: Bruce Momjian (<A
HREF="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
Maintainer of Japanese Translation: Jun Kuwamura (<A
-HREF="mailto:juk at PostgreSQL.jp">juk at PostgreSQL.jp</A>)<BR><P>
+HREF="mailto:juk at PostgreSQL.jp">juk at PostgreSQL.jp</A>)<BR></P>
<P>
¤³¤Îʸ½ñ¤ÎºÇ¿·ÈǤÏ
- "http://www.postgresql.org/files/documentation/faqs/FAQ.html">
+ <a href="http://www.postgresql.org/files/documentation/faqs/FAQ.html">
http://www.postgresql.org/files/documentation/faqs/FAQ.html</A></P>
¤Ç¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
<P>
¥×¥é¥Ã¥È¥Û¡¼¥à¤ËÆÃͤμÁÌä¤Ë¤Ä¤¤¤Æ¤Ï:
- "http://www.postgresql.org/docs/faq/">
+ <a href="http://www.postgresql.org/docs/faq/">
http://www.postgresql.org/docs/faq/</A></P>
<BR>¤Ë²óÅú¤¬¤¢¤ê¤Þ¤¹¡£
-<P>
-<SMALL><PRE>
+<PRE>
(°Ê²¼¡¢Ìõ¼Ô¤Ë¤è¤ëÃí¼á¤ò [ÌõÃí¡§ ¤È ] ¤È¤Ç°Ï¤ó¤Çµ¤·¤Þ¤¹¡£)
[ÌõÃí¡§
ÆüËܸìÈÇÀ½ºî¤Ë¤Ä¤¤¤Æ¤Î¥á¥â¤ÏºÇ¸åÈø¤Ø°ÜÆ°¤·¤Þ¤·¤¿¡£
2005ǯ01·î12Æü ·¬Â¼ ½á
]
-</PRE></SMALL>
+</PRE>
-<P>
<HR>
-<P>
<H2 align="center">°ìÈÌŪ¤Ê¼ÁÌä</H2>
<A HREF="#5.2">5.2</A>) PostgreSQL ÍѤ˽ñ¤¤¤¿¤Á¤ç¤Ã¤ÈÁÇŨ¤Ê¿·¤·¤¤·¿¤ä´Ø¿ô¤òÄ󶡤·¤Æ¥×¥í¥¸¥§¥¯¥È¤Ë¹×¸¥¤·¤¿¤¤¤Î¤Ç¤¹¤¬¡©<BR>
<A HREF="#5.3">5.3</A>) ¥¿¥×¥ë¤òÊÖ¤¹ C¸À¸ì¤Î´Ø¿ô¤Ï¤É¤Î¤è¤¦¤Ë½ñ¤¤Þ¤¹¤«¡©<BR>
<A HREF="#5.4">5.4</A>) ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤Þ¤·¤¿¡£ºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤âÊѲ½¤¬¸«¤é¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©<BR>
-<P>
<HR>
<H2 align="center">°ìÈÌŪ¤Ê¼ÁÌä</H2>
-<P>
<H4><A NAME="1.1">1.1</A>) PostgreSQL ¤È¤Ï²¿¤Ç¤¹¤«¡© ²¿¤ÈÆɤߤޤ¹¤«¡©</H4>
<P>PostgreSQL¤Ï<I>Post-Gres-Q-L</I>(¥Ý¥¹¥È - ¥°¥ì¥¹ - ¥¥å¡¼ - ¥¨¥ë) ¤Èȯ²»¤·¤Þ¤¹¡£</P>
<P>PostgreSQL ¤Ï¼¡À¤Âå <SMALL>DBMS</SMALL> ¸¦µæÍѤΥץí¥È¥¿¥¤¥×¤Ç¤¢¤Ã¤¿ POSTGRES ¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¥·¥¹¥Æ¥à¤Î²þÎÉÈǤǤ¹¡Ê¤³¤Î¤¿¤á¡¢º£¤Ç¤â¤È¤¤É¤ "Postgres" ¤È¸Æ¤Ð¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡Ë¡£PostgreSQL ¤Ï POSTGRES ¤Î¶¯ÎϤʥǡ¼¥¿¡¦¥â¥Ç¥ë¤ÈËÉ٤ʥǡ¼¥¿¡¦¥¿¥¤¥×(·¿)¤òÊÝ»ý¤·¤Ê¤¬¤é¡¢POSTGRES ¤Ç»È¤ï¤ì¤¿ PostQuel Ì䤤¹ç¤ï¤»¸À¸ì¤ò¡¢³ÈÄ¥¤·¤¿ <SMALL>SQL</SMALL> ¤Î¥µ¥Ö¥»¥Ã¥È¤ËÃÖ¤´¹¤¨¤Æ¤¤¤Þ¤¹¡£PostgreSQL ¤Ï̵ÎÁ¤Ç´°Á´¤Ê¥½¡¼¥¹¤òÍøÍѤǤ¤Þ¤¹¡£
+</P>
<P>PostgreSQL ¤Î³«È¯¤Ï¡¢PostgreSQL ³«È¯¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ë»²²Ã¤·¤Æ¤¤¤ë³«È¯¼Ôã¤Î¥Á¡¼¥à¤Ç¤¹¤Ù¤Æ¹Ô¤Ê¤ï¤ì¤Æ¤¤¤Þ¤¹¡£¸½ºß¤ÎºÂĹ¤Ï Marc G. Fournier (<A HREF="mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A> )¤Ç¤¹¡£(²¼µ¤Î<a href="#1.6">1.6Àá</a>¤Ë»²²Ã¤Î»ÅÊý¤¬¤¢¤ê¤Þ¤¹¡£)¸½ºß¡¢¤³¤Î¥Á¡¼¥à¤¬ PostgreSQL ³«È¯¤Î¤¹¤Ù¤Æ¤ÎÌÌÅݤò¤ß¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥Á¡¼¥à¤Ï¥³¥ß¥å¥Ë¥Æ¥£¥×¥í¥¸¥§¥¯¥È¤Ç¤¢¤ê¡¢¤¤¤«¤Ê¤ë´ë¶È¤Ë¤è¤Ã¤Æ¤âÀ©¸æ¤ò¼õ¤±¤Þ¤»¤ó¡£»²²Ã¤·¤¿¤±¤ì¤Ð¡¢<A href=
"http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html">
</P>
<P>Postgres95-1.01 ¤ÎÃ濴Ū¤Ê³«È¯¼Ô¤Ï Andrew Yu ¤È Jolly Chen ¤Ç¤·¤¿¤¬¡¢¤½¤Î¾ÂçÀª¤Î¿Í¡¹¤¬¤³¤Î¥³¡¼¥É¤Î°Ü¿¢¡¢¥Æ¥¹¥È¡¢¥Ç¥Ð¥°¡¢¤ª¤è¤Ó¡¢²þÎɤ˻²²Ã¤·¤Þ¤·¤¿¡£PostgreSQL ¤ÎÇÉÀ¸¸µ¥³¡¼¥É¤Ç¤¢¤ë Postgres ¤Ï¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¥Ð¡¼¥¯¥ì¥¤¹»¤Ë¤ª¤¤¤Æ¡¢ Michael Stonebraker ¶µ¼ø¤Î»Ø´ø¤Î¤â¤È¡¢Â¿¤¯¤Î³ØÀ¸¡¢Â´¶ÈÀ¸¡¢ËÜ¿¦¤Î¥×¥í¥°¥é¥Þ¤¿¤Á¤ÎÅØÎϤˤè¤êºî¤é¤ì¤Þ¤·¤¿¡£
+</P>
<P>¥Ð¡¼¥¯¥ì¥¤¤Ë¤ª¤±¤ë¤³¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î¤â¤È¤Î̾Á°¤Ï Postgres ¤Ç¤·¤¿¤¬¡¢<SMALL>SQL</SMALL> ¤Îµ¡Ç½¤¬Äɲ䵤줿 1995 ǯ¤Ë¤½¤Î̾Á°¤Ï Postgres95 ¤ËÊѹ¹¤µ¤ì¡¢1996 ǯ¤Î½ª¤ê¤Ë¤½¤Î̾Á°¤Ï PostgreSQL ¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿¡£
+</P>
-<P>
<H4><A NAME="1.2">1.2</A>) PostgreSQL ¤ÎÃøºî¸¢¤Ï¤É¤¦¤Ê¤Ã¤Æ¤Þ¤¹¤«¡©</H4>
<P> PostgreSQL ¤Ï²¼µ¤ÎÃøºî¸¢¤Ë½¾¤¤¤Þ¤¹¡£
-<SMALL><PRE>
+</P>
+<PRE>
[ÌõÃí¡§
ÀµÊ¸¤Ï±Ñ¸ì¤Ç¤¹¡£»²¹Í¤È¤·¤Æ¡¢Ìõʸ¤òÊ»µ·ÇºÜ¤·¤Þ¤¹¡£
]
-</PRE></SMALL>
+</PRE>
<P>
PostgreSQL Data Base Management System</P>
<P>
OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.</P>
-<SMALL><PRE>
+<PRE>
POSTGRESQL ¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¥·¥¹¥Æ¥à
ÉôʬŪÃøºî¸¢ (c) 1996-2004, PostgreSQL¹ñºÝ³«È¯¥Á¡¼¥à
Ãøºî¸¢¤Ë´Ø¤¹¤ëÀµÊ¸¤Ï¾åµ¤Î±Ñ¸ì¤Ë¤è¤ëɽµ¤Ç¤¹¡£ÆüËܸìÌõ¤Ï¤¢¤¯¤Þ¤Ç
»²¹Í¤Ç¤¹¡£
]
-</PRE></SMALL>
+</PRE>
<P>¾åµ¤ÏBSD¥é¥¤¥»¥ó¥¹¤Ç¸Å¤¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î¥é¥¤¥»¥ó¥¹¤Ç¤¹¡£¥½¡¼¥¹¥³¡¼¥É
¤¬¤É¤Î¤è¤¦¤Ë»È¤ï¤ì¤è¤¦¤È¤âÀ©¸Â¤·¤Þ¤»¤ó¡£¹¥¤Þ¤·¤¤¤³¤È¤Ê¤Î¤Ç¡¢²æ¡¹¤â¤½¤ì¤ò
<P>
°ìÈÌŪ¤Ë¡¢ºÇ¶á¤ÎUnix¸ß´¹¥×¥é¥Ã¥È¥Û¡¼¥à¤Ç¤¢¤ì¤ÐPostgreSQL¤ò²ÔƯ¤µ¤»¤é¤ì¤ë¤Ï¤º¤Ç¤¹¡£¥ê¥ê¡¼¥¹¤Î»þÅÀ¤Ç¼ÂºÝ¤Ë¥Æ¥¹¥È¤ò¹Ô¤Ê¤Ã¤¿¤³¤È¤ÎÊó¹ð¤¬¤Ê¤µ¤ì¤¿¥×¥é¥Ã¥È¥Û¡¼¥à¤Ë¤Ä¤¤¤Æ¤Ï¥¤¥ó¥¹¥È¡¼¥ë¼ê°ú½ñ¤ËÎóµó¤·¤Æ¤¢¤ê¤Þ¤¹¡£</P>
-<P>
<H4><A NAME="1.4">1.4</A>) Unix°Ê³°¤Î°Ü¿¢ÈǤǻȤ¨¤ë¤â¤Î¤Ï¡©</H4>
<P>¥Ð¡¼¥¸¥ç¥ó8.0¤Ë¤Ê¤ê¡¢PostgreSQL ¤Ï¡¢Win2000, WinXP, Win2003¤Ê¤É¤Î Microsoft Windows NT¥Ù¡¼¥¹¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¥Í¥¤¥Æ¥£¥Ö¤ËÁö¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
Windows (Win95, Win98, WinMe)¤Ê¤É¡¢MSDOS¥Ù¡¼¥¹¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢Cygwin ¤ò»È¤Ã¤ÆPostgreSQL¤òÁö¤é¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
</P>
-<small><pre>
+<pre>
[ÌõÃí
pgInstaller ¤ÎÆþ¼ê¤ÏFTP¥ß¥é¡¼¥µ¥¤¥È¤Î win32 ¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤â²Äǽ¤Ç¤¹¡£
http://www.postgresql.org/mirrors-ftp.html
]
-</pre></small>
+</pre>
<p>¼¡¤Î¥µ¥¤¥È¤Ë Novell Netware 6 ¤Ø¤Î°Ü¿¢¤â¤¢¤ê¤Þ¤¹¡£
<a href="http://forge.novell.com">http://forge.novell.com</a>
¤Þ¤¿¡¢OS/2 (eComStation) ¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢<a href=
- "http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">
- http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>¤Ë¤¢¤ê¤Þ¤¹¡£</p>
+ "http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">
+ http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a>¤Ë¤¢¤ê¤Þ¤¹¡£</p>
<BR>
¤Ç¤¹¡£
¥ß¥é¡¼¥µ¥¤¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢²æ¡¹¤Î¥á¥¤¥ó Web ¥Ú¡¼¥¸¤ò¤´Í÷²¼¤µ¤¤¡£</P>
-<SMALL><PRE>
+<PRE>
[ÌõÃí:
°Ê²¼¤ÏÆüËܤΥߥ顼¥µ¥¤¥È¤Ç¤¹:
Japan: <A HREF="ftp://ring.so-net.ne.jp/pub/misc/db/PostgreSQL/">ftp://ring.so-net.ne.jp/pub/misc/db/PostgreSQL/</A>
Japan: <A HREF="ftp://ring.aist.go.jp/pub/misc/db/PostgreSQL/">ftp://ring.aist.go.jp/pub/misc/db/PostgreSQL/</A>
]
-</PRE></SMALL>
+</PRE>
<H4><A NAME="1.6">1.6</A>) ¥µ¥Ý¡¼¥È¤Ï¤É¤³¤Ç¼õ¤±¤é¤ì¤Þ¤¹¤«¡©</H4>
end
</PRE>
-¤È½ñ¤¤¤Æ <A HREF="mailto:pgsql-general-digest-request@PostgreSQL.org"> pgsql-general-digest-request@PostgreSQL.org</A> ¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ¤¤¡£</P>
+<P>¤È½ñ¤¤¤Æ <A HREF="mailto:pgsql-general-digest-request@PostgreSQL.org"> pgsql-general-digest-request@PostgreSQL.org</A> ¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ¤¤¡£</P>
<P> ¥À¥¤¥¸¥§¥¹¥ÈÈǤϡ¢¥á¥¤¥ó¥ê¥¹¥È¤Ç¼õ¿®¤¹¤ë¥á¥Ã¥»¡¼¥¸¤¬ 30k ÄøÅÙί¤ëËè¤Ë¥À¥¤¥¸¥§¥¹¥ÈÈǥꥹ¥È¤Î¥á¥ó¥Ð¡¼¤ËÁ÷ÉÕ¤µ¤ì¤Þ¤¹¡£</P>
<P> ¥Ð¥°¥ì¥Ý¡¼¥ÈÍѤΥ᡼¥ê¥ó¥°¥ê¥¹¥È¤â¤¢¤ê¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ø¤Î»²²Ã¤Ï "ËÜʸ" ¤Ë¡§
+</P>
<PRE>
subscribe
end
</PRE>
+<P>
¤È½ñ¤¤¤Æ<A
HREF="mailto:pgsql-bugs-request@PostgreSQL.org">pgsql-bugs-request@PostgreSQL.org</A>
¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ¤¤¡£</P>
<P> ³«È¯¼Ô¤ÎµÄÏÀ¤Î¤¿¤á¤Î¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤âÍøÍѤǤ¤Þ¤¹¡£¤³¤Î¥ê¥¹¥È¤Ø¤Î»²²Ã¤ÏÅŻҥ᡼¥ë¤ÎËÜʸ¤Ë¡§
+</P>
<PRE>
subscribe
end
</PRE>
-¤È½ñ¤¤¤Æ¡¢<A HREF="mailto:pgsql-hackers-request@PostgreSQL.org">pgsql-hackers-request@PostgreSQL.org</A>¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ¤¤¡£</P>
+<P>¤È½ñ¤¤¤Æ¡¢<A HREF="mailto:pgsql-hackers-request@PostgreSQL.org">pgsql-hackers-request@PostgreSQL.org</A>¤ØÅŻҥ᡼¥ë¤òÁ÷¤Ã¤Æ²¼¤µ¤¤¡£</P>
-<P PostgreSQL ¤Ë¤Ä¤¤¤Æ¤â¤Ã¤È¾Ü¤·¤¯ÃΤꤿ¤±¤ì¤Ð¡¢¼¡¤Î PostgreSQL WWW¥Û¡¼¥à¥Ú¡¼¥¸¤«¤é¤¿¤É¤ì¤Þ¤¹¡§
+<P>PostgreSQL ¤Ë¤Ä¤¤¤Æ¤â¤Ã¤È¾Ü¤·¤¯ÃΤꤿ¤±¤ì¤Ð¡¢¼¡¤Î PostgreSQL WWW¥Û¡¼¥à¥Ú¡¼¥¸¤«¤é¤¿¤É¤ì¤Þ¤¹¡§</P>
<BLOCKQUOTE>
- <A HREF="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
+ <P><A HREF="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A></P>
</BLOCKQUOTE>
-</P>
<P>¥á¥¸¥ã¡¼¤ÊIRC ¥Á¥ã¥ó¥Í¥ë¤Ï¡¢Freenode (<I>irc.freenode.net</I>)¤Î
<I>#PostgreSQL</I> ¤È¤¤¤¦¥Á¥ã¥ó¥Í¥ë¤Ç¤¹¡£
UNIX ¥³¥Þ¥ó¥É¤Ç¡¢
EFNet¤Ë¤âPostgreSQL¥Á¥ã¥ó¥Í¥ë¤¬¤¢¤ê¤Þ¤¹¡£
</P>
-<P>
-<SMALL><PRE>
+<PRE>
[ÌõÃí:
1999ǯ7·î23Æü¡¢ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¡¢Î¬¾ÎJPUG¤¬ÀßΩ¤µ¤ì¤Þ¤·¤¿¡£
JPUG ¤ÏÈó±ÄÍøÁÈ¿¥¤Ç¡¢PostgreSQL¤òÍøÍѤ¹¤ë¿Íã¤ÎÁê¸ß¶¨ÎϤξì¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¤ò¤´Í÷¤¯¤À¤µ¤¤¡£²ñ°÷ÅÐÏ¿¤â²Äǽ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
ÆüËܸì¤ÎIRC¥Á¥ã¥ó¥Í¥ë '#PostgreSQL*jp' ¤â¸ºß¤·¤Þ¤¹¡£
-</PRE></SMALL>
+</PRE>
<P>¾¦ÍÑ¥µ¥Ý¡¼¥È²ñ¼Ò¤Î¥ê¥¹¥È¤Ï<a href="http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</a>¤Ë¤¢¤ê¤Þ¤¹¡£</P>
<P> ÇÛÉÕ¤ÎÃæ¤Ë¡¢¤¤¤¯¤Ä¤«¤Î¥Þ¥Ë¥å¥¢¥ë¤È¥ª¥ó¥é¥¤¥ó¡¦¥Þ¥Ë¥å¥¢¥ë(¥Þ¥Ë¥å¥¢¥ë¡¦¥Ú¡¼¥¸)¤ª¤è¤Ó¤¤¤¯¤Ä¤«¤Î¾®¤µ¤Ê¥Æ¥¹¥ÈÎãÂ꤬´Þ¤Þ¤ì¤Þ¤¹¡£<I>/doc</I> ¥Ç¥£¥ì¥¯¥È¥ê¤ò¤´Í÷²¼¤µ¤¤¡£¤Þ¤¿¡¢¥Þ¥Ë¥å¥¢¥ë¤Ï¡¢<A HREF="http://www.ca.PostgreSQL.org/docs/">http://www.ca.PostgreSQL.org/docs/</A>¤Ç¥ª¥ó¥é¥¤¥ó¤Ç¤â±ÜÍ÷¤Ç¤¤Þ¤¹¡£</P>
-<SMALL><PRE>
+<PRE>
[ÌõÃí:
¡Ê³ô¡ËSRA¤ÈÆüËÜPostgreSQL¥æ¡¼¥¶²ñ¤ÇËÝÌõ¤µ¤ì¡¢
<A HREF="http://osb.sra.co.jp/PostgreSQL/Manual/">¡ÖPostgreSQL ¥ª¥Õ¥£¥·¥ã¥ë¥Þ¥Ë¥å¥¢¥ë¡×</A>
¤È¤·¤Æ½ÐÈǤµ¤ì¤Æ¤¤¤Þ¤¹¡£
]
-</PRE></SMALL>
+</PRE>
<P>¥ª¥ó¥é¥¤¥ó¤Ç»²¾È¤Ç¤¤ë PostgreSQL ¤ÎËܤâ2ºý¤¢¤ê¤Þ¤¹¡£<A href=
"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
-<SMALL><PRE>
+</P>
+<PRE>
[ÌõÃí:
ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¤Î<A HREF="http://www.PostgreSQL.jp/wg/psqltrans/"> ¡ÖPostgreSQL BookËÝÌõʬ²Ê²ñ¡×</A>
¤Ë¤ÆËÝÌõ¤µ¤ì¤Þ¤·¤¿¡£
]
-</PRE></SMALL>
-
+</PRE>
+<P>
¤ª¤è¤Ó¡¢ <A href=
"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>
¤Ç¤¹¡£
<A HREF="http://www.PostgreSQL.org/docs/awbook.html">
http://www.PostgreSQL.org/docs/awbook.html</A>
¤Ë¤¢¤ëPostgreSQLËÜ¤Ç <SMALL>SQL</SMALL> ¤ò¶µ¤¨¤Æ¤¤¤Þ¤¹¡£
-
-<SMALL><PRE>
+</P>
+<PRE>
[ÌõÃí:
ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¤Î<A HREF="http://www.PostgreSQL.jp/wg/psqltrans/"> ¡ÖPostgreSQL BookËÝÌõʬ²Ê²ñ¡×</A>
¤Ë¤ÆËÝÌõ¤µ¤ì½ÐÈǤµ¤ì¤Æ¤¤¤Þ¤¹¡£
]
-</PRE></SMALL>
-</P>
+</PRE>
<P>
¤½¤Î¾¤Ë¤â PostgreSQLËܤȤ·¤Æ¡¢<A href=
¤Î¤è¤¦¤Ê¤Î¤â¤¢¤ê¤Þ¤¹¡£
</P>
-<P>
-<SMALL><PRE>
+<PRE>
[ÌõÃí:
ÀаæãÉ×»á¤Ë¤è¤ëÆüËܸì¤Î»²¹Íʸ¸¥¤Î¾Ò²ð¥Ú¡¼¥¸
<A HREF="http://www.SRA.co.jp/people/t-ishii/PostgreSQL/doc-jp/index.html">http://www.SRA.co.jp/people/t-ishii/PostgreSQL/doc-jp/index.html</A>
<A HREF="http://www.wakhok.ac.jp/DB/DB.html">http://www.wakhok.ac.jp/DB/DB.html</A>
¤â¥ª¥ó¥é¥¤¥ó¤ÇÆɤळ¤È¤¬¤Ç¤¤Þ¤¹¡£
]
-</PRE></SMALL>
-</P>
+</PRE>
<H4><A NAME="1.11">1.11</A>) PostgreSQL¤ÏÀ¾Îñ2000ǯÌäÂê(Y2K)¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¤«¡©
</H4>
<P>¼Á¤ÎÎɤ¤´ðÈפϡ¢¥ª¡¼¥×¥ó¥½¡¼¥¹¡¦¥×¥í¥¸¥§¥¯¥È¤Ë¤È¤Ã¤Æ¤Ï¤È¤Æ¤âÂçÀڤʤâ¤Î¤Ç¡¢¥×¥í¥¸¥§¥¯¥È¤¬Á°¿Ê¤¹¤ëÀª¤¤¤ò¼º¤Ã¤ÆʬÎö¤¹¤ë¤Î¤ò²óÈò¤·¤Þ¤¹¡£</P>
<P>¤â¤Á¤í¤ó¡¢¤³¤Î´ðÈפϰ¤¤¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£°Ý»ý¤·Â³¤±¤ë¤¿¤á¤Ë¤ÏËè·î¤¢¤ë¤¤¤Ï°ì»þŪ¤Ë·ÐÈñ¤¬¤«¤«¤ê¤Þ¤¹¡£¤â¤·¡¢¤¢¤Ê¤¿¤ä¤¢¤Ê¤¿¤Î²ñ¼Ò¤Ë¡¢¤³¤¦¤·¤¿ÅØÎϤΤ¿¤á¤Î»ñ¶â¤Î±ç½õ¤ò»Ü¤¹¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ç¤·¤¿¤é¡¢<A href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A>¤«¤é´óÉÕ¤ò¤ª´ê¤¤¤·¤Þ¤¹¡£
+</P>
<P>¤Þ¤¿¡¢Web¥Ú¡¼¥¸¤Ë¤Ï PostgreSQL,Inc ¤È¤¢¤ê¤Þ¤¹¤¬¡¢¤½¤³¤Î "¹×¸¥(contributions)"¤È¤¤¤¦¹àÌܤϡ¢ PostgreSQL ¥×¥í¥¸¥§¥¯¥È¤ò»Ù±ç¤¹¤ë¤À¤±¤Î¤¿¤á¤Ç¡¢·è¤·¤ÆÆÃÄê¤Î²ñ¼Ò¤Î¤¿¤á¤Î»ñ¶â¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤â¤·¡¢¾®ÀÚ¼ê(check)¤ÎÊý¤¬ÅÔ¹ç¤è¤±¤ì¤ÐÏ¢ÍíÀè¤Î½»½ê¤Ø¤ªÁ÷¤ê²¼¤µ¤¤¡£</P>
¤Ø¤ªÁ÷¤ê¤¯¤À¤µ¤¤¡£
</P>
-<P>
<HR>
<H2 align="center">¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¤¥¢¥ó¥È¤Î¼ÁÌä</H2>
-<P>
<H4><A NAME="2.1">2.1</A>) PostgreSQL ¤Î¤¿¤á¤Î <SMALL>ODBC</SMALL> ¥É¥é¥¤¥Ð¡¼¤Ï¤¢¤ê¤Þ¤¹¤«¡©
</H4>
</P>
<P> OpenLink <SMALL>ODBC</SMALL> ¤Ï <A HREF="http://www.openlinksw.com/">http://www.openlinksw.com/</A>¤«¤éÆþ¼ê¤Ç¤¤Þ¤¹¡£É¸½àŪ¤Ê <SMALL>ODBC</SMALL> ¥¯¥é¥¤¥¢¥ó¥È¡¦¥½¥Õ¥È¥¦¥§¥¢¤Ç»È¤¨¤Þ¤¹¤Î¤Ç¡¢»Ù±ç¤·¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥×¥é¥Ã¥È¥Û¡¼¥à(Win, Mac, Unix, VMS)¤«¤é PostgreSQL ¤Î <SMALL>ODBC</SMALL> ¤¬ÍøÍѤǤ¤Þ¤¹¡£
+</P>
<P> ¤¿¤Ö¤óÈà¤é¤Ï¡¢¾¦ÍÑÉʼÁ¤Î¥µ¥Ý¡¼¥È¤ÎɬÍפʿ͡¹¤ËÇä¤Ã¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢
¥Õ¥ê¡¼¥¦¥§¥¢ÈǤϤ¤¤Ä¤Ç¤âÆþ¼ê²Äǽ¤Î¤è¤¦¤Ç¤¹¡£¼ÁÌä¤Ï¡¢<A href=
"mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>
¤ØÁ÷¤Ã¤Æ²¼¤µ¤¤¡£</P>
-
+<P>
<A HREF="http://www.PostgreSQL.org/docs/programmer/odbc.html">
Programmer's Guide</A>
¤Î <SMALL>ODBC</SMALL> ¤Î¾Ï¤â¤´Í÷¤¯¤À¤µ¤¤¡£
+</P>
-
-<P>
<H4><A NAME="2.2">2.2</A>) PostgreSQL ¤ò Web ¥Ú¡¼¥¸¤ÈÏ¢·È¤µ¤»¤ë¤Ë¤Ï¤É¤ó¤Ê¥Ä¡¼¥ë¤¬¤¢¤ê¤Þ¤¹¤«¡©
</H4>
<P> ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò΢¤Ë»ý¤Ä Web ¥Ú¡¼¥¸¤Ë¤Ä¤¤¤Æ¤ÎÁÇÀ²¤é¤·¤¤¾Ò²ð¤¬¡¢<BR>
<A href="http://www.webreview.com">http://www.webreview.com</A>¤Ë¤¢¤ê¤Þ¤¹¡£</P>
<P> Web ¤Ø¤Î³ÈÄ¥¤Î¤¿¤á¤Ë¤Ï¡¢PHP ¤¬Âî±Û¤·¤¿¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£<A HREF="http://www.php.net">http://www.php.net/</A>¤Ë¤¢¤ê¤Þ¤¹¡£
+</P>
-<SMALL><PRE>
+<PRE>
[ÌõÃí:
PHP¤Ë´Ø¤¹¤ëÆüËܸì¤Î¾ðÊó¤Ï¡¢2000ǯ4·î19Æü¤Ëȯ¤·¤¿ÆüËÜPHP¥æ¡¼¥¶²ñ¤Î¥µ¥¤¥È
<A HREF="http://www.php.gr.jp/">http://www.php.gr.jp/</A>
<A HREF="http://www.geocities.jp/rui_hirokawa/php/">http://www.geocities.jp/rui_hirokawa/php/</A>
¤Ë¤«¤Ê¤ê¤Þ¤È¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£
]
-</PRE></SMALL>
+</PRE>
<P> ½èÍý¤¬Ê£»¨¤Ê¾ì¹ç¡¢Â¿¤¯¤Î¿Í¤Ï Perl ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤È CGI.pm ¤« mod_perl ¤ò»È¤¤¤Þ¤¹¡£
+</P>
-<SMALL><PRE>
+<PRE>
[ÌõÃí:
WDB ¤Ï¡¢Web ¤«¤é DataBase ¤Ø¤Î Perl ¤Î Interface ¤Ç¤¹¡£
wdb-p95 ¤Ø¤Î¥ê¥ó¥¯¤ÏÀÚ¤ì¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£¤ª¤½¤é¤¯¡¢Perl DBI ·Ðͳ¤Ç DBD::Pg ¤ÎÍøÍѤ¬²Äǽ¤È»×¤ï¤ì¤Þ¤¹¡£
<A HREF="http://www.i-con.dk/wdb/">http://www.i-con.dk/wdb/</A>
¤È¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î·Ð°Þ¤Ï¤è¤¯¤ï¤«¤ê¤Þ¤»¤ó¡£
]
-</PRE></SMALL>
+</PRE>
-<P>
<H4><A NAME="2.3">2.3</A>) PostgreSQL ¤Ë¥°¥é¥Õ¥£¥«¥ë¡¦¥æ¡¼¥¶¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï¤¢¤ê¤Þ¤¹¤«¡©
</H4>
<p>¤â¤Á¤í¤ó¡¢PostgreSQL ¤Ø¤Î¥°¥é¥Õ¥£¥«¥ë¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£
PhpPgAdmin (<a href="http://phppgadmin.sourceforge.net/">
http://phppgadmin.sourceforge.net/ </a>) ¤ÏPostgreSQL¤Ø¤ÎWeb¥Ù¡¼¥¹¤Î
¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤òÄ󶡤·¤Þ¤¹¡£
+</P>
<P>¤è¤ê¾ÜºÙ¤Ê¥ê¥¹¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢<a
href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a>
¤ò¤´Í÷¤¯¤À¤µ¤¤¡£</P>
-<P>
<H4><A NAME="2.4">2.4</A>) ¤É¤Î¤è¤¦¤Ê¸À¸ì¤Ç PostgreSQL ¤ÈÄÌ¿®¤Ç¤¤¹¤«¡©
</H4>
</P>
<P>°Ê²¼¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ÏPostgreSQL¤ÎÇÛÉۤ˴ޤޤì¤Æ¤¤¤Þ¤¹¡£
+</P>
<UL>
-<LI>C (libpq)
-<LI>Ëä¤á¹þ¤ßC (ecpg)
-<LI>Java (jdbc)
-<LI>Python (<A HREF="http://www.druid.net/pygresql/">PyGreSQL</A>)
-<LI>TCL (libpgtcl)
+<LI>C (libpq)</LI>
+<LI>Ëä¤á¹þ¤ßC (ecpg)</LI>
+<LI>Java (jdbc)</LI>
+<LI>Python (<A HREF="http://www.druid.net/pygresql/">PyGreSQL</A>)</LI>
+<LI>TCL (libpgtcl)</LI>
</UL>
- <P>¤½¤Î¾¤ÎÍøÍѲÄǽ¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï <a
+ <P>¤½¤Î¾¤ÎÍøÍѲÄǽ¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ï
<a href="http://gborg.postgresql.org">http://gborg.postgresql.org</A>
¤Î<I>Drivers/Interfaces</I>¤Î¥»¥¯¥·¥ç¥ó¤Ë¤¢¤ê¤Þ¤¹¡£
</P>
-<SMALL><PRE>
+<PRE>
[ÌõÃí¡§
±Ê°Â¸ç»Ë¤µ¤ó¤Ï Palm ÈǤΠlibpq ¤ò³«È¯¤µ¤ì¤Þ¤·¤¿¡£
<a href="http://www.snaga.org/libpq/">http://www.snaga.org/libpq/</a>
]
-</PRE></SMALL>
+</PRE>
-<P>
<HR>
<H2 align="center">´ÉÍý¾å¤Î¼ÁÌä</H2>
-<P>
<H4><A NAME="3.1">3.1</A>) ¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð <I>/usr/local/pgsql</I> °Ê³°¤Î¾ì½ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¤Þ¤¹¤«¡©</H4>
<P> ´Êñ¤ÊÊýË¡¤Ï¡¢ <I>configure</I> ¤òÁö¤é¤»¤ë¤È¤¤Ë --prefix ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤¹¡£
+</P>
-<P>
<H4><A NAME="3.2">3.2</A>) postmaster ¤òÁö¤é¤»¤ë¤È¡¢<I>Bad System Call</I> ¤È¤«¥³¥¢¡¦¥À¥ó¥×¤·¤¿¤È¤Î¥á¥Ã¥»¡¼¥¸¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
</H4>
<P> ¤µ¤Þ¤¶¤Þ¤ÊÌäÂ꤬¹Í¤¨¤é¤ì¤Þ¤¹¤¬¡¢¤Þ¤ººÇ½é¤Ë¤¢¤Ê¤¿¤Î¥«¡¼¥Í¥ë¤Ë System V IPC ¤Î³ÈÄ¥¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Æ¸«¤Æ¤¯¤À¤µ¤¤¡£PostgreSQL ¤Ï¥«¡¼¥Í¥ë¤Ë¤è¤ë¶¦Í¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Î¥µ¥Ý¡¼¥È¤òɬÍפȤ·¤Þ¤¹¡£
-<P>
+</P>
<H4><A NAME="3.3">3.3</A>) <I>postmaster</I> ¤òÁö¤é¤»¤è¤¦¤È¤¹¤ë¤È¡¢<I>IpcMemoryCreate</I> ¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
</H4>
¤Ë¶¦Í¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤Î¾ÜºÙ¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¤´Í÷¤¯¤À¤µ¤¤¡£</P>
-<P>
<H4><A NAME="3.4">3.4</A>) <I>postmaster¤ò</I>Áö¤é¤»¤è¤¦¤È¤¹¤ë¤È¡¢<I>IpcSemaphoreCreate</I> ¥¨¥é¡¼¤¬½Ð¤Þ¤¹¡£¤Ê¤¼¤Ç¤¹¤«¡©
</H4>
<P>¤â¤·¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬<I>IpcSemaphoreCreate: semget failed (No space left on device)</I>¤Ç¤¢¤ì¤Ð¡¢¥«¡¼¥Í¥ë¤¬½½Ê¬¤Ê¥»¥Þ¥Õ¥©¤ò»È¤¨¤ë¤è¤¦¤Ë¹½À®¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£Postgres¤ÏÀøºßŪ¤Ê¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹Ëè¤Ë°ì¤Ä¤Î¥»¥Þ¥Õ¥©¤òɬÍפȤ·¤Þ¤¹¡£¤È¤ê¤¢¤¨¤º¤Î²ò·èºö¤Ï<I>postmaster</I>¤òµ¯Æ°¤¹¤ë¤È¤¤Ë¡¢¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤Î¿ô¤ò¤è¤ê¾¯¤Ê¤¯À©¸Â¤ò¤¹¤ë¤³¤È¤Ç¤¹¡£´ûÄêÃͤÎ32¤è¤ê¾®¤µ¤Ê¿ô¤Î¥Ñ¥é¥á¡¼¥¿¤ò<I>-N</I>¤Ç»È¤¤¤Þ¤¹¡£¤è¤ê¹±µ×Ū¤Ê²ò·èºö¤Ï¡¢¥«¡¼¥Í¥ë¤Î<SMALL>SEMMNS</SMALL> ¤È <SMALL>SEMMNI</SMALL> ¥Ñ¥é¥á¡¼¥¿¤òÁý¤ä¤¹¤³¤È¤Ç¤¹¡£
+</P>
<P>ÁàºîÉÔǽ¤Î¥»¥Þ¥Õ¥©¤â²áÅ٤ʥǡ¼¥¿¥Ù¡¼¥¹¥¢¥¯¥»¥¹¤Î´Ö¤Ë¥¯¥é¥Ã¥·¥å¤ò
µ¯¤³¤¹²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£
<P>¤â¤·¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬¤Ê¤Ë¤«Â¾¤Î¤â¤Î¤Ç¤¢¤ì¤Ð¡¢¥«¡¼¥Í¥ë¤Î¹½À®¤Ç¤Þ¤Ã¤¿¤¯¥»¥Þ¥Õ¥©¤Î¥µ¥Ý¡¼¥È¤ò¤·¤Æ¤¤¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£
PostgreSQL Administrator's Guide ¤Ë¶¦Í¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤Î¾ÜºÙ¤¬¤¢¤ê¤Þ¤¹¡£</P>
-<P>
<H4><A NAME="3.5">3.5</A>) ¾¤Î¥Û¥¹¥È¤«¤é¤ÎÀܳ¤Ï¤É¤Î¤è¤¦¤ËÀ©¸æ¤·¤Þ¤¹¤«¡©
</H4>
<P> ´ûÄêÃͤǤϡ¢PostgreSQL ¤Ï Unix ¥É¥á¥¤¥ó¥½¥±¥Ã¥È¡¢¤Þ¤¿¤Ï¡¢TCP/IPÀܳ¤Î¥í¡¼¥«¥ë¥Þ¥·¥ó¤«¤é¤ÎÀܳ¤·¤«µö¤·¤Þ¤»¤ó¡£postgresql.conf ¤ÎÃæ¤Î listen_addresses ¤ò½¤Àµ¤·¡¢<B>¤«¤Ä¡¢</B><I>$PGDATA/pg_hba.conf</I> ¥Õ¥¡¥¤¥ë¤òŬÀڤ˾¤·¤Æ¡¢¥Û¥¹¥È¼çƳ·¿Ç§¾Ú¤ò͸ú¤Ë¤·¤Ê¤¤¤«¤®¤ê¤Ï¡¢Â¾¤Î¥Þ¥·¥ó¤«¤é¤ÏÀܳ¤Ç¤¤Ê¤¤¤Ç¤·¤ç¤¦¡£
</p>
-<P>
<H4><A NAME="3.6">3.6</A>) ¤è¤êÎɤ¤Àǽ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥¨¥ó¥¸¥ó¤ò¤É¤Î¤è¤¦¤ËÄ´À°¤¹¤ì¤ÐÎɤ¤¤Ç¤¹¤«¡©
</H4>
<P> ³Î¤«¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÏÌ䤤¹ç¤ï¤»¤Î®ÅÙ¤òÁý¤·¤Þ¤¹¡£<SMALL>EXPLAIN ANALYZE</SMALL>¥³¥Þ¥ó¥É¤Ç PostgreSQL ¤¬¤É¤Î¤è¤¦¤Ë¤¢¤Ê¤¿¤ÎÌ䤤¹ç¤ï¤»¤òËÝÌõ¤·¤Æ¤¤¤ë¤«¤ò¸«¤ë¤³¤È¤¬¤Ç¤¡¢¤½¤·¤Æ¡¢¤É¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤ï¤ì¤Æ¤¤¤ë¤«¤ò¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+</P>
<P>¤â¤· <SMALL>INSERT</SMALL> ¤ò¿ÍѤ·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢<SMALL>COPY</SMALL> ¥³¥Þ¥ó¥É¤ò»È¤Ã¤ÆÂ礤ʥХåÁ½èÍý¤Ç¤½¤ì¤ò¹Ô¤Ê¤¦¤³¤È¤ò¸¡Æ¤¤·¤Æ²¼¤µ¤¤¡£¤³¤ì¤Ï¡¢<SMALL>INSERT</SMALL> ¤òÊÌ¡¹¤Ë¹Ô¤Ê¤¦¤è¤ê¤â¤Ã¤È¹â®¤Ç¤¹¡£¼¡¤Ë¡¢<SMALL>BEGIN WORK/COMMIT</SMALL> ¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¡¦¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ë̵¤¤Ê¸¤Ï¡¢¤½¤ì¤é¼«¿È¤¬¤½¤ì¤¾¤ì¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ËÆþ¤Ã¤Æ¤¤¤ë¤È¸«¤Ê¤µ¤ì¤Þ¤¹¡£¤¤¤¯¤Ä¤«¤Îʸ¤ò°ì¤Ä¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¡¦¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ç¹Ô¤Ê¤¦¤³¤È¤ò¹Í¤¨¤Æ²¼¤µ¤¤¡£¤³¤ì¤Ë¤è¤ê¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Î¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É¤¬¸º¤ê¤Þ¤¹¡£¤Þ¤¿¡¢Â礤ʥǡ¼¥¿¤ÎÊѹ¹¤ò¹Ô¤Ê¤¦ºÝ¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò°ìÅÙ³°¤·¤Æ¡¢ºî¤êľ¤¹¤³¤È¤ò¹Í¤¨¤Æ¤ß¤Æ²¼¤µ¤¤¡£
+</P>
<P> <a href=
"http://www.postgresql.org/docs/current/static/runtime.html">
Administration Guide/Server Run-time Environment/Run-time
Configuration</a>¤Ë¤Ï¡¢
¥Á¥å¡¼¥Ë¥ó¥°¤Î¥ª¥×¥·¥ç¥ó¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£<i>fsync</I>¥ª¥×¥·¥ç¥ó¤Ç<I>fsync()</I> ¤ò̵¸ú¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤Ã¤Æ¡¢³Æ¥È¥é¥ó¥¶¥¯¥·¥ç¥óËè¤Ë <I>fsync()</I> ¤Ç¥Ç¥£¥¹¥¯¤ò¹¹¿·¤¹¤ë¤Î¤ò»ß¤á¤µ¤»¤Þ¤¹¡£
+</P>
<P> <I>shared_buffers</I>¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¥Ð¥Ã¥¯¥¨¥ó¥É¡¦¥×¥í¥»¥¹¤Ë¤è¤ê»È¤ï¤ì¤ë¶¦Í¥á¥â¥ê¡¼¡¦¥Ð¥Ã¥Õ¥¡¤òÂ礤¯¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤â¤·¡¢¤³¤Î¥Ñ¥é¥á¡¼¥¿¤ò¹â¤¯¤·¤¹¤®¤ë¤È¡¢¥«¡¼¥Í¥ë¤Î¶¦Í¥á¥â¥ê¡¼¶õ´Ö¤ÎÀ©¸ÂÃͤò±Û¤¨¤Æ¤·¤Þ¤¦¤¿¤á¤Ë <I>postmaster</I> ¤¬Áö¤é¤Ê¤¯¤Ê¤ë¤Ç¤·¤ç¤¦¡£´ûÄêÃͤǤϡ¢¤½¤ì¤¾¤ì¤Î¥Ð¥Ã¥Õ¥¡¤ÎÂ礤µ¤Ï 8K ¤Ç¡¢¥Ð¥Ã¥Õ¥¡¿ô¤Ï 1000 ¤Ç¤¹¡£
+</P>
<P> <I>sort_mem</I> (PostgreSQL 8.0¤«¤é¤Ï: <I>work_mem</I>)¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¡¢¤½¤ì¤¾¤ì¤Î¥Ð¥Ã¥¯¥¨¥ó¥É¡¦¥×¥í¥»¥¹¤¬°ì»þŪ¤ÊʤÙÂؤ¨¤Ë¤è¤Ã¤Æ»È¤¦¥á¥â¥ê¡¼¤ÎºÇÂ祵¥¤¥º¤òÁý¤ä¤¹¤³¤È¤â¤Ç¤¤Þ¤¹¡£ ´ûÄêÃÍ¤Ï 1024 (¤¹¤Ê¤ï¤Á¡¢1MB)¤Ç¤¹¡£
+</P>
<P> ¤Þ¤¿¡¢<SMALL>CLUSTER</SMALL> ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¡¢¥Æ¡¼¥Ö¥ë¤Î¥Ç¡¼¥¿¤ò¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ë¹ç¤ï¤»¤ë¤¿¤á¤Ë¥°¥ë¡¼¥×²½¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£¾Ü¤·¤¯¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç <I>CLUSTER</I> ¤ò¸«¤Æ²¼¤µ¤¤¡£
+</P>
-<P>
<H4><A NAME="3.7">3.7</A>) ¤É¤Î¤è¤¦¤Ê¥Ç¥Ð¥°µ¡Ç½¤¬»È¤¨¤Þ¤¹¤«¡©</H4>
<P> PostgreSQL ¤Ï¡¢¥Ç¥Ð¥°¤Î¤¿¤á¤Ë°ÕÌ£¤Î¤¢¤ë¡¢¾õÂÖ¾ðÊó¤òÊó¹ð¤¹¤ë¤¤¤¯¤Ä¤«¤Îµ¡Ç½¤ò»ý¤Á¤Þ¤¹¡£
+</P>
<P> ¤Þ¤º¡¢--enable-cassert ¥ª¥×¥·¥ç¥ó¤Ç <I>configure</I> ¤òÁö¤é¤»¤Þ¤¹¡£¤½¤¦¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢Âô»³¤Î <I>assert()</I> ¤¬¡¢¥Ð¥Ã¥¯¥¨¥ó¥É¤Î¿ÊĽ¾õ¶·¤ò´Æ»ë¤·¡¢²¿¤«Í½´ü¤»¤Ì¤³¤È¤¬µ¯¤¤ë¤È¥×¥í¥°¥é¥à¤òÄä»ß¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
+</P>
<P> <I>postmaster</I> ¤È <I>postgres</I> ¤ÎξÊý¤Ç¤¤¤¯¤Ä¤«¤Î¥Ç¥Ð¥°¡¦¥ª¥×¥·¥ç¥ó¤ÎÍøÍѤ¬¤Ç¤¤Þ¤¹¡£¤Þ¤º¡¢¼¡¤Î¤è¤¦¤Ë <I>postmaster</I> ¤òµ¯Æ°¤¹¤ë¤È¤¤Ï¤¤¤Ä¤Ç¤â¡¢É¸½à½ÐÎϤȥ¨¥é¡¼½ÐÎϤò¥í¥°¡¦¥Õ¥¡¥¤¥ë¤ËÁ÷¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ë¤³¤È¤ò³Î¤«¤á¤Æ²¼¤µ¤¤¡£
+</P>
<PRE>
cd /usr/local/pgsql
- ./bin/postmaster >server.log 2>&1 &
+ ./bin/postmaster >server.log 2>&1 &
</PRE>
<P> ¤³¤ì¤Ë¤è¤ê PostgreSQL ¤ÎºÇ¾åÉô¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë server.log ¥Õ¥¡¥¤¥ë¤¬ÃÖ¤«¤ì¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¥µ¡¼¥Ð¡¼¤¬Áø¶ø¤·¤¿ÌäÂê¤ä¥¨¥é¡¼¤Ë¤Ä¤¤¤ÆÍÍѤʾðÊó¤ò´Þ¤ß¤Þ¤¹¡£<I>Postmaster</I> ¤Ï¹¹¤Ë¾ÜºÙ¤Ê¾ðÊó¤òÊó¹ð¤¹¤ë¤¿¤á¤Î <I>-d</I> ¥ª¥×¥·¥ç¥ó¤ò»ý¤Á¤Þ¤¹¡£¤½¤Î <I>-d</I> ¥ª¥×¥·¥ç¥ó¤Ï¡¢¥Ç¥Ð¥°¡¦¥ì¥Ù¥ë¤ò»ØÄꤷ¤Þ¤¹¡£¹â¤¤¥Ç¥Ð¥°¡¦¥ì¥Ù¥ë¤Ç¤Ï¡¢Âç¤¤Ê¥í¥°¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¤³¤È¤ËÃí°Õ¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£
+</P>
<P>¤â¤·¡¢<i>postmaster</i>¤¬Áö¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢<I>postgres</I>¥Ð¥Ã¥¯¥¨¥ó¥É¤ò¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤éÁö¤é¤»¤ë¤³¤È¤¬¤Ç¤¡¢Ä¾ÀÜ<SMALL>SQL</SMALL>ʸ¤ò¥¿¥¤¥×¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤Î¤ä¤ê¤«¤¿¤Ï¡¢¥Ç¥Ð¥°ÌÜŪ¤Î¤È¤<B>¤À¤±</B>¤ª¾©¤á¤·¤Þ¤¹¡£¥»¥ß¥³¥í¥ó¤Ç¤Ï¤Ê¤¯¡¢²þ¹Ô¤¬Ì䤤¹ç¤ï¤»¤Î½ª¤ê¤Ë¤Ê¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¤â¤·¡¢¥Ç¥Ð¥°¥·¥ó¥Ü¥ë¤òÆþ¤ì¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¤¤ì¤Ð¡¢¥Ç¥Ð¥Ã¥¬¤ò»È¤Ã¤Æ²¿¤¬µ¯¤¤Æ¤¤¤ë¤«¤ò¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£postmaster ¤«¤é¥Ð¥Ã¥¯¥¨¥ó¥É¤ò³«»Ï¤·¤¿¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢ÆÈΩ¤Ê´Ä¶¤ÇÁö¤Ã¤Æ¤¤¤ë¤Î¤Ç¤Ï¤Ê¤¯¥í¥Ã¥¯¡¿¥Ð¥Ã¥¯¥¨¥ó¥É¤È¤ÎÂÐÏäÎÌäÂ꤬½ÅÊ£¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
+</P>
- <P> ¤â¤·¡¢<i>postmaster</i>¤¬Áö¤Ã¤Æ¤¤¤ì¤Ð¡¢¤¢¤ë¥¦¥£¥ó¥É¥¦¤Ç<I>psql</I>¤ò³«»Ï¤¹¤ë¤È¡¢<pre>SELECT pg_backend_pid()</pre>¤ò»È¤Ã¤Æ¡¢<i>psql</i> ¤Ç»È¤ï¤ì¤ë <i>postgres</i> ¥×¥í¥»¥¹¤Î<SMALL>PID</SMALL>¤¬¸«¤Ä¤«¤ê¤Þ¤¹¡£
+ <P> ¤â¤·¡¢<i>postmaster</i>¤¬Áö¤Ã¤Æ¤¤¤ì¤Ð¡¢¤¢¤ë¥¦¥£¥ó¥É¥¦¤Ç<I>psql</I>¤ò³«»Ï¤¹¤ë¤È¡¢<code>SELECT pg_backend_pid()</code>¤ò»È¤Ã¤Æ¡¢<i>psql</i> ¤Ç»È¤ï¤ì¤ë <i>postgres</i> ¥×¥í¥»¥¹¤Î<SMALL>PID</SMALL>¤¬¸«¤Ä¤«¤ê¤Þ¤¹¡£
¥Ç¥Ð¥Ã¥¬¤ò»È¤Ã¤Æ<i>postgres</i>¤Î<SMALL>PID</SMALL>¤Ë¥¢¥¿¥Ã¥Á(attach)¤·¤Þ¤¹¡£¥Ç¥Ð¥Ã¥¬¤ÎÃ椫¤é¥Ö¥ì¡¼¥¯¡¦¥Ý¥¤¥ó¥È¤ò¥»¥Ã¥È¤·¡¢<i>psql</i> ¤«¤éÌ䤤¹ç¤ï¤»¤òȯ¹Ô¤·¤Þ¤¹¡£¥Ç¥Ð¥°¤Î¤¿¤á¤Ë<i>postgres</i>¤ò»ÏÆ°¤¹¤ë¾ì¹ç¤Ï¡¢PGOPTIONS="-W n" ¤òÀßÄê¤Ç¤¡¢¤½¤ì¤«¤é¡¢<i>psql</i> ¤ò³«»Ï¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢<i>n</i> Éó«»Ï¤òÃ٤餻¤ë¤Ï¤º¤Ê¤Î¤Ç¡¢¥Ç¥Ð¥Ã¥¬¤Ç¥×¥í¥»¥¹¤Ë¥¢¥¿¥Ã¥Á¤·¤Æ¡¢¥Ö¥ì¡¼¥¯¥Ý¥¤¥ó¥È¤òÀßÄꤷ¡¢³«»Ï¤«¤é½ç¤òÄɤäƸ«¤Æ¤æ¤¯¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
-<P> ¤¤¤¯¤Ä¤«¤Î<pre>log_*</pre>¥µ¡¼¥Ð¹½À®ÊÑ¿ô¤Ï¡¢¥Ç¥Ð¥Ã¥°¤ÈÀǽ¬Äê¤Ë¤È¤Æ¤âÌò¤ËΩ¤Ä¥×¥í¥»¥¹¤ÎÅý·×¤Î°õºþ¤ò²Äǽ¤Ë¤·¤Þ¤¹¡£
+</P>
+<P> ¤¤¤¯¤Ä¤«¤Î<code>log_*</code>¥µ¡¼¥Ð¹½À®ÊÑ¿ô¤Ï¡¢¥Ç¥Ð¥Ã¥°¤ÈÀǽ¬Äê¤Ë¤È¤Æ¤âÌò¤ËΩ¤Ä¥×¥í¥»¥¹¤ÎÅý·×¤Î°õºþ¤ò²Äǽ¤Ë¤·¤Þ¤¹¡£
+</P>
<P> ²¿¤È¤¤¤¦´Ø¿ô¤¬¤É¤Î¤¯¤é¤¤¼Â¹Ô»þ´Ö¤ò¿©¤Ã¤Æ¤¤¤ë¤«¤ò¸«¤ë¤¿¤á¤Ë¡¢¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¡Ê¥×¥í¥Õ¥£¡¼¥ëÉÕ¤¡Ë¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¤½¤Î¥Ð¥Ã¥¯¥¨¥ó¥É¤Î¥×¥í¥Õ¥£¡¼¥ë¡¦¥Õ¥¡¥¤¥ë¤Ï <I>pgsql/data/base/dbname</I> ¥Ç¥£¥ì¥¯¥È¥ê¤Ë³ÊǼ¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£¥¯¥é¥¤¥¢¥ó¥È¤Î¥×¥í¥Õ¥£¡¼¥ë¤Ï¥¯¥é¥¤¥¢¥ó¥È¤Î¸½¹Ô¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤«¤ì¤ë¤Ç¤·¤ç¤¦¡£Linux ¤Ç¤Þ¤È¤â¤Ê¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¤ò¹Ô¤¦¤Ë¤Ï <I>-DLINUX_PROFILE</I> ¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
+</P>
-
-<P>
<H4><A NAME="3.8">3.8</A>) Àܳ¤·¤è¤¦¤È¤¹¤ë¤È¤¤Ë <I>'Sorry, too many clients'</I> ¤¬½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
</H4>
<P> <I>postmaster¤¬</I>Ʊ»þ»ÏÆ°¤Ç¤¤ë¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤ËÂФ¹¤ëÀ©¸Â¿ô¤òÁý¤ä¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
+</P>
<P>´ûÄê¤ÎºÇÂç¥×¥í¥»¥¹¤Ï32¥×¥í¥»¥¹¤Ç¤¹¡£<I>-N</I>¤ËŬÀÚ¤ÊÃͤò°ú¿ô¤Ë¤·¤Æ<I>postmaster</I>¤òºÆµ¯Æ°¤¹¤ë¤«¡¢PostgreSQL.conf ¤ò½¤Àµ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤½¤ÎÃͤòÁý¤ä¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+</P>
<P>¤â¤·¡¢<I>-N</I> ¤ò 32¤è¤ê¤âÂ礤¯¤¹¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢<I>-B</I>¤â´ûÄê¤Î64¤è¤êÂ礤¤ÃͤËÁý²Ã¤µ¤»¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤·¡¢<I>-B</I> ¤Ï¾¯¤Ê¤¯¤È¤â <I>-N</I> ¤Î2ÇܤϤʤ¯¤Æ¤Ï¤Ê¤é¤º¡¢¤ª¤½¤é¤¯ºÇ¹âÀǽ¤ò˾¤à¤Ê¤é¤Ð¤½¤ì¤è¤êÂ礤¤Ãͤ¬É¬ÍפʤϤº¤Ç¤¹¡£¥Ð¥Ã¥¯¥¨¥ó¥É¥×¥í¥»¥¹¤ò¤¿¤¯¤µ¤ó¤Ë¤¹¤ë¤È¡¢¤¤¤í¤¤¤í¤ÊUnix¥«¡¼¥Í¥ë¹½À®¥Ñ¥é¥á¡¼¥¿¤âÁý¤ä¤¹¤³¤È¤¬É¬Íפˤʤ뤫¤â¤·¤ì¤Þ¤»¤ó¡£
¶¦Í¥á¥â¥ê¡¼¡¦¥Ö¥í¥Ã¥¯¤ÎºÇÂçÃÍ(<SMALL>SHMMAX</SMALL>)¡¢
¤â³Îǧ»ö¹à¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£
PostgreSQL¤Ëµö¤µ¤ì¤ë¥Ð¥Ã¥¯¥¨¥ó¥É¤Î¥×¥í¥»¥¹¿ô¤¬À©¸Â¤µ¤ì¤Æ¤¤¤ë¤Î¤Ï¡¢
¥·¥¹¥Æ¥à¤Î¥ê¥½¡¼¥¹¤ò»È¤¤²Ì¤·¤Æ¤·¤Þ¤¦¤³¤È¤òÈò¤±¤ë¤¿¤á¤Ç¤¹¡£
+</P>
-<P>
-<H4><A NAME="3.9">3.9</A>) pgsql_tmp</I> ¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¤Ï²¿¤¬¤¢¤ê¤Þ¤¹¤«¡©
+<H4><A NAME="3.9">3.9</A>) <I>pgsql_tmp</I> ¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¤Ï²¿¤¬¤¢¤ê¤Þ¤¹¤«¡©
</H4>
<P> Ì䤤¹ç¤ï¤»¼Â¹Ô¥â¥¸¥å¡¼¥ë¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤¿°ì»þŪ¤Ê¥Õ¥¡¥¤¥ë¤¬¡¢¤³¤Î¥Ç¥£
¥ì¥¯¥È¥ê¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£Î㤨¤Ð¡¢¤â¤· <SMALL>ORDER BY</SMALL> ¶ç¤òËþ¤¿¤¹¤¿¤á¤Ë¥Ð¥Ã¥¯¥¨¥ó¥É¤Î <I>-S</I> ¥Ñ¥é¥á¡¼¥¿¤Çµö²Ä¤·¤¿Ãͤè¤ê¤âÂ礤ʥ¹¥Ú¡¼¥¹¤¬¥½¡¼¥È¤ÎºÝ¤ËɬÍפÀ¤È¤¹¤ë¤È¡¢°î¤ì¤¿¥Ç¡¼¥¿¤òÊÝ»ý¤¹¤ë¤¿¤á¤Ë°ì»þŪ¤Ê¥Õ¥¡¥¤¥ë¤¬¤¤¤¯¤Ä¤«¤³¤³¤ËÀ¸À®¤µ¤ì¤Þ¤¹¡£
+</P>
<P>
°ì»þŪ¤Ê¥Õ¥¡¥¤¥ë¤Ï¼«Æ°Åª¤Ë¾Ã¤·µî¤é¤ì¤ë¤Ï¤º¤Ç¤¹¤¬¡¢¤â¤·¡¢¥½¡¼¥È¤ÎÅÓÃæ¤Ç¥Ð¥Ã¥¯¥¨¥ó¥É¤¬¥¯¥é¥Ã¥·¥å¤·¤Æ¤·¤Þ¤¦¤È¤½¤¦¤Ï¤Ê¤ê¤Þ¤»¤ó¡£<I>postmaster</I>¤ÎÄä»ß¤È¥ê¥¹¥¿¡¼¥È¤Ç¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¾Ã¤·¤µ¤é¤ì¤Þ¤¹¡£
+</P>
-<SMALL><PRE>
+<PRE>
[ÌõÃí¡§
SYSLOGD ·Ðͳ¤Ç¥í¥°¤ò½ÐÎϤ¹¤ë¤Ë¤Ï¡¢¤Þ¤º¡¢configure ¤ò --enable-syslog
ÉÕ¤¤ÇÁö¤é¤»¤¿¸å¡¢¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ë¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£
¥ª¥×¥·¥ç¥óÉÕ¤¤Ë¤Æ¥µ¡¼¥Ð¥â¡¼¥É¤Çµ¯Æ°¤·¤Þ¤¹¡£(¥Ð¡¼¥¸¥ç¥ó 7.1 ¤«¤é¤Ï
pg_options ¤Ï PostgreSQL.conf ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£)
]
-</PRE></SMALL>
+</PRE>
-<P>
<H4><A name="3.10">3.10</A>) PostgreSQL¤Î¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹¤ò¥¢¥Ã¥×¥Ç¡¼¥È¤¹¤ë¤Î¤Ë¥À¥ó¥×¤È¥ê¥¹¥È¥¢¤ò¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©</H4>
<P>
PostgreSQL¥Á¡¼¥à¤Ï¥Þ¥¤¥Ê¡¼¥ê¥ê¡¼¥¹¤Ç¤Ï¾®¤µ¤ÊÊѹ¹¤·¤«¹Ô¤Ê¤¤¤Þ¤»¤ó¤Î¤Ç¡¢7.2 ¤«¤é 7.2.1 ¤Ø¤Î¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ë¤Ï¥À¥ó¥×¤È¥ê¥¹¥È¥¢¤ÎɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤·¤«¤·¡¢¥á¥¸¥ã¡¼¥ê¥ê¡¼¥¹(¤¿¤È¤¨¤Ð¡¢7.2¤«¤é7.3¤Ø¤Î¤è¤¦¤Ê)¤Ç¤Ï¡¢¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤ä¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ÎÆâÉô¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÊѹ¹¤ò¤·¤Ð¤·¤Ð¹Ô¤Ê¤¤¤Þ¤¹¡£¤³¤ì¤é¤ÎÊѹ¹¤Ï¤¿¤¤¤Æ¤¤Ê£»¨¤Ç¡¢¤½¤Î¤¿¤á²æ¡¹¤Ï¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¤¿¤á¤Î¸åÊý¸ß´¹À¤ò°Ý»ý¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤»¤ó¡£¥À¥ó¥×¤ÏÈÆÍÑ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¥Ç¡¼¥¿¤ò½ÐÎϤ·¡¢¤½¤ì¤ò¿·¤·¤¤ÆâÉô¥Õ¥©¡¼¥Þ¥Ã¥È¤ËÆɤ߹þ¤à¤³¤È¤¬¤Ç¤¤Þ¤¹¡£</P>
<P>
¥Ç¥£¥¹¥¯¾å¤Ç¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ËÊѹ¹¤Î¤Ê¤¤Æ±°ì¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢¥¢¥Ã¥×¥°¥ì¡¼¥É¤Ï¡¢¥À¥ó¥×¡¿¥ê¥¹¥È¥¢¤Ç¤Ï¤Ê¤¯¡¢<I>pg_upgrade</I> ¥¹¥¯¥ê¥×¥È¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥ê¥ê¡¼¥¹¥Î¡¼¥È¤Ë¤Ï¡¢<I>pg_upgrade</I> ¤¬ÍøÍѲÄǽ¤Ê¥ê¥ê¡¼¥¹¤«¤É¤¦¤«µ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£</P>
-<P>
<H4><A name="3.11">3.11</A>) ¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤Ï¤É¤ó¤Ê¥³¥ó¥Ô¥å¡¼¥¿¤ò»È¤¨¤Ð¤è¤¤¤Ç¤¹¤«¡©</H4>
<P>
PC¥Ï¡¼¥É¥¦¥§¥¢¤Ï¤Û¤È¤ó¤É¸ß´¹À¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤Û¤È¤ó¤É¤Î¿Í¤Ï¡¢¤¹¤Ù¤Æ¤ÎPC¥Ï¡¼¥É¥¦¥§¥¢¤¬Æ±¤¸ÉʼÁ¤À¤È»×¤¤¹þ¤à·¹¸þ¤¬¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢¤½¤ì¤Ï´Ö°ã¤¤¤Ç¤¹¡£ECC RAM¡¢SCSI¡¢¤ª¤è¤Ó¡¢¹âÉʼÁ¥Þ¥¶¡¼¥Ü¡¼¥É¤Ï¡¢°Â¤¤¥Ï¡¼¥É¥¦¥§¥¢¤ËÈæ¤Ù¤ë¤È¡¢¤è¤ê¿®ÍêÀ¤¬¹â¤¯¡¢¤è¤êÀǽ¤âÎɤ¤¤Î¤Ç¤¹¡£PostgreSQL ¤Ï¤Û¤È¤ó¤É¤Î¥Ï¡¼¥É¥¦¥§¥¢¤Ç²ÔƯ¤·¤Þ¤¹¤¬¡¢¿®ÍêÀ¤äÀǽ¤¬½ÅÍפʾì¹ç¤Ï¡¢¥Ï¡¼¥É¥¦¥§¥¢¤Î¥ª¥×¥·¥ç¥ó¤ò¸¦µæ¤¹¤ë¤³¤È¤¬¸ÌÀ¤Ç¤¹¡£¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ç¤â¥Ï¡¼¥É¥¦¥§¥¢¥ª¥×¥·¥ç¥ó¤È¥È¥ì¡¼¥É¥ª¥Õ¤Ë¤Ä¤¤¤ÆµÄÏÀ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£</P>
-<P>
<HR>
<H2 align="center">Áàºî¾å¤Î¼ÁÌä</H2>
-<P>
<H4><A NAME="4.1">4.1</A>) ¥Ð¥¤¥Ê¥ê¡¦¥«¡¼¥½¥ë¤ÈÄ̾參¡¼¥½¥ë¤È¤Î¸·Ì©¤Ê°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
</H4>
<P> ¾Ü½Ò¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç <SMALL>DECLARE</SMALL> ¤ò¸«¤Æ²¼¤µ¤¤¡£
+</P>
-<P>
<H4><A NAME="4.2">4.2</A>) ºÇ½é¤Î¿ô¥í¥¦¤Î¤ß¤ò <SMALL>SELECT</SMALL>¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©¥é¥ó¥À¥à¤Ê¥í¥¦¡©
</H4>
<P> ¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç<SMALL>FETCH</SMALL>¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£¤¢¤ë¤¤¤Ï¡¢SELECT ... LIMIT....¤ò»È¤Ã¤Æ¤ß¤Æ²¼¤µ¤¤¡£
+</P>
<P>¤¿¤È¤¨¡¢Íߤ·¤¤¤Î¤ÏºÇ½é¤Î¿ô¥í¥¦¤À¤±¤Ç¤â¡¢¤¹¤Ù¤Æ¤ÎÌ䤤¹ç¤ï¤»¤òɾ²Á¤·¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£<SMALL>ORDER BY</SMALL> ¤ò»ý¤Ã¤¿Ì䤤¹ç¤ï¤»¤ò»È¤¦¤³¤È¤ò¹Í¤¨¤Æ¤ß¤Æ²¼¤µ¤¤¡£
¤â¤·¡¢<SMALL>ORDER BY</SMALL>¤Ë¹ç¤Ã¤¿¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬¤¢¤ë¤È¤¹¤ë¤È PostgreSQL¤ÏÍ׵ᤵ¤ì¤¿ºÇ½é¤Î¿ô¥í¥¦¤À¤±¤Çɾ²Á¤Ç¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢¤Ç¤Ê¤ì¤Ð¡¢PostgreSQL ¤Ï°Õ¿Þ¤·¤¿¥í¥¦¤¬À¸À®¤µ¤ì¤ë¤Þ¤Ç¤¹¤Ù¤Æ¤Î¥í¥¦¤òɾ²Á¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£
+</P>
<P>¥é¥ó¥À¥à¤Ê¥í¥¦¤ò<SMALL>SELECT</SMALL>¤¹¤ë¤Ë¤Ï¡¢¼¡¤Îʸ¤ò»È¤¤¤Þ¤¹¡§
+</P>
<PRE>
SELECT col
FROM tab
LIMIT 1;
</PRE>
-<P>
<H4><A NAME="4.3">4.3</A>) ¥Æ¡¼¥Ö¥ë¤ä¤½¤Î¾¤Î¾ðÊó¤Î¥ê¥¹¥È¤ò <I>psql</I> ¤Ç¸«¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
</H4>
<P>
<P> <SMALL>DROP COLUMN</SMALL>µ¡Ç½¤¬¡¢<SMALL>ALTER TABLE DROP COLUMN</SMALL> ¤È¤·¤Æ¥ê¥ê¡¼¥¹7.3
¤Ë²Ã¤¨¤é¤ì¤Þ¤·¤¿¡£¤½¤ì¤Þ¤Ç¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢¤½¤ÎÂå¤ï¤ê¤Ë¤³¤¦¤·¤Þ¤¹:
+</P>
<PRE>
BEGIN;
</PRE>
<P>¥«¥é¥à¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤Ï¼¡¤Îʸ¤ÇÊѤ¨¤é¤ì¤Þ¤¹¡§
+</P>
<PRE>
BEGIN;
</PRE>
<P>¤³¤ì¤ò¹Ô¤Ê¤Ã¤¿¤È¤¤Ï¡¢Ëõ¾Ã¤µ¤ì¤¿¹Ô¤¬»È¤Ã¤Æ¤¤¤ë¥Ç¥£¥¹¥¯¶õ´Ö¤ò²ó¼ý¤¹¤ë¤¿¤á¤Ë<I>VACUUM FULL tab</I>¤ò¤·¤¿¤Û¤¦¤¬Îɤ¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£
+</P>
-<P>
<H4><A NAME="4.5">4.5</A>) ¥í¥¦¡¢¥Æ¡¼¥Ö¥ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º¤Ï¡©
</H4>
<P> À©¸Â¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£
+</P>
<PRE>
¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º? À©¸Â̵¤· (32 TB ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤â¸ºß¤·¤Þ¤¹)
¥Æ¡¼¥Ö¥ë¤ÎºÇÂ祵¥¤¥º? 32TB
</PRE>
<P> ¤â¤Á¤í¤ó¡¢¤³¤ì¤é¤Ï¼ÂºÝ¤Ï̵À©¸Â¤Ç¤Ï¤Ê¤¯¡¢¥Ç¥£¥¹¥¯ÍÆÎ̤ȥá¥â¥ê¡¼¤ä¥¹¥ï¥Ã¥×¥¹¥Ú¡¼¥¹¤ÎÂ礤µ¤Ë¤è¤êÀ©¸Â¤µ¤ì¤Þ¤¹¡£Àǽ¤Ï¤³¤ì¤é¤ÎÃͤ¬¤³¤È¤Î¤Û¤«Â礤ʻþ¤ËÀú¤ê¤ò¼õ¤±¤Þ¤¹¡£
+</P>
<P> ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤Î32TB¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ë¤è¤ëµðÂç¥Õ¥¡¥¤¥ë¤Î¥µ¥Ý¡¼¥È¤ÏɬÍפȤ·¤Þ¤»¤ó¡£µðÂç¤Ê¥Æ¡¼¥Ö¥ë¤ÏÊ£¿ô¤Î1GB¤Î¥Õ¥¡¥¤¥ë¤Ëʬ¤±¤ÆÊݸ¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÎÀ©¸Â¤Ï½ÅÍפǤϤ¢¤ê¤Þ¤»¤ó¡£
+</P>
<P> ¥Ç¥Õ¥©¥ë¥È¤Î¥Ö¥í¥Ã¥¯¥µ¥¤¥º¤ò32k¤Ë¤¹¤ë¤³¤È¤Ç¡¢ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º¤ÈºÇÂ祫¥é¥à¿ô¤È¤ò£´Çܤˤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+</P>
-<P>
<H4><A NAME="4.6">4.6</A>) °ìÈÌŪ¤Ê¥Æ¥¥¹¥È¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤Ë¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Ç¥£¥¹¥¯ÍÆÎ̤ϤɤΤ¯¤é¤¤É¬ÍפǤ¹¡©
</H4>
-
-ÉáÄ̤Υƥ¥¹¥È¥Õ¥¡¥¤¥ë¤ò PostgreSQL ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤¹¤ë¤Ë¤Ï¡¢ºÇÂç¤ÇÌó5ÇܤΥǥ£¥¹¥¯ÍÆÎ̤òɬÍפȤ·¤Þ¤¹¡£<P>
+<P>
+ÉáÄ̤Υƥ¥¹¥È¥Õ¥¡¥¤¥ë¤ò PostgreSQL ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÊݸ¤¹¤ë¤Ë¤Ï¡¢ºÇÂç¤ÇÌó5ÇܤΥǥ£¥¹¥¯ÍÆÎ̤òɬÍפȤ·¤Þ¤¹¡£</P>
<P> ÎãÂê¤È¤·¤Æ¡¢³Æ¹Ô¤ËÀ°¿ô¤È¥Æ¥¥¹¥Èµ½Ò¤ò»ý¤Ä 100,000¹Ô¤Î¥Õ¥¡¥¤¥ë¤ò¹Í¤¨
¤Æ¤ß¤Þ¤·¤ç¤¦¡£¥Æ¥¥¹¥È¤Îʸ»úÎó¤ÎÊ¿¶ÑŤµ¤ò20¥Ð¥¤¥È¤È²¾Äꤹ¤ë¤È¡¢¥Õ¥é¥Ã¥È
¥Õ¥¡¥¤¥ë¤ÎÂ礤µ¤ÏÌó2.8MB ¤Ç¤¹¡£¤³¤Î¥Ç¡¼¥¿¤ò´Þ¤à PostgreSQL ¥Ç¡¼¥¿¥Ù¡¼¥¹
¥Õ¥¡¥¤¥ë¤ÎÂ礤µ¤Ï¼¡¤Î¤è¤¦¤ËÌó6.4MB¤È¸«ÀѤâ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡§
+</P>
<PRE>
32 bytes: ³Æ¥í¥¦¤Î¥Ø¥Ã¥À(³µ»»)
<P>
¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢¤³¤ì¤Û¤É¤Î¥ª¡¼¥Ð¥Ø¥Ã¥É¤ÏÍ׵ᤷ¤Þ¤»¤ó¤¬¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹ÉÕ¤±¤µ¤ì¤ë¥Ç¡¼¥¿¤ò´Þ¤à°Ê¾å¡¢¤½¤ì¤Ê¤ê¤ËÂ礤¯¤Ê¤ê¤Þ¤¹¡£
+</P>
<P><SMALL>NULL</SMALL>¤Ï¥Ó¥Ã¥È¥Þ¥Ã¥×¤È¤·¤ÆÊݸ¤µ¤ì¤Æ¤¤¤Æ¡¢¤½¤ì¤é¤¬¤ï¤º¤«¤Ë¥¹¥Ú¡¼¥¹¤ò»È¤¤¤Þ¤¹¡£
+</P>
-
-<P>
<H4><A NAME="4.7">4.7</A>) ÄêµÁ¤µ¤ì¤¿¥Æ¡¼¥Ö¥ë¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¡¢¤ª¤è¤Ó¡¢¥æ¡¼¥¶¤ò¤É¤Î¤è¤¦¤Ë¤·¤Æ¸«¤Ä¤±½Ð¤·¤Þ¤¹¤«¡©
</H4>
<P> <I>psql</I> ¤Ë¤Ï¤¤¤í¤¤¤í¤Ê¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¡¦¥³¥Þ¥ó¥É¤¬¤¢¤ê¡¢¤³¤¦¤·¤¿¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¡¦¥³¥Þ¥ó¥É¤Î¼ïÎà¤ò¸«¤ë¤Ë¤Ï \? ¤ò»È¤Ã¤Æ²¼¤µ¤¤¡£¤Þ¤¿¡¢<i>pg_</i> ¤Ç»Ï¤Þ¤ë¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ë¤Ë¤âµ½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤µ¤é¤Ë¡¢<i>psql -l</i> ¤Ï¤¹¤Ù¤Æ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¥ê¥¹¥Èɽ¼¨¤·¤Þ¤¹¡£
+</P>
<P> ¤Þ¤¿¡¢<I>pgsql/src/tutorial/syscat.source</I> ¥Õ¥¡¥¤¥ë¤òÁö¤é¤»¤Æ¤ß¤Æ²¼¤µ¤¤¡£¤½¤ì¤Ï¡¢Âô»³¤Î <SMALL>SELECT</SMALL> ʸ¤Ë¤è¤êɬÍפʾðÊó¤ò¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥·¥¹¥Æ¥à¡¦¥Æ¡¼¥Ö¥ë¤«¤é¼è¤ê½Ð¤·¤ÆÎ㼨¤·¤Æ¤¯¤ì¤Þ¤¹¡£
+</P>
-<P>
<H4><A NAME="4.8">4.8</A>) Ì䤤¹ç¤ï¤»¤¬ÃÙ¤¤¤¦¤¨¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¤¤¤ëÍͻҤ¬¤¢¤ê¤Þ¤»¤ó¡£¤Ê¤¼¤Ç¤¹¤«¡©
</H4>
+<P>
¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¼«Æ°Åª¤Ë¤¹¤Ù¤Æ¤ÎÌ䤤¹ç¤ï¤»¤Ç»È¤ï¤ì¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥Æ¡¼
¥Ö¥ë¤¬ºÇ¾®¥µ¥¤¥º¤è¤êÂ礤¯¡¢Ì䤤¹ç¤ï¤»¤Ç¤½¤Î¤ï¤º¤«¤Ê¥Ñ¡¼¥»¥ó¥Æ¡¼¥¸¤Î¥í¥¦¤ò
ÁªÂò¤¹¤ë»þ¤À¤±¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï»È¤ï¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥¥ã¥ó¤Ë¤è
¤êµ¯¤³¤µ¤ì¤ë¥é¥ó¥À¥à¤Ê¥Ç¥£¥¹¥¯¥¢¥¯¥»¥¹¤Ï¡¢¥Æ¡¼¥Ö¥ë¤ò¥¹¥È¥ì¡¼¥È¤ËÆɤà½ç¼¡
Áöºº¤è¤ê¤âÃÙ¤¯¤Ê¤ë¤³¤È¤¬¤¢¤ë¤«¤é¤Ç¤¹¡£
+</P>
<P>¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤«¤ò·èÄꤹ¤ë¤¿¤á¤Ë¡¢PostgreSQL ¤Ï¥Æ¡¼¥Ö¥ë¤Ë¤Ä¤¤
¤Æ¤ÎÅý·×¾ðÊó¤ò»ý¤¿¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¤³¤ÎÅý·×¾ðÊó¤Ï¡¢<SMALL>VACUUM
<P> ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢Ä̾ï <SMALL>ORDER BY</SMALL> ¤ä·ë¹ç¤ò¹Ô¤Ê
¤¦¤¿¤á¤Ë¤Ï»È¤ï¤ì¤Þ¤»¤ó¡£½ç¼¡¥¹¥¥ã¥ó¤Ë³¤¯ÌÀ¼¨Åª¥½¡¼¥È¤Ï¡¢µðÂç¤Ê¥Æ¡¼¥Ö¥ë
¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥¥ã¥ó¤è¤ê¤âÉáÄ̤Ϲ⮤Ǥ¹¡£</P>
+<P>
¤·¤«¤·¡¢<SMALL>ORDER BY</SMALL>¤ÈÁȤ߹ç¤ï¤µ¤ì¤¿<SMALL>LIMIT</SMALL>
¤Ï¡¢¥Æ¡¼¥Ö¥ë¤Î¾®¤µ¤ÊÉôʬ¤òÊÖ¤¹¤¿¤á¤Ë¤¿¤Ó¤¿¤Ó¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ç¤·¤ç¤¦¡£
¼ÂºÝ¡¢MAX() ¤ä MIN() ¤¬¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤ï¤Ê¤¤¤È¤·¤Æ¤â¡¢¤³¤Î¤è¤¦¤ÊÃͤò
ORDER BY ¤È LIMIT ¤ò»È¤Ã¤Æ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¼è¤ê½Ð¤¹¤³¤È¤¬²Äǽ¤Ç¤¹:
+</P>
<PRE>
SELECT col
<P> <SMALL>LIKE</SMALL> ¤¢¤ë¤¤¤Ï <I>~</I> ¤Î¤è¤¦¤Ê¥ï¥¤¥ë¥É¥«¡¼¥É±é»»
»Ò¤ÏÆÃÊ̤ʴĶ¤Ç¤·¤«»È¤¨¤Þ¤»¤ó¡§
+</P>
<UL>
- <LI>¸¡º÷ʸ»úÎó¤¬Ê¸»úÎó¤ÎºÇ½é¤Ë¤¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡§</LI>
+ <LI>¸¡º÷ʸ»úÎó¤¬Ê¸»úÎó¤ÎºÇ½é¤Ë¤¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡§
<UL>
<LI><SMALL>LIKE</SMALL> ¥Ñ¥¿¡¼¥ó¤¬<I>%</I>¤Ç»Ï¤Þ¤é¤Ê¤¤</LI>
<LI><I>~</I> (Àµµ¬É½¸½) ¥Ñ¥¿¡¼¥ó¤Ï<I>^</I>¤Ç»Ï¤Þ¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤</LI>
- </UL>
+ </UL></LI>
<LI>¸¡º÷ʸ»úÎó¤òʸ»ú¥¯¥é¥¹¤«¤é»Ï¤á¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤¿¤È¤¨¤Ð¡¢[a-e]¡£</LI>
<LI><SMALL>ILIKE</SMALL> ¤ä <I>~*</I> ¤Î¤è¤¦¤ÊÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·
¤Ê¤¤¸¡º÷¤Ï»È¤¨¤Þ¤»¤ó¡£¤½¤Î¤«¤ï¤ê¡¢¤³¤ÎFAQ¤Î<a href="#4.12">4.12</a>Àá¤ÇÀâÌÀ¤¹¤ë´Ø¿ô¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬»È¤¨¤Þ¤¹¡£</LI>
<LI><i>initdb</i> ¤Ë¤ª¤¤¤Æ¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç<I>C</I>¥í¥±¡¼¥ë¤¬»È¤ï¤ì¤Ê
¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¤½¤ÎÍýͳ¤Ï¡¢C¥í¥±¡¼¥ë°Ê³°¤Ç¤Ï¼¡¤ËÂ礤Êʸ»ú¤òÃΤ뤳¤È
-¤¬¤Ç¤¤Ê¤¤¤«¤é¤Ç¤¹¡£¤³¤Î¤è¤¦¤Ê¾ì¹ç¡¢<PRE>LIKE</PRE>¥¤¥ó¥Ç¥¯¥·¥ó¥°¤Ë¤À¤±
-Ư¤¯¤è¤¦¤Ê¡¢ÆÃÊ̤Ê<PRE>text_pattern_ops</PRE>¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºîÀ®
+¤¬¤Ç¤¤Ê¤¤¤«¤é¤Ç¤¹¡£¤³¤Î¤è¤¦¤Ê¾ì¹ç¡¢<code>LIKE</code>¥¤¥ó¥Ç¥¯¥·¥ó¥°¤Ë¤À¤±
+Ư¤¯¤è¤¦¤Ê¡¢ÆÃÊ̤Ê<code>text_pattern_ops</code>¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºîÀ®
¤¹¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
</LI>
</UL>
- <P>
<P>8.0¤è¤êÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢¥Ç¡¼¥¿·¿¤¬¤Á¤ç¤¦¤É¥¤¥ó¥Ç¥Ã¥¯¥¹¤Î¥«¥é¥à¤Î·¿¤È°ìÃפ·¤Ê¤±¤ì¤Ð¡¢»È¤¨¤Ê¤¤¤³¤È¤¬¤·¤Ð¤·¤Ð¤¢¤ê¤Þ¤·¤¿¡£¤ª¤½¤é¤¯¡¢int2, int8, ¤ª¤è¤Ó numeric Åù¤Î¥«¥é¥à¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬¤½¤¦¤Ç¤¹¡£</P>
]
-<P>
<H4><A NAME="4.9">4.9</A>) Ì䤤¹ç¤ï¤»¥ª¥Ö¥Æ¥£¥Þ¥¤¥¶¤¬¤É¤Î¤è¤¦¤ËÌ䤤¹ç¤ï¤»¤òɾ²Á¤¹¤ë¤Î¤«¤ò¸«¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
</H4>
<P> ¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç <SMALL>EXPLAIN</SMALL> ¤ò¸«¤Æ²¼¤µ¤¤¡£
+</P>
-<P>
<H3><A NAME="4.10">4.10</A>) R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤È¤Ï²¿¤Ç¤¹¤«¡©</H3>
<P> R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¶õ´ÖŪ¤Ê¥Ç¡¼¥¿¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤òÉÕ¤±¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹¡£¥Ï¥Ã¥·¥å¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤ÏÈϰϤθ¡º÷¤¬¤Ç¤¤Þ¤»¤ó¡£¤Þ¤¿¡¢B-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï¡¢£±¼¡¸µ¤Ç¤·¤«ÈϰϤθ¡º÷¤¬¤Ç¤¤Þ¤»¤ó¡£R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤¢¤ì¤Ð¿¼¡¸µ¤Î¥Ç¡¼¥¿¤ò°·¤¨¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢¤â¤· R-tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò <I>point</I> ·¿¤Î°À¤ËÉÕ¤±¤ë¤³¤È¤¬¤Ç¤¤ë¤È¤¹¤ë¤È¥·¥¹¥Æ¥à¤Ï¡¢¡ÖĹÊý·Á¤Ë°Ï¤Þ¤ì¤¿ÅÀ¤ò¤¹¤Ù¤ÆÁªÂò¤¹¤ë¡×¤È¤¤¤¦¤è¤¦¤ÊÌ䤤¹ç¤ï¤»¤Ë¡¢¤è¤ê¸úΨÎɤ¯Åú¤¨¤é¤ì¤Þ¤¹¡£
+</P>
<P> R-Tree ¤ÎÀ߷פθ¶Åµ¤È¤Ê¤ë¸¢°Ò¤¢¤ëÏÀʸ¤Ï:
+</P>
<P> Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial Searching."
Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
+</P>
<P> ¤³¤ÎÏÀʸ¤Ï¡¢Stonebraker ¶µ¼ø¤Î "Readings in Database Systems"
¤Ç¤â¼è¤ê¾å¤²¤é¤ì¤Æ¤¤¤Þ¤¹¡£
+</P>
-<P>
-<SMALL><PRE>
+<PRE>
[ÌõÃí¡§
ÆàÎÉÀèüÂç¤ÎÀÐÀî²Â¼£¤µ¤ó¤è¤êR-Tree´Ø·¸¤Îʸ¸¥¤ò¾Ò²ð¤·¤Æĺ¤¤Þ¤·¤¿¡£
ÆüËܸì Postgres ML ¤Î¥¢¡¼¥«¥¤¥Ö¤«¤é "Subject: [postgres95 801] spatial data structures"
<A HREF="http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html">http://www.sra.co.jp/people/t-ishii/PostgreSQL/mhonarc/pgsql-jp/1996Oct/msg00007.html</A>
¤ò¤´Í÷²¼¤µ¤¤¡£
]
-</PRE></SMALL>
+</PRE>
<P> Áȹþ¤ß¤Î R-Tree ¤Ç¥Ý¥ê¥´¥ó¤ä¥Ü¥Ã¥¯¥¹¤òÁàºî¤Ç¤¤Þ¤¹¡£ÍýÏÀŪ¤Ë¤ÏR-Tree ¤Ï¤â¤Ã¤È¹â¤¤¼¡¸µ¤òÁàºî¤¹¤ë¤è¤¦¤Ë¤â³ÈÄ¥¤Ç¤¤Þ¤¹¡£¼Â¼ÁŪ¤Ë¤Ï¡¢R-Tree ¤Î³ÈÄ¥¤Ë¤Ï¤Á¤ç¤Ã¤È¤·¤¿ºî¶È¤¬É¬ÍפǤ·¤Æ¡¢¸½ºß¡¢²æ¡¹¤Ï¤½¤ì¤ò¤É¤Î¤è¤¦¤Ë¤¹¤ë¤«¤Ë¤Ä¤¤¤Æ¤Îʸ½ñ¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£
+</P>
-<P>
-<SMALL><PRE>
+<PRE>
[ÌõÃí¡§
R-Tree ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ÏGiST¤Ç³«È¯¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
<a href="http://www.sai.msu.su/~megera/postgres/gist/">http://www.sai.msu.su/~megera/postgres/gist/</a>
]
-</PRE></SMALL>
+</PRE>
-<P>
<H4><A NAME="4.11">4.11</A>) °äÅÁŪÌ䤤¹ç¤ï¤»ºÇŬ²½¤È¤Ï²¿¤Ç¤¹¤«¡©
</H4>
<P> GEQO ¥â¥¸¥å¡¼¥ë¤Ï¡¢Âô»³¤Î¥Æ¡¼¥Ö¥ë¤ò·ë¹ç¤¹¤ë¤È¤¤Ë¡¢°äÅÁŪ¥¢¥ë¥´¥ê¥º¥à(GA)¤ÇÌä¹ç¤ï¤»¤ò¹â®²½¤·¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¤·¤é¤ß¤Ä¤Ö¤·¤Ëõº÷¤ò¹Ô¤Ê¤ï¤Ê¤¯¤Æ¤â¡¢Â礤ʷë¹ç(join queries)¤ò°·¤¦¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
+</P>
-<P>
<H4><A NAME="4.12">4.12</A>) Àµµ¬É½¸½¤Ç¤Î¸¡º÷¤äÂçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤Àµµ¬É½¸½¸¡º÷¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤·¤Þ¤¹¤«¡©Âçʸ»ú¤È¾®Ê¸»ú¤È¤ò¶èÊ̤·¤Ê¤¤¸¡º÷¤Î¤¿¤á¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¤É¤Î¤è¤¦¤Ë»È¤¤¤Þ¤¹¤«¡©
</H4>
<P>
<I>~</I>±é»»»Ò¤ÏÀµµ¬É½¸½¾È¹ç¤ò¹Ô¤Ê¤¤¡¢<I>~*</I> ¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤(case-insensitive)Àµµ¬É½¸½¾È¹ç¤ò¹Ô¤¤¤Þ¤¹¡£ Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤ <SMALL>LIKE</SMALL> ±é»»»Ò¤ò <SMALL>ILIKE</SMALL> ¤È¤¤¤¤¤Þ¤¹¡£
-
+</P>
<P>Âçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤·¤Ê¤¤ÅùÃÍÈæ³Ó¤Ï¼¡¤Î¤è¤¦¤Ëɽ¸½¤Ç¤¤ë¡§
+</P>
<PRE>
SELECT *
FROM tab
WHERE lower(col) = 'abc';
</PRE>
-
+<P>
ɸ½à¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ç¤Ï»È¤ï¤ì¤º¡¢¤·¤«¤·¤Ê¤¬¤é¡¢¤â¤·´Ø¿ô¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò
ºî¤Ã¤¿¤Ê¤é¤½¤ì¤¬»È¤ï¤ì¤ë¤Ç¤·¤ç¤¦¡£
-
+</P>
<PRE>
CREATE INDEX tabindex ON tab (lower(col));
</PRE>
-<P>
<H4><A NAME="4.13">4.13</A>) Ì䤤¹ç¤ï¤»¤ÎÃæ¤Ç¡¢¥Õ¥£¡¼¥ë¥É¤¬ <SMALL>NULL</SMALL> ¤Ç¤¢¤ë¤³¤È¤ò¸¡½Ð¤¹¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©
</H4>
<P>¥«¥é¥à¤ò <SMALL>IS NULL</SMALL> ¤È <SMALL>IS NOT NULL</SMALL>
¤È¤Ç»î¤·¤Æ¤ß¤Þ¤¹¡£</P>
-<P>
<H4><A NAME="4.14">4.14</A>) ÍÍ¡¹¤Êʸ»ú·¿¤Î¤½¤ì¤¾¤ì¤Î°ã¤¤¤Ï²¿¤Ç¤¹¤«¡©
</H4>
</PRE>
<P> ÆâÉô̾¤Ë¤ªÌܤˤ«¤«¤ë¤Î¤Ï¡¢¥·¥¹¥Æ¥à¡¦¥«¥¿¥í¥°¤òÄ´¤Ù¤ë¤È¤¤ä¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¼è¤ë¤È¤¤Ç¤¹¡£
-
+</P>
<P> ¾åµ¤Î·¿¤Î¤¦¤ÁºÇ½é¤Î£´¤Ä¤Î·¿¤Ï "varlena" ·¿¤Ç¤¹(¤¹¤Ê¤ï¤Á¡¢¥Ç¥£¥¹¥¯¤ÎºÇ½é¤Î£´¥Ð¥¤¥È¤¬¥Ç¡¼¥¿Ä¹¤Ç¡¢¤½¤ì¤Î¸å¤Ë¼ÂºÝ¤Î¥Ç¡¼¥¿¤¬Â³¤¤Þ¤¹)¡£¤³¤Î¤è¤¦¤Ë¼ÂºÝ¤Î¶õ´Ö¤ÏÀë¸À¤µ¤ì¤¿Â礤µ¤è¤ê¤â¾¯¤·Â礤¯¤Ê¤ê¤Þ¤¹¡£¤·¤«¤·¡¢¤³¤ì¤é¤Î¥Ç¡¼¥¿·¿¤Ï<SMALL>TOAST</SMALL>¤Ë¤è¤ê°µ½Ì¤µ¤ì¤¿¤êÊ£¿ô¥í¥¦¤ËÅϤäÆÊݸ¤µ¤ì¤¿¤ê¤·¤Æ¡¢¥Ç¥£¥¹¥¯¾å¤Î¶õ´Ö¤Ï»×¤Ã¤¿¤è¤ê¾®¤µ¤¯¤Ê¤ê¤Þ¤¹¡£
+</P>
<P><SMALL>VARCHAR(n)</SMALL> ¤Ï²ÄÊÑŤÎʸ»úÎó¤òÊݸ¤¹¤ë¤Î¤ËºÇŬ¤Ç¤¹¤¬¡¢Êݸ¤Ç¤¤ëʸ»úÎó¤ÎŤµ¤ËÀ©¸Â¤¬¤¢¤ê¤Þ¤¹¡£<SMALL>TEXT</SMALL> ¤ÏŤµ¤ËÀ©¸Â¤Î̵¤¤Ê¸»úÎó¤ÎÊݸ¤Î¤¿¤á¤Î¤â¤Î¤Ç¡¢ºÇÂç¤Ç 1¥®¥¬¥Ð¥¤¥È¤Ç¤¹¡£ <SMALL>CHAR(n)</SMALL>¤Ï¡¢<SMALL>VARCHAR(n)</SMALL>¤¬Í¿¤¨¤é¤ì¤¿Ê¸»ú¤À¤±¤òÊݸ¤¹¤ë¤Î¤ËÂФ·¡¢¥Ö¥é¥ó¥¯¤òµÍ¤á¹þ¤ó¤Ç¤¤¤Ä¤âƱ¤¸Ä¹¤µ¤Çʸ»úÎó¤òÊݸ¤¹¤ë¤Î¤ËºÇŬ¤Ç¤¹¡£<SMALL>BYTEA</SMALL>¤Ï¡¢ÉôʬŪ¤Ë<SMALL>NULL</SMALL> ¤Î¥Ð¥¤¥È¤ò´Þ¤à¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤òÊݸ¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¹¡£¤³¤ì¤é¤Î¥¿¥¤¥×¤ÏƱ¤¸¤¯¤é¤¤¤ÎÀǽÆÃÀ¤ò¤â¤Á¤Þ¤¹¡£</P>
-<P>
<H4><A NAME="4.15.1">4.15.1</A>) ÄÌÈÖ(serial)¡¿¼«Æ°Áýʬ¥Õ¥£¡¼¥ë¥É¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©
</H4>
<P> PostgreSQL ¤Ï <SMALL>SERIAL</SMALL> ¥Ç¡¼¥¿·¿¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¥«¥é¥à¾å¤Ë¥·¡¼¥±¥ó¥¹¤ò¼«Æ°ºîÀ®¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢
+</P>
<PRE>
CREATE TABLE person (
name TEXT
);
</PRE>
+<P>
¤Ï¼«Æ°Åª¤Ë¼¡¤Î¤è¤¦¤ËËÝÌõ¤µ¤ì¤Þ¤¹:
+</P>
<PRE>
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
¤Ï¡¢ 7.3 ¤«¤é¤Ï¼«Æ°Åª¤Ë¤Ï¹Ô¤Ê¤ï¤ì¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£
]
</PRE>
-
+<P>
ÄÌÈ֤ˤĤ¤¤Æ¤Î¤â¤Ã¤È¾Ü¤·¤¤¾ðÊó¤Ï¡¢¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Ç <I>create_sequence</I> ¤ò¤´Í÷²¼¤µ¤¤¡£
+</P>
<P> ¤Þ¤¿¡¢³Æ¥í¥¦¤Î<I>OID</I>¥Õ¥£¡¼¥ë¥É¤ò°ì°ÕÃͤȤ·¤Æ»È¤¦¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤·¤«¤·¤Ê¤¬¤é¡¢¤â¤·¤â¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¥À¥ó¥×¤·¤Æ¥ê¥í¡¼¥É¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ï¡¢<SMALL>OID</SMALL>¤ò²¹Â¸¤¹¤ë¤¿¤á¤Ë<I>pg_dump</I> ¤Ç <I>-o</I>¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤«¡¢¤Þ¤¿¤Ï¡¢<SMALL>COPY WITH OIDS</small>¥ª¥×¥·¥ç¥ó¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
-
+</P>
<H4><A NAME="4.15.2">4.15.2</A>) <SMALL>SERIAL</SMALL>¥Ç¡¼¥¿·¿¤ËÁÞÆþ¤µ¤ì¤ëÃͤϡ¢¤É¤¦¤¹¤ì¤ÐÆÀ¤é¤ì¤Þ¤¹¤«¡©
</H4>
<P>¤Ò¤È¤Ä¤ÎÊýË¡¤Ï¡¢<I>nextval()</I> ´Ø¿ô¤ò»È¤Ã¤Æ¤½¤ÎÃͤòÁÞÆþ¤¹¤ë<I>Á°(before)¤Ë</I> SEQUENCE ¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼¡¤Î <SMALL>SERIAL</SMALL> Ãͤò¼è¤ê½Ð¤·¡¢¤½¤ì¤«¤é¼ÂºÝ¤ËÁÞÆþ¤ò¤¹¤ë¤³¤È¤Ç¤¹¡£<A HREF="#4.15.1">4.15.1</A> ¤Î¥Æ¡¼¥Ö¥ë¤ÎÎã¤ò»È¤¦¤È¤¹¤ë¤È¡¢µ¿»÷¸À¸ì¤Ç¤Ï¤³¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
+</P>
<PRE>
new_id = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
</PRE>
+<P>
¤½¤¦¤·¤Æ¡¢<tt>new_id</tt> ¤ËÊݸ¤·¤¿¿·¤·¤¤Ãͤò¾¤ÎÌ䤤¹ç¤ï¤»¤Ë(¤¿¤È¤¨¤Ð¡¢<tt>person</tt> ¥Æ¡¼¥Ö¥ë¤ËÂФ¹¤ë³°Éô¥¡¼(foreign key)¤Î¤è¤¦¤Ë)»È¤¦¤È¤è¤¤¤Ç¤·¤ç¤¦¡£¼«Æ°Åª¤Ëºî¤é¤ì¤¿<SMALL>SEQUENCE</SMALL>¥ª¥Ö¥¸¥§¥¯¥È¤Î̾Á°¤Ï¡¢<<I>table</I>>_<<I>serialcolumn</I>>_<I>seq</I> ¤Î¤è¤¦¤Ë¤Ê¤ê¡¢¤³¤Î¤¦¤Á¡¢<I>table</I> ¤È <I>serialcolumn</I> ¤Ï¤½¤ì¤¾¤ì¥Æ¡¼¥Ö¥ë¤Î̾Á°¤È<SMALL>SERIAL</SMALL>¥«¥é¥à¤Î̾Á°¤Ç¤¹¡£
+</P>
<P>
-
¤¢¤ë¤¤¤Ï¡¢Í¿¤¨¤é¤ì¤¿<SMALL>SERIAL</SMALL>Ãͤò¡¢¤½¤ì¤¬´ûÄêÃͤȤ·¤ÆÁÞÆþ¤µ¤ì¤¿<I>¸å¤Ç(after)</I>¡¢ <I>currval()</I> ´Ø¿ô¤ò»È¤Ã¤Æ¼è¤ê½Ð¤¹¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢
+</P>
<PRE>
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = execute("SELECT currval('person_id_seq')");
</PRE>
+<P>
ºÇ¸å¤Ë¡¢<SMALL>INSERT</SMALL>ʸ¤«¤éÊÖ¤ë<A HREF="#4.17"><SMALL>OID</SMALL></A>¤ò»È¤Ã¤Æ¡¢´ûÄêÃͤò¤ß¤Ä¤±¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¤¬¡¢¤·¤«¤·¡¢oid¤ÎÃͤÏ40²¯¤Ë㤹¤ë¤È¤â¤È¤ËÌá¤Ã¤Æ¤·¤Þ¤¤¡¢ºÇ¤â°Ü¿¢À¤ÎÄ㤤¤ä¤êÊý¤È¤Ê¤ë¤Ç¤·¤ç¤¦¡£Perl DBI ¤Î DBD::Pg ¥â¥¸¥å¡¼¥ë¤ò»È¤¨¤Ð¡¢$sth->execute() ¤Î¸å¤Ë $sth->{pg_oid_status} ¤ò·Ðͳ¤·¤Æ¤½¤Î OID Ãͤò»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤¹¡£
+</P>
-<P>
<H4><A NAME="4.15.3">4.15.3</A>) <I>currval()</I> ¤Ï¾¤Î¥æ¡¼¥¶¤È¤Î¶¥¹ç¾õÂ֤˴٤뤳¤È¤Ï¤Ê¤¤¤Ç¤¹¤«¡©
</H4>
<P>¤½¤ì¤Ï¤¢¤ê¤Þ¤»¤ó¡£<I>currval()</I> ¤Ï¡¢¤¹¤Ù¤Æ¤Î¥æ¡¼¥¶¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¤¢¤Ê¤¿¤Î¥Ð¥Ã¥¯¥¨¥ó¥É¤ËÍ¿¤¨¤é¤ì¤¿¸½ºß¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£
-
+</P>
<H4><A name="4.15.4">4.15.4</A>) ¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÃæÃǤ·¤¿¤È¤¤Ë¤â¤¦¤¤¤Á¤É¥·¡¼¥±¥ó¥¹Èֹ椬»È¤ï¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©¥·¡¼¥±¥ó¥¹¡¿SERIAL¥«¥é¥à¤Ë¶õ¤¤¬¤¢¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
</H4>
<P>Ʊ»þÀ¤ò²þÁ±¤¹¤ë¤¿¤á¤Ë¡¢¼Â¹ÔÃæ¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ë¡¢É¬Íפǥȥé¥ó¥¶¥¯¥·¥ç¥ó¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¥í¥Ã¥¯¤µ¤ì¤Ê¤¤¥·¡¼¥±¥ó¥¹ÃͤòÍ¿¤¨¤Æ¤¤¤Þ¤¹¡£¤³¤Î¤¿¤á¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤¬ÃæÃǤµ¤ì¤ë¤ÈÈÖ¹æ³ä¤êÅö¤Æ¤Ë¥®¥ã¥Ã¥×¤òÀ¸¤¸¤Þ¤¹¡£
</P>
-<P>
<H4><A NAME="4.16">4.16</A>) <SMALL>OID</SMALL> ¤È¤Ï²¿¤Ç¤¹¤«¡© <SMALL>TID</SMALL> ¤È¤Ï²¿¤Ç¤¹¤«¡©
</H4>
<P> <SMALL>OID</SMALL> ¤È¤Ï°ì°Õ¤Î¥í¥¦ID ¤ËÂФ¹¤ë PostgreSQL ¤ÎÅú¤¨¤Ç¤¹¡£PostgreSQL ¤ÎÃæ¤Ç¤Ä¤¯¤é¤ì¤ë¤¹¤Ù¤Æ¤Î¥í¥¦¤Ï°ì°Õ¤Î <SMALL>OID</SMALL> ¤òÆÀ¤Þ¤¹¡£<I>initdb</I> ¤ÇȯÀ¸¤µ¤ì¤ë <SMALL>OID</SMALL> ¤Ï¤¹¤Ù¤Æ 16384 (<I>include/access/transam.h</I> ¤«¤é)¤è¤ê¾®¤µ¤ÊÃͤǤ¹¡£<I>initdb</I> ¸å¤Î¤¹¤Ù¤Æ¤Î <SMALL>OID</SMALL> (¥æ¡¼¥¶ºîÀ®)¤Ï¤½¤ì°Ê¾å¤ÎÃͤˤʤê¤Þ¤¹¡£
´ûÄê¤Ç¤Ï¡¢¤³¤ì¤é¤¹¤Ù¤Æ¤Î <SMALL>OID</SMALL>¤Ï°ì¤Ä¤Î¥Ç¡¼¥Ö¥ë¤ä¥Ç¡¼¥¿¥Ù¡¼¥¹Æâ¤Ëα¤Þ¤é¤º¡¢PostgreSQL ¥¤¥ó¥¹¥È¥ì¡¼¥·¥ç¥óÁ´ÂΤÎÃæ¤Ç°ì°Õ¤Ç¤¹¡£
+</P>
<P> PostgreSQL ¤Ï¥Æ¡¼¥Ö¥ë´Ö¤Î¥í¥¦¤ò·ë¤Ó¤Ä¤±¤ë¤¿¤á¤Ë¡¢¤½¤Î¥·¥¹¥Æ¥à¥Æ¡¼¥Ö¥ëÆâ¤Ë <SMALL>OID</SMALL> ¤ò»È¤¤¤Þ¤¹¡£¤³¤Î <SMALL>OID</SMALL> ¤ÏÆÃÄê¤Î¥æ¡¼¥¶¤Î¥í¥¦¤ò¼±Ê̤¹¤ë¤¿¤á¤ä·ë¹ç¤ÎÃæ¤Ç»È¤ï¤ì¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£<SMALL>OID</SMALL> ¤ÎÃͤòÊݸ¤¹¤ë¤¿¤á¤Ë¤Ï <I>OID</I> ·¿¤ò¥«¥é¥à¤Ë»È¤¦¤³¤È¤ò¾©¤á¤Þ¤¹¡£¤è¤ê®¤¯¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë <I>OID</I> ¥Õ¥£¡¼¥ë¥É¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤òºî¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
O<SMALL>ID</SMALL> ¤Ï¡¢Á´¤Æ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç»È¤ï¤ì¤ëÃæ±ûÎΰ褫¤é¡¢Á´¤Æ¤Î¿·¤·¤¤¥í¥¦¤Ë³ä¤êÅö¤Æ¤é¤ì¤Þ¤¹¡£<SMALL>OID</SMALL> ¤ò¾¤Î²¿¤«¤ËÊѤ¨¤¿¤¤¡¢¤¢¤ë¤¤¤Ï¸µ¤Î <SMALL>OID</SMALL> ¤â¥Æ¡¼¥Ö¥ë¤È°ì½ï¤Ë¥³¥Ô¡¼¤·¤¿¤¤¤Î¤Ê¤é¡¢¤Ç¤¤Ê¤¯¤Ï¤¢¤ê¤Þ¤»¤ó¡£
+</P>
<PRE>
CREATE TABLE new_table(mycol int);
</PRE>
<P> O<SMALL>ID</SMALL> ¤Ï¡¢4¥Ð¥¤¥È¤ÎÀ°¿ô¤È¤·¤ÆÊݸ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢40²¯¤ò±Û¤¨¤ë¤È°î¤ì¤Æ¤·¤Þ¤¦¤Ç¤·¤ç¤¦¡£Ã¯¤â¤³¤ì¤¬µ¯¤¤¿¤ÈÊó¹ð¤·¤Æ¤¯¤ë¿Í¤Ï¤¤¤Þ¤»¤ó¤Ç¤·¤¿¤¬¡¢¤½¤¦¤Ê¤ëÁ°¤Ë¤³¤ÎÀ©¸Â¤ò¼è¤ê½ü¤¯¤³¤È¤ò·×²è¤·¤Æ¤¤¤Þ¤¹¡£
+</P>
<P> T<SMALL>ID</SMALL> ¤ÏÆÃÄê¤ÎʪÍý¥í¥¦¤ò¤½¤Î¥Ö¥í¥Ã¥¯¤È¥ª¥Õ¥»¥Ã¥ÈÃͤǼ±Ê̤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹¡£<SMALL>TID</SMALL> ¤Ï¥í¥¦¤¬½¤Àµ¤µ¤ì¤¿¤êºÆ¥í¡¼¥É¤µ¤ì¤ë¤ÈÊѤï¤ê¤Þ¤¹¡£¤½¤ì¤é¤Î <SMALL>TID</SMALL> ¤Ï¡¢ÊªÍý¥í¥¦¤ò»Ø¤¹¤¿¤á¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹µºÜ¤Ç»È¤ï¤ì¤Þ¤¹¡£
+</P>
-<P>
<H4><A NAME="4.17">4.17</A>) PostgreSQL ¤Ç»È¤ï¤ì¤ë¤¤¤¯¤Ä¤«¤ÎÍѸì¤Î°ÕÌ£¤Ï²¿¤Ç¤¹¤«¡©
</H4>
<P> ¤¤¤¯¤Ä¤«¤Î¥½¡¼¥¹¥³¡¼¥É¤ä¸Å¤¤Ê¸½ñ¤ÎÃæ¤Ë¤Ï¡¢¤½¤ì¤¾¤ÎÀìÌçʬÌî¤ÎÃæ¤Ç¤â¤Ã¤È°ìÈÌŪ¤Ë»È¤ï¤ì¤ëÀìÌçÍѸ줬»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£
+</P>
<UL>
-<LI> ¥Æ¡¼¥Ö¥ë(table)¡¢´Ø·¸(relation)¡¢¥¯¥é¥¹(class)
-<LI> ¥í¥¦(row)¡¢¥ì¥³¡¼¥É(record)¡¢¥¿¥Ã¥×¥ë(tuple)
-<LI> ¥«¥é¥à(column)¡¢¥Õ¥£¡¼¥ë¥É(field)¡¢Â°À(attribute)
-<LI> ¼èÆÀ(retrieve)¡¢ÁªÂò(select)
-<LI> ÃÖ´¹(replace)¡¢¹¹¿·(update)
-<LI> ÄɲÃ(append)¡¢ÁÞÆþ(insert)
-<LI> <SMALL>OID</SMALL>, Ï¢ÈÖ(serial value)
-<LI> ¥Ý¡¼¥¿¥ë(portal), ¥«¡¼¥½¥ë(cursor)
-<LI> ÎΰèÊÑ¿ô(range variable)¡¢¥Æ¡¼¥Ö¥ë̾(table name)¡¢¥Æ¡¼¥Ö¥ëÊÌ̾(table alias)
+<LI> ¥Æ¡¼¥Ö¥ë(table)¡¢´Ø·¸(relation)¡¢¥¯¥é¥¹(class)</LI>
+<LI> ¥í¥¦(row)¡¢¥ì¥³¡¼¥É(record)¡¢¥¿¥Ã¥×¥ë(tuple)</LI>
+<LI> ¥«¥é¥à(column)¡¢¥Õ¥£¡¼¥ë¥É(field)¡¢Â°À(attribute)</LI>
+<LI> ¼èÆÀ(retrieve)¡¢ÁªÂò(select)</LI>
+<LI> ÃÖ´¹(replace)¡¢¹¹¿·(update)</LI>
+<LI> ÄɲÃ(append)¡¢ÁÞÆþ(insert)</LI>
+<LI> <SMALL>OID</SMALL>, Ï¢ÈÖ(serial value)</LI>
+<LI> ¥Ý¡¼¥¿¥ë(portal), ¥«¡¼¥½¥ë(cursor)</LI>
+<LI> ÎΰèÊÑ¿ô(range variable)¡¢¥Æ¡¼¥Ö¥ë̾(table name)¡¢¥Æ¡¼¥Ö¥ëÊÌ̾(table alias)</LI>
</UL>
<P>°ìÈÌŪ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹ÍѸì¤Î¥ê¥¹¥È¤Ï¡§<a
href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A>
¤Ç¸«¤Ä¤±¤é¤ì¤Þ¤¹¡£</P>
-<P>
<H4><A NAME="4.18">4.18</A>) ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>¤¬½Ð¤ë¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
</H4>
<P>
¤ª¤½¤é¤¯¡¢¥·¥¹¥Æ¥à¤Î²¾ÁÛ¥á¥â¥ê¡¼¤òÁ´¤Æ»È¤¤²Ì¤¿¤·¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë²ÄǽÀ¤¬¤¢¤ë¤«¡¢¥«¡¼¥Í¥ë¤¬¤¢¤ë¥ê¥½¡¼¥¹¤Ë¤Ä¤¤¤Æ¤â¤ÄÀ©¸ÂÃͤ¬Ä㤹¤®¤ë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£
<I>postmaster</I> ¤ò»ÏÆ°¤¹¤ëÁ°¤Ë¤³¤ì¤ò»î¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡§
+</P>
<PRE>
ulimit -d 262144
<P>
¥·¥§¥ë¤Ë¤è¤Ã¤Æ¡¢¤É¤Á¤é¤«¤Ò¤È¤Ä¤¬À®¸ù¤¹¤ë¤Ç¤·¤ç¤¦¤¬¡¢¤³¤ì¤Ï¥×¥í¥»¥¹¤Î¥Ç¡¼¥¿¥»¥°¥á¥ó¥ÈÀ©¸Â¤ò¤è¤ê¹â¤¯ÀßÄꤷ¡¢¤¿¤Ö¤óÌ䤤¹ç¤ï¤»¤¬´°·ë¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£¤³¤Î¥³¥Þ¥ó¥É¤Ï¸½¹Ô¤Î¥×¥í¥»¥¹¤È¡¢¤³¤Î¥³¥Þ¥ó¥É¤òÁö¤é¤»¤¿¸å¤Ëºî¤é¤ì¤ëÁ´¤Æ¤Î¥µ¥Ö¥×¥í¥»¥¹¤Ë¤Ä¤¤¤ÆŬÍѤµ¤ì¤Þ¤¹¡£¥Ð¥Ã¥¯¥¨¥ó¥É¤¬¤È¤Æ¤â¿¤¯¤Î¥Ç¡¼¥¿¤òÊÖ¤¹¤¿¤á¤Ë<SMALL>SQL</SMALL> ¥¯¥é¥¤¥¢¥ó¥È¤ÇÌäÂ꤬³¤¤¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢¥¯¥é¥¤¥¢¥ó¥È¤ò³«»Ï¤¹¤ëÁ°¤Ë¤³¤ì¤ò»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
+</P>
-<P>
<H4><A NAME="4.19">4.19</A>) ¤É¤Î¥Ð¡¼¥¸¥ç¥ó¤Î PostgreSQL ¤òÁö¤é¤»¤Æ¤¤¤ë¤«¤òÄ´¤Ù¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©<BR>
</H4>
<P>
<I>psql</I> ¤«¤é <CODE>SELECT version();</CODE> ¤ò¥¿¥¤¥×¤·¤Þ¤¹¡£
-<P>
-
+</P>
<H4><A NAME="4.20">4.20</A>) ¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁàºî¤Ç<I>invalid large obj descriptor</I> ¤ò¼õ¤±¼è¤ê¤Þ¤·¤¿¡£¤Ê¤¼¤Ç¤·¤ç¤¦¤«¡©
</H4>
<P>¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥ÈÁàºî¤ò¤¹¤ë¤È¤¤Ï¡¢Á°¸å¤Ë<tt>BEGIN WORK</tt>¤È<tt>COMMIT</tt>¤òÉÕ¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¹¤Ê¤ï¤Á¡¢<tt>lo_open</tt> ... <tt>lo_close</tt>¤ò¤Ï¤µ¤ß¹þ¤ß¤Þ¤¹¡£
+</P>
<P>¸½ºß¤Ï¡¢PostgreSQL¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Î¥³¥ß¥Ã¥È»þ¤Ë¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥È¡¦¥Ï¥ó¥É¥ë¤òÊĤ¸¤ë¤³¤È¤Ë¤è¤ê¡¢<I>lo_open</I>¥³¥Þ¥ó¥É¤¬´°Î»¤·¤¿Ä¾¸å¤Ë¶¯À©Åª¤Ë¥ë¡¼¥ë¤ò¼Â¹Ô¤·¤Þ¤¹¡£¤³¤Î¤¿¤á¡¢ºÇ½é¤Ë¥Ï¥ó¥É¥ë¤ËÂФ·¤Æ²¿¤«¤ò¤·¤è¤¦¤È¤¹¤ë¤È¡¢<I>invalid large obj descriptor(¥é¡¼¥¸¡¦¥ª¥Ö¥¸¥§¥¯¥È¤Îµ½Ò»Ò¤¬ÉÔÀµ)</I>¤È¤Ê¤ê¤Þ¤¹¡£¤½¤ì¤Ç¡¢¤â¤·¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ò»È¤¦¤Î¤ò˺¤ì¤ë¤È¡¢¡Ê¾¯¤Ê¤¯¤È¤â¤Û¤È¤ó¤É¤Î»þ´Ö¡ËƯ¤¤¤Æ¤¤¤¿¥³¡¼¥É¤¬¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½Ð¤¹¤Î¤Ç¤¹¡£
+</P>
<P>¤â¤·¡¢<SMALL>ODBC</SMALL>¤Î¤è¤¦¤Ê¥¯¥é¥¤¥¢¥ó¥È¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤ò¤ª»È¤¤¤Ê¤é¡¢<tt>auto-commit off</tt>¤òÀßÄꤹ¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
-<P>
+</P>
<H4><A NAME="4.21">4.21</A>) ¸½ºß¤Î»þ¹ï¤¬¥Ç¥Õ¥©¥ë¥È¤È¤Ê¤ë¤è¤¦¤Ê¥«¥é¥à¤Ï¤É¤Î¤è¤¦¤Ë¤Ä¤¯¤ê¤Þ¤¹¤«¡©<BR></H4>
<P><i>CURRENT_TIMESTAMP</i>¤ò»È¤¤¤Þ¤¹:
+</P>
<PRE>
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
</PRE>
-<P>
-
<H4><A NAME="4.22">4.22</A>) ¤Ê¤¼¡¢<SMALL>IN</SMALL>¤ò»È¤¦ÉûÌ䤤¹ç¤ï¤»¤¬¤È¤Æ¤âÃÙ¤¤¤Î¤Ç¤¹¤«¡©
</H4>
FROM tab
WHERE col IN (SELECT subcol FROM subtab)
</PRE>
+<P>
¤ò¡¢ÃÖ¤´¹¤¨¤Æ¡§
+</P>
<PRE>
SELECT *
FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
</PRE>
+<P>
¤È¤·¤Þ¤¹¡£
¤³¤ì¤¬¼ê¤Ã¼è¤êÁᤤ¤Ç¤¹¤¬¡¢<CODE>subcol</CODE>¤Ïº÷°úÉÕ¤¥«¥é¥à¤Ç¤¢¤ë¤Ù¤¤Ç¤¹¡£
+</P>
<P>¥Ð¡¼¥¸¥ç¥ó7.4°Ê¹ß¤Ç¤Ï¡¢<CODE>IN</CODE>¤Ï¡¢Ä̾ï¤ÎÌ䤤¹ç¤ï¤»¤ÈƱÍͤÎÀöÎý¤µ¤ì¤¿¥¸¥ç¥¤¥ó¤Îµ»½Ñ¤ò¼ÂºÝ¤Ë»È¤¤¡¢<CODE>EXISTS</CODE>¤ò»È¤¦¤³¤È¤ò¹¥¤ß¤Þ¤¹¡£
</P>
<H4><A NAME="4.23">4.23</A>) <i>³°Éô</i>·ë¹ç(<i>outer</i> join)¤Ï¤É¤Î¤è¤¦¤Ë¼Â¸½¤·¤Þ¤¹¤«?<BR></H4>
<P>
PostgreSQL ¤Ï SQL ɸ½à¹½Ê¸¤ò»È¤¦³°Éô·ë¹ç(¥¢¥¦¥¿¡¼¥¸¥ç¥¤¥ó)¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¤³¤³¤Ë 2¤Ä¤ÎÎãÂ꤬¤¢¤ê¤Þ¤¹¡£
+</P>
<PRE>
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
</PRE>
+<P>
¤¢¤ë¤¤¤Ï
+</P>
<PRE>
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
</PRE>
-
+<P>
¤³¤ì¤é¤Î¾ÝħŪ¤ÊÌ䤤¹ç¤ï¤»¤Ç¤Ï t1.col ¤ò t2.col ¤È·ë¹ç¤·¤Æ¡¢t1 ¤Î·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿¥í¥¦(t2 ¤È°ìÃפ·¤Ê¤«¤Ã¤¿¥í¥¦)¤âÊÖ¤·¤Æ¤¤¤Þ¤¹¡£<SMALL>RIGHT</SMALL> ·ë¹ç¤Ï t2 ¤Î·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿¥í¥¦¤ò²Ã¤¨¤ë¤Ç¤·¤ç¤¦¡£<SMALL>FULL</SMALL> ·ë¹ç¤Ï¡¢°ìÃפ·¤¿¥í¥¦¤Ë t1 ¤È t2 ¤«¤é¤Ï·ë¹ç¤µ¤ì¤Ê¤«¤Ã¤¿¥í¥¦¤òÊÖ¤¹¤Ç¤·¤ç¤¦¡£<SMALL>OUTER</SMALL> ¤È¤¤¤¦¸ÀÍդϥª¥×¥·¥ç¥ó¤Ç <SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL>, ¤Þ¤¿¤Ï <SMALL>FULL</SMALL> ¤Ê¤É¤Î·ë¹ç¤ò²¾Äꤵ¤ì¤Æ¤¤¤Þ¤¹¡£Ä̾·ë¹ç¤Ï<SMALL>INNER</SMALL>·ë¹ç¤È¸Æ¤Ð¤ì¤Þ¤¹¡£
-
+</P>
+<P>
°ÊÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï³°Éô·ë¹ç(outer join)¤ò<SMALL>UNION</SMALL> ¤È <SMALL>NOT IN</SMALL> ¤ò»È¤Ã¤Æ¥·¥ß¥å¥ì¡¼¥È¤Ç¤¤Þ¤¹¡£
¤¿¤È¤¨¤Ð¡¢<i>tab1</i> ¤È <i>tab2</i> ¤ò·ë¹ç¤¹¤ë¤È¤¤Ï¡¢¼¡¤ÎÌ䤤¹ç¤ï¤»¤ÇÆó¤Ä¤Î¥Æ¡¼¥Ö¥ë¤ò<i>³°Éô</i>·ë¹ç¤·¤Þ¤¹¡£
-
+</P>
<PRE>
SELECT tab1.col1, tab2.col2
FROM tab1, tab2
ORDER BY col1
</PRE>
-<P>
<H4><A NAME="4.24">4.24</A>) Ê£¿ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¦Ì䤤¹ç¤ï¤»¤Ï¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤Ç¤¤Þ¤¹¤«¡©<BR></H4>
<P>
¸½¹Ô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹°Ê³°¤Ø¤ÎÌ䤤¹ç¤ï¤»ÊýË¡¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤È¤¤¤¦¤Î¤âPostgreSQL¤¬¥Ç¡¼¥¿¥Ù¡¼¥¹»ÅÍͤΥ·¥¹¥Æ¥à¥«¥¿¥í¥°¤òÆɤ߹þ¤à¤¿¤á¤Ç¡¢¤½¤³¤Ë¤Ï¡¢¤¿¤È¤¨¤½¤Î¤Õ¤ê¤ò¤¹¤ë¤À¤±¤Ë¤·¤í¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò±Û¤¨¤ÆÌ䤤¹ç¤ï¤»¤ò¤¹¤ë¤¹¤Ù¤¬¤¢¤ê¤Þ¤»¤ó¡£
-<P>
+</P><P>
<I>contrib/dblink</I> ¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹´Ö(cross-database)¤ÎÌ䤤¹ç¤ï¤»¤ò´Ø¿ô¸Æ½Ð¤·¤Ë¤è¤êµö¤·¤Þ¤¹¡£¤â¤Á¤í¤ó¡¢¥¯¥é¥¤¥¢¥ó¥È¤ÏƱ»þ¤ËÀܳ¤òÊ̤Υǡ¼¥¿¥Ù¡¼¥¹¤Ø¤âÄ¥¤é¤Ê¤¯¤Æ¤Ï¤Ê¤é¤º¡¢·ë²Ì¤ò¥¯¥é¥¤¥¢¥ó¥È¦¤Ç¥Þ¡¼¥¸¤·¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£</P>
-<P>
<H4><A NAME="4.25">4.25</A>) ´Ø¿ô¤ÇÊ£¿ô¤Î¥í¥¦¤Þ¤¿¤Ï¥«¥é¥à¤òÊÖ¤¹¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡©<BR></H4>
<P>7.3¤Ç¤Ï´Ø¿ô¤«¤é¡¢Ê£¿ô¤Î¥í¥¦¤äÊ£¿ô¥«¥é¥à¤ò´Êñ¤ËÊÖ¤»¤Þ¤¹¡£
<a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</a>¡£
+</P>
-
-<P>
<H4><A name="4.26">4.26</A>)¤Ê¤¼¡¢PL/PgSQL ´Ø¿ô¤ÎÃ椫¤é°ì»þ¥Æ¡¼¥Ö¥ë¤ò³Î¼Â¤Ë create/drop ¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡©</H4>
<P>
PL/PgSQL ¤Ï´Ø¿ô¤ÎÆâÍƤò¥¥ã¥Ã¥·¥å¤·¡¢¤½¤ÎÉÔ¹¬¤ÊÉûºîÍѤΤ¿¤á¡¢¤â¤· PL/PgSQL ´Ø¿ô¤¬°ì»þ¥Æ¡¼¥Ö¥ë¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤È¡¢¤½¤Î¥Æ¡¼¥Ö¥ë¤Ï¤¢¤È¤Ç¥É¥í¥Ã¥×¤µ¤ìºÆºîÀ®¤µ¤ì¤Þ¤¹¤¬¡¢´Ø¿ô¤¬ºÆ¤Ó¸Æ¤Ó½Ð¤µ¤ì¤ë¤È¡¢¥¥ã¥Ã¥·¥å¤µ¤ì¤Æ¤¤¤ë¤½¤Î´Ø¿ô¤ÎÆâÍƤϤޤÀ¸Å¤¤°ì»þ¥Æ¡¼¥Ö¥ë¤ò°ÍÁ³¤È¤·¤Æ»Ø¤·¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£²ò·èºö¤Ï¡¢ PL/PgSQL ¤ÎÃæ¤Ç <SMALL>EXECUTE</SMALL> ¤ò°ì»þ¥Æ¡¼¥Ö¥ë¥¢¥¯¥»¥¹¤Î¤¿¤á¤Ë»È¤¦¤³¤È¤Ç¤¹¡£¤³¤ì¤Ç¡¢Ëè²óÌ䤤¹ç¤ï¤»¤ò¥Ñ¡¼¥¹¤·Ä¾¤¹¤³¤È¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£</P>
</UL>
-<P>
<pre>
[ÌõÃí
¥ì¥×¥ê¥±¡¼¥·¥ç¥ó´ØÏ¢¤Î¹àÌܤ¬¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¤¬¡¢ÌõÃí¤Î¤ß»Ä¤·¤Æ¤¢¤ê¤Þ¤¹¡£
http://www.postgresql.jp/wg/dt/index.html
]
</pre>
-<P>
-<P>
<HR>
<H2 align="center">PostgreSQL¤Î³ÈÄ¥¤Ë¤Ä¤¤¤Æ¤Î¼ÁÌä</H2>
-<P>
<H4><A NAME="5.1">5.1</A>) ¼«Ê¬¤Ç½ñ¤¤¤¿¥æ¡¼¥¶ÄêµÁ´Ø¿ô¤ò psql ¤ÎÃæ¤Ç¼Â¹Ô¤¹¤ë¤È¥³¥¢¡¦¥À¥ó¥×¤·¤Æ¤·¤Þ¤¦¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
</H4>
<P> ÌäÂê¤Ï¿§¡¹¤È¹Í¤¨¤é¤ì¤Þ¤¹¤¬¡¢¤Þ¤ººÇ½é¤Ë¡¢ºîÀ®¤·¤¿¥æ¡¼¥¶ÄêµÁ´Ø¿ô¤òñÆȤΥƥ¹¥È¥×¥í¥°¥é¥à¤Ë¤·¤Æ»î¤·¤Æ¤ß¤Æ²¼¤µ¤¤¡£
+</P>
-
-<P>
<H4><A NAME="5.2">5.2</A>) PostgreSQL ÍѤ˽ñ¤¤¤¿¤Á¤ç¤Ã¤ÈÁÇŨ¤Ê¿·¤·¤¤·¿¤ä´Ø¿ô¤òÄ󶡤·¤Æ¥×¥í¥¸¥§¥¯¥È¤Ë¹×¸¥¤·¤¿¤¤¤Î¤Ç¤¹¤¬¡©
</H4>
<P> ³§¤µ¤ó¤Î¹Ô¤Ê¤Ã¤¿³ÈÄ¥¤ò¡¢<I>pgsql-hackers</I> ¥á¡¼¥ê¥ó¥°¡¦¥ê¥¹¥È¤ËÁ÷¤Ã¤Æ¤¯¤À¤µ¤¤¡£¤½¤·¤Æ¡¢¤æ¤¯¤æ¤¯¤Ï¤½¤¦¤·¤¿³ÈÄ¥¤¬ <I>contrib/</I> ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤ËÆþ¤ë¤³¤È¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£
+</P>
-<P>
<H4><A NAME="5.3">5.3</A>) ¥¿¥×¥ë¤òÊÖ¤¹ C¸À¸ì¤Î´Ø¿ô¤Ï¤É¤Î¤è¤¦¤Ë½ñ¤¤Þ¤¹¤«¡©
</H4>
<P>¥Ð¡¼¥¸¥ç¥ó7.3°Ê¹ß¤ÎPostgreSQL¤Ç¤Ï¡¢¥Æ¡¼¥Ö¥ë¤òÊÖ¤¹´Ø¿ô¤ò C, PL/PgSQL¡¢¤½¤·¤Æ SQL ¤Ë¤Æ´°Á´¤Ë¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£¾Ü¤·¤¯¤Ï¥×¥í¥°¥é¥Þ¥¬¥¤¥É¤Î¾ðÊó¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£C¤ÇÄêµÁ¤µ¤ì¤¿É½¤òÊÖ¤¹´Ø¿ô¤ÎÎãÂ꤬<I>contrib/tablefunc</I>¤ÎÃæ¤Ë¤¢¤ê¤Þ¤¹¡£
+</P>
-
-<P><H4><A NAME="5.4">5.4</A>) ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤Þ¤·¤¿¡£ºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤âÊѲ½¤¬¸«¤é¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
+<H4><A NAME="5.4">5.4</A>) ¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤Þ¤·¤¿¡£ºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤âÊѲ½¤¬¸«¤é¤ì¤Ê¤¤¤Î¤Ï¤Ê¤¼¤Ç¤¹¤«¡©
</H4>
<P> ¤¤¤¯¤Ä¤«¤Î <I>Makefile</I> ¤¬¥¤¥ó¥¯¥ë¡¼¥É¡¦¥Õ¥¡¥¤¥ë¤ËÂФ·¤ÆŬÀڤʰ͸´Ø·¸¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£<I>make clean</I> ¤ò¤·¤Æ¤«¤é¤â¤¦°ìÅÙ <I>make</I> ¤ò¹Ô¤Ê¤ï¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¤â¤·¡¢<SMALL>GCC</SMALL> ¤ò¤ª»È¤¤¤Ç¤¢¤ì¤Ð <i>configure</i> ¤Î <i>--enable-depend</i> ¥ª¥×¥·¥ç¥ó¤ò»È¤Ã¤Æ¡¢¥³¥ó¥Ñ¥¤¥é¤Ë°Í¸´Ø·¸¤ò¼«Æ°Åª¤ËÄ´¤Ù¤µ¤»¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
+</P>
-<P>
<HR>
-<SMALL><PRE>
+<PRE>
[ÌõÃí¡§
ÆüËܸìÈǤÎÀ½ºî¤Ë¤Ä¤¤¤Æ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
¤Ê¤ª¡¢¤³¤ÎÏÂÌõ¤Ë´Ø¤¹¤ë¤´°Õ¸«¤Ï(<A HREF="mailto:juk at PostgreSQL.jp">juk at PostgreSQL.jp</A>)¤Þ¤Ç¤ª´ó¤»²¼¤µ¤¤¡£
]
-</PRE></SMALL>
-</P>
+</PRE>
</BODY>
</HTML>
<P>Tekst powy¿ej, jest klasyczn± licencj± BSD.
Nie posiada ona ¿adnych restrykcji co do u¿ywania kodu ¼ród³owego.
- Podoba nam siê i nie zamierzamy jej zmieniaæ.
+ Podoba nam siê i nie zamierzamy jej zmieniaæ.</P>
<H4><A name="1.3">1.3</A>) Na jakich systemach Unixowych dzia³a
PostreSQL?</H4>
<P>Serwer mo¿e byæ uruchamiany na Windows NT i Win2k u¿ywaj±c
bibliotek Cygwin, Cygnus Unix/NT. W pliku <I>pgsql/doc/FAQ_MSWIN</I>
znajduj±cym siê w ¼ród³ach lub pod adresem: <A href=
- "http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> na naszych stronach.<P>
+ "http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> na naszych stronach.</P><P>
Obecnie prowadzone s± prace nad stworzeniem wersji dla MS Win
NT/200/XP. Je¶li chcesz siê dowiedzieæ o obecnym statusie tych prac
zobacz <A
<P>G³ówny serwer ftp z dostêpem "anonymous" dla PostgreSQL znajduje
siê <A href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>.
- je¶li szukasz mirrorów sprawd¼ nasz± g³ówn± stronê www.<P>
+ je¶li szukasz mirrorów sprawd¼ nasz± g³ówn± stronê www.</P>
<H4><A name="1.6">1.6</A>) Gdzie mo¿na szukaæ wsparcia technicznego?</H4>
mo¿na znale¼æ na stronach WWW PostgreSQL pod adresem:</P>
<BLOCKQUOTE>
- <A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
+ <P><A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A></P>
</BLOCKQUOTE>
<P>W sieci EFNet istnieje kana³ IRC <I>#PostgreSQL</I>. Ja, do
</P>
<P>
Wiêcej informacji na ten temat znajduje siê pod adresem See
- <A href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A>.
+ <A href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A>.</P>
<H4><A name="2.4">2.4</A>) Za pomoc± jakich jêzyków programowania
mo¿na siê komunikowaæ z PostgreSQL?</H4>
pierwszych rzêdów, byæ mo¿e bêdzie konieczno¶æ wykonania zapytania do
momentu a¿ zostan± znalezione po¿±dane wyniki.</P>
<P>
- Aby otrzymaæ losowy rz±d, u¿yj:
+ Aby otrzymaæ losowy rz±d, u¿yj:</P>
<PRE>
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
</PRE>
- </P>
<H4><A name="4.3">4.3</A>) Jak mogê uzyskaæ listê wszystkich tabel
czy innych rzeczy pod <I>psql</I>?</H4>
ALTER TABLE tab DROP COLUMN old_col;
COMMIT;
</PRE>
- </P>
<H4><A name="4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rzêdu,
tabeli i bazy danych?</H4>
przy wykonywaniu z³±czeñ (join). Sekwencyjne przeszukiwanie po którym
nastêpuje sortowanie jest zazwyczaj szybsze niê wyszukiwanie za
pomoc± indeksu na du¿ej tabeli.</P>
- Jakkolwiek <SMALL>LIMIT</SMALL> w po³±czeniu z <SMALL>ORDER BY</SMALL>
+ <P>Jakkolwiek <SMALL>LIMIT</SMALL> w po³±czeniu z <SMALL>ORDER BY</SMALL>
czêsto bêdzie wykorzystywa³ indeksy poniewa¿ jedynie ma³a czê¶æ z
tabeli jest zwracana. W rzeczywisto¶ci, chocia¿ MAX() i MIN() nie
u¿ywaj± indeksów, mo¿liwe jest aby zwróciæ te warto¶ci u¿ywaj±c
<P>
Je¶li uwa¿asz, ¿e optimizer myli siê wybieraj±c sequential scan, u¿yj
SET enable_seqscan TO 'off' i uruchom testy aby sprawdziæ czy wtym
- wypadku zapytanie bêdzie szybciej wykonywane.
+ wypadku zapytanie bêdzie szybciej wykonywane.</P>
<P>Kiedy u¿ywa siê operatorów dopasuj±cych takich jak
<SMALL>LIKE</SMALL> lub <I>~</I>, indeksy bêd± u¿ywane jedynie w
<UL>
<LI>Pocz±tek wyszukiwania jest oparty na pocz±tku ³añcucha tekstu.
<UL>
- <LI>wzorce <SMALL>LIKE</SMALL> nie mog± siê zaczynaæ <I>%</I>
+ <LI>wzorce <SMALL>LIKE</SMALL> nie mog± siê zaczynaæ <I>%</I></LI>
<LI>dopasowania operatorem <I>~</I> (dopasowania regularne)
- musz± siê zaczynaæ znakiem specjalnym <I>^</I>.</P>
- </UL>
+ musz± siê zaczynaæ znakiem specjalnym <I>^</I>.</LI>
+ </UL></LI>
<LI>Pocz±tek wyszukiwania nie mo¿e siê zaczynaæ od klas znaków, np.
- [a-e].
+ [a-e].</LI>
<LI>Case-insensitive searches such as ILIKE and ~* do not utilise
indexes. Instead, use functional indexes, which are described in
- section 4.12.
- <LI>Standardowe locale C musi byæ uzyte przy wykonywaniu initdb
+ section 4.12.</LI>
+ <LI>Standardowe locale C musi byæ uzyte przy wykonywaniu initdb</LI>
</UL>
<H4><A name="4.9">4.9</A>) Jak mogê sprawdziæ w jakis sposób "query
optimizer" wykonuje moje zapytanie?</H4>
przechowywane out-of-line jako <SMALL>TOAST</SMALL>, wiêc faktyczne
zu¿ycie miejsca na dysku mo¿e byæ mniejsze ni¿ oczekiwane.</P>
- <SMALL>VARCHAR(n)</SMALL> jest
+ <P> <SMALL>VARCHAR(n)</SMALL> jest
najodpowiedniejszy do przechowywania ³añcuchów o ró¿nej d³ugo¶ci
ale okre¶la on maksymaln± jego d³ugo¶æ.
<P>Listê terminów zwi±zanych z bazami danych mo¿esz znale¼æ pod tym
adresem:<A
- href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A>.
+ href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A>.</P>
<H4><A name="4.18">4.18</A>) Sk±d bierze siê ten b³±d <I>"ERROR:
Memory exhausted in AllocSetAlloc()"</I>?</H4>
kolumn?</H4>
<P>Mo¿esz w ³atwy sposób zwracaæ wiele rzêdów lub kolumn u¿ywaj±c
- funkcji z: <A HREF="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.
+ funkcji z: <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>
<H4><A name="4.26">4.26</A>) Dlaczego nie mogê w sposób pewny
tworzyæ/usuwaæ tabel tymczasowych w funkcjach PL/PgSQL?</H4>
funkcji.
</P>
- <H4><A name="4.27">4.27) Jakie s± mo¿liwo¶ci replikacji w PostgreSQL?</H4>
+ <H4><A name="4.27">4.27</A>) Jakie s± mo¿liwo¶ci replikacji w PostgreSQL?</H4>
<P>
Jest kilka opcji aby stosowaæ replikacjê typu master/slave. Ten typ
pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a
slave mo¿e jedynie te zmiany odczytywaæ. Na stronie
<A
- HREF="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A>
+ href="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A>
znajduje siê ich lista. Replikacja typu multi-master jest w trakcie
prac, opis projektu znajduje siê pod adresem: <A
- HREF="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">
+ href="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.
</P>
- <H4><A name="4.28">4.28) Jakie mo¿liwo¶ci szyfrowania oferuje
+ <H4><A name="4.28">4.28</A>) Jakie mo¿liwo¶ci szyfrowania oferuje
PostgreSQL?</H4>
- <P>
<UL>
<LI>contrib/pgcrypto zawiera wiele funkcji za pomoc±, których mo¿emy u¿ywaæ
- kryptografii w zapytaniach SQL.
+ kryptografii w zapytaniach SQL.</LI>
<LI>Aby szyfrowaæ transmisjê od klienta do serwera, ten musi mieæ
ustawion± opcjê ssl na true w pliku postgresql.conf, odpowiedni
wpis host lub hostssl musi wystêpowaæ w pliku pg_hba.conf, oraz
sslmode nie mo¿e byæ wy³±czone w kliencie. (Warto zwróciæ uwagê, ¿e
mo¿liwe jest tak¿e u¿ywanie transportów szyfruj±ców przez strony
trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem dla SSL
- przez PostgreSQL).
+ przez PostgreSQL).</LI>
<LI>Has³a u¿ytkowników bazy danych s± automatycznie szyfrowane od
wersji 7.3. W poprzednich wersjach, nale¿y t± funkcjonalno¶æ poprzez
- w³±czenie opcji PASSWORD_ENCRYPTION w postgresql.conf.
- <LI>Serwer mo¿e dzia³aæ u¿ywaj±c szyfrowanego systemu plików.
+ w³±czenie opcji PASSWORD_ENCRYPTION w postgresql.conf. </LI>
+ <LI>Serwer mo¿e dzia³aæ u¿ywaj±c szyfrowanego systemu plików.</LI>
</UL>
-</P>
<H2 align="center">Rozwijanie PostgreSQL</H2>
<A href="http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A>.</P>
- <H4><A name="1.6">1.6</A>) ëÁË ÍÎÅ ÓÏÏÂÝÉÔØ Ï ÏÛÉÂËÅ?</H3>
+ <H4><A name="1.6">1.6</A>) ëÁË ÍÎÅ ÓÏÏÂÝÉÔØ Ï ÏÛÉÂËÅ?</H4>
<P>ðÏÓÅÔÉÔÅ ÓÔÒÁÎÉÞËÕ ÓÏ ÓÐÅÃÉÁÌØÎÏÊ ÆÏÒÍÏÊ ÏÔÞ£ÔÁ Ï ÏÛÉÂËÅ ×
PostgreSQL ÐÏ ÁÄÒÅÓÕ:
- <A HREF="http://www.postgresql.org/support/submitbug">
+ <A href="http://www.postgresql.org/support/submitbug">
http://www.postgresql.org/support/submitbug</A>.</P>
<P>ôÁËÖÅ ÐÒÏ×ÅÒØÔÅ ÎÁÌÉÞÉÅ ÂÏÌÅÅ Ó×ÅÖÅÊ ×ÅÒÓÉÉ PostgreSQL ÎÁ ÎÁÛÅÍ
FTP ÓÁÊÔÅ <A href="ftp://ftp.postgresql.org/pub">
- ftp://ftp.PostgreSQL.org/pub</A>.
+ ftp://ftp.PostgreSQL.org/pub</A>.</P>
<H4><A name="1.7">1.7</A>) ëÁËÁÑ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ?</H4>
ÄÌÑ ÎÅÓËÏÌØËÉÈ ÐÅÒ×ÙÈ ÓÔÒÏÞÅË ÚÁÐÒÏÓÁ? ðÒÏÉÚ×ÏÌØÎÏÊ ÓÔÒÏËÉ?</H4>
<P>äÌÑ ÐÏÌÕÞÅÎÉÑ ÔÏÌØËÏ ÎÅÓËÏÌØËÉÈ ÓÔÒÏË, ÅÓÌÉ ×Ù ÚÎÁÅÔÅ ÉÈ ËÏÌÉÞÅÓÔ×Ï
- ÎÁ ÍÏÍÅÎÔ ×ÙÐÏÌÎÅÎÉÑ <SMALL>SELECT</SMALL> ÉÓÐÏÌØÚÕÊÔÅ <SMALL>LIMIT</SMALL>.</P>
+ ÎÁ ÍÏÍÅÎÔ ×ÙÐÏÌÎÅÎÉÑ <SMALL>SELECT</SMALL> ÉÓÐÏÌØÚÕÊÔÅ <SMALL>LIMIT</SMALL>.
åÓÌÉ ÅÓÔØ ËÁËÏÊ-ÌÉÂÏ ÉÎÄÅËÓ, ËÏÔÏÒÙÊ ÓÏ×ÐÁÄÁÅÔ Ó <SMALL>ORDER BY</SMALL>,
ÔÏ ×ÏÚÍÏÖÎÏ, ÞÔÏ ×ÅÓØ ÚÁÐÒÏÓ ×ÙÐÏÌÎÅÎ É ÎÅ ÂÕÄÅÔ. åÓÌÉ ×Ù ÎÅ ÚÎÁÅÔÅ
ËÏÌÉÞÅÓÔ×Á ÎÅÏÂÈÏÄÉÍÙÈ ÓÔÒÏË ÎÁ ÍÏÍÅÎÔ ×ÙÐÏÌÎÅÎÉÑ <SMALL>SELECT</SMALL>,
ÉÓÐÏÌØÚÕÊÔÅ ËÕÒÓÏÒ É <SMALL>FETCH</SMALL>.</P>
- <p>To <small>SELECT</small> a random row, use:
-</p><pre> SELECT col
+ <p>To <small>SELECT</small> a random row, use:</p>
+<pre> SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
</pre>
-</p>
<H4><A name="4.2">4.2</A>) ëÁË ÍÎÅ ÎÁÊÔÉ ËÁËÉÅ ÔÁÂÌÉÃÙ, ÉÎÄÅËÓÙ,
ÂÁÚÙ ÄÁÎÎÙÈ É ÐÏÌØÚÏ×ÁÔÅÌÉ ÓÕÝÅÓÔ×ÕÀÔ? ëÁË ÍÎÅ Õ×ÉÄÅÔØ ÚÁÐÒÏÓÙ,
<H4><A name="4.3">4.3</A>) ëÁË ÉÚÍÅÎÉÔØ ÔÉÐ ÄÁÎÎÙÈ ËÏÌÏÎËÉ?</H4>
<P>÷ 8.0 É ÂÏÌÅÅ ÐÏÚÄÎÉÈ ×ÅÒÓÉÑÈ, ÉÚÍÅÎÅÎÉÅ ÔÉÐÁ ËÏÌÏÎËÉ ×ÙÐÏÌÎÑÅÔÓÑ
- ÏÞÅÎØ ÌÅÇËÏ ÞÅÒÅÚ <SMALL>ALTER TABLE ALTER COLUMN TYPE</SMALL>.
+ ÏÞÅÎØ ÌÅÇËÏ ÞÅÒÅÚ <SMALL>ALTER TABLE ALTER COLUMN TYPE</SMALL>.</P>
<P>÷ ÂÏÌÅÅ ÒÁÎÎÉÈ ×ÅÒÓÉÑÈ ÓÄÅÌÁÊÔÅ ÔÁË:</P>
<PRE>
<P>óÕÝÅÓÔ×ÕÀÔ ÓÌÅÄÕÀÝÉÅ ÏÇÒÁÎÉÞÅÎÉÑ:</P>
<BLOCKQUOTE>
-<TABLE BORDER="1">
+<TABLE>
<TBODY>
<TR>
<TD>íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÂÁÚÙ?</TD>
É × ÜÔÏÍ ÓÌÕÞÁÅ ÉÎÄÅËÓ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ, ÐÏÓËÏÌØËÕ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ
ÂÕÄÅÔ ×ÏÚ×ÒÁÝÁÔØÓÑ ÎÅÂÏÌØÛÁÑ ÞÁÓÔØ ÔÁÂÌÉÃÙ. æÁËÔÉÞÅÓËÉ MAX() É MIN() ÎÅ
ÉÓÐÏÌØÚÕÀÔ ÉÎÄÅËÓÙ, ÎÏ ÉÎÄÅËÓ ÉÓÐÏÌØÚÕÅÔÓÑ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ ÚÁÐÒÏÓÏ× Ó
- <SMALL>ORDER BY</SMALL> É <SMALL>LIMIT</SMALL>:
+ <SMALL>ORDER BY</SMALL> É <SMALL>LIMIT</SMALL>:</P>
<pre>
SELECT col
FROM tab
WHERE lower(col) = 'abc';
</PRE>
- üÔÁ ËÏÎÓÔÒÕËÃÉÑ ÎÅ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÁÎÄÁÒÔÎÙÊ ÉÎÄÅËÓ. ïÄÎÁËÏ, ÅÓÌÉ
- ×Ù ÓÏÚÄÁÄÉÔÅ ÉÎÄÅËÓ ×ÙÒÁÖÅÎÉÑ, ÏÎ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ:
+<P> üÔÁ ËÏÎÓÔÒÕËÃÉÑ ÎÅ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÁÎÄÁÒÔÎÙÊ ÉÎÄÅËÓ. ïÄÎÁËÏ, ÅÓÌÉ
+ ×Ù ÓÏÚÄÁÄÉÔÅ ÉÎÄÅËÓ ×ÙÒÁÖÅÎÉÑ, ÏÎ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ:</P>
<PRE>
CREATE INDEX tabindex ON tab (lower(col));
</PRE>
<H4><A name="4.10">4.10</A>) ëÁËÏ×Ù ÏÔÌÉÞÉÑ ÍÅÖÄÕ ÒÁÚÎÙÍÉ ÓÉÍ×ÏÌØÎÙÍÉ
ÔÉÐÁÍÉ?</H4>
<BLOCKQUOTE>
-<TABLE BORDER="1">
+<TABLE>
<TBODY>
<TR>
<TH>ôÉÐ</TH>
);
</PRE>
- Á×ÔÏÍÁÔÉÞÅÓËÉ ÔÒÁÎÓÌÉÒÕÅÔÓÑ ×:
+<P> Á×ÔÏÍÁÔÉÞÅÓËÉ ÔÒÁÎÓÌÉÒÕÅÔÓÑ ×: </P>
<PRE>
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
O<SMALL>ID</SMALL>, ÐÏÔÏÍÕ ÞÔÏ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ <SMALL>SERIAL</SMALL>
ÕÎÉËÁÌØÎÙ ÔÏÌØËÏ ×ÎÕÔÒÉ ÔÁÂÌÉÃÙ É ÔÁËÉÍ ÏÂÒÁÚÏÍ ÍÅÎØÛÅ ÐÏÄ×ÅÒÖÅÎÙ
ÐÅÒÅÐÏÌÎÅÎÉÀ. äÌÑ ÈÒÁÎÅÎÉÑ ÚÎÁÞÅÎÉÊ 8-ÍÉ ÂÁÊÔÎÏÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ
- ÄÏÓÔÕÐÅÎ ÔÉÐ <SMALL>SERIAL8</SMALL>.
+ ÄÏÓÔÕÐÅÎ ÔÉÐ <SMALL>SERIAL8</SMALL>.</P>
<P>T<SMALL>ID</SMALL> ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÉÄÅÎÔÉÆÉËÁÃÉÉ ÓÐÅÃÉÁÌØÎÙÈ
ÆÉÚÉÞÅÓËÉÈ ÚÁÐÉÓÅÊ Ó ÂÌÏÞÎÙÍÉ É offset ÚÎÁÞÅÎÉÑÍÉ. T<SMALL>ID</SMALL>
ÉÚÍÅÎÑÅÔÓÑ ÐÏÓÌÅ ÔÏÇÏ ËÁË ÓÔÒÏËÉ × ÔÁÂÌÉÃÅ ÂÙÌÉ ÉÚÍÅÎÅÎÙ ÉÌÉ ÐÅÒÅÇÒÕÖÅÎÙ.
- <P>T<SMALL>ID</SMALL> ÉÓÐÏÌØÚÕÅÔÓÑ ÉÎÄÅËÓÎÙÍÉ ÚÁÐÉÓÑÍÉ × ËÁÞÅÓÔ×Å
+ T<SMALL>ID</SMALL> ÉÓÐÏÌØÚÕÅÔÓÑ ÉÎÄÅËÓÎÙÍÉ ÚÁÐÉÓÑÍÉ × ËÁÞÅÓÔ×Å
ÕËÁÚÁÔÅÌÑ ÎÁ ÆÉÚÉÞÅÓËÉÅ ÚÁÐÉÓÉ.</P>
<a href="#4.18">4.18</a>) Neden "<code>ERROR: Memory exhausted in AllocSetAlloc()</code>"
hatasýný alýyorum?<br>
<a href="#4.19">4.19</a>) Hangi PostgreSQL sürümünü çalýstýrdýðýmý nasýl görebilirim?<br>
- <a href="#4.20">4.20</a>) Neden <i>large-object</i> iþlemlerim, "</code>invalid large
+ <a href="#4.20">4.20</a>) Neden <i>large-object</i> iþlemlerim, "<code>invalid large
obj descriptor</code>" hatasýný veriyor?<br>
<a href="#4.21">4.21</a>) Þu andaki zamaný öntanýmlý deðer olarak kabul
eden kolonu nasýl yaratýrým?<br>
<P>PostgreSQL 8.0 sürümü ile , PostgreSQL artýk Win2000, WinXP ve Win2003 gibi Microsoft
Windows NT tabanlý iþletim sistemlerinde doðal olarak çalýþmaya baþlamýþtýr. Paketlenmiþ bir
kurulum programý, <a href="http://pgfoundry.org/projects/pginstaller">http://pgfoundry.org/projects/pginstaller</a>. adresinden
- indirilebilir.
+ indirilebilir.</P>
<p>Ayrýca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktadýr.</p>
<pre>subscribe<br>end</pre>
<p>yazan bir e-posta atmanýz yeterli olacaktýr.</p>
<p>Bunun dýþýndaki e-posta listelerine ve PostgreSQL hakkýnda bilgiye, PostgreSQL WWW
- ana sayfasýndan ulasabilirsiniz: <i><a href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</a></i><p>
+ ana sayfasýndan ulasabilirsiniz: <i><a href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</a></i></p>
<p>Ayný zamanda, EFNet üzerinde, <code>#PostgreSQL</code> adlý bir IRC kanalý
bulunmaktadýr. Bunun için, <code>irc -c '#PostgreSQL' "$USER" irc.phoenix.net</code>
Unix komutunu kullanabilirsiniz.</p>
<code>/doc</code> dizinine bakýnýz. Ayrýca, bu el kitapçýklarýný online olarak
<i><a href="http://www.PostgreSQL.org/docs/">http://www.PostgreSQL.org/docs/</a></i> adresinden inceleyebilirsiniz.</p>
<p><i><a href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a></i>
- ve <i><a href="http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook<a></i>
+ ve <i><a href="http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook</a></i>
adreslerinde PostgreSQL kitaplarý bulunmaktadýr. PostgreSQL kitablarýnýn listesine,
<i><a href="http://www.ca.PostgreSQL.org/books/">http://www.ca.PostgreSQL.org/books/</a></i> adresinden ulaþaiblirsiniz.
Ayrýca, PostgreSQL konusundaki teknik makalelere de
<h4><a name="1.14">1.14</a>) PostgreSQL, diger DBMS'lerle nasýl karþýlastýrýlabilir?</h4>
<p>Bir yazýlýmýn gücünü ölçmek için çeþitli yollar vardýr: Yazýlýmýn özellikleri,
baþarýmý, güvenilirliði, desteði ve ücreti.</p>
- <p>Özellikler:<p>
+ <p>Özellikler:</p>
<p>PostgreSQL mevcut büyük ticari veritabanlarýnýn, <i>transaction</i>,
<i>subselect</i>, <i>trigger</i>, <i>view</i>, <i>foreign key referential integrity</i>
ve <i>sophisticated locking</i> gibi (<i>user-defined types</i>), <i>rules</i>,
<p><i><a href="http://www.webreview.com/">http://www.webreview.com/</a></i> adresinde,
arka planda veritabaný çalýstýran Web sayfalarý için giriþ seviyesinde bilgi bulunmaktadýr.</p>
<p>Web ile bütünleþme için, PHP (<i><a href="http://www.php.net/"></a></i>)
- mükemmel bir arabirim sunar.<p>
+ mükemmel bir arabirim sunar.</p>
<p>Karmaþýk sorunlar için, çoðu kisi Perl arabirimini ve CGI.pm ya da mod_perl kullanýr.</p>
<h4><a name="2.3">2.3</a>) PostgreSQL'in grafik kullanýcý arabirimi var mýdýr?</h4>
<p>Postmaster ve postgres çeþitli hata ayýklama seçeneklerine sahiptir. Öncelikle,
postmaster'ý baþlattýðýnýzda, standart çýktýyý ve hatalarý bir log dosyasýna
yönlendirdiðinize emin olun:</p>
- <pre>cd /usr/local/pgsql<br>./bin/postmaster >server.log 2>&1 &</pre>
+ <pre>cd /usr/local/pgsql<br>./bin/postmaster >server.log 2>&1 &</pre>
<p>Bu iþlem PostgreSQL ana dizinine <code>server.log</code> dosyasý yerleþtirecektir.
Bu dosya sunucunun yaþadýðý sorunlar ya da hatalar hakkýnda yararlý bilgiler içerir.
<code>-d</code> seçeneði, hata ayýklama seviyesini belirten bir rakam ile kullanýlýr.
deðeri ile ya da <code>postgresql.conf</code> dosyasýný düzenleyerek yeniden
baþlatmakla arttýrabilirsiniz.</p>
<p>Eðer <code>-N</code> deðerini 32'den büyük yapacaksanýz, ayný zamanda
- <code>-B</code> deðerini de deðiþtirmeniz gerektiðini unutmayýn. </code>-B</code>,
+ <code>-B</code> deðerini de deðiþtirmeniz gerektiðini unutmayýn. <code>-B</code>,
<code>-N</code>'nin en az 2 katý kadar olmalýdýr; daha iyi baþarým için bu sayýyý daha
da arttýrmalýsýnýz. Yüksek sayýdaki <i>backend</i> süreçleri için, çeþitli çekirdek
yapýlandýrma parametrelerini arttýrmanýz gerekecektir. Yapýlmasý gerekenler,
<code>LIMIT</code> ... kullanýnýz.</p>
<p>Ýlk birkaç satýrý almak isteseniz bile, tüm sorgu deðerlendirilmek durumunda kalýnabilir. ORDER
BY içeren bir sorgu düþünün. Eðer ORDER BY iþe eþleþen bir index varsa, PostgreSQL istenen ilk birkaç
- satýrý iþleyebilir, ya da tüm sorgu istenen satýrlar üretilene kadar iþlenebilir. </b></p>
+ satýrý iþleyebilir, ya da tüm sorgu istenen satýrlar üretilene kadar iþlenebilir. </p>
<h4><a name="4.3">4.3</a>) psql'in içinde gördügüm tablolarýn ya da diðer
þeylerin listesini nasýl alabilirim?</h4>
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");</pre>
<P>Diðer sorgular için new_id'de yeni deðerin saklanmasý gerekir. Otomatik olarak yaratýlan SEQUENE nesnesinin adý,
- <tablo adý>_<serial kolonu adý>_seq þeklinde olacaktýr (< > iþaretleri olmadan).</p>
+ <tablo adý>_<serial kolonu adý>_seq þeklinde olacaktýr (< > iþaretleri olmadan).</p>
<p>Alternatif olarak, atanmýþ SERIAL deðerini, deðer girildikten sonra currval()
fonksiyonu ile alabilirsiniz:</p>