Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 уменьшить размер таблицы  [new]
valv
Member

Откуда:
Сообщений: 118
добрый день,
MS SQL server 2014 SP2, в нём таблица (int, datetime, varchar(max)). 60M строк, 750 GB без индексов.
в таблице крайне важные данные, активно используется.
последнее время таблица растёт всё быстрее, +120 GB за последний месяц. (данные старше года удаляются).
из-за размера таблицы возникают проблемы. необходимо уменьшить.
я попробовал использовать page compression, функци COMPRESS из версии 2016, а также clr функцию для архивирования (7zip, rar методы). размер уменьшается в 3-4 раза, но этого недостаточно.

найден другой путь: в текстовом поле содержатся похожие фрагменты текста.
например:
строка 1: "Повышение артериального давления 145/93. Врожденное сужение или атеросклероз аорты."
строка 2: "Повышение артериального давления 146/94. Врожденное сужение или атеросклероз аорты."
можно в основной таблиц хранить только изменяющееся значение
{145/93},
а основной текст записать в другую таблицу:
pattern: "Повышение артериального давления {0}/{1}. Врожденное сужение или атеросклероз аорты."
этот подход уменьшает размер таблицы в 50-60 раз, то что надо.
НО:
как найти все паттерны? в ручную нереально, их несколько тысяч разновидностей.
из полнотекствого индекса не удалось получить.
были бы это xml, я бы получил xsd всех строк и их бы сравнивал.
какие варианты, в какую сторону копать?
спасибо.
22 ноя 16, 14:24    [19920792]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
тут задачка у вас фактически связана с перепроектированием базы. нормализация/верификация/актуализация справочников/создание номенклатур справочников и тд и тп. нудно, долго и почти в ручном режиме
22 ноя 16, 14:27    [19920806]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
aleks2
Guest
valv
60M строк, 750 GB без индексов.
в таблице крайне важные данные, активно используется.

Это доставляет!

valv
найден другой путь: в текстовом поле содержатся похожие фрагменты текста.
например:
строка 1: "Повышение артериального давления 145/93. Врожденное сужение или атеросклероз аорты."
строка 2: "Повышение артериального давления 146/94. Врожденное сужение или атеросклероз аорты."
можно в основной таблиц хранить только изменяющееся значение


Using Columnstore and Columnstore Archive Compression

Applies to: SQL Server (SQL Server 2014 through current version), Azure SQL Database.

Basics
Columnstore tables and indexes are always stored with columnstore compression. You can further reduce the size of columnstore data by configuring an additional compression called archival compression. To perform archival compression, SQL Server runs the Microsoft XPRESS compression algorithm on the data. Add or remove archival compression by using the following data compression types:
22 ноя 16, 14:54    [19920958]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
valv
Member

Откуда:
Сообщений: 118
aleks2
valv
60M строк, 750 GB без индексов.
в таблице крайне важные данные, активно используется.

Это доставляет!

в смысле кластерный индекс 750 GB, есть ещё несколько некластерных.
22 ноя 16, 14:58    [19920985]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
aleks2
Guest
valv
aleks2
пропущено...

Это доставляет!

в смысле кластерный индекс 750 GB, есть ещё несколько некластерных.


Ну дык, учи columnstore, страдалец.
Это для тя панацея.
22 ноя 16, 15:00    [19920997]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
aleks2
Guest
Хотя, не - не пойдет.
Не доглядел я различие в текстах.
22 ноя 16, 15:03    [19921013]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
o-o
Guest
aleks2
Applies to: SQL Server (SQL Server 2014 through current version), Azure SQL Database.

really?
BOL
Only clustered columnstore indexes support LOB types, beginning in SQL Server vNext CTP 1.0 version. Note, prior versions do not support LOB types in clustered and nonclustered columnstore indexes.
22 ноя 16, 15:05    [19921028]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
aleks2
Guest
o-o
aleks2
Applies to: SQL Server (SQL Server 2014 through current version), Azure SQL Database.

really?
BOL
Only clustered columnstore indexes support LOB types, beginning in SQL Server vNext CTP 1.0 version. Note, prior versions do not support LOB types in clustered and nonclustered columnstore indexes.


Я те чо, сам придумал? Енто цитата с мелкософта.

ЗЫ. Да, все равно, тредстартеру это без надобности.
Дешевле купить десяток терабайтников и спать спокойно.
22 ноя 16, 15:11    [19921057]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
o-o,

ну, имхо, можно и ограничить до 8к, врядли там прям текста по 2Gb
22 ноя 16, 15:12    [19921066]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
valv
Member

Откуда:
Сообщений: 118
aleks2
valv
пропущено...

в смысле кластерный индекс 750 GB, есть ещё несколько некластерных.


Ну дык, учи columnstore, страдалец.
Это для тя панацея.

крайне странное предложение.
задача уменьшить размер таблицы.
columnsstore индекс не уменьшает размер, а наоборот берёт дополнительное место для хранения копии столбцов в индексе.
22 ноя 16, 15:13    [19921068]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
o-o
Guest
aleks2
o-o
пропущено...

really?
пропущено...


Я те чо, сам придумал? Енто цитата с мелкософта.

ЗЫ. Да, все равно, тредстартеру это без надобности.
Дешевле купить десяток терабайтников и спать спокойно.

Я те оттуда же и цитирую.
Дальше первой строки не ходил, хамлюга?
22 ноя 16, 15:15    [19921087]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
valv,

columnstore даст меньший размер, но использовать только кластерный.. Другой вопрос как уменьшить - если есть много пустых значений - sparse, или как вы хотите, стандартизируйте сообщения и в 3ю НФ
22 ноя 16, 15:18    [19921100]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
aleks2
Guest
o-o
aleks2
пропущено...


Я те чо, сам придумал? Енто цитата с мелкософта.

ЗЫ. Да, все равно, тредстартеру это без надобности.
Дешевле купить десяток терабайтников и спать спокойно.

Я те оттуда же и цитирую.
Дальше первой строки не ходил, хамлюга?


А мне то зачем?
22 ноя 16, 15:24    [19921145]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
o-o
Guest
TaPaK
o-o,

ну, имхо, можно и ограничить до 8к, врядли там прям текста по 2Gb

Это только ему известно.
Но судя по малому коэффициенту сжатия, лобы вылазят в offrow.
Потому что то, что вылезло, не сжимается, только inrow компрессится.
Он же посчитал, что раз в 60 должно уменьшиться, а page compression то и делает, что одинаковые куски реплэйсит.
Другое дело, что у него могли оказаться одинаковые куски на разных страницах, тут бы колумнстор и пригодился, но с версией все плохо
22 ноя 16, 15:25    [19921157]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
aleks2
Guest
valv
aleks2
пропущено...


Ну дык, учи columnstore, страдалец.
Это для тя панацея.

крайне странное предложение.
задача уменьшить размер таблицы.
columnsstore индекс не уменьшает размер, а наоборот берёт дополнительное место для хранения копии столбцов в индексе.

Наивняк.

1. Хранить можно и все прочие столбцы таблицы.
2. Хранятся только уникальные значения.
22 ноя 16, 15:25    [19921160]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
автор
aleks2,

Дешевле купить десяток терабайтников и спать спокойно.

тут даже наверное проще и правильнее будет так сделать...
22 ноя 16, 15:31    [19921213]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
o-o
Guest
aleks2
valv
пропущено...

крайне странное предложение.
задача уменьшить размер таблицы.
columnsstore индекс не уменьшает размер, а наоборот берёт дополнительное место для хранения копии столбцов в индексе.

Наивняк.

1. Хранить можно и все прочие столбцы таблицы.
2. Хранятся только уникальные значения.

все прочие это int и datetime?
из них int это наверняка ключ,
накрайняк, пара int, date уникальна
----
вопрос его конкретно о сжатии лобов
22 ноя 16, 15:33    [19921229]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
o-o
Guest
aleks2
o-o
пропущено...

Я те оттуда же и цитирую.
Дальше первой строки не ходил, хамлюга?


А мне то зачем?

чтоб не писал, что процитированные *тобой* версии
поддерживают лобы в колумнсторе
22 ноя 16, 15:35    [19921238]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
aleks2
Guest
o-o
aleks2
пропущено...

Наивняк.

1. Хранить можно и все прочие столбцы таблицы.
2. Хранятся только уникальные значения.

все прочие это int и datetime?
из них int это наверняка ключ,
накрайняк, пара int, date уникальна
----
вопрос его конкретно о сжатии лобов


Ну хде тебе LOB-ы привиделись? Глазки то протри.
Диагноз в два гигабайта. Хе-хе.
22 ноя 16, 15:38    [19921265]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
o-o
Guest
valv
в нём таблица (int, datetime, varchar(max)).

Вот так виднее, хамло, протирающее другим глазки?
22 ноя 16, 15:47    [19921319]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
А там как базу не перекраивай, клиент её г-цом забросает. Только винты докупать остается. Если только ТС не автор клиента и может его переписать.
22 ноя 16, 15:49    [19921338]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
valv
строка 1: "Повышение артериального давления 145/93. Врожденное сужение или атеросклероз аорты."
строка 2: "Повышение артериального давления 146/94. Врожденное сужение или атеросклероз аорты."

как найти все паттерны? в ручную нереально, их несколько тысяч разновидностей.
можно конечно и на сиквеле написать, но (имхо) будет продуктивнее пойти в форум "работа" и попросить помощи ("за пиво" вам на перле или на чём другом напишут утилитку поиска "шаблонов")
22 ноя 16, 16:05    [19921450]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4953
valv
строка 1: "Повышение артериального давления 145/93. Врожденное сужение или атеросклероз аорты."
строка 2: "Повышение артериального давления 146/94. Врожденное сужение или атеросклероз аорты."

Дохтур на работке?
Кури Расстояние Левенштейна
22 ноя 16, 16:26    [19921590]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
архивариус
Member

Откуда:
Сообщений: 150
valv
columnsstore индекс не уменьшает размер, а наоборот берёт дополнительное место для хранения копии столбцов в индексе.
возражаю, недавно сравнивал,тестовые данные 7 500 000 строк (логи(понятно что зависит от данных, просто для информации) LOB нет в данных):
compression type data space / index space (MB)
none 1507 / 165
row 513 / 142
page 404 / 91
ColumnStore 173 / 0
ColumnStoreArchive 87 / 0
22 ноя 16, 17:19    [19921883]     Ответить | Цитировать Сообщить модератору
 Re: уменьшить размер таблицы  [new]
valv
Member

Откуда:
Сообщений: 118
ЕвгенийВ
valv
строка 1: "Повышение артериального давления 145/93. Врожденное сужение или атеросклероз аорты."
строка 2: "Повышение артериального давления 146/94. Врожденное сужение или атеросклероз аорты."

Дохтур на работке?
Кури Расстояние Левенштейна

Расстояние Левенштейна
С точки зрения приложений определение расстояния между словами или текстовыми полями по Левенштейну обладает следующими недостатками:
...
2. Расстояния между совершенно разными короткими словами оказываются небольшими, в то время как расстояния между очень похожими длинными словами оказываются значительными.

и как этот алгоритм можно использовать для поиска паттернов?
22 ноя 16, 17:20    [19921892]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить