Size: a a a

ClickHouse не тормозит

2021 January 26

В

Виолет in ClickHouse не тормозит
привет) а подскажите пожалуйста функцию как LEAD
вот есть running_difference, она типа lag
источник

l

lnuynxa in ClickHouse не тормозит
Виолет
привет) а подскажите пожалуйста функцию как LEAD
вот есть running_difference, она типа lag
источник

l

lnuynxa in ClickHouse не тормозит
Она может как вперед так и назад заглядывать, но только в пределах блока
источник

CO

Chern Oleksander in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
show users появился через два года после 19.11
)))) Спасибо
источник

В

Виолет in ClickHouse не тормозит
Пасибо!
источник

AM

Ada Min in ClickHouse не тормозит
Подскажите:
Есть два разных КХ сервера, никак между собой не связанных.
На первом таблица  db1 с колонками А,Б,С,Д
На втором таблица db2 c колонками С,Д.
Как перенести данные из первого сервера на второй без связывания серверов через зукипер?
источник

l

lnuynxa in ClickHouse не тормозит
Ada Min
Подскажите:
Есть два разных КХ сервера, никак между собой не связанных.
На первом таблица  db1 с колонками А,Б,С,Д
На втором таблица db2 c колонками С,Д.
Как перенести данные из первого сервера на второй без связывания серверов через зукипер?
смотря сколько данных
можно rsync, можно  remote table function + INSERT SELECT
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
Ada Min
Подскажите:
Есть два разных КХ сервера, никак между собой не связанных.
На первом таблица  db1 с колонками А,Б,С,Д
На втором таблица db2 c колонками С,Д.
Как перенести данные из первого сервера на второй без связывания серверов через зукипер?
я так понимаю, имеется ввиду без выключения записи?
источник

AM

Ada Min in ClickHouse не тормозит
Константин Трофимов
я так понимаю, имеется ввиду без выключения записи?
да. Но данные нужны только за предыдущие дни. Правда партиции по месяцам. Но надеюсь это не влияет.
INSERT SELECT теоретически идеален, так как локально работает довольно быстро.... но не в курсе, как выборку сделать с одного сервака, а инсерт на другом...
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
Из вашего вопроса было не понятно, что нужны исторические данные и свежие можно не переносить. Поэтому вам посоветовали remote табличную функцию. Но в вашем случае достаточно скомандовать alter table таблица freeze, что отложит копию вашей таблицы на харлинках в каталоге shadow в датадире кликхауса (по умолчанию /var/lib/clickhouse). После этого вы сможете скопировать файлы из shadow на новый сервер в каталог data/база/таблица/detached на новом сервере. Можно как вам порекомендовали выше rsync-ом. Я предпочитаю tar c * | pzstd  | nc хост порт и nc -l | pzstd -d | tar x на новом сервере. После этого вам необходимо будет поселектить из system.detached_parts и приатачить каждый парт командой alter table таблица attach part парт. Ну или партициями целиком, это без разницы.
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
ну или можно список партов прям из ls взять, тоже без разницы. Мне удобнее из detached_parts
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
уже на сервере назначения вы можете дообработать данные. Например, если вам надо отрезать часть дней, а партиции по месяцам, то можно действительно select insert с нужным where. А потом alter table таблица replace partition партиция from временная таблица. Ну или оставить как есть если вам так ОК.
источник

В

Виолет in ClickHouse не тормозит
а что-то типа row_number не подскажете как сделать?
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
Виолет
а что-то типа row_number не подскажете как сделать?
а как это? вы хотите автоинкремент?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Виолет
а что-то типа row_number не подскажете как сделать?
источник

В

Виолет in ClickHouse не тормозит
огооо) спасибо!!
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
или даже
set allow_experimental_window_functions=1

SELECT gr, count(*) OVER (PARTITION BY gr) rn_in_g, x
from  (select number %3 gr, number x from numbers(9))

┌─gr─┬─rn_in_g─┬─x─┐
│  0 │       1 │ 0 │
│  0 │       2 │ 3 │
│  0 │       3 │ 6 │
│  1 │       1 │ 1 │
│  1 │       2 │ 4 │
│  1 │       3 │ 7 │
│  2 │       1 │ 2 │
│  2 │       2 │ 5 │
│  2 │       3 │ 8 │
└────┴─────────┴───┘
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
кол-во строк count(*) до текущей внутри окна == rownumber
источник

AM

Ada Min in ClickHouse не тормозит
Константин Трофимов
Из вашего вопроса было не понятно, что нужны исторические данные и свежие можно не переносить. Поэтому вам посоветовали remote табличную функцию. Но в вашем случае достаточно скомандовать alter table таблица freeze, что отложит копию вашей таблицы на харлинках в каталоге shadow в датадире кликхауса (по умолчанию /var/lib/clickhouse). После этого вы сможете скопировать файлы из shadow на новый сервер в каталог data/база/таблица/detached на новом сервере. Можно как вам порекомендовали выше rsync-ом. Я предпочитаю tar c * | pzstd  | nc хост порт и nc -l | pzstd -d | tar x на новом сервере. После этого вам необходимо будет поселектить из system.detached_parts и приатачить каждый парт командой alter table таблица attach part парт. Ну или партициями целиком, это без разницы.
а если места на сервере не хватает для создания копии?

Попробовал INSERT INTO test.db2 SELECT c,d FROM remoteSecure('1.1.1.1', test.db1, 'default', 'password') WHERE time>='2021-01-01 00:00:00' and time<'2021-01-02 00:00:00'
Получил ошибку:
`Received exception from server (version 20.12.4):
Code: 519. DB::Exception: Received from localhost:9000. DB::Exception: All attempts to get table structure failed. Log:

Code: 279, e.displayText() = DB::NetException: All connection tries failed. Log:

Code: 209, e.displayText() = DB::NetException: Timeout: connect timed out: 1.1.1.1) (version 20.12.4.5 (official build))
`
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Ada Min
а если места на сервере не хватает для создания копии?

Попробовал INSERT INTO test.db2 SELECT c,d FROM remoteSecure('1.1.1.1', test.db1, 'default', 'password') WHERE time>='2021-01-01 00:00:00' and time<'2021-01-02 00:00:00'
Получил ошибку:
`Received exception from server (version 20.12.4):
Code: 519. DB::Exception: Received from localhost:9000. DB::Exception: All attempts to get table structure failed. Log:

Code: 279, e.displayText() = DB::NetException: All connection tries failed. Log:

Code: 209, e.displayText() = DB::NetException: Timeout: connect timed out: 1.1.1.1) (version 20.12.4.5 (official build))
`
ping сколько между серверами?
источник