เชถเซเชญเซเชเซเชเชพเช.
เชเซ เชเซเช เชธเชฟเชธเซเชเชฎเชจเซเช เชถเซเชทเชฃ เชเชฐเซ เชเซ
เชเซเชฒเชฟเชเชนเชพเชเชธ เชตเชฐเซเชฃเชตเซเชฒ เชธเชฎเชธเซเชฏเชพเชเชจเซ เชธเชพเชฐเซ เชฐเซเชคเซ เชนเชฒ เชเชฐเซ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชตเซเชนเซเชธเซเชชเชฐเชฎเชพเชเชฅเซ 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
);
เชเช เชเซเชฌเชฒ เชชเชฃ เชเซ
- เชกเซเชฌเซ เชจเชพเชฎ (
Tables.database
); - เชเซเชฌเชฒ เชจเชพเชฎ (
Tables.table
); - เชฎเซเชเซเชฐเชฟเช เชเชเชฎเชฐ เชเซเชฏเชพเชฐเซ เชเชเชพเชฎเซ เชเชเชคเซเชฐเซเชเชฐเชฃ เชฒเชพเชเซ เชเชฐเชตเซเช เชเซเชเช (
age
);
เชคเซเชฅเซ:
- เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชญเชพเชเซเชจเซเช เชเซเชทเซเชเช เช เชจเซ เชเชเชคเซเชฐเซเชเชฐเชฃ เชจเชฟเชฏเชฎเซเชจเซเช เชเซเชทเซเชเช เชเซ.
- เช เชฎเซ เชคเซเชฎเชจเชพ เชเชเชคเชฐเชเซเชฆเชจเซ เชเซเชกเซเช เชเซเช เช เชจเซ เชคเชฎเชพเชฎ เชเซเชทเซเชเชเซ *GraphiteMergeTree เชฎเซเชณเชตเซเช เชเซเช.
- เช
เชฎเซ เชฌเชงเชพ เชชเชพเชฐเซเชเซเชถเชจเซ เชถเซเชงเซ เชฐเชนเซเชฏเชพ เชเซเช เชเซเชฎเชพเช:
- เชเช เชเชฐเชคเชพเช เชตเชงเซ เชญเชพเช
- เช
เชฅเชตเชพ เชเชเชพเชฎเซ เชเชเชคเซเชฐเซเชเชฐเชฃ เชจเชฟเชฏเชฎ เชฒเชพเชเซ เชเชฐเชตเชพเชจเซ เชธเชฎเชฏ เชเชตเซ เชเชฏเซ เชเซ, เช
เชจเซ
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
. เช
เชเชคเชฟเชฎ เช
เชฎเชฒเซเชเชฐเชฃ เช เชนเชเซเชเชคเชจเซ เชชเชฃ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซ เชเซ เชเซ เชธเชเซเชฐเชฟเชฏ เชฐเซเชเซเชฐเซเชกเชฟเชเช เชธเชพเชฅเซ เชชเชพเชฐเซเชเซเชถเชจเซเชจเซ เชธเซเชชเชฐเซเชถ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ.
เช เชชเซเชฐเซเชเซเชเซเช เชฌเชฐเชพเชฌเชฐ เชถเซเช เชเชฐเซ เชเซ
เชเซ เชคเชฎเซ เชเซเชฒเชฟเชเชนเชพเชเชธ เชธเชพเชฅเซ เชธเชฐเซเชตเชฐ เชชเชฐ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชเชฒเชพเชตเซ เชเซ, เชคเซ เชคเซ เชซเชเซเชค เชกเชฟเชฎเชจ เชฎเซเชกเชฎเชพเช เชเชพเชฎ เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเชถเซ. เชเช เชเชฒเชพเชเชฎเชพเช เชเชเชตเชพเชฐ เชตเชฟเชจเชเชคเชฟ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเชถเซ, เชคเชชเชพเชธ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช เชเซ เชถเซเช เชคเซเชฐเชฃ เชฆเชฟเชตเชธ เชเชฐเชคเชพเช เชเซเชจเชพ เชจเชตเชพ เชชเชพเชฐเซเชเซเชถเชจเซ เชฆเซเชเชพเชฏเชพ เชเซ เชเซ เชเชชเซเชเชฟเชฎเชพเชเช เชเชฐเซ เชถเชเชพเชฏ เชเซ.
เช เชฎเชพเชฐเซ เชคเชพเชคเซเชเชพเชฒเชฟเช เชฏเซเชเชจเชพเช เชเชเชพเชฎเชพเช เชเชเชพ เชกเซเชฌ เชชเซเชเซเชเซ เชชเซเชฐเชฆเชพเชจ เชเชฐเชตเชพเชจเซ เชเซ, เช เชจเซ เชเซ เชถเชเซเชฏ เชนเซเชฏ เชคเซ เชเชฐเชชเซเชเชฎ เชชเชฃ.
เชคเซเชจเชพ เชฌเชฆเชฒเซ เชเช เชจเชฟเชทเซเชเชฐเซเชท
เชเซเชฒเซเชฒเชพ 9+ เชฎเชนเชฟเชจเชพเชฎเชพเช เชนเซเช เชฎเชพเชฐเซ เชเชเชชเชจเซเชฎเชพเช เชเซเช
เชตเชฟเชจเชเชคเชฟ เชตเชฟเชเชธเชพเชตเชตเชพ เชฎเชพเชเซ เชเซเชเชฒเชพเช เชฒเชฟเชเชฐ เชฌเซเชฏเชฐ เช
เชจเซ เชเชกเชฎเชฟเชจ เชฆเชฟเชตเชธเซ เชเชฐเซเชเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชนเชคเชพ
เชธเซเชฐเซเชธ: www.habr.com