ClickHouse + Graphite: рдХрд╕рд░реА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЦрдкрдд рдХрдо рдЧрд░реНрдиреЗ

ClickHouse + Graphite: рдХрд╕рд░реА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЦрдкрдд рдХрдо рдЧрд░реНрдиреЗ

рдирдорд╕реНрдХрд╛рд░, рдирдорд╕реНрдХрд╛рд░ред

рдпрджрд┐ рдХрд╕реИрд▓реЗ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд╢реЛрд╖рдг рдЧрд░реНрдЫ рдЧреНрд░реЗрдлрд╛рдЗрдЯ-рд╡реЗрдм рд░ рднрдгреНрдбрд╛рд░рдг рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╕рдорд╕реНрдпрд╛рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдпреЛ рд▓реЗрдХрд╛рдиреЗрдЦреБрд╕реАрдЧрд░реНрдЫ (IO, рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЦрдкрдд), рддреНрдпрд╕рдкрдЫрд┐ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирдХреЛ рд░реВрдкрдорд╛ рдХрд╛рд╕реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдореМрдХрд╛ рдПрдХ рд╣реБрдиреБрдкрд░реНрджрдЫред рдпреЛ рдХрдердирд▓реЗ рд╕рдВрдХреЗрдд рдЧрд░реНрдЫ рдХрд┐ рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд┐рд▓реЗ рдиреИ рдбреЗрдорди рдкреНрд░рд╛рдкреНрдд рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдмрди рд▓реЗрдЦрдХ рд╡рд╛ рдЧреЛ-рдХрд╛рд░реНрдмрди.

рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕рд▓реЗ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрд▓рд╛рдИ рд░рд╛рдореНрд░рд░реА рд╣рд▓ рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, whisper рдмрд╛рдЯ рдбрд╛рдЯрд╛рдХреЛ 2TiB рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реЗрдкрдЫрд┐, рддрд┐рдиреАрд╣рд░реВ 300GiB рдорд╛ рдлрд┐рдЯ рд╣реБрдиреНрдЫрдиреНред рдо рд╡рд┐рд╡рд░рдгрдорд╛ рддреБрд▓рдирд╛рдорд╛ рдмрд╕реНрдиреЗ рдЫреИрди; рдпрд╕ рд╡рд┐рд╖рдпрдорд╛ рдзреЗрд░реИ рд▓реЗрдЦрд╣рд░реВ рдЫрдиреНред рдердк рд░реВрдкрдорд╛, рднрд░реНрдЦрд░реИ рд╕рдореНрдо, рд╣рд╛рдореНрд░реЛ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд╕рд╛рде рд╕рдмреИ рдХреБрд░рд╛ рдЙрддреНрддрдо рдерд┐рдПрдиред

рдЦрдкрдд рднрдПрдХреЛ рдард╛рдЙрдБрдХреЛ рд╕рдорд╕реНрдпрд╛

рдкрд╣рд┐рд▓реЛ рдирдЬрд░ рдорд╛, рд╕рдмреИ рд░рд╛рдореНрд░реЛ рдХрд╛рдо рдЧрд░реНрдиреБрдкрд░реНрдЫред рдкрдЫреНрдпрд╛рдЙрдБрджреИ рдХрд╛рдЧрдЬрд╛рдд, рдореЗрдЯреНрд░рд┐рдХреНрд╕ рднрдгреНрдбрд╛рд░рдг рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдердк retention), рддреНрдпрд╕рдкрдЫрд┐ рдЧреНрд░реЗрдлрд╛рдЗрдЯ-рд╡реЗрдмрдХреЛ рд▓рд╛рдЧрд┐ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЕрдиреБрд╕рд╛рд░ рддрд╛рд▓рд┐рдХрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН: рдХрд╛рд░реНрдмрди рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕+рдЧреНрд░реЗрдлрд╛рдЗрдЯ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рд╡рд╛ graphouse, рдХреБрди рд╕реНрдЯреНрдпрд╛рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред рд░ ... рдЯрд╛рдЗрдо рдмрдо рдирд┐рд╕реНрдХрдиреНрдЫред

рдХреБрди рдХреБрди рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдЗрдБрд▓реЗ рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдХрд╕рд░реА рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрджрдЫ рд░ * рдкрд░рд┐рд╡рд╛рд░рдХреЛ рдЗрдиреНрдЬрд┐рдирд╣рд░реВрдХреЛ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдбреЗрдЯрд╛рдХреЛ рдердк рдЬреАрд╡рди рдорд╛рд░реНрдЧредрдорд░реНрдЬрдЯреНрд░реА рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ (рдЪрд╛рд░реНрдЯрд╣рд░реВрдмрд╛рдЯ рд▓рд┐рдЗрдПрдХреЛ рдкреНрд░рд╕реНрддреБрддрд┐рдХрд░рдг рдПрд▓реЗрдХреНрд╕реА рдЬреЗрддреЗрд▓реЗрдкрд┐рди):

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

рддреНрдпрд╕реЛрднрдП, рдкрд╣рд┐рд▓реЛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЖрдЗрдкреБрдЧреНрдЫред рд░ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХреЗрд╣реА рдард╛рдЙрдБ рд▓рд┐рдиреНрдЫрдиреНред рдкрдЫрд┐рдХрд╛ рдШрдЯрдирд╛рд╣рд░реВ рдзреЗрд░реИ рдХрд╛рд░рдХрд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИ рдХреЗрд╣реА рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫрдиреН:

  • рд╡рд┐рднрд╛рдЬрди рдХреБрдЮреНрдЬреА рдпрд╛ рдд рдзреЗрд░реИ рд╕рд╛рдиреЛ (рдПрдХ рджрд┐рди) рд╡рд╛ рдзреЗрд░реИ рдареВрд▓реЛ (рдзреЗрд░реИ рдорд╣рд┐рдирд╛) рд╣реБрди рд╕рдХреНрдЫред
  • рд░рд┐рдЯреЗрдиреНрд╕рди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдХреНрд░рд┐рдп рд╡рд┐рднрд╛рдЬрди рднрд┐рддреНрд░ рдзреЗрд░реИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдПрдХрддреНрд░реАрдХрд░рдг рдереНрд░реЗрд╕рд╣реЛрд▓реНрдбрд╣рд░реВ рдлрд┐рдЯ рд╣реБрди рд╕рдХреНрдЫ (рдЬрд╣рд╛рдБ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд░реЗрдХрд░реНрдб рдЧрд░рд┐рдПрдХреЛ рдЫ), рд╡рд╛ рд╣реБрди рд╕рдХреНрдЫред
  • рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдбрд╛рдЯрд╛ рдЫ рднрдиреЗ, рд╕рдмреИрднрдиреНрджрд╛ рдкреБрд░рд╛рдиреЛ рдЯреБрдХреНрд░рд╛рд╣рд░реВ, рдЬреБрди рдкреГрд╖реНрдарднреВрдорд┐ рдорд░реНрдЬрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдареВрд▓реЛ рд╣реБрди рд╕рдХреНрдЫ (рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЧреИрд░-рдЗрд╖реНрдЯрддрдо рд╡рд┐рднрд╛рдЬрди рдХреБрдЮреНрдЬреА рд░реЛрдЬреНрдиреБрднрдпреЛ рднрдиреЗ), рдирдпрд╛рдБ рд╕рд╛рдиреЛ рдЯреБрдХреНрд░рд╛рд╣рд░реВрд╕рдБрдЧ рдорд░реНрдЬ рд╣реБрдиреЗрдЫреИрдиред

рд░ рдпреЛ рд╕рдзреИрдВ рдЙрд╕реНрддреИ рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫред ClickHouse рдорд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдУрдЧрдЯреЗрдХреЛ рдард╛рдЙрдБ рдорд╛рддреНрд░ рдмрдвреНрдЫ рдпрджрд┐:

  • рд▓рд╛рдЧреВ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН OPTIMIZE ... FINAL рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рд╡рд╛
  • рдирд┐рд░рдиреНрддрд░ рдЖрдзрд╛рд░рдорд╛ рд╕рдмреИ рд╡рд┐рднрд╛рдЬрдирд╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ рдШреБрд╕рд╛рдЙрдиреБрд╣реЛрд╕реН, рддрд╛рдХрд┐ рдврд┐рд▓реЛ рд╡рд╛ рдкрдЫрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдорд░реНрдЬ рд╕реБрд░реБ рд╣реБрдиреЗрдЫред

рджреЛрд╕реНрд░реЛ рд╡рд┐рдзрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рджреЗрдЦрд┐рдиреНрдЫ рд░, рддреНрдпрд╕реИрд▓реЗ, рдпреЛ рдЧрд▓рдд рдЫ рд░ рдкрд╣рд┐рд▓реЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред
рдореИрд▓реЗ рдПрдХрджрдо рд╕рд░рд▓ рдкрд╛рдЗрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦреЗрдВ рдЬрд╕рд▓реЗ рд╡рд┐рдЧрдд 4 рд╡рд░реНрд╖рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддреНрдпреЗрдХ рджрд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рдбрдореА рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрдард╛рдпреЛ рд░ рдкреНрд░рддреНрдпреЗрдХ рдШрдгреНрдЯрд╛ рдХреНрд░реЛрди рджреМрдбреНрдпреЛред
ClickHouse DBMS рдХреЛ рд╕рдореНрдкреВрд░реНрдг рд╕рдЮреНрдЪрд╛рд▓рди рдпрд╕ рддрдереНрдпрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫ рдХрд┐ рдпрд╕ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдврд┐рд▓реЛ рд╡рд╛ рдкрдЫрд┐ рд╕рдмреИ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрдиреЗрдЫ, рддрд░ рдпреЛ рдерд╛рд╣рд╛ рдЫреИрди, рдкреБрд░рд╛рдиреЛ рдареВрд▓рд╛ рдЯреБрдХреНрд░рд╛рд╣рд░реВ рд╡рд┐рд▓рдп рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдо рдкреНрд░рддреАрдХреНрд╖рд╛ рдЧрд░реНрди рдЕрд╕рдорд░реНрде рдерд┐рдПред рдирдпрд╛рдБ рд╕рд╛рдирд╛ред рдпреЛ рд╕реНрдкрд╖реНрдЯ рднрдпреЛ рдХрд┐ рд╣рд╛рдореАрд▓реЗ рдЬрдмрд░рдЬрд╕реНрддреА рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛ рдЦреЛрдЬреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

ClickHouse + Graphite: рдХрд╕рд░реА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЦрдкрдд рдХрдо рдЧрд░реНрдиреЗ

ClickHouse рдкреНрд░рдгрд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдЬрд╛рдирдХрд╛рд░реА

рддрд╛рд▓рд┐рдХрд╛рдХреЛ рд╕рдВрд░рдЪрдирд╛рд▓рд╛рдИ рд╣реЗрд░реМрдВ рдкреНрд░рдгрд╛рд▓реА рднрд╛рдЧрд╣рд░реВред рдпреЛ ClickHouse рд╕рд░реНрднрд░рдорд╛ рд╕рдмреИ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХреНрд░рд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реЛред рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рдЕрдиреНрдп рдЪреАрдЬрд╣рд░реВ рдмреАрдЪ, рдирд┐рдореНрди рд╕реНрддрдореНрднрд╣рд░реВ:

  • 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 рдмрд╛рдЯ рдкреВрд░реНрд╡ рд╕рд╣рдХрд░реНрдореАрд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЙрддреНрдкрд╛рджрдирдорд╛ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗ, рдХрд╛рдордХреЛ рдирддрд┐рдЬрд╛ рддрд▓ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫред

ClickHouse + Graphite: рдХрд╕рд░реА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЦрдкрдд рдХрдо рдЧрд░реНрдиреЗ

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕рдХреЛ рд╕рд╛рде рд╕рд░реНрднрд░рдорд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдЙрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдпрд╕рд▓реЗ рдХреЗрд╡рд▓ рдбреЗрдорди рдореЛрдбрдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫред рдПрдХ рдШрдгреНрдЯрд╛рдорд╛ рдПрдХ рдкрдЯрдХ рдЕрдиреБрд░реЛрдз рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреЗрдЫ, рддреАрди рджрд┐рди рднрдиреНрджрд╛ рдкреБрд░рд╛рдиреЛ рдирдпрд╛рдБ рд╡рд┐рднрд╛рдЬрдирд╣рд░реВ рджреЗрдЦрд╛ рдкрд░реЗрдХреЛ рдЫ рдХрд┐ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрджреИ рдЬреБрди рдЕрдиреБрдХреВрд▓рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рд╣рд╛рдореНрд░реЛ рддрддреНрдХрд╛рд▓ рдпреЛрдЬрдирд╛рд╣рд░реВ рдХрдореНрддрд┐рдорд╛ deb рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗ рд╣реЛ, рд░ рд╕рдореНрднрд╡ рднрдПрдорд╛ rpm рдкрдирд┐ред

рдмрд░реБ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛ рдХреЛ

рд╡рд┐рдЧрдд 9+ рдорд╣рд┐рдирд╛рд╣рд░реВрдорд╛ рдо рдореЗрд░реЛ рдХрдореНрдкрдиреА рднрд┐рддреНрд░ рдЫреБ innogames рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рд░ рдЧреНрд░реЗрдлрд╛рдЗрдЯ-рд╡реЗрдмрдХреЛ рдЫреЗрдЙрдорд╛ рдЯрд┐рдВрдХрд░рд┐рдЩ рдЧрд░реНрди рдзреЗрд░реИ рд╕рдордп рдмрд┐рддрд╛рдПред рдпреЛ рдПрдХ рд░рд╛рдореНрд░реЛ рдЕрдиреБрднрд╡ рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд░реВрдкрдорд╛ рд╡реНрд╣рд┐рд╕реНрдкрд░рдмрд╛рдЯ рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕рдорд╛ рджреНрд░реБрдд рд╕рдВрдХреНрд░рдордгрдХреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдкред рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпреЛ рд▓реЗрдЦ рд╣рд╛рдореАрд▓реЗ рдпрд╕ рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧрд╣рд░реВрдорд╛ рдХреЗ рд╕реБрдзрд╛рд░рд╣рд░реВ рдЧрд░реЗрдХрд╛ рдЫреМрдВ, рд░ рднрд╡рд┐рд╖реНрдпрдорд╛ рдХреЗ рдЧрд░рд┐рдиреЗрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рд╢реНрд░реГрдВрдЦрд▓рд╛рдХреЛ рд╕реБрд░реБрд╡рд╛рддрдХреЛ рдХреБрд░рд╛ рд╣реЛред

рдзреЗрд░реИ рд▓реАрдЯрд░ рдмрд┐рдпрд░ рд░ рдкреНрд░рд╢рд╛рд╕рдХ рджрд┐рдирд╣рд░реВ рд╕рдБрдЧреИ рдЕрдиреБрд░реЛрдз рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рдЦрд░реНрдЪ рдЧрд░рд┐рдпреЛ v0devilрдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдо рдЙрд╣рд╛рдБрдкреНрд░рддрд┐ рдХреГрддрдЬреНрдЮрддрд╛ рд╡реНрдпрдХреНрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред рд░ рдпреЛ рд▓реЗрдЦ рд╕рдореАрдХреНрд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ред

Github рдорд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреГрд╖реНрда

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди