рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреА рдЦрдкрдд рдХреЛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрдо рдХрд░реЗрдВ

рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреА рдЦрдкрдд рдХреЛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрдо рдХрд░реЗрдВ

рдирдорд╕реНрддреЗ, рд╣рдмрд░ред

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

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

рдЙрдкрднреЛрдЧ рдХреА рдЧрдИ рдЬрдЧрд╣ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдБ

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

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрдВрд╕рд░реНрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ * рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдЗрдВрдЬрдиреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЖрдЧреЗ рдХрд╛ рдЬреАрд╡рди рдкрде рдХреНрдпрд╛ рд╣реИрдорд░реНрдЬрдЯреНрд░реА рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ (рдЪрд╛рд░реНрдЯ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдПрд▓реЗрдХреНрд╕реА рдЬрд╝реЗрдЯреЗрд▓реЗрдкрд┐рди):

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

рддреЛ, рдкрд╣рд▓реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЖрддреЗ рд╣реИрдВред рдФрд░ рд╡реЗ рдХреБрдЫ рдЬрдЧрд╣ рдШреЗрд░ рд▓реЗрддреЗ рд╣реИрдВ. рдмрд╛рдж рдХреА рдШрдЯрдирд╛рдПрдВ рдХрдИ рдХрд╛рд░рдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рд╣рдж рддрдХ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ:

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

рдФрд░ рдЗрд╕рдХрд╛ рдЕрдВрдд рд╣рдореЗрд╢рд╛ рдПрдХ рдЬреИрд╕рд╛ рд╣реА рд╣реЛрддрд╛ рд╣реИ. ClickHouse рдореЗрдВ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реНрдерд╛рди рдХреЗрд╡рд▓ рддрднреА рдмрдврд╝рддрд╛ рд╣реИ рдпрджрд┐:

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

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

рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреА рдЦрдкрдд рдХреЛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрдо рдХрд░реЗрдВ

ClickHouse рд╕рд┐рд╕реНрдЯрдо рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА

рдЖрдЗрдП рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рд╕рд┐рд╕реНрдЯрдо.рдкрд╛рд░реНрдЯреНрд╕. рдпрд╣ ClickHouse рд╕рд░реНрд╡рд░ рдкрд░ рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрд▓рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдбреАрдмреА рдирд╛рдо (database);
  • рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо (table);
  • рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдирд╛рдо рдФрд░ рдЖрдИрдбреА (partition & partition_id);
  • рдЬрдм рдЯреБрдХрдбрд╝рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (modification_time);
  • рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рддрд┐рдерд┐ (рд╡рд┐рднрд╛рдЬрди рджрд┐рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) (min_date & max_date);

рдПрдХ рдЯреЗрдмрд▓ рднреА рд╣реИ system.graphite_retentions, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд┐рд▓рдЪрд╕реНрдк рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде:

  • рдбреАрдмреА рдирд╛рдо (Tables.database);
  • рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо (Tables.table);
  • рдореАрдЯреНрд░рд┐рдХ рдЖрдпреБ рдЬрдм рдЕрдЧрд▓рд╛ рдПрдХрддреНрд░реАрдХрд░рдг рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (age);

рддреЛ:

  1. рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреБрдХрдбрд╝реЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдПрдХрддреНрд░реАрдХрд░рдг рдирд┐рдпрдореЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИред
  2. рд╣рдо рдЙрдирдХреЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдПрдБ *рдЧреНрд░реЗрдлрд╛рдЗрдЯрдорд░реНрдЬрдЯреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
  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. рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрдереНрдп рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рд╕рдХреНрд░рд┐рдп рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрди рдХреЛ рдЫреВрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдХрд░рддрд╛ рд╣реИ рдЧреНрд░реЗрдлрд╛рдЗрдЯ-ch-рдЕрдиреБрдХреВрд▓рдХ. Yandex.Market рдХреЗ рдкреВрд░реНрд╡ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдиреЗ рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЖрдЬрд╝рдорд╛рдпрд╛, рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ + рдЧреНрд░реЗрдлрд╛рдЗрдЯ: рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреА рдЦрдкрдд рдХреЛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрдо рдХрд░реЗрдВ

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

рд╣рдорд╛рд░реА рддрддреНрдХрд╛рд▓ рдпреЛрдЬрдирд╛ рдХрдо рд╕реЗ рдХрдо рдбрд┐рдмреЗрдЯ рдкреИрдХреЗрдЬ рдФрд░ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЖрд░рдкреАрдПрдо рднреА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рд╣реИред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреА

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

рдЕрдиреБрд░реЛрдз рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрдИ рд▓реАрдЯрд░ рдмрд┐рдпрд░ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рджрд┐рд╡рд╕ рдПрдХ рд╕рд╛рде рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП v0рд╢реИрддрд╛рдирдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЙрдирдХрд╛ рдЖрднрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ. рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рднреА.

рдЬреАрдердм рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ