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


рдирдорд╕реНрддреЗред


рдпрджрд┐ рдХреЛрдИ рдЧреНрд░реЗрдлрд╛рдЗрдЯ-рд╡реЗрдм рд╕рд┐рд╕реНрдЯрдо рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рд╡реНрд╣рд┐рд╕реНрдкрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдкреНрд░реЙрдмреНрд▓рдо (IO, рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдХреА рдЦрдкрдд) рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рддреЛ ClickHouse рдХреЛ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдХрдерди рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рдХрд╛рд░реНрдмрди- рд░рд╛рдЗрдЯрд░ рдпрд╛ рдЧреЛ-рдХрд╛рд░реНрдмрди рдЬреИрд╕реЗ рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрдореЙрди рдХреЗ рдкреНрд░рд╛рдкреНрдд рдореАрдЯреНрд░рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


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


рдЙрдкрднреЛрдЧ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ


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


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


  • рдПрдХ рдбреЗрдЯрд╛ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЖ рдЧрдП рд╣реИрдВред
  • рдбрд┐рд╕реНрдХ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реЗ рдмреНрд▓реЙрдХ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддреЗ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА ORDER BY рдЕрдиреБрд╕рд╛рд░ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рд╕рд░реНрд╡рд░ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдореЙрдирд┐рдЯрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдХрдИ рдЯреБрдХрдбрд╝реЗ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ ( merge , рдЗрд╕рдХреЗ рдмрд╛рдж рдорд░реНрдЬ) рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

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

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


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

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


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

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



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


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


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

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


  • DB рдирд╛рдо ( 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 

* рдЧреНрд░реЗрдлрд╛рдЗрдЯрдореЗрдЬрд░рдЯреНрд░реА рдЯреЗрдмрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЬрди рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд▓рдп рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдЦрд╛рд▓реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдм рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЫреЛрдЯреА рдмрд╛рдд рд╣реИ: рдЙрди рд╕рднреА рдХреЗ рд╕рд╛рде OPTIMIZE ... FINAL рдЕрдиреБрд░реЛрдз рдкрд░ рдЬрд╛рдПрдВред рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗ рдЗрд╕ рдХреНрд╖рдг рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдХрд┐ рдПрдХ рд╕рдХреНрд░рд┐рдп рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрди рдХреЛ рдЫреВрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЧреНрд░реЗрдлрд╛рдЗрдЯ-рдЪ-рдЖрд╢рд╛рд╡рд╛рджреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд░рддрд╛ рд╣реИред Yandex.Market рдХреЗ рдкреВрд░реНрд╡ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдиреЗ рдареЗрд╕ рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдХрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдиреАрдЪреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдкрд░рд┐рдгрд╛рдо


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


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


UPD: рдкреИрдХреЗрдЬ github рд░рд┐рд▓реАрдЬрд╝ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЪрд┐рддреНрд░ innogames / рдЧреНрд░реЗрдлрд╛рдЗрдЯ-ch- рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ docker-hub рдкрд░ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред


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


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


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


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬ github рдкрд░

Source: https://habr.com/ru/post/hi479564/


All Articles