184 похожих чатов

Господа, у меня такой вопрос возник. Вот у нас есть

таблица с такой структурой:

(
Path String,
Value Float64,
Time UInt32,
Date Date,
Timestamp UInt32
)
ENGINE = GraphiteMergeTree(Date, (Path, Time), 8192, 'graphite_rollup')

В ней хранятся графитовые метрики. В первичный ключ у нас входит строковое поле Path и время. Партиции, которые создал ClickHouse, выглядят следующим образом: 20180610_20180611_6676093_6700911_7 (партиций для каждого месяца по 20-30 штук) . Насколько я понимаю, для int'овых полей имя 6676093_6700911 означало бы диапазон первичного ключа 6676093 — 6700911, но что это означает для строковых полей? Вероятнее всего, берется хэш от строки, а значит запросы вида WHERE Path = 'моя_строка' и тем более WHERE Path = 'мой_префикс%' будут идти во все партиции? Или как это работает :)?

Спрашиваю, потому что такие запросы выполняются неприлично долго, скорость чтения состаляет сотни тысяч строк в секунду вместо ожидаемых сотен миллионов :). Второй раз исполняется уже быстрее, но тоже долго. Хочется понять, почему так происходит и правильно ли я понимаю, как партиции разбиваются по файлам.

1 ответов

12 просмотров

6676093 - это последовательный номер вставки. Он говорит о том, что в таблицу, в данную партицию, было сделано примерно 6 676 093 INSERT-ов. Для хорошей производительности в WHERE надо указывать условия и на первичный ключ (например, Path = 'мой_префикс%') и на ключ партиционирования (например, Date >= '2018-07-20'). Если есть условия на Time, то условия на Date всё-равно нужны.

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
11
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ребят, кто сталкивался с тем, что Electron.js не разворачивает билд React.js-приложения? Голый body в чёрном цвете, как и должно быть, но остального - нет. Билд работает исп...
..
6
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Anyone knows how to build this widget in Flutter? I have all the assets for round stations and the road, but how can I make the my widget animate between these stations? And h...
Mohammad Zamani
9
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Карта сайта