From b9de4a26cf1b34f9a9a6c9bdfc8d3878bd075ce1 Mon Sep 17 00:00:00 2001 From: Bruce Momjian <bruce@momjian.us> Date: Fri, 11 Mar 2005 21:46:54 +0000 Subject: [PATCH] Here's the patch to fix a lot of markup errors in the HTML FAQs. Doesn't change content (at least not supposed to). Magnus Hagander --- doc/FAQ | 5 +- doc/FAQ_DEV | 14 +- doc/FAQ_brazilian | 77 +- doc/FAQ_czech | 2282 +++++++++++++++--------------- doc/FAQ_farsi | 2408 +++++++++++++++++++++----------- doc/FAQ_french | 32 +- doc/FAQ_german | 14 +- doc/FAQ_japanese | 2311 +++++++++++++++--------------- doc/FAQ_polish | 67 +- doc/FAQ_russian | 16 +- doc/FAQ_turkish | 1933 ++++++++++++++----------- doc/src/FAQ/FAQ.html | 24 +- doc/src/FAQ/FAQ_DEV.html | 10 +- doc/src/FAQ/FAQ_MINGW.html | 2 - doc/src/FAQ/FAQ_brazilian.html | 42 +- doc/src/FAQ/FAQ_czech.html | 38 +- doc/src/FAQ/FAQ_french.html | 13 +- doc/src/FAQ/FAQ_german.html | 18 +- doc/src/FAQ/FAQ_japanese.html | 345 ++--- doc/src/FAQ/FAQ_polish.html | 54 +- doc/src/FAQ/FAQ_russian.html | 31 +- doc/src/FAQ/FAQ_turkish.html | 20 +- 22 files changed, 5447 insertions(+), 4309 deletions(-) diff --git a/doc/FAQ b/doc/FAQ index 5b2ac568755..616258ee047 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,7 +1,7 @@ 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) @@ -819,7 +819,8 @@ 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? diff --git a/doc/FAQ_DEV b/doc/FAQ_DEV index 688cf2819da..f3a9835cfff 100644 --- a/doc/FAQ_DEV +++ b/doc/FAQ_DEV @@ -1,7 +1,7 @@ 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) @@ -9,8 +9,8 @@ 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? @@ -31,8 +31,8 @@ 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 @@ -564,8 +564,8 @@ 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 diff --git a/doc/FAQ_brazilian b/doc/FAQ_brazilian index a44ed10c200..45297e30592 100644 --- a/doc/FAQ_brazilian +++ b/doc/FAQ_brazilian @@ -603,22 +603,17 @@ 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) @@ -680,13 +675,13 @@ log_* 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 @@ -753,14 +748,12 @@ log_* 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 @@ -795,17 +788,14 @@ N 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. @@ -874,10 +864,8 @@ para cima) * 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 @@ -948,14 +936,10 @@ LIKE 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 @@ -1063,8 +1047,7 @@ te safe) 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'; diff --git a/doc/FAQ_czech b/doc/FAQ_czech index 1fd6627b8a5..1a2b33cb687 100644 --- a/doc/FAQ_czech +++ b/doc/FAQ_czech @@ -1,855 +1,823 @@ -È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 @@ -858,332 +826,292 @@ TEXT text bez horn 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. diff --git a/doc/FAQ_farsi b/doc/FAQ_farsi index c8ff95967cd..b7cbb205750 100644 --- a/doc/FAQ_farsi +++ b/doc/FAQ_farsi @@ -1,816 +1,1566 @@ -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 مي‌باشد. P‌ostgreSQL‌ -همچنين امكان ارتباط به صورت 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 @@ -819,59 +1569,125 @@ IN شبیه سازی کنیم. این کار در مثال زیر نشان دا 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+. diff --git a/doc/FAQ_french b/doc/FAQ_french index 1423aee9b03..1b224e877ca 100644 --- a/doc/FAQ_french +++ b/doc/FAQ_french @@ -171,7 +171,7 @@ 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 @@ -760,8 +760,7 @@ 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; @@ -772,14 +771,12 @@ e_donnees); 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 @@ -813,21 +810,17 @@ nnes ---------------------------------------- 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. @@ -1025,8 +1018,7 @@ BYTEA bytea tableau d'octets (accepte les octets nuls) 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é @@ -1085,8 +1077,7 @@ BYTEA bytea tableau d'octets (accepte les octets nuls) 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; @@ -1178,8 +1169,7 @@ CREATE TABLE test (x int, heuremodif timestamp DEFAULT CURRENT_TIMESTAMP ); 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. diff --git a/doc/FAQ_german b/doc/FAQ_german index 49375224b4a..dcb38cec778 100644 --- a/doc/FAQ_german +++ b/doc/FAQ_german @@ -643,14 +643,12 @@ 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 diff --git a/doc/FAQ_japanese b/doc/FAQ_japanese index 609f8198f03..b271d650976 100644 --- a/doc/FAQ_japanese +++ b/doc/FAQ_japanese @@ -1,22 +1,20 @@ -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/ + ¤Ë²óÅú¤¬¤¢¤ê¤Þ¤¹¡£ +(°Ê²¼¡¢Ìõ¼Ô¤Ë¤è¤ëÃí¼á¤ò [ÌõÃí¡§ ¤È ] ¤È¤Ç°Ï¤ó¤Çµ¤·¤Þ¤¹¡£) [ÌõÃí¡§ ÆüËܸìÈÇÀ½ºî¤Ë¤Ä¤¤¤Æ¤Î¥á¥â¤ÏºÇ¸åÈø¤Ø°ÜÆ°¤·¤Þ¤·¤¿¡£ @@ -27,180 +25,201 @@ 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 ¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³ØËܹ» - ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ª¤è¤Ó¤½¤Îʸ½ñ°ì¼°¤Ï¾åµ¤ÎÃøºî¸¢É½¼¨¤È¡¢¤³¤Îʸ¾Ï + ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ª¤è¤Ó¤½¤Îʸ½ñ°ì¼°¤Ï¾åµ¤ÎÃøºî¸¢É½¼¨¤È¡¢¤³¤Îʸ¾Ï ¤ª¤è¤Ó¤³¤ì¤Ë³¤¯Æó¤Ä¤ÎÃÊÍÁ´¤Æ¤ÎÊ£À½¤ËźÉÕ¤µ¤ì¤Æ¤¤¤ë¸Â¤ê¤Ë¤ª¤¤ ¤Æ¡¢»ÈÍÑ¡¢Ê£À½¡¢½¤Àµ¤ª¤è¤ÓÇÛÉդεö²Ä¤ò¡¢¤¤¤«¤Ê¤ëÌÜŪ¤Ç¤¢¤Ã¤Æ¤â¡¢ ̵½þ¤Ç¤«¤ÄƱ°Õ½ñ̵¤·¤Ë¹Ô¤Ê¤¨¤ë¤³¤È¤ò¤³¤³¤Ëǧ¤á¤Þ¤¹¡£ @@ -211,49 +230,50 @@ SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ¤ò¼õ¤±¤Æ¤¤¤¿¤È¤·¤Æ¤â¡¢°ìÀÚ¤ÎÀÕǤ¤òÉ餤¤Þ¤»¤ó¡£ ¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤Ï¡¢¾¦ÍÑÌÜŪ¤Ë¤ª¤±¤ë°ÅÌÛ¤ÎÊݾڤȡ¢ÆÃÄêÌÜŪ¤Ç - ¤ÎŬ¹çÀ¤Ë´Ø¤·¤Æ¤Ï¤â¤È¤è¤ê¡¢¤³¤ì¤é¤Ë¸Â¤é¤º¡¢¤¤¤«¤Ê¤ëÊݾڤâÊü´þ¤¹ + ¤ÎŬ¹çÀ¤Ë´Ø¤·¤Æ¤Ï¤â¤È¤è¤ê¡¢¤³¤ì¤é¤Ë¸Â¤é¤º¡¢¤¤¤«¤Ê¤ëÊݾڤâÊü´þ¤¹ ¤ë¤³¤È¤òÌÀ¸À¤·¤Þ¤¹¡£°Ê²¼¤ËÍÑ°Õ¤µ¤ì¤¿¥½¥Õ¥È¥¦¥§¥¢¤Ï¡Ö¤½¤Î¤Þ¤Þ¡×¤ò ´ðËܸ¶Íý¤È¤·¡¢¥«¥ê¥Õ¥©¥ë¥Ë¥¢Âç³Ø¤Ï¤½¤ì¤ò°Ý»ý¡¢»Ù±ç¡¢¹¹¿·¡¢²þÎɤ¢ ¤ë¤¤¤Ï½¤Àµ¤¹¤ëµÁ̳¤òÉ餤¤Þ¤»¤ó¡£ [ÌõÃí¡§ - Ãøºî¸¢¤Ë´Ø¤¹¤ëÀµÊ¸¤Ï¾åµ¤Î±Ñ¸ì¤Ë¤è¤ëɽµ¤Ç¤¹¡£ÆüËܸìÌõ¤Ï¤¢¤¯¤Þ¤Ç + Ãøºî¸¢¤Ë´Ø¤¹¤ëÀµÊ¸¤Ï¾åµ¤Î±Ñ¸ì¤Ë¤è¤ëɽµ¤Ç¤¹¡£ÆüËܸìÌõ¤Ï¤¢¤¯¤Þ¤Ç »²¹Í¤Ç¤¹¡£ ] -¾åµ¤Ï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 ¥Ú¡¼¥¸¤ò¤´Í÷²¼¤µ¤¤¡£ [ÌõÃí: °Ê²¼¤ÏÆüËܤΥߥ顼¥µ¥¤¥È¤Ç¤¹: @@ -272,54 +292,58 @@ PostgreSQL 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 ¥µ¥¤¥È: @@ -328,76 +352,77 @@ postgresql-es) ÆüËܸì¤Î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 @@ -407,138 +432,158 @@ McGraw-Hill ¤¬¤¢¤ê¤Þ¤¹(¤ä¤ä¸Å¤¤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 ¤ÎÍøÍѤ¬²Äǽ¤È»×¤ï¤ì¤Þ¤¹¡£ @@ -549,286 +594,317 @@ www.php.net/ ¤È¤¬¤¢¤ê¤Þ¤¹¡£¤½¤Î·Ð°Þ¤Ï¤è¤¯¤ï¤«¤ê¤Þ¤»¤ó¡£ ] -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 ... -- ºï½ü¤·¤¿¤¤¥«¥é¥à°Ê³°¤Î¥«¥é¥à¤ò¤¹¤Ù¤ÆÁªÂò¤·¤Þ¤¹¡£ @@ -838,21 +914,20 @@ DROP COLUMN 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 @@ -861,30 +936,32 @@ VACUUM FULL tab ¥Æ¡¼¥Ö¥ëÆâ¤Ç¤ÎºÇÂ祫¥é¥à¿ô? ¥«¥é¥à¤Î·¿¤Ë¤è¤ê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 @@ -898,198 +975,208 @@ VACUUM FULL tab 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 ); [ÌõÃí¡§ @@ -1097,186 +1184,203 @@ PostgreSQL ¤Ï¡¢ 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 @@ -1286,48 +1390,57 @@ PostgreSQL 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 @@ -1340,67 +1453,70 @@ PL/PgSQL ¤Î¼ÂÁõ¤ò¹Ô¤¤¤Þ¤·¤¿¡£ 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 ¥É¥¥å¥á¥ó¥Æ¡¼¥·¥ç¥ó¥×¥í¥¸¥§¥¯¥È¡¢ ¤½¤Î¾¡¢Ä¾Àܤ¢¤ë¤¤¤Ï´ÖÀÜŪ¤Ë¤«¤«¤ï¤Ã¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥ª¡¼¥×¥ó¥½¡¼¥¹¥³¥ß¥å¥Ë¥Æ¥£¡¼¤Î³§¤µ¤ó¤Ë´¶¼Õ¤·¤Þ¤¹¡£ ÆüËܸìÈǤΤ³¤Îʸ½ñ¤Ï¡¢°Ê²¼¤«¤é¤â¤¿¤É¤ì¤Þ¤¹¡£ @@ -1410,4 +1526,3 @@ PL/PgSQL ¤Ê¤ª¡¢¤³¤ÎÏÂÌõ¤Ë´Ø¤¹¤ë¤´°Õ¸«¤Ï(juk at PostgreSQL.jp)¤Þ¤Ç¤ª´ó¤»²¼¤µ¤¤¡£ ] - diff --git a/doc/FAQ_polish b/doc/FAQ_polish index f98902093c5..b2be9d9bf68 100644 --- a/doc/FAQ_polish +++ b/doc/FAQ_polish @@ -165,7 +165,7 @@ 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 @@ -747,8 +747,7 @@ 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; @@ -770,8 +769,7 @@ zbyc 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 @@ -807,8 +805,7 @@ lumn 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 @@ -858,6 +855,7 @@ lumn 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 @@ -952,13 +950,10 @@ lumn 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 @@ -970,6 +965,7 @@ BYTEA bytea zmiennej dl/ugosci tablica bajt 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 @@ -1229,13 +1225,14 @@ SELECT * 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 @@ -1257,22 +1254,26 @@ SELECT * 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. diff --git a/doc/FAQ_russian b/doc/FAQ_russian index 2f106f30d22..6089d606137 100644 --- a/doc/FAQ_russian +++ b/doc/FAQ_russian @@ -520,11 +520,11 @@ 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 @@ -821,10 +821,8 @@ 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()"? diff --git a/doc/FAQ_turkish b/doc/FAQ_turkish index 47a3188674d..50634d0573b 100644 --- a/doc/FAQ_turkish +++ b/doc/FAQ_turkish @@ -1,480 +1,690 @@ -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 @@ -482,355 +692,421 @@ INTO TABLE new_table 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 @@ -838,60 +1114,79 @@ UNION ALL 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. diff --git a/doc/src/FAQ/FAQ.html b/doc/src/FAQ/FAQ.html index 295ca20f4ae..32ed55ac000 100644 --- a/doc/src/FAQ/FAQ.html +++ b/doc/src/FAQ/FAQ.html @@ -10,7 +10,7 @@ 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>) @@ -197,7 +197,7 @@ 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>, @@ -217,14 +217,14 @@ 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"> @@ -482,7 +482,7 @@ <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> @@ -609,7 +609,7 @@ <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 @@ -643,7 +643,7 @@ <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> @@ -661,7 +661,7 @@ <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> @@ -731,7 +731,7 @@ table?</TD><TD>unlimited</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 @@ -843,7 +843,7 @@ table?</TD><TD>unlimited</TD></TR> <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> @@ -1057,7 +1057,7 @@ length</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 @@ -1082,7 +1082,7 @@ length</TD></TR> <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> diff --git a/doc/src/FAQ/FAQ_DEV.html b/doc/src/FAQ/FAQ_DEV.html index 1098913c0aa..76872983670 100644 --- a/doc/src/FAQ/FAQ_DEV.html +++ b/doc/src/FAQ/FAQ_DEV.html @@ -13,7 +13,7 @@ <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> @@ -26,9 +26,7 @@ <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 @@ -59,9 +57,7 @@ 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, @@ -152,7 +148,7 @@ 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> @@ -703,9 +699,7 @@ 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> diff --git a/doc/src/FAQ/FAQ_MINGW.html b/doc/src/FAQ/FAQ_MINGW.html index 924d20ef4d8..2f8bfc4ced6 100644 --- a/doc/src/FAQ/FAQ_MINGW.html +++ b/doc/src/FAQ/FAQ_MINGW.html @@ -71,8 +71,6 @@ The mailing list for discussion is <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> diff --git a/doc/src/FAQ/FAQ_brazilian.html b/doc/src/FAQ/FAQ_brazilian.html index a07ffbdf9c1..ad123d5bee9 100644 --- a/doc/src/FAQ/FAQ_brazilian.html +++ b/doc/src/FAQ/FAQ_brazilian.html @@ -17,7 +17,7 @@ </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"> @@ -202,14 +202,14 @@ 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> @@ -253,7 +253,7 @@ Há também uma lista de discussão dos desenvolvedores dispon <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> @@ -499,9 +499,9 @@ Há também uma lista de discussão dos desenvolvedores dispon <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> @@ -526,7 +526,7 @@ Há também uma lista de discussão dos desenvolvedores dispon <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> @@ -543,7 +543,7 @@ Há também uma lista de discussão dos desenvolvedores dispon <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 @@ -639,7 +639,7 @@ Número máximo de índices em uma tabela? ilimitado 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 @@ -686,11 +686,10 @@ Número máximo de índices em uma tabela? ilimitado <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> @@ -922,14 +921,15 @@ Veja a página sobre <I>create_sequence</I> no manual para mais informa&cc 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> @@ -965,7 +965,7 @@ Para isto ser rápido, <CODE>subcol</CODE> deve ser uma coluna indexada. < <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> @@ -973,7 +973,7 @@ Para isto ser rápido, <CODE>subcol</CODE> deve ser uma coluna indexada. < <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> diff --git a/doc/src/FAQ/FAQ_czech.html b/doc/src/FAQ/FAQ_czech.html index cb91c8eb90e..05079c79767 100644 --- a/doc/src/FAQ/FAQ_czech.html +++ b/doc/src/FAQ/FAQ_czech.html @@ -129,7 +129,7 @@ <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> @@ -206,18 +206,18 @@ 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> @@ -238,7 +238,7 @@ 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ì @@ -254,7 +254,7 @@ <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> @@ -315,7 +315,7 @@ <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 @@ -341,7 +341,7 @@ <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 @@ -363,7 +363,7 @@ 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 @@ -375,7 +375,7 @@ 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> @@ -553,7 +553,7 @@ 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á @@ -773,7 +773,7 @@ <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 @@ -791,7 +791,7 @@ <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 @@ -926,7 +926,7 @@ BYTEA bytea pole byt <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> @@ -986,7 +986,7 @@ BYTEA bytea pole byt <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> @@ -1038,13 +1038,13 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); <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 @@ -1101,7 +1101,7 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); <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> @@ -1164,4 +1164,4 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); 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> diff --git a/doc/src/FAQ/FAQ_french.html b/doc/src/FAQ/FAQ_french.html index 0436774159b..c48334ea91c 100644 --- a/doc/src/FAQ/FAQ_french.html +++ b/doc/src/FAQ/FAQ_french.html @@ -152,7 +152,7 @@ <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 @@ -173,7 +173,7 @@ 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, @@ -292,7 +292,7 @@ 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 @@ -819,7 +819,7 @@ 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 @@ -1004,7 +1004,6 @@ <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 @@ -1398,7 +1397,7 @@ BYTEA bytea tableau d'octets (accepte les octets nuls) <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> @@ -1422,7 +1421,7 @@ BYTEA bytea tableau d'octets (accepte les octets nuls) 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> diff --git a/doc/src/FAQ/FAQ_german.html b/doc/src/FAQ/FAQ_german.html index 4d842ad6fdd..924568b8fcf 100644 --- a/doc/src/FAQ/FAQ_german.html +++ b/doc/src/FAQ/FAQ_german.html @@ -212,7 +212,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p> <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> @@ -223,7 +223,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p> <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 @@ -260,7 +260,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p> <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. @@ -341,7 +341,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p> <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> @@ -475,7 +475,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</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> @@ -500,7 +500,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p> (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> @@ -632,7 +632,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p> <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 @@ -728,7 +728,7 @@ href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>).</p> <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 @@ -1123,7 +1123,7 @@ BYTEA bytea Bytearray mit variabler Länge (auch für 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> diff --git a/doc/src/FAQ/FAQ_japanese.html b/doc/src/FAQ/FAQ_japanese.html index d09dd6f1d3d..05812e8db53 100644 --- a/doc/src/FAQ/FAQ_japanese.html +++ b/doc/src/FAQ/FAQ_japanese.html @@ -2,9 +2,9 @@ <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> @@ -13,20 +13,19 @@ PostgreSQL( ¸½ºß¤Î°Ý»ý´ÉÍý¼Ô: 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> (°Ê²¼¡¢Ìõ¼Ô¤Ë¤è¤ëÃí¼á¤ò [ÌõÃí¡§ ¤È ] ¤È¤Ç°Ï¤ó¤Çµ¤·¤Þ¤¹¡£) [ÌõÃí¡§ ÆüËܸìÈÇÀ½ºî¤Ë¤Ä¤¤¤Æ¤Î¥á¥â¤ÏºÇ¸åÈø¤Ø°ÜÆ°¤·¤Þ¤·¤¿¡£ @@ -42,11 +41,9 @@ HREF="mailto:juk at PostgreSQL.jp">juk at PostgreSQL.jp</A>)<BR><P> 2005ǯ01·î12Æü ·¬Â¼ ½á ] -</PRE></SMALL> +</PRE> -<P> <HR> -<P> <H2 align="center">°ìÈÌŪ¤Ê¼ÁÌä</H2> @@ -133,15 +130,14 @@ HREF="mailto:juk at PostgreSQL.jp">juk at PostgreSQL.jp</A>)<BR><P> <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"> @@ -150,18 +146,20 @@ HREF="mailto:juk at PostgreSQL.jp">juk at PostgreSQL.jp</A>)<BR><P> </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> @@ -187,7 +185,7 @@ IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.</P> -<SMALL><PRE> +<PRE> POSTGRESQL ¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¥·¥¹¥Æ¥à ÉôʬŪÃøºî¸¢ (c) 1996-2004, PostgreSQL¹ñºÝ³«È¯¥Á¡¼¥à @@ -214,7 +212,7 @@ MODIFICATIONS.</P> Ãøºî¸¢¤Ë´Ø¤¹¤ëÀµÊ¸¤Ï¾åµ¤Î±Ñ¸ì¤Ë¤è¤ëɽµ¤Ç¤¹¡£ÆüËܸìÌõ¤Ï¤¢¤¯¤Þ¤Ç »²¹Í¤Ç¤¹¡£ ] -</PRE></SMALL> +</PRE> <P>¾åµ¤ÏBSD¥é¥¤¥»¥ó¥¹¤Ç¸Å¤¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î¥é¥¤¥»¥ó¥¹¤Ç¤¹¡£¥½¡¼¥¹¥³¡¼¥É ¤¬¤É¤Î¤è¤¦¤Ë»È¤ï¤ì¤è¤¦¤È¤âÀ©¸Â¤·¤Þ¤»¤ó¡£¹¥¤Þ¤·¤¤¤³¤È¤Ê¤Î¤Ç¡¢²æ¡¹¤â¤½¤ì¤ò @@ -225,7 +223,6 @@ MODIFICATIONS.</P> <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¥Ù¡¼¥¹¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¥Í¥¤¥Æ¥£¥Ö¤ËÁö¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£ @@ -233,18 +230,18 @@ MODIFICATIONS.</P> 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> @@ -256,7 +253,7 @@ href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</A> ¤Ç¤¹¡£ ¥ß¥é¡¼¥µ¥¤¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢²æ¡¹¤Î¥á¥¤¥ó Web ¥Ú¡¼¥¸¤ò¤´Í÷²¼¤µ¤¤¡£</P> -<SMALL><PRE> +<PRE> [ÌõÃí: °Ê²¼¤ÏÆüËܤΥߥ顼¥µ¥¤¥È¤Ç¤¹: @@ -274,7 +271,7 @@ href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</A> 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> @@ -292,33 +289,35 @@ href="ftp://ftp.PostgreSQL.org/pub/">ftp://ftp.PostgreSQL.org/pub/</A> 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 ¥³¥Þ¥ó¥É¤Ç¡¢ @@ -329,8 +328,7 @@ UNIX EFNet¤Ë¤âPostgreSQL¥Á¥ã¥ó¥Í¥ë¤¬¤¢¤ê¤Þ¤¹¡£ </P> -<P> -<SMALL><PRE> +<PRE> [ÌõÃí: 1999ǯ7·î23Æü¡¢ÆüËܥݥ¹¥È¥°¥ì¥¹¥æ¡¼¥¶¡¼²ñ¡¢Î¬¾ÎJPUG¤¬ÀßΩ¤µ¤ì¤Þ¤·¤¿¡£ JPUG ¤ÏÈó±ÄÍøÁÈ¿¥¤Ç¡¢PostgreSQL¤òÍøÍѤ¹¤ë¿Íã¤ÎÁê¸ß¶¨ÎϤξì¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ @@ -341,7 +339,7 @@ EFNet ¤ò¤´Í÷¤¯¤À¤µ¤¤¡£²ñ°÷ÅÐÏ¿¤â²Äǽ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ ÆüËܸì¤ÎIRC¥Á¥ã¥ó¥Í¥ë '#PostgreSQL*jp' ¤â¸ºß¤·¤Þ¤¹¡£ -</PRE></SMALL> +</PRE> <P>¾¦ÍÑ¥µ¥Ý¡¼¥È²ñ¼Ò¤Î¥ê¥¹¥È¤Ï<a href="http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</a>¤Ë¤¢¤ê¤Þ¤¹¡£</P> @@ -358,24 +356,25 @@ PostgreSQL <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> ¤Ç¤¹¡£ @@ -415,14 +414,13 @@ PostgreSQL <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= @@ -449,8 +447,7 @@ http://www.PostgreSQL.org/docs/awbook.html</A> ¤Î¤è¤¦¤Ê¤Î¤â¤¢¤ê¤Þ¤¹¡£ </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> @@ -465,8 +462,7 @@ http://www.PostgreSQL.org/docs/awbook.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> @@ -536,6 +532,7 @@ http://www.PostgreSQL.org/docs/awbook.html</A> <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> @@ -546,10 +543,8 @@ http://www.PostgreSQL.org/docs/awbook.html</A> ¤Ø¤ªÁ÷¤ê¤¯¤À¤µ¤¤¡£ </P> -<P> <HR> <H2 align="center">¥æ¡¼¥¶¡¼¡¦¥¯¥é¥¤¥¢¥ó¥È¤Î¼ÁÌä</H2> -<P> <H4><A NAME="2.1">2.1</A>) PostgreSQL ¤Î¤¿¤á¤Î <SMALL>ODBC</SMALL> ¥É¥é¥¤¥Ð¡¼¤Ï¤¢¤ê¤Þ¤¹¤«¡© </H4> @@ -563,26 +558,27 @@ http://www.PostgreSQL.org/docs/awbook.html</A> </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> @@ -590,11 +586,12 @@ Programmer's Guide</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 ¤ÎÍøÍѤ¬²Äǽ¤È»×¤ï¤ì¤Þ¤¹¡£ @@ -604,9 +601,8 @@ Programmer's Guide</A> <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 ¤Ø¤Î¥°¥é¥Õ¥£¥«¥ë¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£ @@ -626,12 +622,12 @@ RHDB Admin (<a 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> @@ -640,42 +636,41 @@ PhpPgAdmin (<a href="http://phppgadmin.sourceforge.net/"> </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> @@ -686,11 +681,11 @@ PhpPgAdmin (<a href="http://phppgadmin.sourceforge.net/"> ¤Ë¶¦Í¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤Î¾ÜºÙ¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¤´Í÷¤¯¤À¤µ¤¤¡£</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>ÁàºîÉÔǽ¤Î¥»¥Þ¥Õ¥©¤â²áÅ٤ʥǡ¼¥¿¥Ù¡¼¥¹¥¢¥¯¥»¥¹¤Î´Ö¤Ë¥¯¥é¥Ã¥·¥å¤ò µ¯¤³¤¹²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£ @@ -699,7 +694,6 @@ PhpPgAdmin (<a href="http://phppgadmin.sourceforge.net/"> <P>¤â¤·¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬¤Ê¤Ë¤«Â¾¤Î¤â¤Î¤Ç¤¢¤ì¤Ð¡¢¥«¡¼¥Í¥ë¤Î¹½À®¤Ç¤Þ¤Ã¤¿¤¯¥»¥Þ¥Õ¥©¤Î¥µ¥Ý¡¼¥È¤ò¤·¤Æ¤¤¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ PostgreSQL Administrator's Guide ¤Ë¶¦Í¥á¥â¥ê¡¼¤È¥»¥Þ¥Õ¥©¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤Î¾ÜºÙ¤¬¤¢¤ê¤Þ¤¹¡£</P> -<P> <H4><A NAME="3.5">3.5</A>) ¾¤Î¥Û¥¹¥È¤«¤é¤ÎÀܳ¤Ï¤É¤Î¤è¤¦¤ËÀ©¸æ¤·¤Þ¤¹¤«¡© </H4> @@ -707,56 +701,68 @@ PostgreSQL Administrator's Guide <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>)¡¢ @@ -767,17 +773,19 @@ PostgreSQL Administrator's Guide ¤â³Îǧ»ö¹à¤Ë´Þ¤Þ¤ì¤Þ¤¹¡£ 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 ÉÕ¤¤ÇÁö¤é¤»¤¿¸å¡¢¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ë¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£ @@ -787,41 +795,40 @@ PostgreSQL ¥ª¥×¥·¥ç¥óÉÕ¤¤Ë¤Æ¥µ¡¼¥Ð¥â¡¼¥É¤Çµ¯Æ°¤·¤Þ¤¹¡£(¥Ð¡¼¥¸¥ç¥ó 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 @@ -829,7 +836,6 @@ PC LIMIT 1; </PRE> -<P> <H4><A NAME="4.3">4.3</A>) ¥Æ¡¼¥Ö¥ë¤ä¤½¤Î¾¤Î¾ðÊó¤Î¥ê¥¹¥È¤ò <I>psql</I> ¤Ç¸«¤ë¤Ë¤Ï¤É¤¦¤·¤Þ¤¹¤«¡© </H4> <P> @@ -842,6 +848,7 @@ PC <P> <SMALL>DROP COLUMN</SMALL>µ¡Ç½¤¬¡¢<SMALL>ALTER TABLE DROP COLUMN</SMALL> ¤È¤·¤Æ¥ê¥ê¡¼¥¹7.3 ¤Ë²Ã¤¨¤é¤ì¤Þ¤·¤¿¡£¤½¤ì¤Þ¤Ç¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢¤½¤ÎÂå¤ï¤ê¤Ë¤³¤¦¤·¤Þ¤¹: +</P> <PRE> BEGIN; @@ -855,6 +862,7 @@ PC </PRE> <P>¥«¥é¥à¤Î¥Ç¡¼¥¿¥¿¥¤¥×¤Ï¼¡¤Îʸ¤ÇÊѤ¨¤é¤ì¤Þ¤¹¡§ +</P> <PRE> BEGIN; @@ -865,12 +873,13 @@ PC </PRE> <P>¤³¤ì¤ò¹Ô¤Ê¤Ã¤¿¤È¤¤Ï¡¢Ëõ¾Ã¤µ¤ì¤¿¹Ô¤¬»È¤Ã¤Æ¤¤¤ë¥Ç¥£¥¹¥¯¶õ´Ö¤ò²ó¼ý¤¹¤ë¤¿¤á¤Ë<I>VACUUM FULL tab</I>¤ò¤·¤¿¤Û¤¦¤¬Îɤ¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ +</P> -<P> <H4><A NAME="4.5">4.5</A>) ¥í¥¦¡¢¥Æ¡¼¥Ö¥ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º¤Ï¡© </H4> <P> À©¸Â¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£ +</P> <PRE> ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎºÇÂ祵¥¤¥º? À©¸Â̵¤· (32 TB ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤â¸ºß¤·¤Þ¤¹) ¥Æ¡¼¥Ö¥ë¤ÎºÇÂ祵¥¤¥º? 32TB @@ -882,22 +891,25 @@ PC </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: ³Æ¥í¥¦¤Î¥Ø¥Ã¥À(³µ»») @@ -921,26 +933,29 @@ PC <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 @@ -953,10 +968,12 @@ ANALYZE</SMALL> <P> ¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¢Ä̾ï <SMALL>ORDER BY</SMALL> ¤ä·ë¹ç¤ò¹Ô¤Ê ¤¦¤¿¤á¤Ë¤Ï»È¤ï¤ì¤Þ¤»¤ó¡£½ç¼¡¥¹¥¥ã¥ó¤Ë³¤¯ÌÀ¼¨Åª¥½¡¼¥È¤Ï¡¢µðÂç¤Ê¥Æ¡¼¥Ö¥ë ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¥¹¥¥ã¥ó¤è¤ê¤âÉáÄ̤Ϲ⮤Ǥ¹¡£</P> +<P> ¤·¤«¤·¡¢<SMALL>ORDER BY</SMALL>¤ÈÁȤ߹ç¤ï¤µ¤ì¤¿<SMALL>LIMIT</SMALL> ¤Ï¡¢¥Æ¡¼¥Ö¥ë¤Î¾®¤µ¤ÊÉôʬ¤òÊÖ¤¹¤¿¤á¤Ë¤¿¤Ó¤¿¤Ó¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤¦¤Ç¤·¤ç¤¦¡£ ¼ÂºÝ¡¢MAX() ¤ä MIN() ¤¬¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤ï¤Ê¤¤¤È¤·¤Æ¤â¡¢¤³¤Î¤è¤¦¤ÊÃͤò ORDER BY ¤È LIMIT ¤ò»È¤Ã¤Æ¥¤¥ó¥Ç¥Ã¥¯¥¹¤ò»È¤Ã¤Æ¼è¤ê½Ð¤¹¤³¤È¤¬²Äǽ¤Ç¤¹: +</P> <PRE> SELECT col @@ -969,23 +986,23 @@ ORDER BY <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> @@ -994,84 +1011,84 @@ ORDER BY ] -<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> @@ -1086,17 +1103,18 @@ BYTEA bytea </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 ( @@ -1104,7 +1122,9 @@ BYTEA bytea name TEXT ); </PRE> +<P> ¤Ï¼«Æ°Åª¤Ë¼¡¤Î¤è¤¦¤ËËÝÌõ¤µ¤ì¤Þ¤¹: +</P> <PRE> CREATE SEQUENCE person_id_seq; CREATE TABLE person ( @@ -1117,38 +1137,43 @@ BYTEA bytea ¤Ï¡¢ 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> @@ -1156,17 +1181,18 @@ BYTEA bytea <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); @@ -1177,36 +1203,38 @@ BYTEA bytea </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 @@ -1215,34 +1243,34 @@ href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glo <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> @@ -1256,14 +1284,18 @@ href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glo 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> @@ -1272,22 +1304,26 @@ href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glo <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 @@ -1299,23 +1335,20 @@ PostgreSQL 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> @@ -1336,7 +1369,6 @@ PL/PgSQL </UL> -<P> <pre> [ÌõÃí ¥ì¥×¥ê¥±¡¼¥·¥ç¥ó´ØÏ¢¤Î¹àÌܤ¬¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¤¬¡¢ÌõÃí¤Î¤ß»Ä¤·¤Æ¤¢¤ê¤Þ¤¹¡£ @@ -1355,41 +1387,37 @@ PL/PgSQL 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> [ÌõÃí¡§ ÆüËܸìÈǤÎÀ½ºî¤Ë¤Ä¤¤¤Æ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£ @@ -1426,7 +1454,6 @@ PL/PgSQL ¤Ê¤ª¡¢¤³¤ÎÏÂÌõ¤Ë´Ø¤¹¤ë¤´°Õ¸«¤Ï(<A HREF="mailto:juk at PostgreSQL.jp">juk at PostgreSQL.jp</A>)¤Þ¤Ç¤ª´ó¤»²¼¤µ¤¤¡£ ] -</PRE></SMALL> -</P> +</PRE> </BODY> </HTML> diff --git a/doc/src/FAQ/FAQ_polish.html b/doc/src/FAQ/FAQ_polish.html index a92b90d3136..0966aee27a2 100644 --- a/doc/src/FAQ/FAQ_polish.html +++ b/doc/src/FAQ/FAQ_polish.html @@ -237,7 +237,7 @@ <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> @@ -266,7 +266,7 @@ <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 @@ -283,7 +283,7 @@ <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> @@ -334,7 +334,7 @@ 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 @@ -599,7 +599,7 @@ </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> @@ -882,14 +882,13 @@ 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> @@ -926,7 +925,6 @@ 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> @@ -1034,7 +1032,7 @@ 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 @@ -1049,7 +1047,7 @@ <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 @@ -1057,16 +1055,16 @@ <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> @@ -1165,7 +1163,7 @@ BYTEA bytea zmiennej d 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¶æ. @@ -1344,7 +1342,7 @@ BYTEA bytea zmiennej d <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> @@ -1488,7 +1486,7 @@ BYTEA bytea zmiennej d 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> @@ -1503,38 +1501,36 @@ BYTEA bytea zmiennej d 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> diff --git a/doc/src/FAQ/FAQ_russian.html b/doc/src/FAQ/FAQ_russian.html index debcc882666..bd515c7c79f 100644 --- a/doc/src/FAQ/FAQ_russian.html +++ b/doc/src/FAQ/FAQ_russian.html @@ -236,16 +236,16 @@ <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> @@ -604,19 +604,18 @@ ÄÌÑ ÎÅÓËÏÌØËÉÈ ÐÅÒ×ÙÈ ÓÔÒÏÞÅË ÚÁÐÒÏÓÁ? ðÒÏÉÚ×ÏÌØÎÏÊ ÓÔÒÏËÉ?</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>) ëÁË ÍÎÅ ÎÁÊÔÉ ËÁËÉÅ ÔÁÂÌÉÃÙ, ÉÎÄÅËÓÙ, ÂÁÚÙ ÄÁÎÎÙÈ É ÐÏÌØÚÏ×ÁÔÅÌÉ ÓÕÝÅÓÔ×ÕÀÔ? ëÁË ÍÎÅ Õ×ÉÄÅÔØ ÚÁÐÒÏÓÙ, @@ -646,7 +645,7 @@ <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> @@ -662,7 +661,7 @@ <P>óÕÝÅÓÔ×ÕÀÔ ÓÌÅÄÕÀÝÉÅ ÏÇÒÁÎÉÞÅÎÉÑ:</P> <BLOCKQUOTE> -<TABLE BORDER="1"> +<TABLE> <TBODY> <TR> <TD>íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÂÁÚÙ?</TD> @@ -775,7 +774,7 @@ É × ÜÔÏÍ ÓÌÕÞÁÅ ÉÎÄÅËÓ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ, ÐÏÓËÏÌØËÕ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ÂÕÄÅÔ ×ÏÚ×ÒÁÝÁÔØÓÑ ÎÅÂÏÌØÛÁÑ ÞÁÓÔØ ÔÁÂÌÉÃÙ. æÁËÔÉÞÅÓËÉ MAX() É MIN() ÎÅ ÉÓÐÏÌØÚÕÀÔ ÉÎÄÅËÓÙ, ÎÏ ÉÎÄÅËÓ ÉÓÐÏÌØÚÕÅÔÓÑ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ ÚÁÐÒÏÓÏ× Ó - <SMALL>ORDER BY</SMALL> É <SMALL>LIMIT</SMALL>: + <SMALL>ORDER BY</SMALL> É <SMALL>LIMIT</SMALL>:</P> <pre> SELECT col FROM tab @@ -833,8 +832,8 @@ WHERE lower(col) = 'abc'; </PRE> - üÔÁ ËÏÎÓÔÒÕËÃÉÑ ÎÅ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÁÎÄÁÒÔÎÙÊ ÉÎÄÅËÓ. ïÄÎÁËÏ, ÅÓÌÉ - ×Ù ÓÏÚÄÁÄÉÔÅ ÉÎÄÅËÓ ×ÙÒÁÖÅÎÉÑ, ÏÎ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ: +<P> üÔÁ ËÏÎÓÔÒÕËÃÉÑ ÎÅ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÓÔÁÎÄÁÒÔÎÙÊ ÉÎÄÅËÓ. ïÄÎÁËÏ, ÅÓÌÉ + ×Ù ÓÏÚÄÁÄÉÔÅ ÉÎÄÅËÓ ×ÙÒÁÖÅÎÉÑ, ÏÎ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ:</P> <PRE> CREATE INDEX tabindex ON tab (lower(col)); </PRE> @@ -848,7 +847,7 @@ <H4><A name="4.10">4.10</A>) ëÁËÏ×Ù ÏÔÌÉÞÉÑ ÍÅÖÄÕ ÒÁÚÎÙÍÉ ÓÉÍ×ÏÌØÎÙÍÉ ÔÉÐÁÍÉ?</H4> <BLOCKQUOTE> -<TABLE BORDER="1"> +<TABLE> <TBODY> <TR> <TH>ôÉÐ</TH> @@ -919,7 +918,7 @@ ); </PRE> - Á×ÔÏÍÁÔÉÞÅÓËÉ ÔÒÁÎÓÌÉÒÕÅÔÓÑ ×: +<P> Á×ÔÏÍÁÔÉÞÅÓËÉ ÔÒÁÎÓÌÉÒÕÅÔÓÑ ×: </P> <PRE> CREATE SEQUENCE person_id_seq; CREATE TABLE person ( @@ -994,12 +993,12 @@ 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> diff --git a/doc/src/FAQ/FAQ_turkish.html b/doc/src/FAQ/FAQ_turkish.html index e0921f64970..ac31a57ab76 100644 --- a/doc/src/FAQ/FAQ_turkish.html +++ b/doc/src/FAQ/FAQ_turkish.html @@ -111,7 +111,7 @@ adreslerinde g <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> @@ -190,7 +190,7 @@ adreslerinde g <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> @@ -218,7 +218,7 @@ adreslerinde g <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> @@ -235,7 +235,7 @@ adreslerinde g <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 @@ -288,7 +288,7 @@ adreslerinde g <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>, @@ -355,7 +355,7 @@ adreslerinde g <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> @@ -466,7 +466,7 @@ adreslerinde g <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. @@ -497,7 +497,7 @@ adreslerinde g 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, @@ -554,7 +554,7 @@ adreslerinde g <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> @@ -786,7 +786,7 @@ CREATE UNIQUE INDEX person_id_key ON person ( id ); 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> -- GitLab