เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ + เช—เซเชฐเซ‡เชซเชพเช‡เชŸ: เชกเชฟเชธเซเช• เชธเซเชชเซ‡เชธ เชตเชชเชฐเชพเชถเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช˜เชŸเชพเชกเชตเซ‹

เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ + เช—เซเชฐเซ‡เชซเชพเช‡เชŸ: เชกเชฟเชธเซเช• เชธเซเชชเซ‡เชธ เชตเชชเชฐเชพเชถเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช˜เชŸเชพเชกเชตเซ‹

เชถเซเชญเซ‡เชšเซเช›เชพเช“.

เชœเซ‹ เช•เซ‹เชˆ เชธเชฟเชธเซเชŸเชฎเชจเซเช‚ เชถเซ‹เชทเชฃ เช•เชฐเซ‡ เช›เซ‡ เช—เซเชฐเซ‡เชซเชพเช‡เชŸ-เชตเซ‡เชฌ เช…เชจเซ‡ เชธเช‚เช—เซเชฐเชน เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเชฎเชธเซเชฏเชพเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹ เชฌเชฌเชกเชพเชŸ (IO, เชกเชฟเชธเซเช• เชธเซเชชเซ‡เชธเชจเซ‹ เชตเชชเชฐเชพเชถ), เชคเซ‹ เชชเช›เซ€ ClickHouse เชจเซ‡ เชฐเชฟเชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸ เชคเชฐเซ€เช•เซ‡ เช•เชพเชธเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชคเช• เชเช• เชคเชฐเชซ เชœเชคเซ€ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช. เช† เชจเชฟเชตเซ‡เชฆเชจ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เช•เซ‡ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เช…เชฎเชฒเซ€เช•เชฐเชฃ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชกเชฟเชฎเชจ เชฎเซ‡เชณเชตเชคเชพ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เช•เชพเชฐเซเชฌเชจ เชฒเซ‡เช–เช• เช…เชฅเชตเชพ เช—เซ‹-เช•เชพเชฐเซเชฌเชจ.

เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ เชตเชฐเซเชฃเชตเซ‡เชฒ เชธเชฎเชธเซเชฏเชพเช“เชจเซ‡ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชนเชฒ เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชตเซเชนเซ€เชธเซเชชเชฐเชฎเชพเช‚เชฅเซ€ 2TiB เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเซ‡เช“ 300GiB เชฎเชพเช‚ เชซเชฟเชŸ เชฅเชˆ เชœเชพเชฏ เช›เซ‡. เชนเซเช‚ เชตเชฟเช—เชคเชตเชพเชฐ เชธเชฐเช–เชพเชฎเชฃเซ€ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ€เชถ เชจเชนเซ€เช‚; เช† เชตเชฟเชทเชฏ เชชเชฐ เชชเซเชทเซเช•เชณ เชฒเซ‡เช–เซ‹ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชธเซเชงเซ€, เช…เชฎเชพเชฐเชพ เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชพเชฅเซ‡ เชฌเชงเซเช‚ เชœ เชฏเซ‹เช—เซเชฏ เชจ เชนเชคเซเช‚.

เชตเชชเชฐเชพเชถเชจเซ€ เชœเช—เซเชฏเชพ เชธเชพเชฅเซ‡ เชธเชฎเชธเซเชฏเชพเช“

เชชเซเชฐเชฅเชฎ เชจเชœเชฐเชฎเชพเช‚, เชฌเชงเซเช‚ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช. เช…เชจเซเชธเชฐเซ‡ เช›เซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ, เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเซเช•เซ€เชฎ เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชฌเชจเชพเชตเซ‹ (เช†เช—เชณ retention), เชชเช›เซ€ เช—เซเชฐเซ‡เชซเชพเช‡เชŸ-เชตเซ‡เชฌ เชฎเชพเชŸเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒ เชฌเซ‡เช•เชเชจเซเชกเชจเซ€ เชญเชฒเชพเชฎเชฃ เช…เชจเซเชธเชพเชฐ เช•เซ‹เชทเซเชŸเช• เชฌเชจเชพเชตเซ‹: เช•เชพเชฐเซเชฌเชจ-เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ+เช—เซเชฐเซ‡เชซเชพเช‡เชŸ-เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ เช…เชฅเชตเชพ เช—เซเชฐเซ‡เชชเชนเชพเช‰เชธ, เช•เชฏเชพ เชธเซเชŸเซ‡เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡. เช…เชจเซ‡... เชŸเชพเชˆเชฎ เชฌเซ‹เชฎเซเชฌ เชซเชพเชŸเซ€ เชœเชพเชฏ เช›เซ‡.

เช•เชฏเซเช‚ เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชœเชพเชฃเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชฆเชพเช–เชฒ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ * เช•เซเชŸเซเช‚เชฌเชจเชพ เชเชจเซเชœเชฟเชจเชจเชพ เช•เซ‹เชทเซเชŸเช•เซ‹เชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ‹ เช†เช—เชณเชจเซ‹ เชœเซ€เชตเชจ เชฎเชพเชฐเซเช—เชฎเชฐเซเชœเชŸเซเชฐเซ€ เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ (เชšเชพเชฐเซเชŸเชฎเชพเช‚เชฅเซ€ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡ เชชเซเชฐเชธเซเชคเซเชคเชฟเช“ เชเชฒเซ‡เช•เซเชธเซ€ เชเชŸเซ‡เชฒเซ‡เชชเชฟเชจ):

  • เชฆเชพเช–เชฒ เช•เชฐเซ‡เชฒ ะฑะปะพะบ เชกเซ‡เชŸเชพ เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเซ‡ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เช†เชตเซเชฏเชพ เชนเชคเชพ.
    เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ + เช—เซเชฐเซ‡เชซเชพเช‡เชŸ: เชกเชฟเชธเซเช• เชธเซเชชเซ‡เชธ เชตเชชเชฐเชพเชถเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช˜เชŸเชพเชกเชตเซ‹
  • เช†เชตเชพ เชฆเชฐเซ‡เช• เชฌเซเชฒเซ‹เช•เชจเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชฒเช–เชคเชพ เชชเชนเซ‡เชฒเชพ เช•เซ€ เช…เชจเซเชธเชพเชฐ เชธเซ‹เชฐเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. ORDER BYเช•เซ‹เชทเซเชŸเช• เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค.
  • เชธเซ‰เชฐเซเชŸ เช•เชฐเซเชฏเชพ เชชเช›เซ€, ะบัƒัะพะบ (part) เชกเซ‡เชŸเชพ เชกเชฟเชธเซเช• เชชเชฐ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡.
    เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ + เช—เซเชฐเซ‡เชซเชพเช‡เชŸ: เชกเชฟเชธเซเช• เชธเซเชชเซ‡เชธ เชตเชชเชฐเชพเชถเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช˜เชŸเชพเชกเชตเซ‹
  • เชธเชฐเซเชตเชฐ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟเชฎเชพเช‚ เชฎเซ‹เชจเชฟเชŸเชฐ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชฅเซ€ เช•เชฐเซ€เชจเซ‡ เช†เชตเชพ เช˜เชฃเชพ เชŸเซเช•เชกเชพเช“ เชจ เชนเซ‹เชฏ, เช…เชจเซ‡ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟเชจเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเซ‡ เช›เซ‡ ัะปะธัะฝะธั (merge, เชคเซเชฏเชพเชฐเชฌเชพเชฆ เชฎเชฐเซเชœ เช•เชฐเซ‹).
    เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ + เช—เซเชฐเซ‡เชซเชพเช‡เชŸ: เชกเชฟเชธเซเช• เชธเซเชชเซ‡เชธ เชตเชชเชฐเชพเชถเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช˜เชŸเชพเชกเชตเซ‹
    เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ + เช—เซเชฐเซ‡เชซเชพเช‡เชŸ: เชกเชฟเชธเซเช• เชธเซเชชเซ‡เชธ เชตเชชเชฐเชพเชถเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช˜เชŸเชพเชกเชตเซ‹
  • เชกเซ‡เชŸเชพ เชธเช•เซเชฐเชฟเชฏ เชฐเซ€เชคเซ‡ เช†เชฎเชพเช‚ เชตเชนเซ‡เชคเซ‹ เช…เชŸเช•เซ‡ เช•เซ‡ เชคเชฐเชค เชœ เชธเชฐเซเชตเชฐ เชคเซ‡เชจเชพ เชชเซ‹เชคเชพเชจเชพ เชชเชฐ เชฎเชฐเซเชœ เช•เชฐเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ‡ เช›เซ‡ ะฟะฐั€ั‚ะธั†ะธัŽ (partition), เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชœเชพเชคเซ‡ เชœ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ OPTIMIZE.
  • เชœเซ‹ เชชเชพเชฐเซเชŸเซ€เชถเชจเชฎเชพเช‚ เชฎเชพเชคเซเชฐ เชเช• เชœ เชŸเซเช•เชกเซ‹ เชฌเชพเช•เซ€ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเชฐเซเชœ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅ เชนเชถเซ‹ เชจเชนเซ€เช‚; เชคเชฎเชพเชฐเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชœ เชชเชกเชถเซ‡ OPTIMIZE ... FINAL

เชคเซ‡เชฅเซ€, เชชเซเชฐเชฅเชฎ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เช†เชตเซ‡ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡เช“ เชฅเซ‹เชกเซ€ เชœเช—เซเชฏเชพ เชฒเซ‡ เช›เซ‡. เช…เชจเซเช—เชพเชฎเซ€ เช˜เชŸเชจเชพเช“ เช˜เชฃเชพ เชชเชฐเชฟเชฌเชณเซ‹เชจเชพ เช†เชงเชพเชฐเซ‡ เช•เช‚เชˆเช• เช…เช‚เชถเซ‡ เชฌเชฆเชฒเชพเชˆ เชถเช•เซ‡ เช›เซ‡:

  • เชชเชพเชฐเซเชŸเซ€เชถเชจเซ€เช‚เช— เช•เซ€ เช•เชพเช‚ เชคเซ‹ เชฌเชนเซ เชจเชพเชจเซ€ (เชเช• เชฆเชฟเชตเชธ) เช…เชฅเชตเชพ เชฌเชนเซ เชฎเซ‹เชŸเซ€ (เช•เซ‡เชŸเชฒเชพเช• เชฎเชนเชฟเชจเชพเช“) เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.
  • เชฐเซ€เชŸเซ‡เชจเซเชถเชจ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชธเช•เซเชฐเชฟเชฏ เชชเชพเชฐเซเชŸเซ€เชถเชจ (เชœเซเชฏเชพเช‚ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡) เชจเซ€ เช…เช‚เชฆเชฐ เช•เซ‡เชŸเชฒเชพเช• เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชกเซ‡เชŸเชพ เชเช•เชคเซเชฐเซ€เช•เชฐเชฃ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชกเชจเซ‡ เชซเชฟเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เช…เชฅเชตเชพ เช•เชฆเชพเชš เชจเชนเซ€เช‚.
  • เชœเซ‹ เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เชฌเชงเชพ เชกเซ‡เชŸเชพ เชนเซ‹เชฏ, เชคเซ‹ เชชเชนเซ‡เชฒเชพเชจเชพ เชŸเซเช•เชกเชพเช“, เชœเซ‡ เชฌเซ‡เช•เช—เซเชฐเชพเช‰เชจเซเชก เชฎเชฐเซเชœ เชฅเชตเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชตเชฟเชถเชพเชณ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ (เชœเซ‹ เชคเชฎเซ‡ เชฌเชฟเชจ-เชถเซเชฐเซ‡เชทเซเช  เชชเชพเชฐเซเชŸเซ€เชถเชจเซ€เช‚เช— เช•เซ€ เชชเชธเช‚เชฆ เช•เชฐเซ‹ เช›เซ‹), เชคเซ‹ เชคเซ‡ เชคเชพเชœเชพ เชจเชพเชจเชพ เชŸเซเช•เชกเชพเช“ เชธเชพเชฅเซ‡ เชชเซ‹เชคเชพเชจเซ‡ เชฎเชฐเซเชœ เช•เชฐเชถเซ‡ เชจเชนเซ€เช‚.

เช…เชจเซ‡ เชคเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เช เชœ เชฐเซ€เชคเซ‡ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡. เช•เซเชฒเชฟเช•เชนเชพเช‰เชธเชฎเชพเช‚ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฆเซเชตเชพเชฐเชพ เช•เชฌเชœเซ‡ เช•เชฐเซ‡เชฒเซ€ เชœเช—เซเชฏเชพ เชซเช•เซเชค เชคเซเชฏเชพเชฐเซ‡ เชœ เชตเชงเซ‡ เช›เซ‡ เชœเซ‹:

  • เช…เชฐเชœเซ€ เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚ OPTIMIZE ... FINAL เชœเชพเชคเซ‡ เช…เชฅเชตเชพ
  • เชšเชพเชฒเซ เชงเซ‹เชฐเชฃเซ‡ เชฌเชงเชพ เชชเชพเชฐเซเชŸเซ€เชถเชจเซ‹เชฎเชพเช‚ เชกเซ‡เชŸเชพ เชฆเชพเช–เชฒ เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚, เชœเซ‡เชฅเซ€ เชตเชนเซ‡เชฒเชพ เช•เซ‡ เชชเช›เซ€ เชฌเซ‡เช•เช—เซเชฐเชพเช‰เชจเซเชก เชฎเชฐเซเชœ เชถเชฐเซ‚ เชฅเชพเชฏ.

เชฌเซ€เชœเซ€ เชชเชฆเซเชงเชคเชฟ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เชธเซŒเชฅเซ€ เชธเชนเซ‡เชฒเซ€ เชฒเชพเช—เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฅเซ€, เชคเซ‡ เช–เซ‹เชŸเซ€ เช›เซ‡ เช…เชจเซ‡ เชชเซเชฐเชฅเชฎ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹.
เชฎเซ‡เช‚ เชเช•เชฆเชฎ เชธเชฐเชณ เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เซ€ เช›เซ‡ เชœเซ‡ เช›เซ‡เชฒเซเชฒเชพ 4 เชตเชฐเซเชทเชฅเซ€ เชฆเชฐเชฐเซ‹เชœ เชฎเชพเชŸเซ‡ เชกเชฎเซ€ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชฎเซ‹เช•เชฒเชคเซ€ เชนเชคเซ€ เช…เชจเซ‡ เชฆเชฐ เช•เชฒเชพเช•เซ‡ เช•เซเชฐเซ‹เชจ เชšเชฒเชพเชตเชคเซ€ เชนเชคเซ€.
เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ เชกเซ€เชฌเซ€เชเชฎเชเชธเชจเซเช‚ เชธเชฎเช—เซเชฐ เชธเช‚เชšเชพเชฒเชจ เช เชนเช•เซ€เช•เชค เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ เช•เซ‡ เช† เชธเชฟเชธเซเชŸเชฎ เชตเชนเซ‡เชฒเชพ เช•เซ‡ เชชเช›เซ€เชฅเซ€ เชคเชฎเชพเชฎ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟเชจเซเช‚ เช•เชพเชฎ เช•เชฐเชถเซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชœเชพเชฃเซ€ เชถเช•เชพเชฏเซเช‚ เชจเชฅเซ€, เชœเซเชฏเชพเชฐเซ‡ เชœเซ‚เชจเชพ เชตเชฟเชถเชพเชณ เชŸเซเช•เชกเชพเช“ เชธเชพเชฅเซ‡ เชฎเชฐเซเชœ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชถเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เชคเซ‡ เช•เซเชทเชฃเชจเซ€ เชฐเชพเชน เชœเซ‹เชตเชพเชฎเชพเช‚ เช…เชธเชฎเชฐเซเชฅ เชนเชคเซ‹. เชจเชตเชพ เชจเชพเชจเชพ. เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซเช‚ เช•เซ‡ เช…เชฎเชพเชฐเซ‡ เชซเชฐเชœเชฟเชฏเชพเชค เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฐเซ€เชค เชถเซ‹เชงเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ + เช—เซเชฐเซ‡เชซเชพเช‡เชŸ: เชกเชฟเชธเซเช• เชธเซเชชเซ‡เชธ เชตเชชเชฐเชพเชถเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช˜เชŸเชพเชกเชตเซ‹

เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชทเซเชŸเช•เซ‹เชฎเชพเช‚ เชฎเชพเชนเชฟเชคเซ€

เชšเชพเชฒเซ‹ เช•เซ‹เชทเซเชŸเช•เชจเซ€ เชฐเชšเชจเชพ เชชเชฐ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช เชธเชฟเชธเซเชŸเชฎ.เชชเชพเชฐเซเชŸเซเชธ. เช† เช•เซเชฒเชฟเช•เชนเชพเช‰เชธ เชธเชฐเซเชตเชฐ เชชเชฐเชจเชพ เชคเชฎเชพเชฎ เช•เซ‹เชทเซเชŸเช•เซ‹เชจเชพ เชฆเชฐเซ‡เช• เชญเชพเช— เชตเชฟเชถเซ‡เชจเซ€ เชตเซเชฏเชพเชชเช• เชฎเชพเชนเชฟเชคเซ€ เช›เซ‡. เช…เชจเซเชฏ เชตเชธเซเชคเซเช“เชจเซ€ เชธเชพเชฅเซ‡, เชจเซ€เชšเซ‡เชจเชพ เช•เซ‰เชฒเชฎเซเชธ เชธเชฎเชพเชตเซ‡ เช›เซ‡:

  • เชกเซ€เชฌเซ€ เชจเชพเชฎ (database);
  • เชŸเซ‡เชฌเชฒ เชจเชพเชฎ (table);
  • เชชเชพเชฐเซเชŸเซ€เชถเชจ เชจเชพเชฎ เช…เชจเซ‡ ID (partition & partition_id);
  • เชœเซเชฏเชพเชฐเซ‡ เชŸเซเช•เชกเซ‹ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹ (modification_time);
  • เชเช• เชญเชพเช—เชฎเชพเช‚ เชฒเช˜เซเชคเซเชคเชฎ เช…เชจเซ‡ เชฎเชนเชคเซเชคเชฎ เชคเชพเชฐเซ€เช– (เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฆเชฟเชตเชธ เชชเซเชฐเชฎเชพเชฃเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡) (min_date & max_date);

เชเช• เชŸเซ‡เชฌเชฒ เชชเชฃ เช›เซ‡ system.graphite_retentions, เชจเซ€เชšเซ‡เชจเชพ เชฐเชธเชชเซเชฐเชฆ เช•เซเชทเซ‡เชคเซเชฐเซ‹ เชธเชพเชฅเซ‡:

  • เชกเซ€เชฌเซ€ เชจเชพเชฎ (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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹