|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
Приветствую! Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) В БД имеем таблицы следующего вида, с индексами: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Данные в таблицах имеют вид: DateAndTimeTagIndexVal2018-11-08 11:11:59.000000007.014465332031252018-11-08 11:11:59.000000016.806945800781252018-11-08 11:11:59.000000027.15197753906252018-11-08 11:11:59.000000037.075378417968752018-11-08 11:11:59.000000046.170684814453132018-11-08 11:11:59.000000056.462219238281252018-11-08 11:11:59.000000067.959045410156252018-11-08 11:11:59.000000077.969421386718752018-11-08 11:11:59.000000086.334503173828132018-11-08 11:11:59.000000097.04412841796875 В каждой такой таблице количество записей измеряется миллиардами. Частота записей времени - примерно 1 секунда. Количество TagIndex - до 100-1000 на таблицу. Т.е. в таблицу пишется до 1000 строк в секунду. Размер таблицы порядка 50GB, индекса 20GB Необходимо сделать множество выборок средних значений [Val] по заданному [TagIndex] и периоду времени. Обычно диапазон времени примерно час. За это время в таблице порядка миллиона записей. Запрос вида: Код: sql 1. 2. 3. 4. 5. 6. 7.
работает крайне медленно, причем по разному (может и минуту, а может и час-два по аналогичной выборке). Просьба посоветовать, как ускорить такие запросы. Возможно перестроить или создать дополнительные индексы... Попутно, подскажите: 1. Важен ли порядок условий в WHERE ([TagIndex] или диапазон [DateAndTime] первым)? 2. Насколько влияет то, что БД приаттачена на внешнем носителе HDD, подключенном по USB? В базу понятно ничего не пишется, только 1 подключение из студии для выполнения запросов. Спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 15:48 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
Ну, страдалец, если у тя ВСЕГДА интервал кратен часу, то индексированное представление спасет. ЗЫ. "1." Порядок в where - пофиг. Вот порядок в кластерном индексе - это ваше ФСЕ. Плохой у тя кластерный индекс. "2." Сильно влияет, страдалец. Весьма. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 15:54 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
aleks222 Плохой у тя кластерный индекс. у автора вообще куча с некластерным индексом сверху ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 15:56 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
База не моя, работаю с тем что есть и как есть индекс только один NONCLUSTERED интервал не всегда кратен часу Вопрос как раз в том, может надо создать доп индекс или т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 15:59 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
msLex aleks222 Плохой у тя кластерный индекс. у автора вообще куча с некластерным индексом сверху Как вот с такой кучей работать правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 16:01 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
aleks222 Ну, страдалец, если у тя ВСЕГДА интервал кратен часу, то индексированное представление спасет. Как вариант, я рассматривал строго почасово. Если Вам не сложно, напишите как выглядеть будет такое View сам не могу сообразить ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 16:08 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
kaktus1983 Вопрос как раз в том, может надо создать доп индекс или т.п. Код: sql 1.
Только, страдалец, это копия таблицы. Нафига это тебе нужно? Может с хозяином таблицы договориться? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 16:08 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
aleks222 Может с хозяином таблицы договориться? Не получится, хозяин - контроллер в шкафу, он ничего менять не захочет, а хозяин шкафа так и тем более. Мне надо произвести разовый анализ данных (технологических показателей работы агрегата за период времени) Эти запросы нужны только мне, как промежуточный этап для подготовки данных ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 16:14 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
kaktus1983 Вопрос как раз в том, может надо создать доп индекс или т.п. https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-overview?view=sql-server-2017 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 16:16 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
kaktus1983 Обычно диапазон времени примерно час. За это время в таблице порядка миллиона записей. Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 16:45 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
kaktus1983, Если данные из базы читаются только в режиме оффлайн, то при заливке данных индекс будет только мешать. Индекс понадобится для чтения данных, вот тогда его и создавайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 16:48 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
ROLpogo, Спасибо, я так и делаю ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 16:55 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
invm, добавка Код: sql 1.
приводит к тому, что запрос выполняется мгновенно, но результат NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 18:39 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
SERG1257, Спасибо, почитаю, не знал про такой функционал ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 18:40 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
aleks222 Код: sql 1.
Индекс на одну таблицу (не самую большую, 600 млн записей) делался 2,5 часа и + 15GB в БД ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 18:45 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
kaktus1983 aleks222 Код: sql 1.
Индекс на одну таблицу (не самую большую, 600 млн записей) делался 2,5 часа и + 15GB в БД Договорись со шкафом и сделай кластерный индекс Код: sql 1.
Шкафу будет пофиг, а тебе приятно. ЗЫ. Ну а если не договоришься Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 18:49 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
aleks222, полностью согласен! еще раз спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 19:03 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
aleks222 Код: sql 1. 2. 3.
Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 09:04 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
kaktus1983 aleks222 Код: sql 1. 2. 3.
Код: sql 1. 2.
Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 09:23 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
aleks222 Как-то так. Эффективнее всего уломать шкаф. Так все же, какой из этих индексов более рационально делать? Плюсы и минусы кластерного и с include можете показать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 09:31 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
kaktus1983 invm, добавка Код: sql 1.
приводит к тому, что запрос выполняется мгновенно, но результат NULL Либо неправильно написан запрос, либо неверны критерии отбора, либо индекс битый. kaktus1983 Так все же, какой из этих индексов более рационально делать? А с точки зрения решаемой задачи, кластерный и некластерный с include одинаковы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 10:25 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
invm Чудес не бывает. Либо неправильно написан запрос, либо неверны критерии отбора, либо индекс битый. invm Кластерный. Место сэкономите. А с точки зрения решаемой задачи, кластерный и некластерный с include одинаковы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 10:34 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
kaktus1983 в запросе сложно сделать ошибку Например, '2020-03-02 00:00:00.0000000', в зависимости от языка сеанса, может быть как 2-м марта, так и 3-м февраля. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 11:14 |
|
Выборка данных из таблицы с миллиардами записей
|
|||
---|---|---|---|
#18+
invm, я ж к рабочему запросу только добавляю Код: sql 1.
и все - и вместо результата вижу одну строку с NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2020, 11:31 |
|
|
start [/forum/topic.php?fid=46&msg=39941716&tid=1686279]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 319ms |
total: | 466ms |
0 / 0 |