Ова страница је машински преведена. Прочитајте енглески оригинал. English

IBSurgeon библиотека

FirebirdSQL: интерни фајлови, привремени фајлови и променљиве окружења

_by Vasily Sidorov, Sep 2, 2022, IBSurgeon

Iskusni Firebird DBA znaju da Firebird može zahtevati prilično veliku količinu prostora na disku za čuvanje internih i privremenih datoteka. Preporučena veličina prostora na disku za privremene datoteke produkcijskog sistema je 30-40 GB, ali za sisteme sa velikim opterećenjem može biti i više.

U ovom članku ćemo opisati tipove internih i privremenih datoteka Firebird-a, a takođe ćemo razmotriti kako se one čuvaju i upravljaju kroz konfiguracione parametre i promenljive okruženja operativnog sistema. Članak nastavlja seriju članaka i materijala posvećenih savladavanju instalacije i konfiguracije Firebird-a.

Važno napomenuti od strane Firebird core developera:

Nikada, nikada, NIKADA ne postavljajte/ menjajte FIREBIRD_LOCK env promenljivu - osim ako VRLO DOBRO znate šta radite.

Eksplicitna sugestija od IBSurgeon tima:

Ne menjajte FIREBIRD_LOCK.

Za ostale privremene datoteke - pogledajte ovo.

Interne datoteke u Firebird-u

Interne datoteke su datoteke koje Firebird koristi za obavljanje svojih internih operacija. Ove datoteke ne bi trebalo da menjaju ili diraju korisnici ili softver trećih strana. Informacije ispod su samo za referencu.

Uobičajeni obrazac imenovanja internih datoteka

Firebird interne datoteke koriste prefiks fbNN_, gde NN može biti

  • glavni broj ODS (ON-Disk Structure) (ODS 12 za Firebird 3.0, ODS 13 za Firebird 4.0), tj. datoteka počinje sa fb13.
  • NN može biti skraćeni broj verzije - npr. datoteka može početi sa fb50.

Takođe, može postojati prefiks fb_, koji se takođe koristi za privremene datoteke.

Tipovi internih datoteka u Firebird-u

Postoje sledeći glavni tipovi internih datoteka u Firebird-u:

  1. fb_lock_ lock datoteke - datoteke koje koristi Firebird lock menadžer
  2. fbNN_monitor_ datoteke sa podacima monitoring tabela
  3. fbNN_trace_ datoteka sa podacima za trace sesije
  4. fb_event_ datoteka sa sačuvanim baferima događaja
  5. fb_user_mapping datoteke sa podacima mapiranja korisnika
  6. datoteke sa internim podacima za trace sesije
  7. flag datoteke (nulte veličine)
  8. fb_repl_ replikacione datoteke

Razmotrimo detaljnije interne datoteke Firebird-a.

Lock datoteke

Lock datoteke imaju prefiks fb_lock_. Koristi ih lock menadžer Firebird-a za sinhronizaciju pristupa objektima unutar Firebird baze podataka i između Firebird instanci.

Lock datoteke se kreiraju pri otvaranju datoteke baze podataka i brišu se kada se zatvori.

Podrazumevano, datoteka baze podataka se zatvara kada se poslednja veza prekine. Od Firebird 3.0, moguće je zadržati datoteku baze podataka otvorenu u Firebird-u nakon prekida poslednje veze koristeći LINGER opciju.

Početna veličina lock datoteke se postavlja parametrom LockMemSize u firebird.conf. Radna veličina se razlikuje u zavisnosti od arhitekture: SuperServer koristi lock datoteke manje intenzivno nego Classic i SuperClassic. Tipična veličina lock tabele je oko 30-50 MB, ali za servere sa hiljadama veza u Classic/SuperClassic, veličina lock datoteka može narasti do 2 GB. 2 GB je implementaciono ograničenje za lock datoteke u standardnom Firebird-u.

Datoteke sa podacima iz monitoring tabela

Počevši od verzije 2.1, Firebird ima monitoring tabele. Ove tabele se ne čuvaju unutar baze podataka, podaci za monitoring se prikupljaju na zahtev i čuvaju u internim datotekama sa obrascem imena fbNN_monitor_.

Veličina datoteka sa podacima monitoring tabela zavisi od broja veza i njihove aktivnosti (transakcije, upiti, procedure, itd). Takođe, količina i veličina fb_NN_monitor_ datoteka zavisi od broja zahteva za monitoring tabelama iz različitih veza (ovo je jedan od razloga zašto ne biste trebali koristiti MON$ tabele za zadatke koji nisu monitoring).

Datoteke sa podacima za trace sesije

Obrazac imena datoteke fbNN_trace_ čuva vezu ka aktivnoj datoteci trace sesije. Datoteke sa obrascem imena fb_trace_ sadrže informacije o trace sesiji. To je vrsta bafera za podatke praćenja. Maksimalna veličina fb_trace datoteke je ograničena parametrom MaxUserTraceLogSize u firebird.conf. Ako se ovaj bafer prepuni, praćenje će se automatski prekinuti.

Datoteka za bafer događaja

Datoteke sa obrascem imena fb_event_ su baferi u kojima Firebird čuva neisporučene događaje za klijentske aplikacije.

Datoteke sa podacima mapiranja korisnika

Datoteke fb_user_mapping se koriste za keširanje mapiranja korisnika u Firebird instancama.

Flag datoteke

U POSIX sistemima, Firebird koristi flag datoteke nulte veličine - fb_guard, fb_init, fb_port_NUMBER. Ove datoteke se koriste pri pokretanju Firebird-a.

Replikacione datoteke

U Firebird 4 i HQbird datoteke fb_repl_ sadrže interne podatke za replikacione procese.

Lokacija internih datoteka

Podrazumevano, sve interne datoteke Firebird-a se čuvaju u istom folderu: na Windows-u to je C:\ProgramData\firebird, na Linux-u - /tmp/firebird. Imajte na umu da folder treba da ima odgovarajuće dozvole, kako bi Firebird instanca mogla da kreira i radi sa datotekama tamo!

Moguće je promeniti lokaciju foldera sa internim Firebird datotekama definisanjem promenljive okruženja FIREBIRD_LOCK, ali to ne preporučujemo.

NAPOMENA: da bi se izbeglo oštećenje baze podataka, svi Firebird procesi koji otvaraju istu datoteku baze podataka treba da rade sa istim FIREBIRD_LOCK. Molimo vas da ne kreirate ovu promenljivu i koristite podrazumevane lokacije.

Veličina internih datoteka

Praktično, ukupna veličina internih Firebird datoteka je oko 100-200 MB, do 2 GB kao maksimalno poznato.

Privremene datoteke u Firebird-u

Privremene datoteke kreira Firebird engine za čuvanje privremenih podataka koji nastaju kao rezultat korisničkih operacija - upiti sa DISTINCT, na primer. Privremene datoteke mogu biti veoma velike u produkcijskim sistemima sa velikim opterećenjem, tako da je neophodno za iskusnog DBA da bude u stanju da prepozna tipove privremenih datoteka i, ako je potrebno, podesi Firebird konfiguraciju ili alocira prostor na disku za čuvanje privremenih datoteka.

Lokacija privremenih datoteka u Firebird-u

Firebird kreira privremene datoteke u folderu koji je specificiran promenljivim okruženja FIREBIRD_TMP, TEMP, TMP (tim redosledom). Ako ne postoje takve promenljive, privremene datoteke će se kreirati u C:\Temp na Windows-u ili /tmp na Linux-u.

Praktično, na Windows-u možemo videti Firebird privremene datoteke u C:\Windows\Temp (odgovara promenljivoj okruženja TEMP), na Linux-u u /tmp.

Tipovi privremenih datoteka u Firebird-u

Postoje sledeće privremene datoteke (sve koriste prefiks fb_):

  1. fb_table_ tabelarni objekti, uključujući, ali ne ograničavajući se na, privremene tabele
  2. fb_blob_ blob-ovi i autonomne transakcije
  3. fb_undo_ undo podaci
  4. fb_recbuf_ koristi se za čuvanje međupodataka u aktivnim upitima, virtuelnim tabelama, itd
  5. fb_merge_ podaci za hash join-ove
  6. fb_sort_ sortiranja (za upite sa DISTINCT/ORDER BY/GROUP BY i za kreiranje/rekreiranje indeksa)
  7. fb_tpc_ fb_tpc_ podaci - od v4, lista svih poznatih transakcija sa pridruženim commit brojevima
  8. fb_snap_ podaci za - od v4, lista svih aktivnih snapshot-a baze podataka

Kako promeniti lokaciju privremenih datoteka?

Za Firebird verzije pre 4, moguće je definisati specifičan folder za čuvanje privremenih datoteka tipova 4-8 sa Firebird konfiguracionim parametrom TempDirectories.

Za Firebird 4 i novije, novi konfiguracioni parametar TempTableDirectory omogućava specificiranje foldera za čuvanje privremenih tabela tipova 1-3. Može se postaviti u firebird.conf i databases.conf.

Promenljive okruženja za Firebird

Firebird može koristiti sledeće promenljive okruženja operativnog sistema (ako su definisane):

  • FIREBIRD folder sa Firebird konfiguracionim datotekama
  • FIREBIRD_LOCK folder sa internim datotekama
  • FIREBIRD_MSG folder sa datotekom poruka (firebird.msg)
  • FIREBIRD_TMP folder za privremene datoteke

Praktično, FIREBIRD_TMP je jedina promenljiva koju ima smisla definisati ako imate veliki razlog da čuvate privremene datoteke na specifičnoj lokaciji koja nije podrazumevana.

Imajte na umu da ako putanja u FIREBIRD_TMP bude nevažeća (ne postoji ili nema dovoljno dozvola), to će dovesti do kritičnih grešaka koje sprečavaju Firebird da radi.

Важно обавештење од основних програмера Firebird-а:

Никада, никада, НИКАДА не постављајте/мењајте FIREBIRD_LOCK променљиву окружења - осим ако ВРЛО ДОБРО знате шта радите.

Експлицитна сугестија IBSurgeon тима:

Никада не мењајте FIREBIRD_LOCK. Ова информација је само за референцу.

За друге привремене датотеке - погледајте ово.

Уместо закључка: одговор на веома често питање

Многи DBA питају - да ли треба да користимо RAM-диск или tmpfs за чување Firebird интерних и/или привремених датотека?

Кратак одговор је: Не, боље подесите Firebird конфигурацију. Ако имате много меморије, можете повећати вредност за DefaultDBCachePages (само за SuperServer) и повећати TempCacheLimit (у верзијама 3+ Firebird дозвољава коришћење TempCacheLimit веће од 2Gb).

Ако нисте сигурни које вредности треба користити, молимо вас да користите Firebird Configuration Calculator, који креира оптималне и безбедне конфигурације за специфичне хардвер/VM параметре.

Дужи одговор: Firebird је дизајниран да већи део привремених и интерних датотека држи у меморији, али, пошто практично постоје ситуације када привремени објекти постану веома велики, такође има механизам да их чува на диску. Firebird ефикасно користи OS механизме (mmap, кеш система датотека, привремене датотеке, итд.) да кешира привремене и интерне датотеке у меморији када је то могуће и разумно. Подешавање Firebird-а треба прво урадити кроз Firebird конфигурацију, а затим OS (подесити локацију привремених датотека, различите опције за подешавање кеша датотека, итд.).

Повезани линкови

Видео снимци:

Презентација о подешавању коришћења меморије

Слободно постављајте питања или шаљите повратне информације на [email protected]