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 9: | Sor 9: | ||
| Tehát csak olvasni szeretnénk az adatbázisból, | Tehát csak olvasni szeretnénk az adatbázisból, | ||
| - | ===== Statisztikák | + | ===== Statisztikagyűjtés |
| 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.1682032653.txt.gz · Utolsó módosítás: 2023/04/20 23:17 szerkesztette: rblst