Colovic Ljubomir 24-2010 -PostgreSQL

Embed Size (px)

Citation preview

Tema: Arhitektura sistema PostgreSQL

Master studije na Fakultetu organizaciionih nauka Smer: Informacioni sistemi i tehnologije Programsko podruje (modul): Informacioni sistemi Predmet: Administracija baze podataka

Mentor: dr Nenad Anii Student: dipl. ing. Ljubomir olovi U Beogradu, 20. septembar 2011.

Sadraj:1. PostgreSQL - uopteno ............................................................................................................................. 4 2. Globalna arhitektura memorije i procesa PostgreSQL-a ........................................................................... 4 2.1. Arhitektura PostgreSQL verzije 9.0 Pregled ........................................................................................ 6 2.2. Detaljan opis arhitekture memorije i procesa u PostgreSQL 9.0 ....................................................... 8 BGWriter/Writer Process: ..................................................................................................................... 9 WAL Writer Proces: ............................................................................................................................... 9 Stats Collector Process: ......................................................................................................................... 9 Autovacuum Launcher Process: .......................................................................................................... 10 Syslogger Process / Logger Process ..................................................................................................... 10 Dijagramsko obrazloenje numerikih tagova .................................................................................... 11 3. Korienje resursa PostgreSQL-a ............................................................................................................. 12 3.1. Memorija .......................................................................................................................................... 12 shared_buffers (integer) ..................................................................................................................... 12 temp_buffers (integer) ........................................................................................................................ 13 max_prepared_transactions (integer) ................................................................................................ 13 work_mem (integer) ........................................................................................................................... 13 maintenance_work_mem (integer) .................................................................................................... 14 max_stack_depth (integer) ................................................................................................................. 14 3.2. Kernel operativnog sistema .............................................................................................................. 14 max_files_per_process (integer) ......................................................................................................... 15 shared_preload_libraries (string) ........................................................................................................ 16 3.3. Hardver ............................................................................................................................................. 16 vacuum_cost_delay (integer) .............................................................................................................. 17 vacuum_cost_page_miss (integer) ..................................................................................................... 17 vacuum_cost_page_dirti (integer) ...................................................................................................... 17 vacuum_cost_limit (integer) ............................................................................................................... 17 3.4. Pozadinski procesi ............................................................................................................................ 18 Background writer ............................................................................................................................... 18 bgwriter_delay (integer) ..................................................................................................................... 18 bgwriter_lru_maxpages (integer)........................................................................................................ 18 bgwriter_lru_multiplier (floating point) .............................................................................................. 19 2

3.5. Asinhrono ponaanje (Asynchronous Behavior) .............................................................................. 19 effective_io_concurrency (integer) ..................................................................................................... 19 4. Poreenje PostgreSQL-a sa Oracle SQL-om ............................................................................................ 20 Oracle ...................................................................................................................................................... 20 PostgreSQL .............................................................................................................................................. 21 Server procesi baze podataka ............................................................................................................. 21 Klaster PostgreSQL baze podataka ..................................................................................................... 21 Tablespaces i objektni fajlovi podataka .................................................................................................. 22 Redo i Archiving ....................................................................................................................................... 23 Rollback ili Undo ...................................................................................................................................... 24 Server Log File ......................................................................................................................................... 24 Aplikacije ................................................................................................................................................. 24 Reference i literatura: ................................................................................................................................. 26

3

1. PostgreSQL - uoptenoPostgreSQL je sistem za upravljanje objektno-relacionim bazama podataka (ORDBMS) na osnovu arhitekture podataka POSTGRES, verzije 4.2, koja je razvijena na Univerzitetu Kalifornija Fakultetu kompjuterskih nauka u Berkliju. Postgres arhitektura je pionirski pokusaj mnogih koncepata koji su postali dostupni u nekim komercijalnim sistemima baza podataka znatno kasnije. PostgreSQL predstavlja open source potomak ovog originalnog Berkli koda. On podrava veliki deo SQL standarda i nudi mnoge moderne karakteristike: sloene upite (complex queries) strane kljueve (foreign keys) trigere (triggers) poglede (views) transakcioni integritet (transactional integrity) kontrolisanje multiverznih konkurentnih aktivnosti (multiversion concurrency control)

Takoe, PostgreSQL moe biti dopunjen od strane korisnika na mnoge naine, na primer dodavanjem novih: tipova podataka funkcija operatera agregatnih funkcija Indeks metode proceduralnih jezika

I zbog slobodne licence, PostgreSQL moe koristiti, menjati i distribuirati bilo ko besplatno u bilo koju svrhu, bilo privatnu, komercijalnu ili akademsku.

2. Globalna arhitektura memorije i procesa PostgreSQL-aPostgreSQL arhitektura obuhvata memoriju, procese i sistemske fajlove za smestanje podataka. Zbog kompleksnostbilo bi preterano kompleksno da se svi delovi memorije i svi procesi predstave na jednoj sliciPostgreSQL, prikazan na slici 2, slui za upravljanjem klastera baze podataka. Svaka baza podataka ima svoj skup sistemskih kataloga poznat kao INFORMATION_SCHEMA i pg_catalog. Sve baze podataka dele pg_databases kao zajedniku sistemsku tabelu. Svaka baza podataka je posebna celina i kolekcija baza podataka se zove klaster. PostgreSQL instanca na slici se moe posmatrati kao upravljanje klasterom baza podataka. Server moe da radi sa vie od jedne takve instance baze podataka klastera. PostgreSQL baza moe logiki izmigrirana na DB2 baze podataka. Obe baze podataka podravaju eme tipa objekta. Ne moe da se pristupi drugim bazama podataka preko imenovane konekcije. 4

Najznaajnija razlika izmeu PostgreSQL i DB2 je u vezi prostora u tabeli. PostgreSQL tabela prostora moe da sadri jednu ili vie baza podataka, dok DB2 prostori za table su specifine za jednu bazu podataka. Slika 1. Pregled globalne PostgreSQL arhitekture i procesa

PostgreSQL sesija se sastoji od nekoliko glavnih procesa: postmaster process slui kao nadzorni proces iz koga se razvijaju drugi procesi i oslukuje korisnikova konekcija. korisniki proces kao to je psql se koristi za interaktivne SQL upitima. Jedan ili vie serverskih procesa po imenu postgres nastaju od postmaster procesa za rukovanje korisnikim zahtevima za podatke. Server procesi meusobno komuniciraju preko semafora i deljene memorije.

5

2.1 Arhitektura PostgreSQL verzije 9.0 Pregled

Slika 2. Arhitektura PostgreSQL verzije 9.0

6

Instanca PostgreSQL sastoji se od skupa procesa i memorije. PostgreSQL koristi jednostavan "proces po korisniku" klijent/server model. Tipovi PostgreSQL vrsta procesa se mogu podeliti na: Glavni proces (postmaster), nadzorni skriveni proces, je prikljuen na deljenom memorijskom segmentu, ali ne pristupa njega. Usluni procesi bgwriter,walwriter,syslogger,archiver,statscollector and autovacuum lancher) Procesi na krajnj korisnikoj strani (postgres process itself, Server Process) Kada klijent zahteva povezivanje na bazu podataka, pre svega zahtev se dolayi do nadyornog sakrivenog procesa nakon to je izvrena autentifikacija i autorizacija to rezultira jednom novom pozadinom serverskog procesa (Postgres). Od tog trenutka, na frontend proces i backend server komuniciraju, bez intervencija od strane postmaster procesa. Dakle, postmaster uvek radi, ekajudi zahteve za uspostavljanje veze, a frontend i backend procese dolaze i odlaze. Libpq biblioteka omogudava da pojedinani frontend ostvariti viestruke veze sa pozadinskim procesima. Meutim, svaki pozadinski proces je jedno-nitni proces koji moe samo da izvri jedan upit u jednom trenutku, pa je komunikacija preko bilo koje frontend-prema-backend konekcija sa jednom niti. Postmaster i Postgres serveri rade sa korisniki ID PostgreSQL "superkorisnikom". Jedan Postgres proces ne postoji za svaku otvorene sesiju sa bazom. Kada je overena veza sa korisnikom, direktno je povezana sa deljenom memorijom.

Memorija se sastoji od:

Zajednikih bafera; WAL bafera; Clog bafera; Ostalih bafera.

Korisniki procesi:

Obavezan proces: Ove procesu nema mogudnost Omogudi / Onemogudi. BGWriter WAL Writer

Opcioni procesi:Ovi procesu imaju opciju da budu omogudeni odnosno onemogudeni. Stats-collector Autovacuum launcher Archiver Syslogger WAL Sender WAL Receiver

7

2.2. Detaljan opis arhitekture memorije i procesa u PostgreSQL 9.0Prilikom pokretanja svake instance PostgreSQL, pokrede se skup uslunih procesa (obavezni i opcioni procesi) i memorija. Dva obavezan procesa (BGWRITER i WAL Writer) i etiri opciona procesa (Autovacuum launcher,stats collector,syslogger, and Archiver). Ovi procesi se proveravaju komandom 'ps -ef | grep postgres' koja je data u slici ispod. Slika 10.1

Pregled procesa i memorije. Slika 10.2

Iznad slici 10.2 prikazani su procesi vezani za PostgreSQL Shared memory.

8

PostgreSQL korienje deljene memorijeUsage Connections Autovacuum workers Prepared transactions Shared disk buffers WAL buffers Fixed space requirements Approximate shared memory bytes required (as of 8.3) (1800 + 270 * max_locks_per_transaction) * max_connections (1800+270*max_locks_per_transaction)*autovacuum_max_workers (770+270*max_locks_per_transaction)*max_prepared_transactions (block_size + 208) * shared_buffers (wal_block_size + 8) * wal_buffers 770 kB

BGWriter/Writer Process:BGWriter ili Writer Process je obavezan proces. Svi PostgreSQL server procesi itaju podatke sa diska, i premeta ih u Shared Buffer Pool. Shared Buffer Pool koristi ARC algoritam ili LRU (najskorije koriden) mehanizam za izbor stranica za izvoz podataka iz Shared Buffer Pool. BGWRITER provodi puno vremena u neaktivnom modu (sleeping), ali svaki put kada se aktivira (wake), on trai kroz Shared Buffer Pool i trai modifikovane stranice. Posle svake pretrage, BGWRITER bira neki broj modifikovanih stranica, pie ih na disk, i izvozi te stranice iz Shared Buffer Pool. BGWRITER proces moe da se kontrolie sa tri parametra BGWRITER_DELAY, BGWRITER_LRU_PERCENT i BGWRITER_LRU_MAKSPAGES.

WAL Writer Proces:WAL Writer Proces je obavezan proces. WAL Writer proces pie i sinhronizuje WAL u odgovarajum vremenskim intervalima. WAL bafer sadri izmene nainjene u bazi podataka u logovima transakcije, kako bi se garantovala bezbednost transakcije. WAL baferi se zapisuju na disk na prilikom svake izvrene transakcije, obyirom da je WAL Writer proces odgovoran za pisanje na disk. WAL_WRITER_DELAY parametar za buenje procesa WAL Writer-a, meutim postoje i drugi parametri koji se takoe odravaju na zauzede WAL Writer-a.

Stats Collector Process:Stats Collector Process: nije obavezan proces, a podrazumevano je ukljuen. Stats Collector Process slui za prikupljanje informacije o aktivnostima servera. Ona rauna broj pristupa tabelama i indeksa i na bloku diska i pojedinanim stavkama. To takoe prati ukupan broj redova u svakoj tabeli, i informacije o VAKUUM i ANALYZE aktivnostima za svaku tabelu. Prikupljanje statistikih podataka dodaje iznad svega na upit izvrenja, bez obzira da li de prikupiti ili ne informacije. Neki od parametara u datoteci postgreSQL.conf de kontrolisati aktivnost prikupljene statistike od Stats Collector Process.

9

Autovacuum Launcher Process:Autovacuuming je opcionalan proces, koji je podrazumevano je ukljuen. Za automatizaciju izvrenja komande VACUUM i ANALYZE, Autovacuum Launcher je skriveni proces koji se sastoji od vie procesa zovu autovacuum worker procesi za sve baze podataka. Autovacuum launcer je zaduen za pokretanje autovacuum worker procesa za sve baze podataka. Njegovo pokretanje de distribuirati posao u toku vremena, pokuavajudi da postavi jedan worker proces na svakoj bazi podataka za svaki interval koji je postavljen u parametar autovacuum_naptime. Jedan worker de biti pokrenut za svaku bazu podataka, koje je postavljen u parametar autovacuum_max_workers. Svaki worker proces de proveriti svaku tabelu u okviru svoje baze podataka i izvrava VACUUM ili ANALUZE po potrebi.

Syslogger Process / Logger ProcessSlika 10.3

Logging se opcioni proces, podrazumevano je iskljucen. Kao to se na slici vidi slici 10.3, svi usluni procesi + korisnika podrka + Postmaster skriveni proces veza sa syslogger process za prijavljivanje informacije o njihovim aktivnostima. Svaki informacija procesa je prijavljena pod $PGDATA/pg_log sa fajlom .log. Napomena: Ako su podatci u direktorijumu je kreirani sa INITDB komandom, onda nede biti pg_log direktorijum unutar njega. Potrebna je eksplicitna kreacija. Otklanjanje greaka na vie procesnih informacija de izazvati preopteredenje servera. Minimalno tuniranje je uvek preporuljivo, to meutim, povedava nivo na kojem treba da se otklanjaju greake.

Archiver Process

10

Slika 10.4

Achiver proces je opcioni proces, podrazumevano je iskljuen. Na slici iznad je predstavljen proces arhiviranja u PostgreSQL. Postavljanje baze podataka u Arhivskom reimu znai, da se zauzimaju WAL podataci sa svakog segmenta datoteke nakon to su ispunjeni i sauvani i da se sauvaju ti podaci negde pre nego to segment fajlu bude omogudeno da se reciklira za ponovnu upotrebu.

Dijagramsko obrazloenje numerikih tagova1. U Database Archivelog modu, jednom kada se WAL podaci popune u WAL segmentu, ta popunjena imena segmentnih fajlova su kreirana u okviru $PGDATA/pg_xlog/archive_status od strane WAL Writer-a koji imenuje fajl kao ".ready". Ime tako nastalog fajla de biti "segment-filename.ready". 2. Arhiver proces okida triger na pronalaenju novih fajlova koji su u stanju ".ready" a kreirani su od strane WAL Writer procesa. Arhiver proces prikuplja 'segment-file_number' od .ready fajla i kopira fajl iz $PGDATA/pg_xlog lokacije na njegovu predvienu lokaciju koja je postavljena u parametru 'archive_command' (postgresql.conf). 3. Po uspenom zavretku kopiranja iz izvora na destinaciju, arhiver proces preimenuje "segementfilename.ready" u "segment-filename.done". Ovim se zavrava proces arhiviranja. Podrazumeva se da, ako sve datoteke pod nazivom "segement-filename.ready" koje se nalaze u $PGDATA/pg_xlog/archive_status su fajlovi koji su u toku obrade i za koje se eka dalje da budu kopirani na Archive destinaciju.

11

3. Korienje resursa PostgreSQL-aPerformanse PostgreSQL baze podataka zavise od 5 komponenti: 1) 2) 3) 4) 5) RAM memorija za koridenje u bazi podataka; Kernela operativnog sistema; Raspoloivom hardveru; Aktiviranim pozadinskim procesima; Stepenu asinhronosti u koridenju baze.

3.1. MemorijaRAM (engl. Random Access Memory, memorija sa sluajnim pristupom) ili operativna memorija, oznaava vrstu memorije koja je direktno adresibilna i njenom sadraju se moe pristupiti proizvoljnoj lokaciji, a ne samo redom.

shared_buffers (integer)Postavlja se iznos memorije na serveru za bazu podataka koja se koristi za zajedniku memoriju shared buffera. Predefinisana vrednost je obino 32 megabajta (32MB), ali moe biti manje ukoliko podeavanje kernela ne podrava ovaj iynos (to se utvruje u toku postavljanja vrednosti baze podataka -initdb). Najmanja moguda vredost za ovo podeavanje je 128 kilobajta. (Ne-podrazumevane vrednosti BLCKSZ menjaju ove vrednosti minimuma.) Meutim, vrednosti podeavanja koje su znatno vie od minimalne su obino potrebne za dobro izvrenje posla. Ovaj parametar se moe podesiti prilikom startovanja servera. Ako imate namenski server baze podataka sa 1 GB ili vie RAM memorije, obino se polazna vrednost za shared_buffers stavlja na 25% memorije u sistemu. Postoje neki zadaci u kojima su ak i velika podeavanja za shared_buffersare efikasno reenje, ali poto se PostgreSQL takoe oslanja na ke operativnog sistema, malo je verovatno da de dodeljivanje vie od 40% RAM-a na shared_buffers biti bolje reenje nego manji iznos. Podeavanje forshared_buffers na vede iznose obino zahteva odgovarajude povedanje checkpoint_segments-a, u cilju irenja van procesa pisanja velikih koliina novih ili izmenjenih podataka u duem vremenskom periodu. Na sistemima sa manje od 1GB RAM memorije, manji procenat RAM-a je odgovarajudi, kako bi se ostvario odgovarajudi prostor za operativni sistem. Takoe, na Windows operativnom sistemu, velike vrednosti za shared_buffers nisu toliko efikasne. Takoe mogu se primetiti bolji rezultati ako se podeavanja postave na relativno niska a koristi se vie ke memorije operativnog sistema. Korisni opseg za shared_buffers na Windows operativnom sistemu se uglavnom krede od 64MB do 512MB.

12

Povedanje ovoga parametra moe izazvati da PostgreSQL zahteva vie Sistemske V deljene memorije nego to je omogudeno prilikom podrazumevanog konfigurisanju vaeg operativnog sistema.

temp_buffers (integer)Postavlja maksimalan broj privremenih bafera koji se koriste u svakoj sesiji baze podataka. To su sesije lokalnih bafera koje se koriste samo za pristup privremenim tabelama. Podrazumevana vrednost je osam megabajta (8MB). Vrednost moe biti promenjena u okviru individualnih seansi, ali samo pre prve upotrebe privremene tabele u okviru sesije; nakon toga pokuaj da se promeni vrednost temp_buffer-a nede imati efekat na toj sesiji. Sesija de alocirati privremeni bafer (temporary buffer) koliko je potrebno do limita koji je zadat sa temp_buffers. Kao troak usled postavljanja velike vrednosti za memoriju sesije za koju to nije potrebno mnogo privremenih bafera je samo bafer deskriptor, ili oko 64 bajtova, po dodajnom inkrementu (prirastu) u temp_buffers-u. Meutim, ako bafer zapravo koristi dodatnih 8192 bajtova de ih koristiti za to (ili u celini, BLCKSZ bajtova).

max_prepared_transactions (integer)Postavlja maksimalan broj transakcija koje mogu biti istovremeno u stanju "pripremljenosti". Postavljanje ovog parametra na nulu (to je podrazumevana vrednost) onemogudava funkciju za pripremu transakcija. Ovaj parametar se moe podesiti prilikom startovanja servera. Ukoliko se ne planira koridenje pripremljenih transakcija, ovaj parametar bi trebalo da bude postavljen na nulu kako bi se spreilo sluajno stvaranje pripremljenih transakcija. Ako se koristite pripremljene transakcije, verovatno dete vantmax_prepared_transactions da bude barem kao veliki kao max_connections, tako da svaka sesija moe da bude pripremljena u toku odvijanja transakcije. Povedanje ovoga parametra moe izazvati da PostgreSQL zahteva vie Sistemske V deljive memorije nego to je omogudeno podrazumevanom konfiguracijom operativnog sistema. Kada se serveru postavi u standby, mora da se postavi ovaj parametar na istu ili vedu vrednost nego na glavnom serveru. U suprotnom, upiti nede biti dozvoljeni u serveru koji je u standbz stanju.

work_mem (integer)Odreuje koliinu memorije koja se koristi za unutranje operacije i hash tabele pre pisanja na privremene datoteke na disku. Podrazumevana vrednost je jedan megabajt (1MB). Treba imati na umu da je za sloene upite, nekoliko vrsta ili he operacija mogu da rade paralelno; svakoj operaciji de biti dozvoljeno da koristi memorije koliko se ovom vrednodu specificira pre nego to pone da se zapisuje u privremene datoteke. Takoe, nekoliko sesija koje se izvravaju mogu istovremeno da rade takve operacije. Prema tome, ukupna memorija koja se koristi moe biti viestruka vrednost work_mem, ako je neophodno treba ovu injenicu imati na umu prilikom izbora vrednosti. Operacije sortiranja se koriste za ORDER BY, DISTINCT, i merge joins. Hash tabele se koriste u hash povezivanju, agregacije na bazi hash-a, i podupiti pretgage u bazi zasnovani na hash-u.

13

maintenance_work_mem (integer)Odreuje maksimalni iznos memorije koja se koristi od strane operacija odravanja, kao to su VACUUM, CREATE INDEKS, i ALTER TABLE ADD FOREIGN KEY. Podrazumevana vrednost je 16 megabajta (16MB). Obzirom da se samo je jedan od ovih operacija moe da se izvri u jednom trenutku vreme sesije baze podataka, a instalacija u normalnim okolnostima nema mnogo njih koje rade istovremeno, sigurno je da se podesi ova vrednost da bude znatno veda od work_mem. Vede postavljanje moe da pobolja performanse za upisavanje i za vradanje deponije podataka. Treba imati na umu da kada autovacuum radi, do autovacuum_max_workers_times mogu da budu alocirane, tako da treba biti obazriv prilikom postavljanja podrazumevanu vrednost da ne bude previsoka.

max_stack_depth (integer)Odreuje maksimalnu dubinu bezbednog izvrenja steka servera. Idealno mesto za ovaj parametar je stvarna stek veliine ogranienja koje namede kernel (kao to je navedeno od strane ulimit-a ili ekvivalenta na lokalu), manje sigurnosna rezerva od oko megabajta. Sigurnosna rezervu potrebna je zato to stek dubine se ne proverava u svakom rutinski na serveru, ali samo u kljunim potencijalnorekurzivno rutinama, kao to su izraz evaluaciju. Podrazumevana postavka je dva megabajta (2MB), koji je mali i koji povedava rizik padanja. Meutim, moe de biti suvie mali za izvrenje sloenih funkcija. Samo superuseri mogu da promene ovo podeavanje. Podeavanje vrednosti max_stack_depth vede od stvarne granice jezgra de znaiti da moe da znai neizvravanje rekurzivnih funkcija u sluaju padanje pojedinacnih pozadinskih procesa. Na platformama gde PostgreSQL moe da se odredi ogranienja kernela, server nede dozvoliti podeavanje ove varijable na vrednost koja de izazvati nesigurnost. Meutim, ne pruaju sve platforme informacije, tako da je preporuljiv oprez prilikom izbora ove vrednosti.

3.2. Kernel operativnog sistemaJezgro operativnog sistema ili kernel je softver koji upravlja pristupom korisnikih programa raunarskoj opremi i softverskim resursima. To podrazumeva dobijanje procesorskog vremena, pristupanje memoriji, itanje i pisanje po diskovima, povezivanje u mree , interakciju s terminalima ili grafikim korisnikim okruenjem, itd. Jezgro sve ovo omogudava kontrolisanjem i pruanjem pristupa memoriji, procesoru, ulazno/izlaznim ureajima, datotekama na disku i specijalnim servisima za korisnike programe. Jezgro se sastoji iz nekoliko podsistema: Podsistem za upravljanje procesima Podsistem za upravljanje memorijom Podsistem za upravljanje ulazom/izlazom 14

Podsistem za upravljanje datotekama

Ime procesaSHMMIN

Description Najmanja veliina deljenog 1 memorijskog segmenta (bytes) Ukupan iznos deljene memorije koja je dostupna (bytes or pages) Najvei broj deljenih memorijskih segmenata po procesu Najvei broj deljenih memorijskih segmenata u celom sistemu Najvei broj identifikatora za semafore

Reasonable values

SHMALL

Ako je u bajtovima - isto kao i SHMMAX; ukoliko je re o strani,ceil(SHMMAX/PAGE_SIZE)

SHMSEG

Samo jedan segmenat je neophodan, dok je po definiciji taj broj predodreen na mnogo veu vrednost veliine SHMSEG uveane za prostor za ostale aplikacija Najmanje ceil((max_connections +autovacuum_max_workers) / 16) ceil((max_connections +

SHMMNI

SEMMNI

SEMMNS

Najvei broj semafora u celom autovacuum_max_workers) / 16) * 17 sistemu uvean za prostor za ostale aplikacije Najvei broj semafora po celini at least 17 Najvea vrednost semafora Najmanje 1000 (predefinisana vrednost je obino 32767 i ne treba je menjati osim ako je neophodno)

SEMMSL

SEMVMX

Tabela - deljena memorija kernela i semafori

max_files_per_process (integer)Postavlja maksimalan broj istovremeno otvorenih datoteka dozvoljenih za svaki podproces na serveru. Podrazumevano je da to bude hiljadu fajlova. Ako jezgro sprovodi ogranienje bezbedno po proces, o ovoj postavci ne treba voditi rauna. Ali, na nekim platformama (pre svega, vedina BSD Sistema), jezgro de omoguditi pojedinanim procesima da otvore mnogo vie datoteka nego to je to u sistemu omogudeno, tako da zapravo podrava da vie procesa koji svi pokuavaju da otvorite taj maksimalni 15

dozvoljeni broj fajlova. ukoliko doe do greke u kojoj pie "previe otvorenih datoteka", treba smanjenjiti ovo podeavanje. Ovaj parametar se podeava na serveru prilikom startovanja.

shared_preload_libraries (string)Ova promenljiva odreuje jednan ili vie deljenih biblioteka koje treba da budu unapred uitane na poetku rada servera. Na primer, "$libdir/milib" dovelo bi do milib.so (ili na nekim platformama, milib.sl) da budu unapred uitane iz instalacije direktorijuma standardne biblioteke. Sva imena biblioteke su konvertovana na mala slova, osim ako su okvirena dvostrukim navodnicima. Ako vie od jedne biblioteka treba da se uita, njihova imena se odvajaju zarezima. Ovaj parametar se moe podesiti na poetku rada servera. Biblioteka proceduralnog jezika PostgreSQL moe biti fabriki instalirana na ovaj nain, tipino koristedi sintaksu $libdir/plXXX"gde je XXX je pgsql, Perl, Tcl, ili pyton. Od uitavanja deljene biblioteke, biblioteko vreme pokretanja se izbegava kada kada se biblioteka prvi put upotrebljava. Meutim, vreme za poetak svakog novog procesa servera moe biti neznatno povedano, ak i ako taj proces nikada ne koristi biblioteku. Dakle, ovaj parametar se preporuuje samo za biblioteke koja de biti koridena u vedini sesija. Napomena: Na Windows host raunaru uitavanje biblioteke na server na poetku nede smanjiti vreme potrebno za pokretanje svakog novi proces servera, svaki proces servera de ponovo uitati sve predhodno uitane biblioteke. Meutim, shared_preload_libraries su i dalje korisne za Windows hosta zato to neke deljene biblioteke de moda morati da obavljaju odreene operacije samo da bi se samo da bi se odrale u prilikom startovanja postmaster-a (na primer, deljena biblioteku moda de morati da rezerviete lokote niskog prioriteta ili zajedniku memoriju, to se ne moe uraditi nakon to je postmaster startovan). Ako odreena biblioteka nije pronaena, server nede uspeti da se pokrene. Svaka podrana biblioteka PostgreSQL-a ima "arobnu blok" koji se proverava radi garancije kompatibilnosti. Iz tog razloga, ne-PostgreSQL biblioteke se ne mogu uitati na ovaj nain.

3.3. HardverHardver predstavlja fiziku komponentu raunara i sastoji se od fizikih komponenti raunara i mrene opreme. Tokom izvrenja vacuum-a i komande analyze, sistem odrava unutranji broja radi voenja rauna o procenjeni trokova razliitih I/O operacije koje se obavljaju. Kada akumulirana cena dostigne granicu (prema odredbama vacuum_cost_limit-a), proces obavljanja operacija de biti uspavan u kratkom vremenskom periodu, kao to je navedeno od strane vacuum_cost_delay. Onda de se resetovati broja i nastaviti dalje izvravanje.

16

Namera ove funkcije je da omogudi administratorima da se smanji istovremeni uticaj I/O komandi aktivnosti baze podataka. Postoji mnogo situacija u kojima nije vano da li se komande odravaju kao VACUUM i ANALYZE zavre brzo, ali obino je veoma vano da ove komande znaajno ne ometaju sposobnost sistema da vri druge poslove baze podataka. Zasnovane na trokovnom principu vacuuma odlaganja obezbeuje nain da administratorima da to postignu. Ova funkcija je podrazumevano onemogudena za runo izdate VACUUM komande. Da bi se omogudilo ovo, treba podesite promenljivu vacuum_cost_delay da nula vrednost.

vacuum_cost_delay (integer)Vremenski period, u milisekundama, da de proces biti uspavan u breme kada je granica troka je prekoraena. Podrazumevana vrednost je nula, to onemogudava zasnovane principu zasnovanom na trokovima funkciju vacuum odlaganja. Pozitivne vrednosti omoguduju principu zasnovanom na trokovima principu vacuuming. Treba imati u vidu da na mnogim sistemima, efektivne rezolucije sna kanjenja je 10 milisekundi; podeavanje vacuum_cost_delay na vrednost koja nije vie od 10 moe imati iste rezultate kao to je postavljanje na slededu vrednost deljivu sa 10. Kada se koristi vacuum princip zasnovan na trokovima, odgovarajude vrednosti za vacuum_cost_delay su obino prilino male, moda 10 ili 20 milisekundi. Podeavanje resursa vacuum je najbolje uraditi tako to dete promeniti ostale termos parametare trokove. vacuum_cost_page_hit (integer) Procenjeni troak za vacuum bafer nadi de se u zajednikom baferu kea. On predstavlja troak za zakljuavanje bafer pool-a, trai deljene hash tabele i skenira sadraj stranica. Podrazumevana vrednost je jedan.

vacuum_cost_page_miss (integer)Procenjeni troak za usisavanje bafer-a koji treba da se ita sa diska. Ovo predstavlja napor da se zakljua bafer pool, lookup zajednike hash tabele, proita eljeni blok sa diska i skeniranje njegov sadraj. Podrazumevana vrednost je 10.

vacuum_cost_page_dirti (integer)Procenjeni troak usled punjenja kada vacuum menja blok koji je pre toga bio ist. To predstavlja ekstra I/O zahteve za ispiranje prljavih blokova na disku ponovo. Podrazumevana vrednost je 20.

vacuum_cost_limit (integer)Akumulira trokove koji de dovesti do vacuum procesa za sleep. Podrazumevana vrednost je 200. 17

Napomena: Postoje odreene operacije koje imaju kritinu lokote i stoga treba da se zavre to je bre mogude. Zasnovane na vacuum trokovnom principu kanjenja se ne deavaju u toku tih operacija. Zbog toga je mogude da cena akumulacije je daleko vedi od navedene granice. Da biste izbegli nepotrebno duga odlaganja u takvim sluajevima, stvarna kanjenja obraunava se asvacuum_cost_delay * accumulated_balance / vacuum_cost_limit sa maksimalnom ofvacuum_cost_delay * 4.

3.4. Pozadinski procesiProcesi koji se odvijaju bez ulaznih elemenata od strane korisnika. Brojni procesi mogu da se budu aktivni u zadavanju vie zadataka operativnom sistemu, kao to je UNIX /Linux/Windows dok korisnik ima interakciju sa foreground procesima (procesima koji su u prvom planu), nps unosom podataka. Neki pozadinski procesi na primer nikada ne zahtevaju unos od strane korisnika. Drugi mogu da se privremeno sklone u pozadinu dok je korisnik zauzet sa procesima koji se obavljaju u prvom planu.

Background writerPostoji poseban serverski proces koji se zove background writer (pisac u pozadini), ija je funkcija da nalagenje izvrenja "prljavog" (novog ili modifikovanog) shared (deljenog) bafera. On pie u deljene bafere tako da servrski proces koji rukovodi korisnikim upitima veoma retko ili nikada ne mora da eka da se pisanje zavri. Meutim, background writer prouzrokuje ukupno povedanje neto I/O opteredenja, jer dok se viestruko"isprljana" stranica moe sa druge strane da bude zapisanja sao jedamput po intervalu checkpoint-a, dok background writer moe pisati nekoliko puta, jer je dirtied u istom intervalu . Parametri koji su razmatrani u ovom pododeljku mogu biti korideni za podeavanje ponaanja za lokalne potrebe.

bgwriter_delay (integer)Odreuje kanjenje izmeu aktivnosti rundi za background writer. U svakoj rundi writer upita pie odreeni broj prljavih bafera (kontrolisan od strane parametara koji slede). Onda spava za bgwriter_delaymilliseconds, i ponavlja. Podrazumevana vrednost je 200 milisekundi (200ms). Treba imati u vidu da na mnogim sistemima, efektivne rezolucije sleep-a kanjenja iznose 10 milisekundi; podeavanje bgwriter_delay na vrednost koja nije veda od 10ms moe imati iste rezultate kao to je postavljanje na slededu vrednost deljivu sa 10. Ovaj parametar moe se podesiti samo u PostgreSQL.conf datoteci ili na komandnoj liniji servera.

bgwriter_lru_maxpages (integer)U svakoj rundi, ne moe biti zapisano vie bafera od ovog broja za background writer. Podeavanjem na nulu onemogudava se pozadinsko pisanje (osim aktivnosti check point-a). Podrazumevana vrednost je 100 bafera. Ovaj parametar moe se podesiti samo u PostgreSQL.conf datoteci ili na komandnoj liniji servera. 18

bgwriter_lru_multiplier (floating point)Broj prljavih bafera napisanih svaki put u svakoj rundi je yasnovan na broju novih bafera koji su neophodni od strane serverskog procesa tokom poslednjih krugova. Prosean broj nedavnih krugova treba da se mnoi sa bgwriter_lru_multiplier da bi se doslo do procena broja bafera koji de biti potreban u toku sledede kola. Prljavi baferi su napisani dok postoji toliki broj istih bafera na raspolaganju za viekratnu upotrebu. (Meutim, ne moe vie od bgwriter_lru_maxpagesbuffers biti napisano po krugu.) Dakle, postavljanje 1.0 predstavlja politiku pisanja "tano na vreme" taan broj bafera predvien da bude na raspologanju. Vede vrednosti pruaju neke nedostatke u potranji u odnosu na potrebe, dok se postavljanje manjih vrednosti ostavlja se da server obavi proces pisanja. Ako je podrazumevana vrednost 2.0. - Ovaj parametar moe se podesiti samo u PostgreSQL.conf datoteci ili na komandnoj liniji serveru. Manje vrednosti od of bgwriter_lru_maxpages i bgwriter_lru_multiplier smanjuju dodatno I/O opteredenje koje je stvorio background writer, ved je verovatnije da se server procesi moraju da izdaju naredbu za pisanje za sebe, odlaudi interaktivne upite.

3.5. Asinhrono ponaanje (Asynchronous Behavior)Asinhrono ponaanje - ponaanje koje nije sinhronizovano, koje se ne deava u predefinisanim i regulisanim vremenskim intervalima. Izraz asinhrono se koristi da se objasnila razemena podataka koja mora biti prema zahtevu a ne da je stalnom toku. Na primer telefonska konverzacija je asinhrona zato to obe strane mogu da priaju kada to poele. Kada bi ova vrsta komunikacije bila sinhronizovana, svaka stana bi morala da eka specificirani interval vrmena pre nego to pone da pria. Razmena podataka baze podataka je najede asinhrona kao i komunikacija izmeu komponentui hardvera je asinhrona.

effective_io_concurrency (integer)Postavlja broj istovremenih I/O operacija na disku koje PostgreSQL oekuje se istovremeno izvravaju. Podizanjem ove vrednost de se povedati broj I/O operacija koje svaki pojedinac PostgreSQL sesije oekuje da budu izvravane

19

paralelno. Dozvoljeni opseg je od 1 do 1000, ili nula da onemogudi izdavanje asinhronog I/O zahteva. Dobra polazna taka za ovu postavku je broj posebnih diskova sastoji RAID 0 ili RAID 1 identinih podataka koji se koristi za baze podataka. (Za RAID 5 provera parniosti na disku ne treba da se rauna.) Meutim, ako je baza podataka esto zauzeta sa vie zadatih upita u istovremenim sesijama, nie vrednosti mogu biti dovoljno da se zadri niz diskova zauzetim. Vrednost veda nego to je neophodno da bi disk bio zauzet samo rezultira u dodatnom preopteredivanju procesora. Za sisteme koji su vie egzotini, kao to su memorija za skladitenje ili RAID niza koji je ogranien propusnim opsegom, ispravnu vrednost moe biti broj I/O staza koje su na raspolaganju. Eksperimentisanjem se moe zakljuiti koliki de broj biti potreban da bi se pronad najbolja vrednost. Asinhroni I/O zavisi efikasnosti posix_fadvise funkcije, koja u nekim operativnim sistemima nedostaje. Ako funkcija nije prisutna onda treba postaviti vrednost ovog parametra na bilo koju vrednost, ali ne na nulu, jer de to dovesti do greke. Na nekim operativnim sistemima (npr. Solaris), funkcija je prisutna, ali ne nema zapravo nikakvu svrhu.

4. Poreenje PostgreSQL-a sa Oracle SQL-omOracle Oracle server baze podataka se sastoji od Oracle instanca i Oracle baze podataka. Oracle-ova instanca se sastoji od Oracle-ovih pozadinskih procesa i dodeljenoj memoriji u okviru deljene globalne oblasti (shared global area)-DGU i program globalnom nivoa (program global area) PGA. Oracle-ovi pozadinski procesi se sastoje od slededih:o o o o o o o

Database Writer Process (DBWn) Log Writer Process (LGWR) Checkpoint Process (CKPT) System Monitor Process (SMON) Process Monitor Process (PMON) Recoverer Process (RECO) Archiver Processes (ARCn)

Oracle baze podataka se sastoji od database datafiles, control files, redo log files, archive log files, and parameter file. Da bi se daljinski pristupilo Oracle-ovoj bazi podataka, postoji poseban proces koji se zove Oracle listener. U konfiguraciji dodeljenog servera (Dedicated Server) (nasuprot konfiguraciji deljenog servera(Shared Server)) svaka uspostzavljena sesije baze podataka ima svoj proces izvravanja na serveru.

20

Da bi se prikazalo na to jednostavniji nain poreenja sa Oracle-ovom bazom podataka uvek de se odnositi na jedan primer u upravljanju jedinom bazom podataka, RAC-u i Data Guard se nede uzimati u obzir. Napomena: PostgreSQL ima koncept warm standby (od verzije 8.2) sa isporuka arhivnih logova (shipping of archive- koja je uvedena u verziji 8.0).

PostgreSQLServer procesi baze podatakaServer program baze podataka Postgres-a se ceo sastoji od serverskih procesa. Ne postoje posebno imeimenovani procesi kao to je sluaj sa Oracle-om za razliite dunosti u okviru okruenja baze podataka. Ako bi se obratila panja na listu procesa (PS) ime procesa bilo Postgres. Meutim, na vedini platformi, PostgreSQL menja svoj komandni naziv, tako da individualni serverski procesi mogu lako biti identifikovani. Ponekad je neophodno da se podese parametri za komande kao to su PS i TOP da bi moglo da se prikae auriranje ovih naziva umesto imena procesa ("Postgres"). Procesi koji se mogu videti u listi procesa mogu se podesiti na neke od slededih: Master process - pokrede druge procese, procese u pozadini procese sesije. Writer process - pozadinski proces koji koordinira pisanje u bazi, zapise logova i checkpoint-a. Stats collector process - pozadinski proces koji prikuplja informacije o aktivnosti servera. User session processes.

Procesi server-a komuniciraju jedni sa drugima koristedi semafore i deljenu memoriju da bi se obezbedio integritet podataka kroz istovremeni pristup podacima.

Klaster PostgreSQL baze podatakaU okviru servera, jedan ili vie instanci Oracle-a mogu biti izgraeni. Baza podataka je odvojena jedna od druge i obino dele samo Oracle listener proces. PostgreSQL ima koncept baze database cluster (podataka klastera). Database cluster je skup baza podataka koji je uskladiten na zajednikoj lokaciji sistemskih datoteka - prostoru podataka (common file system location). Mogude je imati vie klastera baze podataka, sve dok oni koriste razliite oblasti podataka i razliite portove za komunikaciju. Procesi zajedno sa komponentama sistema datoteka su svi deljeni zajedno u okviru klastera baze podataka. Svi podaci potrebni za klaster baze podataka se skladite u okviru klasterskog direktorijuma podataka, koji se obino naziva PGDATA (nakon to se definie naziv promenljive okruenja koja moe da se mogu koristiti). PGDATA direktorijum sadri nekoliko poddirektorijuma i konfiguracione fajlove. Slede neki od konfiguracijskih fajlova klastera: PostgreSQL.conf - parametar ili glavni konfiguracioni fajl servera. pg_hba.conf - Klijentski autentifikacijski konfiguracijski fajl. pg_ident.conf - Mapa operativnog sistema nalog od PostgreSQL account tipa. Poddirektorijumi klastera: base - poddirektorijum koji sadri poddirektorijume po bazi podataka 21

global - poddirektorijum koji sadri klastere na nivou tabele o pg_auth - autorizacioni fajl koji sadri definiciju korisnika i ulogu. o pg_control - Kontrolni fajl. o pg_database - Informacije o bazama podataka unutar klastera. pg_clog - poddirektorijum koji sadri transakcijioni izvrni status podataka za potvrivanje transakcija. pg_multixact - poddirektorijum koji sadri podatke statusa viestrukih transakcija (koristi se za lokote deljenih redova) pg_subtrans - poddirektorijum koji sadri podtransakcijski statusni podaci pg_tblspc - poddirektorijum koji sadri simboliku veze sa tablespaces pg_twophase - poddirektorijum koji sadri datoteke za stanje za pripremu transakcija pg_xlog - poddirektorijum koji sadri WAL (Write Ahead Log) fajlove

Po podrazumevanoj vrednosti, za svaku bazu podataka u klasteru postoji poddirektorijum unutar PGDATA / bazu, nazvan po OID baze podataka-a (Object Identifier) u pg_database. Ovaj poddirektorijum je podrazumevana lokacija za datoteke baze podataka je, njegovi sistemski katalozi se tu cuvaju. Svaka tabela i indeks se uva u posebnoj datoteci, imenovanoj tabeli indeksu broja za vor fajla, koji se mogu nadi u pg_class.relfilenode. Nekoliko komponenti koje Oracle administratori obino izjednaavaju sa jednom bazom podataka je zajedniko i za PostgreSQL klaster, ukljuujudi i parameter file, control file, redo logs, tablespaces, accounts, roles, and background processes.

Tablespaces i objektni fajlovi podatakaU verziji 8.0 PostgreSQL je uvedeno upravljanje okvirima tabela. Fiziko predstavljanje tablespace u PostgreSQL je jednostavan: to je direktorijum u sistemu datoteka (file system), a mapiranje se obavlja putem simbolikih veza. Kada je baza podataka kreirana, podrazumevani tablespace je mesto gde je predefinisano da se svi objekti baze podataka uvaju. U Oracle to bi bilo slino okvirima System, User, and Temporary. Ako podrazumevani tablespace (prostor za tabele) nije prede definisan u toku stvaranja, datoteke sa podacima de idi u poddirektorijum od PGDATA/base. Poeljno je da lokacija kataloga informacionog sistema i strukture podataka aplikacije budu odvojene u zasebno upravljanim sistemima. Ovo je na raspolaganju. Kao i u Oracle-u, definicija tabele PostgreSQL odreuje u kojim tablespace-ovima se objekat nalazi. Meutim, ne postoji ogranienje veliine, osim fizike granice postavljene na ureaju za skladitenje postavljenom od strane operativnog sistema. Individualni podaci tabele se uvaju unutar datoteke u tablespace (ili direktorijumu). Softver baze podataka de podeliti tabelu na vie datafajlova u sluaju da tabela baze podataka prevazilazi 1 GB.

22

Od verzije 8.1, je omogudeno particionisanje tabele preko razliitih (ili istih) tablespaces. Ovo je zasnovano na karakteristici nasleivanja PostgreSQL , koristedi mogudnost upita za planiranje naziva ogranienja. Ne postoje kapaciteti za odvajanje konkretne kolone (kao LOBs) u posebno definisan tablespaces. Meutim, pored podataka datoteke koje predstavljaju tabele (ili vie delova od po 1 GB veliine) postoji razdvajanje datoteka sa podacima za kolone u tabeli koje napravile TOAST. PostgreSQL sistem za SQL aditenje nazvan TOAST (The Oversized-Attribute Storage Technique - tehnika za skladitenje atributa koji su prevelike veliine) automatski skladiti vrednosti vede od pojedinane strane baze podataka u skladiteni prostor srednje veliine za tabele. TOST tehnika omogudava da kolone sa podacima budu do 1 GB veliine. Kao u Oracle, definicija indeksa utvruje koji tablespace se ona nalazi u okviru. Zbog toga mogude je stedi prednost u performansama tako to se odvajaju diskovi kojim se tabelinim podacima konkurentno pristupa, pri emu se otputaju I/O konekcije u toku manipulacije podacima. U Oracle zbog toga postoji privremeni tablespaces gde se sortiraju informacija i privremeni evaluacioni prostor koji je potreban za razliite zahteve i slino. PostgreSQL nema ovaj koncept privremenog tablespace-a, ali se ne zahteva skladitenje da bi se mogle takoe obavljati ove aktivnosti. U okviru "default" tablespace baze podataka (koji se definie prilikom kreiranja baze podataka) postoji direktorijum pgsql _tmp. Ovaj direktorijum sadri privremeno skladite potrebno za evaluaciju. Datoteka koje se kreiraju u direktorijumu postoje samo dok se SQL naredba izvrava. Oni rastu veoma brzo, a nisu predvieni da imaju skromne skladitene potrebe ved da imaju brzo izvravanje. Treba imati na umu da je fragmentacija diska rezultat toga, i postoji potreba da se ima dovoljno prostora na disku da se podri korisnikov upit. Uz izdanje 8.3, postoje definicije privremenog tablespaces-a koridenjem parametara temp_tablespaces.

Redo i ArchivingPostgreSQL koristi Write-Ahead Logging-pisanje u napred prema zapisu (WAL) kao svoj restore-ovanja podataka uz pomod zapisa transakcije. WAL-ov centralni koncept je da se izmene podataka datoteke (na lokaciji na kojoj je tabela i indeks uskladiten) biti napisan samo nakon to su te promene su prijavljeni, odnosno, kada je dnevnik zapisa koji opisuje promene nastale u bazi podataka izbrisan a nisu trajno uskladitene. Ako pratimo ove procedure, ne moramo da brinemo ukoliko podaci tabele nisu upisani na disk nakon to se obavi svaka transakciju, jer znamo da u sluaju da se podaci obriu mi demo demo biti u stanju da povratimo bazu podataka pomodu dnevnika transakcija: sve promene koje nisu nainjene nad podacima stranice mogu biti prepravljene zahvaljujudi dnevniku evidencije promena - log records . (Ovo je tip oporavka "kotrljanjem u napred" (roll-forward recovery), takoe poznat kao REDO.) PostgreSQL odrava (WAL) u poddirektorijumu pg_xlog u klasteru podataka direktorijuma. WAL je uveden u PostgreSQL u verziji 7.1. radi odravanja konzistentnost baze podataka. U ranijim veryijama u sluaju npr nestanka struje u prethodnim izdanjima su izforsirane izmene za sve unete podatke na disk pre izvrenja svake transakcije. Sa WAL, samo jedan log fajl mora da se snimi na disk, i u 23

velikoj meri poboljava performanse uz dodavanje mogudnosti kao to su Point-in-time oporavak (oporavak u zavisnosti od take i vremena kada se prekid dogodio) i arhiviranje transakcija. PostgreSQL sistem teorijski proizvodi beskonano dug niz WAL evidencije. Sistem fiziki deli ovaj niz u fajlov WAL segmenta, koji je obino 16 MB po komadu. Sistem obino stvara nekoliko segmenata fajlova i onda ih "reciklira" tako to ih preimenuje u no-longer-needed segment fajlova u vedi broj segmenata. Kada se izvri spisak pg_xlog direktorijuma uvek de biti nekoliko promena imena datoteka tokom vremena. Da biste dodali arhiviranje WAL datotekama postoji parametar u datoteci parametara, gde komanda dodaje da se izvri arhivske proces. Kada se to uradi, Operativni sistem "on-line" pravi rezervnu kopiju (backup) koja postaje dostupna od izvrenja komande pg_start_backup i pg_stop_backup, koja suspenduje i nastavlja pisanje u datafiles dok se nastavljaju da piu transakcije za WAL datoteke i izvravanje arhivskih procesa. Ukljuivanje WAL arhiviranja i on-line rezervne komande su dodati u verziji 8.0.

Rollback ili UndoZanimljivo je kako se dinamika alokacija prostora na disku koristi se za skladitenje i obradu podataka u okviru tabele. Fajlovi koji predstavljaju tabele rastu kao sto raste i tabela. Takoe, raste i sa transakcijama koje se obavljaju za brisanje tih zapisasa. U Oracle postoji koncept vradanje i ponitavanje (Rollback i Undo) segmentima koji imaju informacije za vradanje transakciju unazad. U PostgreSQL podaci se uvaju u fajlu koji predstavlja tabelu. Tako da kada se obavlja brisanje i auriranje tabele, fajl koji predstavlja objekat de sadrati prethodne podatake. Ovaj prostor se dobija da se ponovo upotrebljava, ali da izforsira oporavak prostora koji je pre toga bio iskoriden, odravanje obavlja proces koji se zove vacuum mora biti izvrena.

Server Log FileOracle ima log fajl za upozorenje. PostgreSQL ima serverski log fajl. Konfiguraciona opcija ak ima informacije o konekcij koja se normalno vidi u okviru Oracle listener.log-a se pojavljuju u PostgreSQL ovom serverskom fajlu zapisa - server log. Parametri unutar fajla servera (PostgreSQL .conf) odreuje nivo, lokaciju i ime log fajla. Da bi se pomoglo u odravanju evidencije datoteke servera (koji brzo raste), postoji funkcionalnost za rotiranje log fajl-a servera. Parametri se mogu podesiti na tako da se odredi kada da se rotira fajl na osnovu veliine ili starosti fajla. Upravljanje starom datotekom se zatim preputa administratoru.

AplikacijeKomanda initdb stvara novi klaster PostgreSQL baze podataka.

24

Komanda psql startuje terminal na bazi "prednji kraj" (front-end) za PostgreSQL ili SQL komandnoj liniji. Upiti i komande mogu da se izvravaju interaktivno ili uz pomod fajlova. Psql na komandnoj liniji ima nekoliko atraktivnih funkcija: Temeljna on-line pomod za obe pSQL komande i SQL sintaksu. Komanda istorije i linijske izmene podataka. SQL komande mogu da postoji u vie linija i da se izvravaju samo nakon odreene take-zareza (;). Nekoliko SQL komandi koje su razdvojene se take-zareza se moe uneti u jednoj liniji. Formatiranje fleksibilnog izlaza. Komanda za opis vie objekata koji su daleko superiornije od Oracle-ovog DESCRIBE. U zavisnosti od konfiguracije bezbednosti okruenja, veza moe biti uspostavljena lokalno ili daljinski putem TCP/IP. Zbog ovih odvojenih konekcija bezbednost lozinke moe ili ne moe zahtevati povezivanje. Komanda pg_ctl je usluni program za prikazivanje statusa, poetka, zaustavljanje ili da ponovo pokrenete PostgreSQL servera baze podataka (Postgres). Iako server moe biti pokrenut preko Postgres izvrnog programa, pg_ctl saima zadatke kao to su preusmeravanje izlaza zapisa, pravilno odvajanje od terminala i procesa grupe, i pruanje mogudnosti za kontrolisano zatvaranje. Komande pg_dump i pg_restore su programi koji su dizajnirani za izvoz i uvoz sadraja PostgreSQL baza. Odbacivanje moe biti prikazano bilo u skripti ili u formatu datoteke arhive. Scenario za format datoteke stvara tekstualne datoteke koje sadre SQL komande potrebne da se rekonstruie baze podataka u stanje kojem je bila u vreme kada je generisana. Arhive format datoteke kreira datoteku da bude koridena sa pg_restore da bi se ponovo izgradila baza podataka. Formati datoteka arhiviranja su dizajnirani tako da bude prenosivi izmeu razliitih arhitektura. Istorijski gledano, bilo koju vrstu nadogradnje na PostgreSQL softvera bi zahtevala pg_dump baze podataka pre nadogradnje. Onda pg_restore posle nadogradnje. Sada, za manja izdanja (tj. trede decimalni - 8.2.k), nadogradnja moe da se uradi na mestu. Meutim, promena verzija na prvom ili drugom decimalnom i dalje zahteva pg_dump/pg_restore. Postoji grafiki alat pod nazivom pgAdmin III koji je razvijen posebno. Distribuira se sa Linux i Windows verzije PostgreSQL -a. Povezivanje sa serverom baze podataka i moe da se uspostavi daljinski da obavlja administrativne poslove. Zato to je alat dizajniran za upravljanje svim aspektima baze podataka ivotne sredine, povezivanje sa bazom podataka mora biti kroz super korisniki nalog. PgAdmin III alat ima sledede standardne atraktivne karakteristike: Intuitivni raspored strukture stabla za kreiranje i modifikovanje objekata baze podataka Razmatranje i uvanje SQL kada menjaju ili se kreiraju objekati. 25

Reference i literatura:

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

http://raghavt.blogspot.com/2011/04/postgresql-90-memory-processes.html http://raghavt.blogspot.com/2011/04/postgresql-90-architecture.html http://dcdbappl1.cern.ch:8080/dcdb/archive/ttraczyk/db_compare/db_compare.html http://www.webopedia.com/TERM/A/asynchronous.html http://linux.about.com/cs/linux101/g/backgroundproce.htm http://vibhorkumar.wordpress.com/2010/09/30/physical-standby-vs-hot-standby/ http://wiki.postgresql.org/images/b/b7/PGDay2009-EN-The_Future_of_PostgreSQL_HA.pdf http://www.postgresql.org/docs/9.0/interactive/runtime-config-resource.html http://www.enterprisedb.com/docs/en/8.4/pg/runtime-config-resource.html http://www.postgresql.org/files/documentation/books/aw_pgsql/hw_performance/0.html

11. http://wiki.postgresql.org/wiki/PostgreSQL_for_Oracle_DBAs 12. http://www.enterprisedb.com/docs/en/9.0/pg/kernel-resources.html 13. http://www.enterprisedb.com/docs/en/8.4/pg/runtime-config-resource.html 14. http://www.enterprisedb.com/docs/en/8.4/pg/wal-configuration.html 15. http://www.enterprisedb.com/docs/en/9.0/pg/monitoring-stats.html 16. http://www.enterprisedb.com/docs/en/8.4/pg/runtime-config-autovacuum.html 17. http://www.enterprisedb.com/docs/en/8.4/pg/runtime-config-logging.html 18. http://www.enterprisedb.com/docs/en/9.0/pg/continuous-archiving.html

26