Supjaustyk logus pagal metus, kad seną būtų galima išmesti
Į lentelę logs per metus susikaupia 500 milijonų eilučių — indeksai išsipučia, vacuum lėtėja, o pašalinti seną metą eilutė po eilutės užtrunka pernelyg ilgai. Sprendimas — supjaustyti lentelę į particijas pagal sukūrimo metus: kiekviena dalis gyvena atskira fizine lentele, ir pasenusius metus galima atmesti visus iš karto per milisekundes.
Sukurk lentelę logs su id (tipas BIGSERIAL), ts (timestamp su zona, privalomas) ir payload (tekstas), particionuotą pagal ts diapazoną. Sukurk dvi particijas — logs_2024 datoms nuo 2024 m. sausio 1 d. iki 2025 m. sausio 1 d. (viršutinė riba neįeina) ir logs_2025 kitiems metams pagal tą patį principą. Eilutės įterpimas pats pateks į reikiamą particiją pagal datą.
Laukiamo rezultato pavyzdys
Taip atrodo teisingas atsakymas — jo eilučių skaičius yra savitas, jis neprivalo sutapti su schemos lentelėmis.
| relname |
|---|
| logs_2024 |
| logs_2025 |
Prisijunkite, kad matytumėte pateikimų istoriją
PrisijungtiPrisijunkite, kad naudotumėte DI mentorių
PrisijungtiPradinės schemos nėra
Ši užduotis prasideda be lentelių — sukursite jas naudodami CREATE TABLE.