it:postgres_user_group:cikkek:miert_ir_az_adatbazis_hogyha_olvas
Különbségek
A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
Előző változat mindkét oldalonElőző változatKövetkező változat | Előző változat | ||
it:postgres_user_group:cikkek:miert_ir_az_adatbazis_hogyha_olvas [2023/04/20 23:17] – [Statisztikák] rblst | it:postgres_user_group:cikkek:miert_ir_az_adatbazis_hogyha_olvas [2023/04/20 23:53] (aktuális) – [Konklúzió] rblst | ||
---|---|---|---|
Sor 1: | Sor 1: | ||
====== Miért ír az adatbázis, hogyha csak olvasunk belőle? ====== | ====== Miért ír az adatbázis, hogyha csak olvasunk belőle? ====== | ||
- | Első olvasatra | + | Első ránézésre |
===== Klienseket kiszolgáló folyamatok ===== | ===== Klienseket kiszolgáló folyamatok ===== | ||
Sor 12: | Sor 12: | ||
A klienseket kiszolgáló folyamatok (client backends) az általuk végzett olvasások végeztével statisztikát küldenek a '' | A klienseket kiszolgáló folyamatok (client backends) az általuk végzett olvasások végeztével statisztikát küldenek a '' | ||
- | Tehát a statisztikagyűjtés mindenképpen generál írási művelet, még akkor is, ha csak olvasunk az adatbázisból. | + | Tehát a statisztikagyűjtés mindenképpen generál írási művelet, még akkor is, ha csak olvasunk az adatbázisból. Ezt ugyan ki lehet kapcsolni, de nem érdemes, mert a statisztikák hiánya nagyban korlátozná a PostgreSQL képességeit. |
===== Hint bitek ===== | ===== Hint bitek ===== | ||
- | Az adatbázistáblák minden sorához tárolja a rendszer, hogy melyik tranzakció hozta létre, és melyik módosította az adott sort. Minden egyes sorhoz | + | Az adatbázistáblák minden sorához tárolja a rendszer, hogy melyik tranzakció hozta létre, és melyik módosította az adott sort. Minden egyes sorhoz |
- | Ha egy táblát módosító | + | Ha egy tranzakció véget ér, a tranzakció státusza (commit vagy abort) |
- | A hint bitek frissítése úgy történik, hogy egy módosított adatblokkokból történő első olvasás során a commit logban lévő információ beíródik | + | A hint bitek frissítése úgy történik, hogy egy módosított adatblokkokból történő első olvasás során a commit logban lévő információ beíródik |
+ | |||
+ | Tehát ezúttal is azzal szembesülünk, | ||
===== Ellenőrzőösszegek ===== | ===== Ellenőrzőösszegek ===== | ||
- | Az esetleges adatkorrupció korai detektálása érdekében érdemes bekapcsolni azt a funkciót, hogy a PostgreSQL számítson ellenőrzőösszeget az egyes adatblokkokra (data checksums). A data checksums opció bekapcsolása viszont azzal is jár, hogy amikor egy checkpoint művelet után egy adatblokk először módosul, akkor beíródik a blokk teljes tartalma a WAL-ba (Write-Ahead Log, a tranzakciós napló, | + | Az esetleges adatkorrupció korai detektálása érdekében érdemes bekapcsolni azt a funkciót, hogy a PostgreSQL számítson ellenőrzőösszeget az egyes adatblokkokra (data checksums). A data checksums opció bekapcsolása viszont azzal is jár, hogy amikor egy checkpoint művelet után egy adatblokk először módosul, akkor beíródik a blokk teljes tartalma a WAL-ba (Write-Ahead Log, avagy tranzakciós napló, |
+ | |||
+ | Ez a naplózás megtörténik akkor is, ha csak a hint bitek változtak meg a blokkban, hiszen a bitek megváltozása miatt is változik a blokk ellenőrzőösszege. Ez tehát azt jelenti, hogy minden olyan blokk első olvasása, amely a legutolsó checkpoint óta változott, WAL-fájlba írást fog eredményezni. | ||
- | Ez a naplózás megtörténik akkor is, ha csak a hint bitek változtak meg a blokkban, vagyis időközben véget ért a blokkot módosító tranzakció, hiszen a bitek megváltozása miatt is változik a blokk ellenőrző-összege. | + | Különösen adattárházakból történő lekérdezés esetén jelenthet komolyabb extra I/ |
- | Ez tehát azt jelenti, hogy minden olyan blokk első olvasása, amely a legutolsó checkpoint óta változott, WAL-ba írást fog eredményezni. Ez különösen adattárházakból történő lekérdezés esetén jelenthet komolyabb extra I/ | + | ===== Konklúzió ===== |
+ | Remélem, a fenti példákkal sikerült rámutatni arra, hogy a PostgreSQL egy összetett rendszer, és a címben feltett kérdés nem is mindig érdektelen. Szívesen látunk kommentben további példákat arra, amikor | ||
it/postgres_user_group/cikkek/miert_ir_az_adatbazis_hogyha_olvas.1682032671.txt.gz · Utolsó módosítás: 2023/04/20 23:17 szerkesztette: rblst