| 1 | = Tuning PostgreSQL = |
| 2 | |
| 3 | PostgreSQL jest jedną z najbardziej zaawansowanych baz na świecie, wydajnością dorównuje liderom, jednakże parametry standardowej instalacji raczej nie są zaprojektowane do osiągania największej wydajności. |
| 4 | |
| 5 | W celu zwiększenia wydajności na większości współczesnych maszyn należy przeprowadzić zmianę niektórych parametrów. Spośród nich najważniejsze to: |
| 6 | |
| 7 | == shared_buffers == |
| 8 | Konfiguracja shared_buffers określa, ile pamięci jest poświęcone dla PostgreSQL do buforowania danych. Rozsądną wartość początkową shared_buffers jest 1/4 pamięci w systemie. |
| 9 | Należy pamiętać, że w systemie Windows, duże wartości shared_buffers nie są tak skuteczne, prawdopodobnie lepsze wyniki można otrzymać utrzymując stosunkowo niskie shared_buffers, pozwalając korzystać z pamięci podręcznej systemu operacyjnego. |
| 10 | |
| 11 | Prawdopodobnie należy w ślad za tym ustawieniem zwiększyć ustawienie w systemie operacyjnym ''kernel.shmmax''. W tym celu należy dopisać do /etc/sysctl.conf (256MB - jeżeli w systemie posiadamy 1GB RAM). |
| 12 | |
| 13 | {{{ |
| 14 | /etc/sysctl.conf |
| 15 | kernel.shmmax = 268435456 |
| 16 | }}} |
| 17 | |
| 18 | |
| 19 | {{{ |
| 20 | /etc/postgresql/8.3/postgresql.conf |
| 21 | shared_buffers = 196MB |
| 22 | }}} |
| 23 | |
| 24 | == effective_cache_size == |
| 25 | Należy ustawić ile pamięci jest do buforowania dysku pozostałości po uwzględnieniu tego, co jest używane przez system operacyjny, dedykowanej pamięci PostgreSQL, i innych aplikacji. Jeśli jest zbyt niska, indeksy nie mogą być wykorzystywane do wykonywania kwerend w taki sposób jaki można się spodziewać. |
| 26 | Ustawianie effective_cache_size do 1/2 całkowitej pamięci jest normalnym konserwatywnym ustawieniem. |
| 27 | Można lepiej oszacować to ustawienie patrząc na statystyki OS. W systemach uniksowych, dodać należy wartości ''free + cached'' z polecenia ''free''. |
| 28 | |
| 29 | {{{ |
| 30 | [root@edokumenty ~]# free |
| 31 | total used free shared buffers cached |
| 32 | Mem: 1035236 948720 86516 0 11688 761988 |
| 33 | -/+ buffers/cache: 175044 860192 |
| 34 | Swap: 497972 19040 478932 |
| 35 | }}} |
| 36 | |
| 37 | W systemie Windows sprawdzić to można Menedżerze zadań na zakładce Wydajność - pole ''Buforowana''. |
| 38 | |
| 39 | == work_mem == |
| 40 | Work_mem ustawić należy na nieco wyższą wartość niż jest domyślnie, ale należy uważać aby nie przesadzić. |
| 41 | |
| 42 | Rozmiar tej opcji jest stosowany do każdego rodzaju pracy wykonywanej przez każdego użytkownika. Jeśli ustawimy go na 50MB, i mamy 30 użytkowników to wkrótce obciążenie wzrośnie do 1,5 GB pamięci rzeczywistej. Jeśli tyle posiadamy w systemie - to OK. |
| 43 | |