Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi · Oppitunti

Indeksien uudelleenrakennus ja ylläpito

Ymmärtäkää, milloin ja miten indeksit rakennetaan uudelleen, analysoikaa indeksien paisumista ja ylläpitäkää indeksien kuntoa optimaalisen suorituskyvyn saavuttamiseksi.

Oppitunti 3/412 vaihetta

Indeksien uudelleenrakennus ja ylläpito on ilmainen Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-kurssilla on yhteensä 4 oppituntia.

Indeksien pitäminen kunnossa

Indeksit ovat tärkeitä tietokannan suorituskyvyn kannalta, mutta niiden tavoin myös niitä on ylläpidettävä. Ajan mittaan indeksit voivat muuttua tehottomammiksi pirstoutumisen ja ”turpoamisen” vuoksi.

Tässä oppitunnissa opitte, miksi indeksien ylläpito on tärkeää, miten tunnistatte turpoamisen kaltaiset ongelmat ja miten voitte korjata ne indeksin uudelleenrakentamisella.

Mitä indeksin turpoaminen tarkoittaa?

Indeksin turpoamisella tarkoitetaan indeksin sisällä olevaa hukkatilaa. Sitä syntyy, kun indeksimerkinnät vanhentuvat mutta niitä ei poisteta heti tai kun indeksirakenteesta tulee tehoton.

Tämä ”turpoaminen” voi johtaa seuraaviin ongelmiin:

  • Indeksitiedostot kasvavat ja kuluttavat enemmän levytilaa.
  • I/O-toimintojen määrä kasvaa, mikä hidastaa kyselyitä.
  • Välimuistin tehokkuus heikkenee.

Miten turpoaminen kertyy

PostgreSQL käyttää tekniikkaa nimeltä MVCC (Multi-Version Concurrency Control). Kun UPDATE- tai DELETE-komennolla muokataan tai poistetaan rivejä, vanhoja versioita (niin kutsuttuja ”kuolleita monikoita”) ei poisteta heti taulusta tai sen indekseistä.

VACUUM-prosessi siivoaa nämä kuolleet monikot. Jos VACUUM ei kuitenkaan suoriteta riittävän usein tai tapahtumat pitävät siivouksen estäviä lukituksia, kuolleita monikoita kertyy ja indeksi alkaa turvota.

Indeksin turpoamisen tunnistaminen

Turpoamisen havaitseminen voi olla hankalaa. Pelkkää tiedoston kokoa ei voi tarkastella, koska se sisältää myös hyödylliset tiedot. PostgreSQL:n järjestelmäluetteloista voi kuitenkin arvioida turpoamista vertaamalla indeksin tosiasiallisesti käyttämää tilaa siihen tilaan, jonka sen pitäisi teoriassa viedä.

Tärkeitä tauluja ovat tässä pg_class (relaatioiden koot) ja pg_stat_user_indexes (käyttötilastot).

Koodi: indeksin koon tarkistaminen

Vaikka turpoamisen täydellinen laskeminen on monimutkaista, indeksin nykyisen koon voi tarkistaa helposti. Nopeasti kasvava indeksin koko ilman vastaavaa tietojen kasvua voi viitata turpoamiseen. Korvatkaa 'your_index_name' todellisen indeksin nimellä.

SELECT
  c.relname AS index_name,
  pg_size_pretty(pg_relation_size(c.oid)) AS index_size
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE n.nspname = 'public'
  AND c.relkind = 'i'
  AND c.relname = 'accounts_pkey'; -- Example: primary key index

Mitä uudelleenindeksointi tarkoittaa?

Uudelleenindeksointi tarkoittaa indeksin rakentamista alusta alkaen. Uudelleenindeksoinnissa PostgreSQL luo indeksistä kokonaan uuden ja puhtaan version.

Tämä uusi indeksi on:

  • Vapaa turpoamisesta ja pirstoutumisesta.
  • Tallennuksen ja käytön kannalta optimoitu.
  • Mahdollisesti kyselyissä nopeampi.

Milloin indeksi kannattaa rakentaa uudelleen

Uudelleenindeksointia ei tarvitse tehdä päivittäin, mutta se on tärkeää useissa tilanteissa:

  • Indeksin voimakas turpoaminen: Kun turpoaminen kasvattaa indeksin kokoa merkittävästi ja heikentää suorituskykyä.
  • Suorituskyvyn heikkeneminen: Jos kyselysuunnitelmat osoittavat indeksien muuttuneen ajan mittaan tehottomammiksi.
  • Rakennekaavion muutokset: Merkittävien muutosten jälkeen, jos ne saattavat vaikuttaa indeksirakenteeseen.
  • PostgreSQL:n päivitykset: Joskus suositeltavaa optimaalisen suorituskyvyn saavuttamiseksi uusissa versioissa.

REINDEX-komento

PostgreSQL tarjoaa REINDEX-komennon indeksien uudelleenrakentamiseen. Voitte rakentaa uudelleen yksittäisiä indeksejä, taulun kaikki indeksit tai jopa tietokannan kaikki indeksit.

CONCURRENTLY-valitsin on tuotantojärjestelmissä ratkaisevan tärkeä, sillä sen avulla indeksin voi rakentaa uudelleen estämättä taulun luku- tai kirjoitustoimintoja. Ilman sitä taulu lukitaan toiminnon ajaksi.

Koodi: indeksin uudelleenrakentaminen

Tietyn indeksin uudelleenrakentamiseen käytetään komentoa REINDEX INDEX. Muistakaa käyttää tuotannossa CONCURRENTLY-valitsinta, jotta toiminto ei estä muita toimintoja. Korvatkaa 'my_table_col_idx' oman indeksinne nimellä.

REINDEX INDEX CONCURRENTLY my_table_col_idx; -- Example: a specific index
-- Or without CONCURRENTLY (blocks access):
-- REINDEX INDEX my_table_col_idx;

Koodi: taulun indeksien uudelleenrakentaminen

Voitte myös rakentaa tietyn taulun kaikki indeksit uudelleen komennolla REINDEX TABLE. Tämä on kätevää, mutta vaikuttaa kaikkiin kyseisen taulun indekseihin. Myös tässä tapauksessa CONCURRENTLY-valitsimen käyttöä suositellaan vahvasti.

REINDEX TABLE CONCURRENTLY my_table; -- Reindexes all indexes on 'my_table'
-- Or without CONCURRENTLY (blocks access):
-- REINDEX TABLE my_table;

Indeksien ylläpidon tarkistus

Mikä seuraavista on ensisijainen syy käyttää komentoa REINDEX ... CONCURRENTLY tuotantokäytössä olevassa PostgreSQL-ympäristössä?

Indeksien ylläpidon työkalupakki

Onnittelut! Olette oppineet PostgreSQL:n indeksien ylläpidon keskeiset asiat.

  • Osaatte nyt tunnistaa indeksin turpoamisen ja ymmärtää, miten se vaikuttaa suorituskykyyn.
  • Tiedätte, milloin ja miksi indeksit kannattaa rakentaa uudelleen.
  • Olette nähneet, miten REINDEX-komentoa käytetään, erityisesti tärkeän CONCURRENTLY-valitsimen kanssa.

Indeksien säännöllinen seuranta ja ylläpito auttavat pitämään PostgreSQL-tietokannan sujuvana ja tehokkaana!

Aloita maksutta

Opi Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
11
Oppitunnit
44

Usein kysytyt kysymykset

Onko oppitunti ”Indeksien uudelleenrakennus ja ylläpito” ilmainen?

Kyllä – oppitunnin ”Indeksien uudelleenrakennus ja ylläpito” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-kurssin, päivitä CoddyKit PROhon. Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Indeksien uudelleenrakennus ja ylläpito”?

Ymmärtäkää, milloin ja miten indeksit rakennetaan uudelleen, analysoikaa indeksien paisumista ja ylläpitäkää indeksien kuntoa optimaalisen suorituskyvyn saavuttamiseksi. Harjoittelet Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Indeksien uudelleenrakennus ja ylläpito”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-oppitunnilla?

Kyllä. Jokainen Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Kyselysuunnitelmien analysointi EXPLAIN-komennolla
  2. Indeksien käytön valvonta
  3. Indeksien uudelleenrakennus ja ylläpito
  4. Indeksikustannusten säätäminen ANALYZElla ja tilastotiedoilla
← Takaisin: Edistynyt PostgreSQL: indeksointi, osiointi ja replikointi