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

Откуда:
Сообщений: 382
Есть таблица.

Как ее сжать?

Не удаляя данные.
13 июн 17, 10:57    [20559641]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
londinium
Member

Откуда: Киев
Сообщений: 1168
sql_user2,
https://docs.microsoft.com/en-us/sql/relational-databases/data-compression/enable-compression-on-a-table-or-index
13 июн 17, 11:00    [20559647]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
TaPaK
Member

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

https://technet.microsoft.com/en-us/library/dd894051(v=sql.100).aspx
13 июн 17, 11:01    [20559649]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
sql_user2
Member

Откуда:
Сообщений: 382
londinium
sql_user2,
https://docs.microsoft.com/en-us/sql/relational-databases/data-compression/enable-compression-on-a-table-or-index



Думаю это только для ентерпрайза



Мне надо просто сжать таблицу без архивирования.
13 июн 17, 11:01    [20559652]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
Добрый Э - Эх
Guest
sql_user2,

что в твоем понимании "просто сжать без архивирования"? дефрагментация?
13 июн 17, 11:04    [20559658]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
sql_user2
Member

Откуда:
Сообщений: 382
Добрый Э - Эх
sql_user2,

что в твоем понимании "просто сжать без архивирования"? дефрагментация?



Например, в sysindexes есть разница между reserved и dpages.

Можно ведь как-то эту разницу уменьшить и высвободить место?
13 июн 17, 11:05    [20559664]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Добрый Э - Эх,

для него и alter table rebuild будет сжатием :) а так да, winrar
13 июн 17, 11:05    [20559666]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
sql_user2
Member

Откуда:
Сообщений: 382
TaPaK
londinium,

https://technet.microsoft.com/en-us/library/dd894051(v=sql.100).aspx



ну и сжатие это только для ентерпрайза же?
13 июн 17, 11:08    [20559676]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
sql_user2
Member

Откуда:
Сообщений: 382
TaPaK
Добрый Э - Эх,

для него и alter table rebuild будет сжатием :) а так да, winrar


Не пишите глупости. Для винрара надо Бд останавливать - так не сжимается.
13 июн 17, 11:09    [20559682]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
sql_user2,

перестройте кластерный индекс.
13 июн 17, 16:36    [20561174]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Какая редакция? Можно установить 2016й в котором вместе с SP1 стали доступны фишки энтерпрайза вроде колумнсторов и сжатия. Единственное ограничение по ресурсам
13 июн 17, 17:23    [20561334]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
sql_user2
londinium
sql_user2,
https://docs.microsoft.com/en-us/sql/relational-databases/data-compression/enable-compression-on-a-table-or-index



Думаю это только для ентерпрайза
Мне надо просто сжать таблицу без архивирования.



См. про разреженные данные в 2016

Например,
https://msdn.microsoft.com/ru-ru/library/ff427239(v=sql.110).aspx

автор
use AdventureWorks
CREATE TABLE ColdCalling
(
ID int IDENTITY(1,1) PRIMARY KEY,
[Date] date,
[Time] time,
PositiveFirstName nvarchar(50) SPARSE,
PositiveLastName nvarchar(50) SPARSE,
SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS
);
GO
14 июн 17, 10:26    [20562646]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Ролг Хупин,

тема вроде и правильная, но пример не в дугу :) ну и использование SPARSE будет выгоднее только от определённых % NULL записей, так он только больше
14 июн 17, 10:35    [20562688]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
TaPaK, подерживаю. Автор топика - попробывали бы 2016 экспересс и его колумнсторы. Если нет BLOB то это поможет решить проблему. Иначе компрессия на уровне PAGE. Плюс секционирование на таблицу если нужно что-то потом искать
14 июн 17, 10:42    [20562717]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
AlanDenton
TaPaK, подерживаю. Автор топика - попробывали бы 2016 экспересс и его колумнсторы. Если нет BLOB то это поможет решить проблему. Иначе компрессия на уровне PAGE. Плюс секционирование на таблицу если нужно что-то потом искать


Как это поможет уменьшить разницу

автор
между reserved и dpages
?
14 июн 17, 10:55    [20562767]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
TaPaK
Ролг Хупин,

тема вроде и правильная, но пример не в дугу :) ну и использование SPARSE будет выгоднее только от определённых % NULL записей, так он только больше


да, но:
1. пример сочинен майкрософтом
2. да. это один из путей, его можно использовать, если много нулей, но мы ведь знаем от ТС только это:
"Есть таблица.Как ее сжать?Не удаляя данные."
У меня работает на некторых таблицах.

3. ну, не винрарить же файлы
14 июн 17, 12:10    [20563185]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Ролг Хупин,
автор
да, но:
1. пример сочинен майкрософтом

как же это печально.
Вы не хотите ещё подумать, для какой цели в данном примере используется SPARSE
14 июн 17, 12:19    [20563230]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
TaPaK
Ролг Хупин,
автор
да, но:
1. пример сочинен майкрософтом

как же это печально.
Вы не хотите ещё подумать, для какой цели в данном примере используется SPARSE


я нет, пусть ТС думает, если у него есть подходящие данные можно использовать SPARSE.
14 июн 17, 13:33    [20563549]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Ролг Хупин
TaPaK
Ролг Хупин,
пропущено...

как же это печально.
Вы не хотите ещё подумать, для какой цели в данном примере используется SPARSE


я нет, пусть ТС думает, если у него есть подходящие данные можно использовать SPARSE.

правильно, думать не явно не ваша тема. Ваш пример не имеет ничего общего ни с вопросом ТС ни с пониманием самого SPARSE как-то так.
14 июн 17, 13:36    [20563555]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
o-o
Guest
TaPaK
не имеет ничего общего ни с вопросом ТС ни с пониманием самого SPARSE как-то так.

a у ТС не вопрос, а как всегда бурда.
что хотел сказать вот этим:
автор
Например, в sysindexes есть разница между reserved и dpages.
Можно ведь как-то эту разницу уменьшить и высвободить место?

что там (в sysindexes) неверно отражается ситуация, ибо канул в лету 2000-ый и его таблички?
для интереса делаю в своей базе вот такое, и что?
select top 10 object_name(id), id, indid, reserved,dpages,
       reserved-dpages as diff_pages,  
	   (reserved-dpages) * 8 / 1024 as diff_Mb
from sysindexes
order by  diff_pages desc

мне выпадают только кластерные и diff_Mb прям гигабайты.
для них в reserved показана сумма данных + всех индексов данной таблицы!
вот просто для кластерного там страницы данных dpages правильные,
а в reserved еще и ВСЕ (штук 10) некластерных посчитано

и ничего не надо ни ребилдить, ни компрессить.
а еще больше не надо юзать в 2017ом году какие-то sysindexes,
про которых мало что сказано
BOL
This SQL Server 2000 system table is included as a view for backward compatibility. We recommend that you use the current SQL Server system views instead. To find the equivalent system view or views, see Mapping System Tables to System Views (Transact-SQL). This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

+
BOL
DPAGES Does not yield accurate results if row-overflow occurs.
RESERVED Does not yield accurate results if row-overflow occurs.

так они еще и кластерному суммируют вообще все индексы

ну т.е. ему в самый раз можно посоветовать
дропнуть все некластерные индексы и сразу та разница уменьшится
14 июн 17, 14:21    [20563758]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
o-o,
автор
ну т.е. ему в самый раз можно посоветовать
дропнуть все некластерные индексы и сразу та разница уменьшится
не канон. Для него только форматирование :)
14 июн 17, 14:27    [20563784]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
TaPaK
Ролг Хупин
пропущено...


я нет, пусть ТС думает, если у него есть подходящие данные можно использовать SPARSE.

правильно, думать не явно не ваша тема. Ваш пример не имеет ничего общего ни с вопросом ТС ни с пониманием самого SPARSE как-то так.


1. Видимо, "явно" должно быть, чтобы круче.
2. "ни с пониманием самого SPARSE " - даладно, думаю имеет, тем более пример из документации.
3. Если перечитаь еще раз вопрос ТС, то ответов может быть очень много и разных.
14 июн 17, 14:41    [20563846]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Ролг Хупин,

омг. При чём здесь ТС, я про вас
14 июн 17, 14:47    [20563889]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
TaPaK
Ролг Хупин,

омг. При чём здесь ТС, я про вас


и нафиг вам это надо? ну, да, ладно
;-)
14 июн 17, 15:10    [20563996]     Ответить | Цитировать Сообщить модератору
 Re: Как сжать таблицу?  [new]
Jasonclark03
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 17
sql_user2,

Если вы уже создали таблицу, вы можете использовать сжатие в этой таблице, используя следующую команду:
ALTER TABLE example REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = ROW);
GO

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