powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизация рабаты с BIG DATA
8 сообщений из 33, страница 2 из 2
Оптимизация рабаты с BIG DATA
    #39733173
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shanga,

какая Вам разница - сколько суток? Эта таблица заполняется один раз.
...
Рейтинг: 0 / 0
Оптимизация рабаты с BIG DATA
    #39733215
Acce_Ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
75 394 027 566 сочетаний из 60 по 10.
Объем таблицы при длине сгенерированной строки 50 (например) - примерно 4Тб.
Тут юмор какой-то обсуждают?
...
Рейтинг: 0 / 0
Оптимизация рабаты с BIG DATA
    #39733272
Balbidon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вкратце, идея состоит в уменьшении количества Nested Loops при обработке больших объемов. Для этого создаем промежуточную таблицу, в которой уже есть упорядоченные пары значений:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT
	a1.val AS c1, a2.val AS c2
INTO
	a2
FROM
	zones AS a1 CROSS JOIN zones AS a2
WHERE
	a1.val < a2.val

CREATE CLUSTERED INDEX idx1 ON a2(c1, c2)
CREATE INDEX idx2 ON a2(c2)



Для простоты используем только 2 таблицы в декартовом произведении, но можем использовать и больше. Затем при помощи данной таблицы пар получаем запрос вида:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT
	t1.c1 AS c1, t1.c2 AS c2, 
	t2.c1 AS c3, t2.c2 AS c4, 
	t3.c1 AS c5, t3.c2 AS c6, 
	t4.c1 AS c7, t4.c2 AS c8, 
	t5.c1 AS c9, t5.c2 AS c10
FROM
	a2 AS t1
	INNER JOIN 
	a2 AS t2 ON t2.c1 > t1.c2
	INNER JOIN 
	a2 AS t3 ON t3.c1 > t2.c2
	INNER JOIN 
	a2 AS t4 ON t4.c1 > t3.c2
	INNER JOIN 
	a2 AS t5 ON t5.c1 > t4.c2



результаты которого можно сохранять в нужном формате.

Не совсем ясна необходимость хранения столь большого массива комбинаций в материализованном виде, также смущают сложности, которые обязательно возникнут при добавлении новых зон, ибо добавление всего одной зоны к уже имеющимся 60 увеличит объем хранимой информации на 20%. Т.е. 4 ТБ становятся 4.8 ТБ, 62 зоны - 5.7 ТБ, и так далее. Опять же, объем индексов тоже будет расти, как и сложность в обслуживании данной таблицы. Естественно, часть проблем можно решить используя COLUMNSTORE, но, ИМХО, имеет смысл рассмотреть варианты с представлениями или процедурами/функциями для реализации данного функционала.
...
Рейтинг: 0 / 0
Оптимизация рабаты с BIG DATA
    #39733295
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BalbidonЕстественно, часть проблем можно решить используя COLUMNSTOREВроде же columnstore практ. бесполезен на уникальных столбцах, не? А здесь, как я понял, будут уникальные значения.
...
Рейтинг: 0 / 0
Оптимизация рабаты с BIG DATA
    #39733816
Balbidon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael,

Строки уникальны - это да. Ну а в столбцах будут миллиарды повторений из 60+ уникальных значений, так что, мне кажется, COLUMNSTORE - самое оно. Особенно для первых столбцов эффект должен быть хорош, т.к. в первом столбце будет всего 60+ групп, вместо 75 миллиардов повторяющихся значений. К сожалению, я не нашел никаких деталей реализации COLUMNSTORE COMPRESSION в SQL Server, но даже если там простой RLE алгоритм, должно работать весьма эффективно.

Если бы это была HPE Vertica или AWS Redshift, то первые 9 столбцов можно было бы определить как RLE/Runlength, а последний как Dictionary, что в сумме дало бы очень серьезный эффект сжатия. Но это оффтоп...
...
Рейтинг: 0 / 0
Оптимизация рабаты с BIG DATA
    #39733932
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я всё-таки не пойму, если тебе нужны просто комбинации - то почему ты не используешь просто какой-нибудь язык программирования, который бы тебе эти комбинации нагенерировал?

А вообще, у меня главный вопрос - какова конечная цель всех этих комбинаций? Что ты с ними будешь делать? Просто если ты хочешь их пронумеровать и обращаться по номеру - имеет смысл написать формулу, которая сопоставляла бы комбинацию с номером и высчитывала её по мере запросов. Запросил комбинацию номер 12435 - и эта формула тебе её выдала.
Если ты хочешь распечатать и на стенку повесить - то надо написать прогу на C++, она в блокнот всё выдаст - и печатай.
Если ты хочешь на экран пользователю (зачем-то) выводить -то можно, опять же, высчитывать ровно те, которые нужно отобразить, игнорируя остальные.
Если ты хочешь полученную таблицу INNERJOIN с какой-то другой - то это абзац. Что-то не то у тебя с проектированием.
...
Рейтинг: 0 / 0
Оптимизация рабаты с BIG DATA
    #39733933
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Balbidon,

А, вы имели в виду хранить каждое значение последовательности в своем столбце? Тогда может быть, но писать джойны к такому будет больно.

Я-то полагал, что речь идет и некоей свертке или хэше, и тут columnstore вряд ли что-то даст, значения-то уникальные. Даже если сделать ключ tinyint (60 элементов поместятся без проблем), а хэш соответственно binary(10)... не, все равно фигня какая-то.
...
Рейтинг: 0 / 0
Оптимизация рабаты с BIG DATA
    #39734411
Balbidon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael,

Джойны к таблице с COLUMNSTORE индексом ничем не отличаются от джойнов к таблице без оного в плане синтаксиса. Планы же в первом случае будут даже более эффективными, т.к. порядок столбцов может быть любым и других индексов не потребуется. А как раз без COLUMNSTORE придется создавать помимо кластерного (не обязательно, но лучше иметь) еще и по некластерному на каждый столбец.

Charles Weyland,

Поддержу однозначно. Но все-таки академический интерес данная задача представляет.
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизация рабаты с BIG DATA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]