1. http://www.postgresql.org
¿¡¼ ÇÁ·Î±×·¥ ¼Ò½º¸¦ ³»·Á¹Þ¾Æ ¾ÐÃàÀ» Ǭ´Ù.
2. ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÑ´Ù.
# ./configure
# --prefix=/usr/local/postgres
# --enable-thread-safety
# --enable-depend
# --enable-multibyte
# --enable-locale
# --enable-nls='ko'
# --enable-odbc
# --with-openssl
# --with-python
# --with-perl
#
# make
# make install
3. postgres °èÁ¤À» »ý¼ºÇÑ´Ù.
# groupadd postgres
# adduser -d /home/postgres -g postgres postgres
# passwd postgres
4. directoryÀÇ ÆÛ¹Ì¼ÇÀ» º¯°æÇÑ´Ù.
# chown -R postgres.postgres /usr/local/postgres
# chown -R postgres.postgres /home/postgres
# cd /usr/local/postgres
# chown -R root lib include
5. postgres °èÁ¤ÀÇ È¯°æÀ» ¼³Á¤ÇÑ´Ù.
# su - postgres
# vi .bash_profile
export MANPATH=/usr/local/man
export PGDATA=/home/postgres/data
# source .bash_profile
6. µðºñ»ý¼º¹× ±âÃÊ ¼ÂÆÃÀÛ¾÷
# initdb -E EUC_KR -W ¶Ç´Â...
# initdb -E UTF-8 --lc-collate=C -W
7. ¼¹ö±âµ¿ ¹× Áß´Ü
±âµ¿ : pg_ctl start
Áß´Ü : pg_ctl stop -m smart|fast|immediate
Àç½ÃÀÛ : pg_ctl restart
Àç·Îµù : pg_ctl reload
»óÅÂÈ®ÀÎ : pg_ctl status
8. À¯Àú »ý¼º
# createuser username -P
9. DB »ý¼º
# createdb -E EUC_KR -O username DBname
-E option À» »ý·«Çϸé initdb ½Ã ¼³Á¤ÇÑ encodingÀ¸·Î ¼³Á¤µÊ.
-O option À» »ý·«Çϸé ÇöÀç Á¢¼ÓÇÑ user·Î ¼³Á¤µÊ.
10. PG_HBA.conf ÆÄÀϼ³Á¤
# vi $PGDATA/pg_hba.conf
# "local" is for Unix domain socket connections only
local all all md5
11. client¸¦ ÀÌ¿ëÇÏ¿© Á¢¼ÓÇÑ´Ù.
# psql -U username DBname
[Âü°í] postgresql.conf ¼³Á¤
- FILE LOCATIONS (½Ã½ºÅÛ°ú Á÷Á¢ ¿¬°üµÈ ÆÄÀϵ鿡 ´ëÇÑ ¼³Á¤) -
data_directory = 'ConfigDir'
½ÇÁ¦ÀûÀÎ PostgreSQLÀÇ DB Data Æú´õ ¼³Á¤ÀÌ´Ù.
PostgreSQL´Â ±âº»ÀûÀ¸·Î Á¢±ÙÀÚ ShellÀÇ È¯°æº¯¼öÁß PGDATA¿¡ ´ëÇØ¼ ·ÎµùÇÏ°Ô µÈ´Ù.
ÀÌ°É ¼³Á¤Çϸé PGDATA Enviroment°¡ ¾øÀ»¶§ Àâ°Ô µÇ³ª °èÁ¤º°·Î Áִ°ÍÀÌ ´Ù¼Ò ³ªÀ» °Í °°´Ù.
hba_file = 'ConfigDir/pg_hba.conf'
PostgreSQLÀÇ Á¢±ÙÁ¦¾î ÆÄÀÏ.
ident_file = 'ConfigDir/pg_ident.conf'
PostgreSQLÀÇ Ident Authentication Maps ÆÄÀÏ.
external_pid_file = '(none)'
PostgreSQLÀÇ Process IDÆÄÀÏÀ§Ä¡Àε¥ ±âº»ÀûÀ¸·Î PGDATA ¶Ç´Â data_directory ÂÊ¿¡
postmaster.pid ÆÄÀÏ·Î »ý¼ºµÇ°í Shutdownµî¿¡ ÀÌ¿ëµÇ¸ç, µû·Î ¼³Á¤ÇÏÁö ¾Ê¾Æµµ µÈ´Ù.
- CONNECTIONS AND AUTHENTICATION (Á¢¼Ó°ú ÀÎÁõ°ü·Ã) -
listen_addresses = 'localhost'
PostgreSQlÀÇ Listen Adress¼³Á¤À¸·Î Default Localhost·Î µÇ¾î ÀÖ´Ù.
À̰æ¿ì PostgreSQL°¡ ÀåÂøµÈ ¼¹ö ·ÎÄ®¸¸ °¡´ÉÇÏ¸ç ¿ÜºÎÁ¢±ÙÀÌ µÇÁö ¾Ê´Â´Ù.
'*'·Î ¼³Á¤ÇÒ °æ¿ì ¸ðµç Network Interface¸¦ ÅëÇÑ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù.
¸¸¾à¿¡ ¼¹ö ³×Æ®¿÷Ä«µå°¡ ¿©·¯ °³ÀÏ °æ¿ì Á¢±ÙÀ» Çã¿ëÇÒ IP¸¦ ¼³Á¤ÇÑ´Ù.
listen_addresses = '192.168.0.10, 192.168.0.13'
port = 5432
PostgreSQLÀÇ Service Port¸¦ ÁöÁ¤ÇÏ´Â °ÍÀ¸·Î ±âº» 5432Æ÷Æ®·Î µÇ¾î ÀÖÀ¸³ª º¯°æµµ °¡´ÉÇÏ´Ù.
¿ÜºÎ¿¡ ³ëÃâµÇ¾î Àִ°æ¿ì ¹Ù²Ù¾îÁִ°ÍÀÌ ÁÁÀ»µí ÇÏ´Ù.
max_connections = 100
ÃÖ´ë µ¿½ÃÁ¢¼ÓÀÚÀÇ ¼ö¸¦ Á¤ÇÏ´Â ºÎºÐÀε¥ ÀÌ´Â ´Ù¼Ò ÁÖÀÇÇØ¾ß ÇÑ´Ù.
Shared Memory¼³Á¤¿¡ ¹Î°¨Çϸç 1¸í´ç ÃÖ¼Ò 500Byte°¡ ÇÊ¿äÇÏ´Ù.
superuser_reserved_connections = 2
SuperUserÀÇ Á¢¼ÓÀ» À§ÇÑ ¿¹ºñ¿ëÀ¸·Î ¼³Á¤ÇÏ´Â °ÍÀ¸·Î Max Connection¼³Á¤ÀÌ 100À϶§
À̸¦ 2·ÎÇϸé 98¸í¸¸ÀÌ µ¿½ÃÁ¢±ÙµÈ´Ù.
unix_socket_directory = ''
TCP/IPÁ¢¼Ó¸¸ÀÌ¾Æ´Ñ Local¿¡¼´Â Unix SocketÀ¸·Î Á¢¼ÓÀÌ °¡´ÉÇÏ¸ç ³×Æ®¿÷º¸´Ù´Â Á» ³ªÀº ¼º´ÉÀ» º¸À̱äÇÑ´Ù.
ÀÌ ¼³Á¤À» ÇØÁÖÁö ¾ÊÀ¸¸é /tmp¿¡ .s.PGSQL.5432 °ú .s.PGSQL.5432.lock ÆÄÀÏÀÌ »ý¼ºµÈ´Ù.
5432¸¦ º¸µçÀÌ ÇØ´çÆ÷Æ®·Î ¸¸¾à¿¡ ÇÑ ¼¹ö¿¡ PostgreSQL¸¦ ¿©·¯°³ ¶ç¿ï¶§ ±¸ºÐÀ» À§ÇÔÀÌ´Ù.
unix_socket_group = ''
Unix SocketÆÄÀÏÀÇ Onwer´Â ¿ª½Ã PostgreSQL Master UserÀÌÁö¸¸ GroupÀ» Á¤ÇÒ¼ö ÀÖ´Ù.
Á¢±Ù Á¦¾î¸¦ ½Ã½ºÅ۴ܰ迡¼µµ ÇÒ¼ö ÀÖ±â À§ÇÑ ¹è·Á, ¹Ì¼³Á¤½Ã PostgreSQL SatartÇÑ Master UserÀÇ
Owner¿Í GroupÀ» µû¶ó °£´Ù.
unix_socket_permissions = 0777 octal
¿ª½Ã ½Ã½ºÅÛ PermissionÂ÷¿øÀÇ Á¢±ÙÁ¦¾î¸¦ À§ÇÑ ÆÛ¹Ì¼Ç ¼³Á¤ÀÌ´Ù.
µû·Î ¼³Á¤ÇÏÁö ¾ÊÀ»½Ã srwxrwxrwx ·Î ¼³Á¤µÈ´Ù.
rendezvous_name = ''
Apple»çÀÇ ±â¼úÁö¿øÀ» À§ÇѰÍÀÌ´Ù.
- Security & Authentication -
authentication_timeout = 60
ÀÎÁõ ¿À·ù½ÃÀÇ ÀçÀÎÁõ±îÁöÀÇ TimeOutÀ¸·Î ±âº» 60ÃÊÀ̸ç,
ÃÊ´ÜÀ§ ¼³Á¤ÀÌ °¡´ÉÇÏ°í ¹®¼¸¦ º¸¸é 600ÃÊ(600/60=10ºÐ)±îÁö µÇÁö¸¸,
¼³Á¤À» ÇÒ ¶§ ª°Ô ÁÖµÇ »óȲ¿¡ µû¶ó Á¶ÀýÇÏ¸é µÈ´Ù.
³Ê¹« ±æ°ÔÁÖ¸é ¿ÀÈ÷·Á ¸®¼Ò½º¸¸ Àâ¾Æ ¸Ô´Â´Ù.
ssl = false
SSL ÀÎÁõó¸® ¿©ºÎ.
password_encryption = true
create user³ª alter user·Î °èÁ¤ »ý¼º º¯°æ½Ã¿¡ ENCRYPTED ȤÀº UNENCRYPTED·Î ÁöÁ¤ÇÏÁö ¾ÊÀ» ¶§
ÀÚµ¿À¸·Î Password EncryptionÇÒÁö ¿©ºÎ¸¦ ÁÖ´Â °ÍÀ¸·Î µðÆúÆ®·Î µÎ´Â °ÍÀÌ ÁÁ´Ù.
krb_server_keyfile = ''
Kerberos ¼¹ö ŰÆÄÀÏÀÇ À§Ä¡Á¤º¸ ¼³Á¤.
db_user_namespace = false
Userº° µðºñ¼³Á¤¶§ »ç¿ëÇÏ´Â ¿É¼ÇÀ¸·Î OracleÀÇ SID¿Í °°Àº ÇüŶó°í º¸¸é ½¬¿ï µíÇÏ´Ù.
±âÁ¸¿¡´Â °èÁ¤Çϳª·Î º¸Åë ´Ù Á¢±ÙÀÌ µÇ³ª À̰æ¿ì´Â °èÁ¤@µðºñ¸í ½ÄÀ¸·Î Á¢±ÙÀ» ¸ðµÎ ÇØ¾ß ÇÑ´Ù.
- RESOURCE USAGE (except WAL) PostgreSQL¿î¿µ ¸®¼Ò½º Á¦¾î -
shared_buffers = 16
°øÀ¯¸Þ¸ð¸®ÀÇ ¼³Á¤À¸·Î max_connections¼öÀÇ 2¹è´Â ¼³Á¤À» ÇØÁÖ¾î¾ß Çϸç,
OSÀÇ Shared Memory ¼³Á¤±îÁö¸¸ ¼³Á¤ÀÌ °¡´ÉÇÏ´Ù.
±ÇÀå»çÇ×Àº ÃÖ¼Ò 1,000´ÜÀ§·Î ¼³Á¤À» ÇØÁִ°ÍÀ» ÃßõÇÑ´Ù.
work_mem = 1024
¸»±×´ë·Î ÀÛ¾÷¿ë ¸Þ¸ð¸® »óÇѼ±À» ÁöÁ¤ÇÏ´Â °ÍÀ¸·Î Sorting(Order by),Distinct½Ã³ª,
In, merge joinµî °á°ú¸¦ ¸¸µé¾î³»±â À§ÇØ Äõ¸®¿¡ ÇØ´çµÇ´Â Á¤·ÄÀ̳ª Àӽà ÀúÀåÀ» À§ÇÑ °ø°£ È®º¸ÀÇ »óÇѼ±À» Áִ°ÍÀ¸·Î,
ÀÌ´Â ¸ðµç Çհ踦 Á¤ÇÏ´Â°Ô ¾Æ´Ï¶ó °¢ Äõ¸®´çÀ¸·Î ¼³Á¤°ªÀÌ ¹Ý¿µµÇ¹Ç·Î ¹«Åδë°í ¸¹ÀÌ ÁÖ¸é ½Ã½ºÅÛ ¸Þ¸ð¸®°¡ Ä¿Áø´Ù.
ÀÛ¾÷»ó¿¡ ¾î´ÀÁ¤µµ¸¦ Àâ¾Æ¾ß Çϳª ½ÇÁ¦ Äõ¸® ¼öÇàÈÄ ³ª¿À´Â µ¥ÀÌŸµéÀÇ Å©±â¸¦ ´ë·«º¸°í Á¤ÇϸéµÈ´Ù.
KiloByte´ÜÀ§ ¼³Á¤À¸·Î ±âº»°ªÀº 1024kb³ª ÃÖ¼Ò 64±îÁö°¡´ÉÇϳª µðÆúÆ®³ª Á¶±Ý´õ ÁÖ¸é ÃæºÐÇϳª
¾÷¹«·®¿¡ µû¶ó ´Ã·ÂÁÖ½ÃµÇ ÁÖÀÇÇÒ°ÍÀº ÃÑÇÕÀÌ ¾Æ´Ñ °¢°¢ÀÇ Äõ¸®ÁúÀÇ´çÀ̹ǷΠÁÖÀÇ¿ä¸Á!!
(¸Þ¸ð¸®°¡ ¹«¸® ³Ë³ËÇÏ½Ã¸é ¸¹ÀÌ ÁÖ¸é ¼º´ÉÀÇ Çâ»óÀÌ ÀÖ´Ù)
maintenance_work_mem = 16384 min 1024, size in KB
DMLÁï Create , Alterµî ½ÇÁ¦ÀûÀÎ °ü¸® ¸ñÀûÀÇ ÀÛ¾÷À̳ª vauum½ÃÀÇ ÀÛ¿ë ¸Þ¸ð¸® »ç¿ë Á¦ÇѼ±À¸·Î
work_mem ¼³Á¤º¸´Ù´Â ÂØ±Ý´õ ÁØ´Ù. ÇöÀç ±âº»°ªÀº ¾à 16MÁ¤µµ·Î ¸¹ÀÌ »ç¿ëÇÏ´Â ºÎºÐÀº ¾Æ´ÏÁö¸¸,
º¹±¸ÀÛ¾÷À̳ª DMLÄõ¸® Àü¼ÛÀÌ ¸¹À»¶§ ¸¹ÀÌ ÁÖ¸é ºü¸¥ 󸮰¡ µÈ´Ù. ±×¸® Å©°Ô ¼³Á¤ÇÒ ÇÊ¿ä±îÁö´Â ¾øÀ¸´Ï
µðºñ ¾þ°í ´Ù½Ã ³Ö°Å³ª ÇÒ ¶§¿¡´Â ³ô¿© ÁÖ¸é ¼º´É Çâ»óÀÌ µÈ´Ù.
max_stack_depth = 2048 min 100, size in KB
ÃÖ´ë Stack ¼ö·Î ¾Æ¹«¸® ¸¹ÀÌ ÁØ´ÙÇØµµ Kernel¼³Á¤À» ÃÖ´ëÄ¡·Î ³õÀ¸´Ï ulimit ·Î ¼³Á¤½Ã¿¡´Â ¸¹ÀÌ ÁÙ¼ö ÀÖÀ¸³ª
ÀÌ´Â ³Ê¹«¸¹ÀÌÁÖ¸é Crash°¡ ÀϾ¼ö ÀÖ´Ù. Àç±ÍÈ£ÃâÇÔ¼ö³ª º¹ÀâÇÑ ÇÔ¼ö󸮿¡´Â Á¶±Ý´õ ¼³Á¤ÇØÁÖ¸é ÁÁÀ¸³ª
ºÎÅδë°í ´Ã¸®´Â°Ç ºñÃßõ. ¿ª½Ã KiloByte´ÜÀ§ÀÌ¸ç ±âº»À̳ª ±âº»º¸´Ù Á¶±Ý´õ ÁÖ´Â°Ô ÁÁÀ»°Í °°´Ù.
- Kernel Resource Usage (PostgreSQLÀÌ Kernel ¸®¼Ò½º À̿뿡 ´ëÇÑ Á¦¾î) -
max_files_per_process = 1000 min 25
°¢ PostgreSQL Process(Child Process)°¡ OpenÇÒ¼ö ÀÖ´Â ÃÖ´ë ÆÄÀϼöÀÌ´Ù.
ÀÌ´Â Kernel¼³Á¤°ª file-max¿Í ¿¬°üµÈ°ÍÀ¸·Î, Kernel¿¡¼ Á¦ÇÑÀ» Çß´Ù¸é ¼³Á¤À» ¾ÈÇØµµ µÇÁö¸¸
Unlimit·Î µÇ¾î Àְųª file-max·Î ÀÌ¹Ì Àâ¾Æ ³õÀº »óÅ¿¡¼ ±× ¹üÀ§³»¿¡¼ ó¸®ÇÒ¤Ô¶§
Á¶Á¤ÇÏ´Â °ÍÀ¸·Î ³Ê¹« ¸¹ÀÌ ¼³Á¤ÇÏ¸é ¿¡·¯°¡ ³´Ù.
preload_libraries = ''
¼¹ö Start½Ã¿¡ ÇÔ²² ¸Þ¸ð¸®¿¡ ÀûÀçÇÒ Library¸¦ ¼³Á¤ÇÏ´Â °ÍÀÌ´Ù.
PL(Procedure Language) Library¿¡ ´ëÇØ ¹Ì¸® ¼³Á¤Çϸé PL ·Î ÀÛ¼ºµÈ ÇÔ¼öµéÀÇ Ã³¸®¿¡ ºü¸¥ ¼Óµµ¸¦ ³¾¼ö ÀÖ´Ï´Ù.
¹®¹ýÀº '$libdir/plXXX:plXXX_init' ½ÄÀ¸·Î python ¶óÀ̺귯¸®¸¦ Start½ÃÁ¡¿¡¼ ÀûÀçÇÏ°í ½ÍÀ¸¸é
'$libdir/plpythoni:plpythonu_init' ½ÄÀ¸·Î ÇÏ¸é µÈ´Ù. $libdirÀº PostgreSQL ¼³Ä¡À§Ä¡¿¡¼ ÀÚµ¿À¸·Î ã¾Æ¿À³ª
ÇØ´ç ¶óÀ̺귯¸®°¡ ´Ù¸¥ °÷¿¡ ÀÖÀ¸¸é, À§Ä¡¸¦ Àý´ë °æ·Î (/usr/local/lib)·Î ÁÖ¸é µÇ¸ç ¿©·¯ °³¸¦ ÇÒ ¶§´Â
,(ÄÞ¸¶)·Î ±¸ºÐÇÏ¸é µÈ´Ù.
- Cost-Based Vacuum Delay -
vacuum_cost_delay = 0 0-1000 milliseconds
vacuum_cost_page_hit = 1 0-10000 credits
vacuum_cost_page_miss = 10 0-10000 credits
vacuum_cost_page_dirty = 20 0-10000 credits
vacuum_cost_limit = 200 0-10000 credits
PostgreSQLÀÇ ´ÜÆíÀÛ¾÷°ú ¿À·ù¼öÁ¤°ú ÃÖÀûȸ¦ À§ÇØ vacuumÀ» ½ÇÇàÇϴµ¥
ÀÌ ½ÇÇà½Ã Àá½Ã µ¥ÀÌŸ¿¡ LockÀÌ µÇ°Å³ª Delay°¡ »ý°Ü º» ÀÛ¾÷¼öÇà¿¡ ´Ù¼Ò
ÁöÀåÀ» Áִµ¥ À§ ¼³Á¤À¸·Î Delay¸¦ ÁÖ¾î ´Ù¸¥ Äõ¸®°¡ ÀÌ¹Ì ¼öÇàÁßÀ̰ųª
Transactionó¸®Áß¿¡ Delay¸¦ Áְųª Çã¿ëµÈ ¹üÀ§ ÀÌ»óÀ¸·Î ¸®¼Ò½º¸¦ ãÁö ¾Ê°Ô ÇÏ´Â °ÍÀÌ´Ù.
½ÇÁ¦ÀûÀÎ update, delete..µîÀÌ ÀÚÁÖ ÀϾ°Å³ªÇÏ¸é ´ç¿¬È÷ vauumÇØÁÖ¾î¾ß¸¸ ÇÑ´Ù.
À̶§ select Äõ¸®°¡ »ó´ç·®À» Â÷¸®ÇÒ¶§ vauumÀ» ÇØÁÖ¸é µô·¹À̰¡ »ý±â´Ï
Àû´ç¼ºÀ¸·Î ½Ç½Ã°£À̳ª ÇѰ¡ÇÑ ½Ã°£´ë°¡ ¾Æ´Ñ ½Ã°£´ÜÀ§µîÀ¸·Î ÇÒ °æ¿ì´Â À̿ɼÇÀ¸·Î
º»·¡ÀÇ Transaction¿¡ ÃÖ´ëÇÑ ÁöÀåÀ» ÁÖÁö ¾Êµµ·Ï ¼ÂÆÃÇϸé ÁÁ´Ù.
- Background writer -
bgwriter_delay = 200 10-10000 milliseconds between rounds
bgwriter_percent = 1 0-100% of dirty buffers in each round
bgwriter_maxpages = 100 0-1000 buffers max per round
¿ª½Ã ¼º´ÉÇâ»óÀ» À§ÇѰÍÀ¸·Î write ProcessÀÇ DelayŸÀÓ°ú Àüü ¸®¼Ò½º ÆÛ¼¾Æ®¿Í
ÀÏÁ¤·®±îÁö BackGrount Write°¡ ½ÃÇàµÉ Buffer·®À» ¼³Á¤ÇÏ´Â ºÎºÐÀÌ´Ù.
ÀÌ°Í ¿ª½Ã ½Ã½ºÅÛ »ç¿ë·®°ú ¿ëµµ¿¡ µû¶ó ÀûÀýÈ÷ ¼³Á¤ÇϸéµÇ³ª ÁÖ¼®Ã³¸®µÈ »óÅ·Π½áµµ
¹®Á¦µÉ °ÍÀº ¾ø´Ù.
- WRITE AHEAD LOG -
fsync = off
fsync on(true)ÀÏ °æ¿ì Disk Write°¡ ºó¹øÈ÷ ÀϾ°í ¹Ù·Î¹Ù·Î SyncµÇ¹Ç·Î,
¼º´É(ºü¸¥ ÀÀ´ä)À» ¿øÇÒ¶§´Â off(false)°¡ ÁÁÀ¸³ª ¾ÈÁ¤¼º¸¸À» À§ÇÑ´Ù¸é on(true)°¡ ÁÁ´Ù.
½Ã½ºÅÛ Crash·Î ÀÎÇÑ º¹±¸¿¡ ·Ñ¹é½ÃÁ¡ÀÌ »ý±âÁö ¾Ê±â¸¦ ¿øÇÑ´Ù¸é on(true).
wal_sync_method = fsync
WALÀÇ File Sync ½ÃÀÇ ¹æ¹ý¿¡ °üÇѰÍÀ¸·Î µðÆúÆ® fsyncÀÌ´Ù.
fsyncÀ̿ܿ¡ fdatasync , open_sync or open_datasync°¡ ÀÖ´Ù.
OSÀÚüÀÇ ÆÄÀÏ ÇÔ¼ö¸¦ ¾²´Âµ¥ open_sync´Â O_SYNC·Î WAL LogÆÄÀÏÀ» ¿ÀÇÂÇϰí
open_datasync´Â O_DSYNC·Î WAL Log¸¦ ¿ÀÇÂÇÑ´Ù.
wal_buffers = 8
WALÀÇ ¹öÆÛ ¼³Á¤À¸·Î ÃÖ¼Ò´Â 4·Î ½ÇÁ¦ ¾²´Â ¸Þ¸ð¸®ÀÇ ·®Àº 4*BKbyteÀÌ´Ù.
µðÆúÆ®·Î µÎ¾îµµ »ó°ü¾øÀ¸´Ï Äõ¸®¼Óµµ¸¸À» »ý°¢ÇÑ´Ù¸é ¹öÆÛ¸¦ ´Ã¸®¸é ÁÁ°ÚÁö¸¸,
¹öÆÛ¿¡ ³Ê¹« ¸¹ÀÌ °¡Áö°í ÀÖ´Ù°¡ Power DownÀÌ ¿Ã°æ¿ì ±×¸¶¸¸Å º¹±¸½ÃÁ¡ÀÇ ¼ÕÇØ°¡ ¿À´Ï
±âº»°ªÀÌ ÀϹÝÀûÀ¸·Î´Â ÁÁÀ» °Í °°´Ù.
commit_delay = 0
WALÀÇ Commit(Disk Write) Delay¼³Á¤À¸·Î ¸¶ÀÌÅ©·Î ¼¼ÄÁµå¼³Á¤À¸·Î ÃÖ´ë 10,0000 ±îÁö µÈ´Ù.
WAL Buffer ¼³Á¤ Å©±â¸¸Å WAL Log¸¦ ´ã°íÀÖ´Ù ³ÑÄ¥ ¶§ ½ÇÁ¦ ¹°¸®Àû Disk¿¡ WriteÇÒ ¶§ÀÇ Delay½Ã°£ÀÌ´Ù.
- Checkpoints -
checkpoint_segments = 1
WALÀÇ Ã¼Å©Æ÷ÀÎÆ®¸¦ Âï´Â ÃÖ´ë °Å¸®¸¦ Á¤ÇÏ´Â °ÍÀ¸·Î, 1 ¼¼±×¸ÕÅ©´ç ¾à 16MB(16*1024ÀÇ ÅÒÀÌ »ý±ä´Ù.
Áï ÀÌ °ªÀ» ¸¹ÀÌ ÁÖ¸é º¹±¸½ÃÁ¡ÀÇ PITRÀÌ ³Ê¹« ¸¹Àº ÅÒÀ» °¡Áö°Ô µÈ´Ù.
±âº» 3ÀÌÁö¸¸ 1À» ÃßõÇÑ´Ù. Check Point Segments¸¦ ³Ê¹« ¸¹ÀÌ ÁÖ¸é
±× ¿ë·®ÀÌ Âû¶§±îÁöÀÇ ¼º´É Çâ»óÀº ÀÖÁö¸¸ ª°Ô ÁÖ´Â °ÍÀÌ ÁÁ´Ù.
checkpoint_timeout = 300
WAL Auto Check Point °£°ÝÀÇ ½Ã°£À» Á¤ÇÏ´Â °ÍÀ¸·Î, ÃÊ´ÜÀ§ ¼³Á¤À» ÇÏ¸é µÈ´Ù.
µðÆúÆ®´Â 300ÃÊÀÌ´Ù. ³Ê¹« ÀÚÁÖ Âï¾îµµ ±×·¸°í ³Ê¹« ³Ð°Ô Âï¾îµµ ±×·¸Áö¸¸ ½Ã½ºÅÛÀÇ Transaction
ºÐ´ÜÀ§ 󸮷®ÀÌ ¸¹ÀºÁö ½Ã°£´ç 󸮰¡ ¸¹ÀºÁö¿Í ÃÖ¾ÇÀÇ »óȲÀÇ º¹±¸½ÃÁ¡µéÀ» »ý°¢Çؼ Àû¾î ÁÖµÇ
¿ª½Ã ³Ê¹« ª¾Æµµ ÁÁÁö ¾Ê°í ³Ê¹« ±æ¾îµµ ÁÁÁö ¾Ê´Ù.
checkpoint_warning = 30
°æ°í ¸Þ¼¼Áö·Î checkpoint_segments¿¡ ¼³Á¤µÈ Å©±â¿¡ ³ÑÄ¥ ¶§ ÇØ´ç ½Ã°£³»¿¡¼
WriteÈÄ Flush Áï ºñ¿öÁöÁö ¾Ê°í °è¼Ó Èê·¯ ³ÑÄ¥ ¶§ °æ°í¸Þ¼¼Áö¸¦ ¿¡·¯ ·Î±×¿¡ ³²±â¿¡ ÇÏ´Â ¿É¼ÇÀÌ´Ù.
0Àº offÀ̸ç ÃÊ´ÜÀ§ ¼³Á¤À̸ç, óÀ½ WAL°ú PITRÀÇ ÁÖ±â¿Í ¼ÂÆÃÀ» üũÇÒ ¶§ ÄÑµÎ¸é ¾î´ÀÁ¤µµ Æ©´×¿¡ µµ¿òÀÌ µÈ´Ù.
- Archiving -
archive_command = ''
WAL LogÆÄÀϵîÀÇ ¹é¾÷󸮵 ¾²´Â °ÍÀ¸·Î DAT³ª ±âŸ ¹é¾÷ ¹Ìµð¾î³ª ¹é¾÷ DiskÂÊÀ¸·Î
¹é¾÷ÇÏ´Â ÀÏ·ÃÀÇ ½Ã½ºÅÛ CommandÀÌ´Ù. ¹®¹ýÀº ´ÙÀ½°ú °°´Ù.
archive_command = '/bin/cp -i %p /mnt/tape/%f > /var/log/wal-log-archiving.log'
½ÄÀ¸·Î »ç¿ëÇÑ´Ù. ¹®ÀÚ¿ Æ÷¸ËÆÃ¿¡´Â 2°¡Áö°¡ Àִµ¥ %p ´Â WAL Log Archive Àý´ë°æ·Î+ÆÄÀϸíÀ̸ç, %f´Â WAL Log
Archive File¸íÀÌ´Ù. Command LineÀÛ¼º½Ã Systeam ¸í·ÉÀ» ³»¸®´Â °ÍÀ¸·Î ¸ðµÎ ´Ù Àý´ë°æ·Î·Î »ç¿ëÇØ¾ß ÇÑ´Ù.
QUERY TUNING
- Planner Method Configuration -
À̿ɼÇÀº ÀÚÁÖ analyse³ª vacuumµîÀ¸·Î °¢Á¾ Äõ¸®¿¡ ´ëÇÑ Å½»ö ÃÖÀûÈ planÀ» ÇØÁÖ´Â ±â´ÉÀ¸·Î ¹«Á¶°Ç True·Î µÎ´Â°Ô
ÁÁ´Ù. ¸¸¾à¿¡ Äõ¸®°¡ 100,000¸¸ Äõ¸®¸¦ µÚÁö´Âµ¥ ù ½ÇÇàÈÄ 2¹øÂ°´Â ÃÖÀûÀÇ °æ·Î¸¦ ã¾Æ 1,000·¹Äڵ常 µÚÁö´Âµî
¼º´É Çâ»óÀ» º¸¿©ÁØ´Ù.
- Genetic Query Optimizer -
geqo = true
Genetic Query OptimizerÀÇ °¡µ¿¿©ºÎ °áÁ¤. À§ÀÇ °á°úÀû Æ©´×ÀÌ ¾Æ´Ñ À¯¿¬ÇÑ Äõ¸® Æ©´×À̶ó°í ÇÑ´Ù.
geqo_threshold = 12
Query¹®¿¡¼ From ÀýÀÇ °¹¼öÁ¦ÇÑÀ¸·Î 12°³ ÀÌ»óÀÇ FromÀÌ µé¾î°£ Äõ¸®¿¡ ´ëÇØ Genetic Query OptimizingÀ» ÇÑ´Ù.
geqo_effort = 5
GEQOÀÇ Äõ¸® ÃÖÀûÈ Plan½ÃÀÇ ¿©·¯°¡Áö¸¦ ÇØº¸´Â ±× ¹üÀ§¸¦ ¼³Á¤ÇÏ´Â °ÍÀÌ´Ù.
¸¹ÀÌÁÖ¸é ±×¸¶¸¸Å ÃÖÀûÈ´Â µÇ°ÚÁö¸¸, ±¦ÇÑ ½Ã°£ ¼Òºñ°¡ ÀÏ¾î ³´Ù.
ÃÖ´ë 10, ±âº»°ª(5) Á¤µµ°¡ Àû´çÇÒ µí ½Í´Ù.
geqo_pool_size =
GEQO°¡ »ç¿ëÇÒ Pool Size·Î º¸Åëµé 100~1,000Á¤µµ ¾´´Ù°í ¹®¼¿¡ µÇ¾î ÀÖ´Ù.
0À¸·Î µÎ¸é geqi_effortÀÇ °ª°ú Äõ¸®¿¡¼ È£ÃâÇÏ´Â TableÀÇ ¼ö¸¦ °¨¾ÈÇØ¼ ÀÚµ¿ °è»êÇÏ´Ï ±ÍÂúÀ¸½ÅºÐÀº 0À» Ãßõ.
geqo_generations = 0
GEQO ÃÖÀûÈ ¾Ë°í¸®ÁòÀÇ ÃÖ´ë ·çÇÁ¼öÀÌ´Ù. 0 ¼³Á¤½Ã geqo_effort¸¦ ÂüÁ¶ÇÏ°Ô µÈ´Ù.
- Other Planner Options -
default_statistics_target = 10
À§ Query Optimize Planner(,ALTER TABLE SET STATISTICS)¿¡¼ 󸮵ÇÁö ¾Ê´Â Äõ¸®¿¡ ´ëÇÑ Äõ¸®ÃÖÀûÈ·Î
°ª Áõ°¡´Â ¿ª½Ã³ª ¸¹Àº ½Ã°£À» ¼Ò¿äÇÏÁö¸¸ ÃÖÀûÈ µÉ°¡´É¼ºµµ ÀÖ±â´Â ÇÏ´Ï ÀûÀýÈ÷ »óȲ¿¡ ¸Â°Ô »ç¿ëÇÑ´Ù.
from_collapse_limit = 8
ÀÌ ¿É¼ÇÀº geqo_threshold º¸´Ù ÀûÀº ¼ö¸¦ ÁÖ¸ç geqo_threshold º¸´Ù ÀûÀº from ÀýÀ» °¡Áø Äõ¸®¿¡ ´ëÇÑ ÃÖÀûȸ¦ ´ÜÇàÇÑ´Ù.
join_collapse_limit = 8
À§¿Í °°Àº°ÍÀ¸·Î Äõ¸®ÀÇ JoinÀý´ë ´ëÇÑ ÃÖÀûȸ¦ ´ÜÇàÇÑ´Ù.
ERROR REPORTING AND LOGGING
- Where to Log -
log_destination = 'stderr'
¼¹ö ·Î±×¸¦ ¾îµð·Î Ãâ·ÂÇÒ °ÍÀÎÁö ¼³Á¤ÇÏ´Â °ÍÀÌ´Ù.
±âº»ÀÌ Standard ErrorÀε¥ ÀÌ °æ¿ì ȸ鿡 Ãâ·ÂµÈ´Ù.
ÇÏÁö¸¸ syslog½Ã¿¡´Â ¾Æ·¡ syslog_**¿É¼Ç¿¡ ¿µÇâÀ» ÁØ´Ù.
µû·Î ·Î±× ¼¹ö¸¦ µÑ °æ¿ì syslog·Î ³õ°í syslog_** ¿É¼ÇÀ» ÅëÇØ
¿ÜºÎ¼¹ö·Î Àü¼ÛÇÏ´Â °Íµµ ÁÁÀº ¹æ¹ýÀÌ´Ù.
redirect_stderr = true
stderr¿¡ ´ëÇØ ¾Æ·¡ ¼³Á¤µÈ ·Î±×ÆÄÀÏ Ã³¸®½Ã¿¡
Standard Error·Î Ãâ·ÂµÈ°Í ¸ðµÎ ´Ù ·Î±×ÆÄÀÏÈ ÇÏ´À³ÄÀÇ ¿É¼ÇÀÌ´Ù.
log_directory = 'pg_log'
Log ÆÄÀÏÀ» ÀúÀåÇÒ µð·ºÅ丮 ÁöÁ¤À¸·Î ´ç¿¬È÷ PostgreSQL ÀÇ Owner¿Í Group ±×¸®°í PermissionÀÌ ¼³Á¤µÈ
µð·ºÅ丮¿©¾ß¸¸ ÇÑ´Ù. ±âº»ÀûÀ¸·Î »ó´ë°æ·Î¸¦ ÁÖ¸é PostgreSQLÀÇ Data Folder¿¡ pg_log½ÄÀÇ Æú´õ°¡ »ý±â¸ç
µû·Î ÀúÀåÀ» ¿øÇϸé Àý´ë°æ·Î /dep/log/pgsql ½ÄÀ¸·Î ¼³Á¤ÇØÁÖ¸é µÈ´Ù.
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
¿¡·¯ ·Î±×ÆÄÀÏ¿¡ ´ëÇÑ Log Rotate File±¸¼ºÀ¸·Î À§¿Í °°ÀÌ ¼³Á¤Çϸé
postgresql-³â(4ÀÚ¸®)-¿ù-ÀÏ_½ÃºÐÃÊ.log ·Î »ý¼ºµÈ´Ù. ¸¸¾à¿¡ ºÐ´ÜÀ§³ª ÀÏ´ÜÀ§·Î ÇÏ°í ½ÍÀ¸¸é
log_filename = 'postgresql-%Y-%m-%d-%H.log' ½ÄÀÌ´Ù.
log_truncate_on_rotation = false
ÀÌ ¿É¼ÇÀ» ¾Æ·¡ µÎ°³ÀÇ ¿É¼ÇÀ» ÅëÇØ ·Î±×ÆÄÀÏÀ» ³ª´©´Â ¿É¼ÇÀ¸·Î log_filename ¿¡ ÁöÁ¤ÇÑ Çü½ÄÀÌ ¾Æ´Ñ
ÆÄÀÏ »ý¼º½Ã°£ ºÎÅÍÀÇ ½Ã°£À̳ª FIle Size¸¦ ÅëÇØ ·Î±×¸¦ ³ª´ ¶§ ¾´´Ù.
log_rotation_age = 1440
·Î±×ÆÄÀÏÀÌ ÃÖÃÊ »ý¼º½ÃÁ¡ºÎÅÍ 1440ÃÊ ÀÌ»óÁö³ª¸é ´Ù¸¥ ÆÄÀÏÀÌ »ý¼ºµÇ°Ô ÇÑ´Ù.
0Àº DisableÀÌ´Ù.
log_rotation_size = 10240
·Î±×ÆÄÀÏÀÇ Å©±â·Î Á¦¾ÈÇÏ´Â °ÍÀ¸·Î 10240byte¸é 1Mb´ÜÀ§·Î ÆÄÀÏÀ» ³ª´©¾î ÀúÀåÇÏ´Â °ÍÀÌ´Ù.
syslog_facility = 'LOCAL0'
¿¡·¯ ·Î±×¸¦ syslog·Î ¼³Á¤½Ã syslog daemonÀÇ facility¸¦ ÁÖ´Â °ÍÀ¸·Î LOCA0~7±îÁö ÀÖ´Ù.
syslog_ident = 'postgres'
Syslog ÀúÀå½Ã ±¸ºÐ¿ë ´Ü¾î·Î PostgreSQL DB ¹¹ ÀÌ·±½ÄÀ¸·Î µÑ ¼öµµ ÀÖ´Ù.
½Äº°¿ë Ű¿öµåÀÌ´Ï Àû´çÇÑ °É·Î ¼³Á¤ÇÑ´Ù.
- When to Log -
* ¿¡·¯ ·Î±× ·¹º§ ¼³¸í *
DEBUG[1-5] : ½ÇÁ¦ÀûÀ¸·Î´Â ÇÊ¿ä¾øÀ¸³ª PostgreSQL °³¹ßÀڵ鿡°Ô ÇÊ¿äÇÑ Á¤º¸¶ó°í º¸¸é µÈ´Ù.
INFO : À¯Àú·¹º§·Î ´Ü¼øÈ÷ À¯ÀúÂÊ¿¡ ¾Ë¸®´ÂÁ¤º¸.
NOTICE : À¯Àú¿¡°Ô À¯¿ëÇÏ°Ô ¾Ë¼ö Àְųª ´Ü¼øÈ÷ ÀÌ·¸°Ô ÇÏ´Â°Ô ÁÁ°Ú¾î? ÀÌ°Ç ÁÖÀÇÇØ¶ó´Â Á¤º¸.
WARNING : À¯Àú °æ°í Á¤µµ, ÀÌ°Ç ¾î¶»°Ôµç ó¸®Çضó´øÁö Transaction Start°¡ ¾ÈµÇ¾ú´Âµ¥ CommitÀ» ÇÑ´Ù´øÁöÇÏ´Â °æ°í.
ERROR : ÇöÀçÀÇ ¾÷¹«¼öÇàÀ» Áß´ÜÇÒÁ¤µµÀÇ ¿¡·¯.
LOG : °ü¸®ÀÚ¿¡°Ô ÇÊ¿äÇÑ Á¤º¸·ù. üũ¸®½ºÆ® Ȱµ¿Á¤º¸¶ó´øÁö ½ÇÁúÀûÀÎ DBA¿ë ¸Þ¼¼Áö.
FATAL : ÇöÀçÀÇ Äõ¸® ¼¼¼ÇÀ» Áß´ÜÇÏ°Ô ÇÏ´Â ¿¡·¯.
PANIC : ¸ðµç ¼¼¼Ç¿¡ ´ëÇÑ Áß´ÜÀÌ ÃÊ·¡µÇ´Â ¿øÀο¡ ´ëÇÑ ¿¡·¯.
client_min_messages = notice
·Î±× ±â·Ï»óÀÇ ·Î±× LevelÀÇ ¼³Á¤ÇÏ´Â °ÍÀ¸·Î µðÆúÆ®ÀÎ Notice¸¦ µÎ¸é
Notice,Warning,error ·Î±×¿¡ ´ëÇØ¼ Client¿¡ Àü¼ÛÇÑ´Ù.
log_min_messages = notice
À§¿Í °°À¸¸ç, ¼¹ö¿¡ ·Î±× ±â·Ï ·¹º§À» Á¤ÇÏ´Â °ÍÀÌ´Ù.
log_error_verbosity = default
À̰ÍÀº ·Î±× ±â·Ï½ÃÀÇ ÇØ´ç ¿À·ù¿¡ ´ëÇÑ Á¤º¸¿¡ ´ëÇѰÍÀ¸·Î terse·Î ¼³Á¤Çϸé ÃÖ´ëÇÑ ¸¹Àº ¿¡·¯·Î±×¿¡ ´ëÇÑ
Á¤º¸´Â ¹ÞÀ»¼ö ÀÖÀ¸¸ç default¿Í verbose´Â °°Àº ¿É¼ÇÀÌ´Ù.
log_min_error_statement = panic
»ç¿ëÀÚÀÇ Äõ¸®¿¡ ´ëÇÑ ¿¡·¯·Î±×·Î ·¹º§·Î ¼³Á¤°ª ¾Æ·¡ ¼öÀ§À϶§ ÀúÀåµÈ´Ù.
¸¸¾à¿¡ DB Application¿¡¼ Äõ¸® Fail¿¡ ´ëÇÑ Á¤º¸¸¦ µû·Î ¼öÁýÇÏÁö ¾ÊÀ¸¸é
·¹º§À» ¿Ã·Á ¼¹ö¿¡ ³²°Üµµ µË´Ï´Ù.
log_min_duration_statement = -1
ÀÌ ¿É¼ÇÀ» ÁöÁ¤µÈ ½Ã°£ÀÌ»ó ClientÀÇ ÁúÀÇ Äõ¸®¿¡ ´ëÇØ ÀÛ¾÷ÇÒ¶§ ·Î±×¸¦ ³²±ä´Ù.
ÀÌ°Ç Ãʱ⠰³¹ßÀ̶õ ·±ÄªÇÑÁö ¾ó¸¶ ¾ÈµÇ°Å³ª Tunning½ÃÁ¡¿¡¼ ǰÁú ±âÁؽð£À» ¼³Á¤ÇØ
³Ê¹« ÁöüµÇ´Â Äõ¸®¿¡ ´ëÇØ TunningÇÒ ¶§ ÇÊ¿äÇÏ´Ù. -1Àº DisableÀÌ¸ç ¹Ð¸®¼¼ÄÁµå·Î ÁöÁ¤ÇÒ¼ö ÀÖ´Ù.
silent_mode = false
±âº»¿É¼ÇÀ¸·Î´Â ȸ鿡 ¿¡·¯ Ãâ·ÂÀ» Çϴµ¥ ÀÌ°É ±×³É trueÇÏ¸é ¿¡·¯³ªµµ ¾Æ¹«·± ¸Þ¼¼Áö¸¦ º¼¼ö ¾ø´Ù.
- What to Log -
debug_print_parse = false
debug_print_rewritten = false
debug_print_plan = false
Debug ·¹º§ ¼³Á¤½Ã¿¡ ¹®¹ý Parsing, ReWrite, Plan¿¡ ´ëÇÑ µð¹ö±ëÁ¤º¸ Ãâ·Â ¿©ºÎ¼³Á¤À¸·Î
·¹º§À» Debug[1-5]°¡ ¾Æ´Ï¸é º° Àǹ̰¡ ¾ø´Ù.
debug_pretty_print = false
Debug Level¿¡¼ÀÇ ¿¡·¯ ·Î±×½Ã¿¡ Á»´õ ÀÚ¼¼È÷ º¸±â ½±°Ô ÇÒ ¶§,Áï Ç®¾î¼ º¸¿©Áشٴ °Í.
log_connections = false
Á¢¼Ó ·Î±×
log_disconnections = false
Á¢¼ÓÇØÁ¦ ·Î±×
log_line_prefix = ''
·Î±× ±â·Ï½Ã ¿øÇÏ´Â ÆÐÅÏÀ» Á¤ÇÏ¸é ·Î±×ÀÇ °¢ ÁÙ¿¡ Á¤ÇÑ ÆÐÅÏÀÇ Çü½ÄÀÇ µ¥ÀÌŸ°¡ ¾Õ¿¡ ºÙ¾î
Á»´õ ¶óÀδÜÀ§ ·Î±×ºÐ¼®¿¡ µµ¿òÀÌ µÈ´Ù.
%u : Á¢¼ÓÀ¯Àú¸í
%d : µðºñ¸í
%r : ¸®¸ðÆ®Á¢¼ÓÀÚÀÇ HostName (Resolve)¶Ç´Â IP¿Í Port
%p : ÇÁ·Î¼¼½º ID
%t : Unix TimeStamp (ÀϹÝÀûÀ¸·Î »ç¶÷ÀÌ º¸±â ½¬¿î(ÈçÇÑ) ÇüÅÂÀÇ ½Ã°£
%i : command tag
%c : session id
%l : session line number
%s : session start timestamp
%x : transaction id
%q : stop here in non-session processes
%% : '%' (¹®ÀÚ¿ Æ÷¸ËÆÃ ±¸ºÐÀÚ·Î %¸¦ ¾²´Ï ¾²°í ½ÍÀ¸¸é %%·Î ½á¾ß¸¸ ÇÑ´Ù.)
log_statement = 'none'
SQLÄõ¸® ·Î±×½Ã¿¡ ¿øÇÏ´Â ºÎºÐ¸¸ ³²±â°í ½ÍÀ» ¶§ noneÀº ¾Æ¹« °Íµµ ÇÏÁö ¾ÊÀ¸¸ç
mod(DML)(insert,update,delete,trunscate,copy from,prepare,explainµî),
ddl (create,aler,drop),
all˼ ALL
log_hostname = false
·Î±×¿¡¼´Â ±âº»ÀûÀ¸·Î Á¢¼ÓÀÚIP¸¦ ±â·ÏÇϳª ÀÌ°É trueÈ Çϸé resolve¶Ç´Â hostserver search(/etc/nsswaitch ¼³Á¤±âÁØÀ¸·Î)¸¦ ÇØ¼
ÇØ´ç IP¿¡ ´ëÇÑ Host¸íÀ» ã´Â´Ù.
|