#805

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

Jūsų užklausos rezultatas bus rodomas čia

Pradinės schemos nėra

Ši užduotis prasideda be lentelių — sukursite jas naudodami CREATE TABLE.