рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрд╕рд╛ рдХрдореА рдХрд░рд╛рдпрдЪрд╛

рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрд╕рд╛ рдХрдореА рдХрд░рд╛рдпрдЪрд╛

рд╢реБрднреЗрдЪреНрдЫрд╛, рдирдорд╕реНрдХрд╛рд░.

рдЬрд░ рдХреЛрдгреА рд╡реНрдпрд╡рд╕реНрдереЗрдЪреЗ рд╢реЛрд╖рдг рдХрд░рдд рдЕрд╕реЗрд▓ рдЧреНрд░реЗрдлрд╛рдЗрдЯ-рд╡реЗрдм рдЖрдгрд┐ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рдЖрд▓реА рдХреБрдЬрдмреБрдЬрдгреЗ (IO, рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рдд рдЖрд▓реА), рдирдВрддрд░ рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕рд▓рд╛ рдмрджрд▓реА рдореНрд╣рдгреВрди рдХрд╛рд╕реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдПрдХрд╛рдХрдбреЗ рдЕрд╕рддреЗ. рд╣реЗ рд╡рд┐рдзрд╛рди рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рдХреА рддреГрддреАрдп-рдкрдХреНрд╖ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрдзреАрдЪ рдбрд┐рдорди рдкреНрд░рд╛рдкреНрдд рдХрд░рдгрд╛рд░реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рдХрд╛рд░реНрдмрди рд░рд╛рдпрдЯрд░ рдХрд┐рдВрд╡рд╛ рдЧреЛ-рдХрд╛рд░реНрдмрди.

рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рд╕реЛрдбрд╡рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡реНрд╣рд┐рд╕реНрдкрд░рдордзреВрди 2TiB рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреЗ 300GiB рдордзреНрдпреЗ рдмрд╕рддрд╛рдд. рдореА рддрдкрд╢реАрд▓рд╡рд╛рд░ рддреБрд▓рдирд╛ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА; рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ рднрд░рдкреВрд░ рд▓реЗрдЦ рдЖрд╣реЗрдд. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЕрд▓реАрдХрдбреЗ рдкрд░реНрдпрдВрдд, рдЖрдордЪреНрдпрд╛ рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рд╕реНрдЯреЛрд░реЗрдЬрд╕рд╣ рд╕рд░реНрд╡рдХрд╛рд╣реА рдкрд░рд┐рдкреВрд░реНрдг рдирд╡реНрд╣рддреЗ.

рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдЬрд╛рдЧреЗрд╕рд╣ рд╕рдорд╕реНрдпрд╛

рдкрд╣рд┐рд▓реНрдпрд╛ рджреГрд╖реНрдЯреАрдХреНрд╖реЗрдкрд╛рдд, рд╕рд░реНрд╡рдХрд╛рд╣реА рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рдЦрд╛рд▓реАрд▓ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг, рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдХреАрдорд╕рд╛рдареА рдПрдХ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рддрдпрд╛рд░ рдХрд░рд╛ (рдкреБрдвреЗ retention), рдирдВрддрд░ рдЧреНрд░реЗрдлрд╛рдЗрдЯ-рд╡реЗрдмрд╕рд╛рдареА рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рдмреЕрдХрдПрдВрдбрдЪреНрдпрд╛ рд╢рд┐рдлрд╛рд░рд╕реАрдиреБрд╕рд╛рд░ рдПрдХ рдЯреЗрдмрд▓ рддрдпрд╛рд░ рдХрд░рд╛: рдХрд╛рд░реНрдмрди-рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕+рдЧреНрд░реЗрдлрд╛рдЗрдЯ-рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдХрд┐рдВрд╡рд╛ graphouse, рдХреЛрдгрддрд╛ рд╕реНрдЯреЕрдХ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ рдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди. рдЖрдгрд┐... рдЯрд╛рдЗрдо рдмреЙрдореНрдм рдирд┐рдШреВрди рдЬрд╛рддреЛ.

рдХреЛрдгрддреЗ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ * рдХреБрдЯреБрдВрдмрд╛рдЪреНрдпрд╛ рдЗрдВрдЬрд┐рдирдЪреНрдпрд╛ рд╕рд╛рд░рдгреНрдпрд╛рдВрдордзреНрдпреЗ рдЗрдиреНрд╕рд░реНрдЯ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рдЖрдгрд┐ рдбреЗрдЯрд╛рдЪрд╛ рдкреБрдвреАрд▓ рдЬреАрд╡рди рдорд╛рд░реНрдЧ рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.MergeTree рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ (рд╡рд░реВрди рдШреЗрддрд▓реЗрд▓реЗ рдЪрд╛рд░реНрдЯ рд╕рд╛рджрд░реАрдХрд░рдгреЗ рдЕреЕрд▓реЗрдХреНрд╕реА рдЭрд╛рдЯреЗрд▓рдкрд┐рди):

  • рдШрд╛рддрд▓реЗ ╨▒╨╗╨╛╨║ рдбреЗрдЯрд╛ рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╣реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЖрд▓реЗ рд╣реЛрддреЗ.
    рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрд╕рд╛ рдХрдореА рдХрд░рд╛рдпрдЪрд╛
  • рдЕрд╢рд╛ рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХрдЪреА рдбрд┐рд╕реНрдХрд╡рд░ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдХреА рдиреБрд╕рд╛рд░ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд▓реА рдЬрд╛рддреЗ. ORDER BYрдЯреЗрдмрд▓ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ.
  • рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, ╨║╤Г╤Б╨╛╨║ (part) рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдХрд╡рд░ рд▓рд┐рд╣рд┐рд▓рд╛ рдЬрд╛рддреЛ.
    рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрд╕рд╛ рдХрдореА рдХрд░рд╛рдпрдЪрд╛
  • рд╕рд░реНрд╡реНрд╣рд░ рдкрд╛рд░реНрд╢реНрд╡рднреВрдореАрдд рдореЙрдирд┐рдЯрд░ рдХрд░рддреЛ рдЬреЗрдгреЗрдХрд░реВрди рдЕрд╕реЗ рдмрд░реЗрдЪ рддреБрдХрдбреЗ рдирд╛рд╣реАрдд рдЖрдгрд┐ рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА рд▓рд╛рдБрдЪ рдХрд░рддреЗ ╤Б╨╗╨╕╤П╨╜╨╕╤П (merge, рдпрд╛рдирдВрддрд░ рд╡рд┐рд▓реАрди рдХрд░рд╛).
    рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрд╕рд╛ рдХрдореА рдХрд░рд╛рдпрдЪрд╛
    рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрд╕рд╛ рдХрдореА рдХрд░рд╛рдпрдЪрд╛
  • рдордзреНрдпреЗ рдбреЗрдЯрд╛ рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рд╡рд╛рд╣рдгреЗ рдерд╛рдВрдмрддрд╛рдЪ рд╕рд░реНрд╡реНрд╣рд░ рд╕реНрд╡рддрдГрдЪ рд╡рд┐рд▓реАрдиреАрдХрд░рдг рдЪрд╛рд▓реВ рдХрд░рдгреЗ рдерд╛рдВрдмрд╡рддреЛ ╨┐╨░╤А╤В╨╕╤Ж╨╕╤О (partition), рдкрд░рдВрддреБ рддреБрдореНрд╣реА рдХрдорд╛рдВрдбрд╕рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рд╕реБрд░реВ рдХрд░реВ рд╢рдХрддрд╛ OPTIMIZE.
  • рдЬрд░ рд╡рд┐рднрд╛рдЬрдирд╛рдордзреНрдпреЗ рдлрдХреНрдд рдПрдХ рддреБрдХрдбрд╛ рд╢рд┐рд▓реНрд▓рдХ рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдХрдорд╛рдВрдбрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдорд░реНрдЬ рдЪрд╛рд▓рд╡реВ рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА; рддреБрдореНрд╣реА рд╡рд╛рдкрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. OPTIMIZE ... FINAL

рддрд░, рдкреНрд░рдердо рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдпреЗрддрд╛рдд. рдЖрдгрд┐ рддреЗ рдХрд╛рд╣реА рдЬрд╛рдЧрд╛ рдШреЗрддрд╛рдд. рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ рдШрдЯрдирд╛ рдЕрдиреЗрдХ рдШрдЯрдХрд╛рдВрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдХрд╛рд╣реА рдкреНрд░рдорд╛рдгрд╛рдд рдмрджрд▓реВ рд╢рдХрддрд╛рдд:

  • рд╡рд┐рднрд╛рдЬрди рдХреА рдПрдХрддрд░ рдЦреВрдк рд▓рд╣рд╛рди (рдПрдХ рджрд┐рд╡рд╕) рдХрд┐рдВрд╡рд╛ рдЦреВрдк рдореЛрдареА (рдЕрдиреЗрдХ рдорд╣рд┐рдиреЗ) рдЕрд╕реВ рд╢рдХрддреЗ.
  • рд░рд┐рдЯреЗрдиреНрд╢рди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╕рдХреНрд░рд┐рдп рд╡рд┐рднрд╛рдЬрдирд╛рдордзреНрдпреЗ (рдЬреЗрдереЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд░реЗрдХреЙрд░реНрдб рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд) рдЕрдиреЗрдХ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдПрдХрддреНрд░реАрдХрд░рдг рдереНрд░реЗрд╢реЛрд▓реНрдбрдордзреНрдпреЗ рдмрд╕реВ рд╢рдХрддрд╛рдд рдХрд┐рдВрд╡рд╛ рдХрджрд╛рдЪрд┐рдд рдирд╛рд╣реА.
  • рдЬрд░ рднрд░рдкреВрд░ рдбреЗрдЯрд╛ рдЕрд╕реЗрд▓, рддрд░ рд╕рд░реНрд╡рд╛рдд рдЬреБрдиреЗ рднрд╛рдЧ, рдЬреЗ рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА рд╡рд┐рд▓реАрдиреАрдХрд░рдгрд╛рдореБрд│реЗ рдЖрдзреАрдЪ рдЦреВрдк рдореЛрдареЗ рдЕрд╕реВ рд╢рдХрддрд╛рдд (рдЬрд░ рддреБрдореНрд╣реА рдиреЙрди-рдЗрд╖реНрдЯрддрдо рд╡рд┐рднрд╛рдЬрди рдХреА рдирд┐рд╡рдбрд▓реНрдпрд╛рд╕), рддреЗ рддрд╛рдЬреНрдпрд╛ рд▓рд╣рд╛рди рддреБрдХрдбреНрдпрд╛рдВрдордзреНрдпреЗ рд╡рд┐рд▓реАрди рд╣реЛрдгрд╛рд░ рдирд╛рд╣реАрдд.

рдЖрдгрд┐ рддреЛ рдиреЗрд╣рдореА рд╕рд╛рд░рдЦрд╛рдЪ рд╕рдВрдкрддреЛ. ClickHouse рдордзреАрд▓ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдиреЗ рд╡реНрдпрд╛рдкрд▓реЗрд▓реА рдЬрд╛рдЧрд╛ рдлрдХреНрдд рддреЗрд╡реНрд╣рд╛рдЪ рд╡рд╛рдврддреЗ рдЬреЗрд╡реНрд╣рд╛:

  • рд▓рд╛рдЧреВ рдХрд░реВ рдирдХрд╛ OPTIMIZE ... FINAL рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдХрд┐рдВрд╡рд╛
  • рд╕рддрддрдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ рд╕рд░реНрд╡ рд╡рд┐рднрд╛рдЬрдирд╛рдВрдордзреНрдпреЗ рдбреЗрдЯрд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВ рдирдХрд╛, рдЬреЗрдгреЗрдХрд░реВрди рд▓рд╡рдХрд░рдЪ рдХрд┐рдВрд╡рд╛ рдирдВрддрд░ рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА рдПрдХрддреНрд░реАрдХрд░рдг рд╕реБрд░реВ рд╣реЛрдИрд▓

рджреБрд╕рд░реА рдкрджреНрдзрдд рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкреА рдЖрд╣реЗ рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдЖрдгрд┐ рдореНрд╣рдгреВрдирдЪ, рддреА рдЪреБрдХреАрдЪреА рдЖрд╣реЗ рдЖрдгрд┐ рдкреНрд░рдердо рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛.
рдореА рдПрдХ рдЕрдЧрджреА рд╕реЛрдкреА рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣рд┐рд▓реА рдЬреА рдЧреЗрд▓реНрдпрд╛ 4 рд╡рд░реНрд╖рд╛рдВрдкрд╛рд╕реВрди рдкреНрд░рддреНрдпреЗрдХ рджрд┐рд╡рд╕рд╛рд╕рд╛рдареА рдбрдореА рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд╛рдард╡рддреЗ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд╕рд╛рд▓рд╛ рдХреНрд░реЙрди рдЪрд╛рд▓рд╡рддреЗ.
рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдбреАрдмреАрдПрдордПрд╕рдЪреЗ рд╕рдВрдкреВрд░реНрдг рдСрдкрд░реЗрд╢рди рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ рдХреА рд╣реА рдкреНрд░рдгрд╛рд▓реА рд▓рд╡рдХрд░рдЪ рдХрд┐рдВрд╡рд╛ рдирдВрддрд░ рд╕рд░реНрд╡ рдкрд╛рд░реНрд╢реНрд╡рднреВрдореА рдХрд╛рд░реНрдп рдХрд░реЗрд▓, рдкрд░рдВрддреБ рд╣реЗ рдорд╛рд╣рд┐рдд рдирд╛рд╣реА рдХреА рдЬреБрдиреЗ рдореЛрдареЗ рддреБрдХрдбреЗ рдХрдзреА рд╡рд┐рд▓реАрди рд╣реЛрддреАрд▓ рддреНрдпрд╛ рдХреНрд╖рдгрд╛рдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдгреНрдпрд╛рд╕ рдореА рдЕрдХреНрд╖рдо рд╣реЛрддреЛ. рдирд╡реАрди рд▓рд╣рд╛рди. рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реЗ рдХреА рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рдХреНрддреАрдиреЗ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ.

рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрд╕рд╛ рдХрдореА рдХрд░рд╛рдпрдЪрд╛

рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓рдордзреАрд▓ рдорд╛рд╣рд┐рддреА

рдЪрд▓рд╛ рдЯреЗрдмрд▓рдЪреНрдпрд╛ рд╕рдВрд░рдЪрдиреЗрд╡рд░ рдПрдХ рдирдЬрд░ рдЯрд╛рдХреВрдпрд╛ рдкреНрд░рдгрд╛рд▓реА.рднрд╛рдЧ. рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░реАрд▓ рд╕рд░реНрд╡ рд╕рд╛рд░рдгреНрдпрд╛рдВрдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рддреБрдХрдбреНрдпрд╛рдЪреА рд╣реА рд╕рд░реНрд╡рд╕рдорд╛рд╡реЗрд╢рдХ рдорд╛рд╣рд┐рддреА рдЖрд╣реЗ. рдЗрддрд░ рдЧреЛрд╖реНрдЯреАрдВрдмрд░реЛрдмрд░рдЪ, рдЦрд╛рд▓реАрд▓ рд╕реНрддрдВрднрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ:

  • db рдирд╛рд╡ (database);
  • рдЯреЗрдмрд▓ рдирд╛рд╡ (table);
  • рд╡рд┐рднрд╛рдЬрдирд╛рдЪреЗ рдирд╛рд╡ рдЖрдгрд┐ рдЖрдпрдбреА (partition & partition_id);
  • рдЬреЗрд╡реНрд╣рд╛ рддреБрдХрдбрд╛ рддрдпрд╛рд░ рдЭрд╛рд▓рд╛ (modification_time);
  • рдПрдХрд╛ рддреБрдХрдбреНрдпрд╛рдд рдХрд┐рдорд╛рди рдЖрдгрд┐ рдХрдорд╛рд▓ рддрд╛рд░реАрдЦ (рд╡рд┐рднрд╛рдЬрди рджрд┐рд╡рд╕рд╛рдиреБрд╕рд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ) (min_date & max_date);

рдПрдХ рдЯреЗрдмрд▓ рджреЗрдЦреАрд▓ рдЖрд╣реЗ system.graphite_retentions, рдЦрд╛рд▓реАрд▓ рдордиреЛрд░рдВрдЬрдХ рдлреАрд▓реНрдбрд╕рд╣:

  • db рдирд╛рд╡ (Tables.database);
  • рдЯреЗрдмрд▓ рдирд╛рд╡ (Tables.table);
  • рдореЗрдЯреНрд░рд┐рдХ рд╡рдп рдЬреЗрд╡реНрд╣рд╛ рдкреБрдвреАрд▓ рдПрдХрддреНрд░реАрдХрд░рдг рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рд╡реЗ (age);

рдореНрд╣рдгреВрди:

  1. рдЖрдордЪреНрдпрд╛рдХрдбреЗ рднрд╛рдЧрд╛рдВрдЪреЗ рд╕рд╛рд░рдгреА рдЖрдгрд┐ рдПрдХрддреНрд░реАрдХрд░рдг рдирд┐рдпрдорд╛рдВрдЪреЗ рд╕рд╛рд░рдгреА рдЖрд╣реЗ.
  2. рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдЪреЗ рдЫреЗрджрдирдмрд┐рдВрджреВ рдПрдХрддреНрд░ рдХрд░рддреЛ рдЖрдгрд┐ рд╕рд░реНрд╡ рдЯреЗрдмрд▓ *GraphiteMergeTree рдорд┐рд│рд╡рддреЛ.
  3. рдЖрдореНрд╣реА рд╕рд░реНрд╡ рд╡рд┐рднрд╛рдЬрдиреЗ рд╢реЛрдзрдд рдЖрд╣реЛрдд рдЬреНрдпрд╛рдд:
    • рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рддреБрдХрдбрд╛
    • рдХрд┐рдВрд╡рд╛ рдкреБрдвреАрд▓ рдПрдХрддреНрд░реАрдХрд░рдг рдирд┐рдпрдо рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ, рдЖрдгрд┐ modification_time рдпрд╛ рдХреНрд╖рдгрд╛рдкреЗрдХреНрд╖рд╛ рдЬреБрдиреЗ.

рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА

рд╣реА рд╡рд┐рдирдВрддреА

SELECT
    concat(p.database, '.', p.table) AS table,
    p.partition_id AS partition_id,
    p.partition AS partition,
    -- ╨б╨░╨╝╨╛╨╡ "╤Б╤В╨░╤А╨╛╨╡" ╨┐╤А╨░╨▓╨╕╨╗╨╛, ╨║╨╛╤В╨╛╤А╨╛╨╡ ╨╝╨╛╨╢╨╡╤В ╨▒╤Л╤В╤М ╨┐╤А╨╕╨╝╨╡╨╜╨╡╨╜╨╛ ╨┤╨╗╤П
    -- ╨┐╨░╤А╤В╨╕╤Ж╨╕╨╕, ╨╜╨╛ ╨╜╨╡ ╨▓ ╨▒╤Г╨┤╤Г╤Й╨╡╨╝, ╤Б╨╝ (*)
    max(g.age) AS age,
    -- ╨Ъ╨╛╨╗╨╕╤З╨╡╤Б╤В╨▓╨╛ ╨║╤Г╤Б╨║╨╛╨▓ ╨▓ ╨┐╨░╤А╤В╨╕╤Ж╨╕╨╕
    countDistinct(p.name) AS parts,
    -- ╨Ч╨░ ╤Б╨░╨╝╤Г╤О ╤Б╤В╨░╤А╤И╤Г╤О ╨╝╨╡╤В╤А╨╕╨║╤Г ╨▓ ╨┐╨░╤А╤В╨╕╤Ж╨╕╨╕ ╨┐╤А╨╕╨╜╨╕╨╝╨░╨╡╤В╤Б╤П 00:00:00 ╤Б╨╗╨╡╨┤╤Г╤О╤Й╨╡╨│╨╛ ╨┤╨╜╤П
    toDateTime(max(p.max_date + 1)) AS max_time,
    -- ╨Ъ╨╛╨│╨┤╨░ ╨┐╨░╤А╤В╨╕╤Ж╨╕╤П ╨┤╨╛╨╗╨╢╨╜╨░ ╨▒╤Л╤В╤М ╨╛╨┐╤В╨╕╨╝╨╕╨╖╨╕╤А╨╛╨▓╨░╨╜╨╜╨░
    max_time + age AS rollup_time,
    -- ╨Ъ╨╛╨│╨┤╨░ ╤Б╨░╨╝╤Л╨╣ ╤Б╤В╨░╤А╤Л╨╣ ╨║╤Г╤Б╨╛╨║ ╨▓ ╨┐╨░╤А╤В╨╕╤Ж╨╕╨╕ ╨▒╤Л╨╗ ╨╛╨▒╨╜╨╛╨▓╨╗╤С╨╜
    min(p.modification_time) AS modified_at
FROM system.parts AS p
INNER JOIN
(
    -- ╨Т╤Б╨╡ ╨┐╤А╨░╨▓╨╕╨╗╨░ ╨┤╨╗╤П ╨▓╤Б╨╡╤Е ╤В╨░╨▒╨╗╨╕╤Ж *GraphiteMergeTree
    SELECT
        Tables.database AS database,
        Tables.table AS table,
        age
    FROM system.graphite_retentions
    ARRAY JOIN Tables
    GROUP BY
        database,
        table,
        age
) AS g ON
    (p.table = g.table)
    AND (p.database = g.database)
WHERE
    -- ╨в╨╛╨╗╤М╨║╨╛ ╨░╨║╤В╨╕╨▓╨╜╤Л╨╡ ╨║╤Г╤Б╨║╨╕
    p.active
    -- (*) ╨Ш ╤В╨╛╨╗╤М╨║╨╛ ╤Б╤В╤А╨╛╨║╨╕, ╨│╨┤╨╡ ╨┐╤А╨░╨▓╨╕╨╗╨░ ╨░╨│╨│╤А╨╡╨│╨░╤Ж╨╕╨╕ ╤Г╨╢╨╡ ╨┤╨╛╨╗╨╢╨╜╤Л ╨▒╤Л╤В╤М ╨┐╤А╨╕╨╝╨╡╨╜╨╡╨╜╤Л
    AND ((toDateTime(p.max_date + 1) + g.age) < now())
GROUP BY
    table,
    partition
HAVING
    -- ╨в╨╛╨╗╤М╨║╨╛ ╨┐╨░╤А╤В╨╕╤Ж╨╕╨╕, ╨║╨╛╤В╨╛╤А╤Л╨╡ ╨╝╨╗╨░╨┤╤И╨╡ ╨╝╨╛╨╝╨╡╨╜╤В╨░ ╨╛╨┐╤В╨╕╨╝╨╕╨╖╨░╤Ж╨╕╨╕
    (modified_at < rollup_time)
    -- ╨Ш╨╗╨╕ ╤Б ╨╜╨╡╤Б╨║╨╛╨╗╤М╨║╨╕╨╝╨╕ ╨║╤Г╤Б╨║╨░╨╝╨╕
    OR (parts > 1)
ORDER BY
    table ASC,
    partition ASC,
    age ASC

рдкреНрд░рддреНрдпреЗрдХ *GraphiteMergeTree рдЯреЗрдмрд▓ рд╡рд┐рднрд╛рдЬрдиреЗ рдкрд░рдд рдХрд░рддреЗ рдЬреНрдпрд╛рдВрдЪреЗ рд╡рд┐рд▓реАрдиреАрдХрд░рдг рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдореЛрдХрд│реЗ рдХрд░рддреЗ. рдПрдХрдЪ рдЧреЛрд╖реНрдЯ рдЙрд░рд▓реА рдЖрд╣реЗ рддреА рдореНрд╣рдгрдЬреЗ рддреНрдпрд╛ рд╕рд░реНрд╡рд╛рдВрдирд╛ рд╡рд┐рдирдВрддреА рдХрд░реВрди рдЬрд╛рдгреЗ OPTIMIZE ... FINAL. рдЕрдВрддрд┐рдо рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╣реЗ рддрдереНрдп рджреЗрдЦреАрд▓ рд▓рдХреНрд╖рд╛рдд рдШреЗрддреЗ рдХреА рд╕рдХреНрд░рд┐рдп рд░реЗрдХреЙрд░реНрдбрд┐рдВрдЧрд╕рд╣ рд╡рд┐рднрд╛рдЬрдирд╛рдВрдирд╛ рд╕реНрдкрд░реНрд╢ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА.

рдкреНрд░рдХрд▓реНрдк рдиреЗрдордХреЗ рд╣реЗрдЪ рдХрд░рддреЛ рдЧреНрд░реЗрдлрд╛рдЗрдЯ-рд╕реАрдПрдЪ-рдСрдкреНрдЯрд┐рдорд╛рдпрдЭрд░. Yandex.Market рдордзреАрд▓ рдорд╛рдЬреА рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдВрдиреА рдЙрддреНрдкрд╛рджрдирд╛рдд рдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛, рдХрд╛рдорд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдЦрд╛рд▓реА рдкрд╛рд╣рд┐рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрд╕рд╛ рдХрдореА рдХрд░рд╛рдпрдЪрд╛

рддреБрдореНрд╣реА рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕рд╕рд╣ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕, рддреЗ рдлрдХреНрдд рдбрд┐рдорди рдореЛрдбрдордзреНрдпреЗ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрд▓. рдПрдХ рддрд╛рд╕рд╛рдиреЗ рдПрдХрджрд╛ рд╡рд┐рдирдВрддреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реА рдЬрд╛рдИрд▓, рддреАрди рджрд┐рд╡рд╕рд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬреБрдиреА рдирд╡реАрди рд╡рд┐рднрд╛рдЬрдиреЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рддрд╛ рдпреЗрддреАрд▓ рдХрд╛ рддреЗ рддрдкрд╛рд╕рдд рдЖрд╣реЗ.

рдЖрдордЪреА рддрд╛рддреНрдХрд╛рд│ рдпреЛрдЬрдирд╛ рдХрд┐рдорд╛рди рдбреЗрдм рдкреЕрдХреЗрдЬреЗрд╕ рдЖрдгрд┐ рд╢рдХреНрдп рдЕрд╕рд▓реНрдпрд╛рд╕ рдЖрд░рдкреАрдПрдо рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЖрд╣реЗрдд.

рддреНрдпрд╛рдРрд╡рдЬреА рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖

рдЧреЗрд▓реНрдпрд╛ 9+ рдорд╣рд┐рдиреНрдпрд╛рдВрдд рдореА рдорд╛рдЭреНрдпрд╛ рдХрдВрдкрдиреАрдд рдЖрд╣реЗ рдЗрдиреЛрдЧреЗрдореНрд╕ рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕ рдЖрдгрд┐ рдЧреНрд░реЗрдлрд╛рдЗрдЯ-рд╡реЗрдмрдЪреНрдпрд╛ рдЫреЗрджрдирдмрд┐рдВрджреВрд╡рд░ рдЯрд┐рдВрдХрд░ рдХрд░рдгреНрдпрд╛рдд рдмрд░рд╛рдЪ рд╡реЗрд│ рдШрд╛рд▓рд╡рд▓рд╛. рд╣рд╛ рдПрдХ рдЪрд╛рдВрдЧрд▓рд╛ рдЕрдиреБрднрд╡ рд╣реЛрддрд╛, рдЬреНрдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕реНрдЯреЛрд░реЗрдЬ рдореНрд╣рдгреВрди рд╡реНрд╣рд┐рд╕реНрдкрд░рдордзреВрди рдХреНрд▓рд┐рдХрд╣рд╛рдКрд╕рдордзреНрдпреЗ рджреНрд░реБрдд рд╕рдВрдХреНрд░рдордг рдЭрд╛рд▓рд╛. рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣рд╛ рд▓реЗрдЦ рдпрд╛ рд╕реНрдЯреЕрдХрдЪреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рдЖрдореНрд╣реА рдХреЛрдгрддреНрдпрд╛ рд╕реБрдзрд╛рд░рдгрд╛ рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд рдЖрдгрд┐ рднрд╡рд┐рд╖реНрдпрд╛рдд рдХрд╛рдп рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ рдпрд╛рдмрджреНрджрд▓рдЪреНрдпрд╛ рдорд╛рд▓рд┐рдХреЗрдЪреА рд╕реБрд░реБрд╡рд╛рдд рдЖрд╣реЗ.

рд╡рд┐рдирдВрддреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ рд▓реАрдЯрд░ рдмрд┐рдЕрд░ рдЖрдгрд┐ рдкреНрд░рд╢рд╛рд╕рди рджрд┐рд╡рд╕ рдЦрд░реНрдЪ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ v0devil, рдЬреНрдпрд╛рд╕рд╛рдареА рдореА рддреНрдпрд╛рдВрдЪреЗ рдЖрднрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░реВ рдЗрдЪреНрдЫрд┐рддреЛ. рдЖрдгрд┐ рдпрд╛ рд▓реЗрдЦрд╛рдЪреЗ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓.

рдЧрд┐рдердм рд╡рд░ рдкреНрд░рдХрд▓реНрдк рдкреГрд╖реНрда

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛