Size: a a a

ClickHouse не тормозит

2021 March 17

Otabek Μansurov in ClickHouse не тормозит
Добрый вечер! Подскажите пожалуйста почему у меня не получается вывести данные из таблицы для визуализации.
SELECT
 status,
 status = 200 as good,
 status = 400 as bad,
 status = 304 as warning,
 status = 302 as error
FROM
(
   SELECT
       timestamp,
       status,
       (intDiv(toUInt32(timestamp), 60)) * 1000 AS t,
       countIf(status = 200) AS goodStatus,
       countIf(status = 400) AS badStatus,
       countIf(status = 304) AS warningStatus,
       countIf(status = 302) AS errorStatus
   FROM access_logs
   WHERE ((timestamp >= toDate(1615980933)) AND (timestamp <= toDate(1615998052)))
   GROUP BY t
   ORDER BY t
)


Текст ошибки:

Code: 215, e.displayText() = DB::Exception: Column `timestamp` is not under aggregate function and not in GROUP BY: While processing timestamp, status, intDiv(toUInt32(timestamp), 60) * 1000 AS t, countIf(status = 200) AS goodStatus, countIf(status = 400) AS badStatus, countIf(status = 304) AS warningStatus, countIf(status = 302) AS errorStatus (version 21.1.2.15 (official build))


Структура:

CREATE TABLE access_logs
(
   `request_id` String,
   `timestamp` DateTime,
   `remote_user` String,
   `remote_addr` String,
   `scheme` String,
   `host` String,
   `server_addr` String,
   `request_method` String,
   `request_uri` String,
   `request_length` UInt32,
   `request_time` Float64,
   `status` UInt16,
   `body_bytes_sent` UInt32,
   `upstream_addr` String,
   `upstream_status` String,
   `upstream_response_time` Float64
)
ENGINE = MergeTree
PARTITION BY toDate(timestamp)
ORDER BY (timestamp, host)
TTL timestamp + toIntervalWeek(1)
SETTINGS index_granularity = 8192;
источник

ПБ

Повелитель Бури... in ClickHouse не тормозит
Otabek Μansurov
Добрый вечер! Подскажите пожалуйста почему у меня не получается вывести данные из таблицы для визуализации.
SELECT
 status,
 status = 200 as good,
 status = 400 as bad,
 status = 304 as warning,
 status = 302 as error
FROM
(
   SELECT
       timestamp,
       status,
       (intDiv(toUInt32(timestamp), 60)) * 1000 AS t,
       countIf(status = 200) AS goodStatus,
       countIf(status = 400) AS badStatus,
       countIf(status = 304) AS warningStatus,
       countIf(status = 302) AS errorStatus
   FROM access_logs
   WHERE ((timestamp >= toDate(1615980933)) AND (timestamp <= toDate(1615998052)))
   GROUP BY t
   ORDER BY t
)


Текст ошибки:

Code: 215, e.displayText() = DB::Exception: Column `timestamp` is not under aggregate function and not in GROUP BY: While processing timestamp, status, intDiv(toUInt32(timestamp), 60) * 1000 AS t, countIf(status = 200) AS goodStatus, countIf(status = 400) AS badStatus, countIf(status = 304) AS warningStatus, countIf(status = 302) AS errorStatus (version 21.1.2.15 (official build))


Структура:

CREATE TABLE access_logs
(
   `request_id` String,
   `timestamp` DateTime,
   `remote_user` String,
   `remote_addr` String,
   `scheme` String,
   `host` String,
   `server_addr` String,
   `request_method` String,
   `request_uri` String,
   `request_length` UInt32,
   `request_time` Float64,
   `status` UInt16,
   `body_bytes_sent` UInt32,
   `upstream_addr` String,
   `upstream_status` String,
   `upstream_response_time` Float64
)
ENGINE = MergeTree
PARTITION BY toDate(timestamp)
ORDER BY (timestamp, host)
TTL timestamp + toIntervalWeek(1)
SETTINGS index_granularity = 8192;
Поле timestamp в группировку добавить попробуйте
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Vladimir Bunchuk
у меня в таких случаях при рестарте может рандомно ломаться реплика у какой-то таблички — приходится руками исправлять
что? что ломается? как исправляете?
источник

K

Konstantin Ilchenko in ClickHouse не тормозит
Otabek Μansurov
Добрый вечер! Подскажите пожалуйста почему у меня не получается вывести данные из таблицы для визуализации.
SELECT
 status,
 status = 200 as good,
 status = 400 as bad,
 status = 304 as warning,
 status = 302 as error
FROM
(
   SELECT
       timestamp,
       status,
       (intDiv(toUInt32(timestamp), 60)) * 1000 AS t,
       countIf(status = 200) AS goodStatus,
       countIf(status = 400) AS badStatus,
       countIf(status = 304) AS warningStatus,
       countIf(status = 302) AS errorStatus
   FROM access_logs
   WHERE ((timestamp >= toDate(1615980933)) AND (timestamp <= toDate(1615998052)))
   GROUP BY t
   ORDER BY t
)


Текст ошибки:

Code: 215, e.displayText() = DB::Exception: Column `timestamp` is not under aggregate function and not in GROUP BY: While processing timestamp, status, intDiv(toUInt32(timestamp), 60) * 1000 AS t, countIf(status = 200) AS goodStatus, countIf(status = 400) AS badStatus, countIf(status = 304) AS warningStatus, countIf(status = 302) AS errorStatus (version 21.1.2.15 (official build))


Структура:

CREATE TABLE access_logs
(
   `request_id` String,
   `timestamp` DateTime,
   `remote_user` String,
   `remote_addr` String,
   `scheme` String,
   `host` String,
   `server_addr` String,
   `request_method` String,
   `request_uri` String,
   `request_length` UInt32,
   `request_time` Float64,
   `status` UInt16,
   `body_bytes_sent` UInt32,
   `upstream_addr` String,
   `upstream_status` String,
   `upstream_response_time` Float64
)
ENGINE = MergeTree
PARTITION BY toDate(timestamp)
ORDER BY (timestamp, host)
TTL timestamp + toIntervalWeek(1)
SETTINGS index_granularity = 8192;
не совсем понятно что вам надо вывести, внешний запрос с внутренним не коррелируют
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Sergey Churin
Привет. После применения use_minimalistic_part_header_in_zookeeper 1 (глобально на сервере) как можно старые партиции преобразовать под компактный формат хранения в зукипере? optimize final не прокатывает.
а почему вы думаете что он не компактный?
источник

VB

Vladimir Bunchuk in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
что? что ломается? как исправляете?
у меня есть таблица, в которую пишет несколько десятков матвью
вот у нее часто проблемы с репликой начинаются после рестарта кликхаусов
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Danil
Подскажите такой момент: сейчас для вставки данных используется буфер т.к. источник генерит много однострочных инсертов.
Если использовать вставку через Null + MV то кх сам оптимизирует этот момент?
Если нет, то куда буфер прикручивать тогда?
какой буфер?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Vladimir Bunchuk
у меня есть таблица, в которую пишет несколько десятков матвью
вот у нее часто проблемы с репликой начинаются после рестарта кликхаусов
какой-то бред. Что такое проблемы? Очередь репликации застреввает? Парты теряются? too many parts ?
источник

VB

Vladimir Bunchuk in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
какой-то бред. Что такое проблемы? Очередь репликации застреввает? Парты теряются? too many parts ?
too many parts и Couldn't start replication
источник

AN

Andrey Nikulin in ClickHouse не тормозит
Danil
Подскажите такой момент: сейчас для вставки данных используется буфер т.к. источник генерит много однострочных инсертов.
Если использовать вставку через Null + MV то кх сам оптимизирует этот момент?
Если нет, то куда буфер прикручивать тогда?
Я экспериментировал с динамическим пересозданием Log таблиц, но пока не проверял есть ли выигрыш на больших потоках одиночных вставок.
источник

SC

Sergey Churin in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
а почему вы думаете что он не компактный?
Потому что количество znode почти не уменьшилось после изменения настройки и рестарта. И тут писали, что старые партиции сами не меняют формат на компактный. И Алексей какую-то конвертилку упоминал
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Vladimir Bunchuk
too many parts и Couldn't start replication
и как вы это чините?
источник

VB

Vladimir Bunchuk in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
и как вы это чините?
удаляю в зукипере is_active, пересоздаю таблицу на ноде
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Sergey Churin
Потому что количество znode почти не уменьшилось после изменения настройки и рестарта. И тут писали, что старые партиции сами не меняют формат на компактный. И Алексей какую-то конвертилку упоминал
use_minimalistic_part_header_in_zookeeper 1 очень давно включен по дефолту.

>И тут писали, что старые партиции сами не меняют формат на компактный. И Алексей какую-то конвертилку упоминал
любой альтер конвертирует все парты. alter add column или alter update
тем более optimize
источник

Otabek Μansurov in ClickHouse не тормозит
Konstantin Ilchenko
не совсем понятно что вам надо вывести, внешний запрос с внутренним не коррелируют
Я хотел вывести группируя  кол-во запросов по статусу в определенное время. Как правило получить такую с подзапросом или это не требуется для получения корректного результата?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Vladimir Bunchuk
удаляю в зукипере is_active, пересоздаю таблицу на ноде
😱жесть, я ни разу в жизни такого НЕ делал.
Сделайте хоть тикет на гитхабе, все я думаю намного проще
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
нет никаких индексов
источник

K

Konstantin Ilchenko in ClickHouse не тормозит
Otabek Μansurov
Я хотел вывести группируя  кол-во запросов по статусу в определенное время. Как правило получить такую с подзапросом или это не требуется для получения корректного результата?
так разве не то что вам нужно?

SELECT
 status,
 (intDiv(toUInt32(timestamp), 60)) * 1000 AS t,
 countIf(status = 200) AS goodStatus,
 countIf(status = 400) AS badStatus,
 countIf(status = 304) AS warningStatus,
 countIf(status = 302) AS errorStatus
FROM access_logs
WHERE ((timestamp >= toDate(1615980933)) AND (timestamp <= toDate(1615998052)))
GROUP BY status, t
ORDER BY status, t
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Повелитель Бури
Добрый! Коллеги, в новой версии users.xml надо вность ip адрес
Норм если я пропишу 0.0.0.0 ?

<users>
       <default>
           <password></password>
           <access_management>1</access_management>
           <networks incl="networks" replace="replace">
               <ip>::1</ip>
               <ip>127.0.0.1</ip>
<networks incl="networks" replace="replace">
               <ip>::1</ip>
               <ip>127.0.0.1</ip>

это про доступ с ip клиента, а не про то какой ip cлушать серверу
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Otabek Μansurov
Я хотел вывести группируя  кол-во запросов по статусу в определенное время. Как правило получить такую с подзапросом или это не требуется для получения корректного результата?
вы из мира mysql ?

вместо
timestamp,
status,


вам тогда
any(timestamp),
any(status),
источник