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

Откуда:
Сообщений: 2934
msLex
При включении сжатия данных, в тот же объем RAM уместиться больше (иногда, значительно) данных
Уверен, что в памяти как раз все блоки разжаты. разжатие/сжатие идет при чтении/записи (каждый раз).
Возможно что для ТС больше подойдет ROW сжатие (гораздо дешевле по ресурсам)
22 ноя 21, 17:26    [22399234]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
aleks222
Member

Откуда:
Сообщений: 1868
msLex
SERG1257
Такое может получится только если CPU (лицензируемое) некуда девать, а дисковая система полный шлак.




Какой бы крутой не была дисковая подсистема, она все равно будет существенно уступать по скорости RAM.

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


Похоже мифы сжатия зохавали мир.

Даже мелкософт толкует только о "экономии дискового пр-ва".
Да оно и понятно, при считывании сжатой страницы в память она снова "разжимается".
Иначе данные с нее невозможно использовать.
22 ноя 21, 17:28    [22399235]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
msLex
Member

Откуда:
Сообщений: 9565
SERG1257
msLex
При включении сжатия данных, в тот же объем RAM уместиться больше (иногда, значительно) данных
Уверен, что в памяти как раз все блоки разжаты. разжатие/сжатие идет при чтении/записи (каждый раз).
Возможно что для ТС больше подойдет ROW сжатие (гораздо дешевле по ресурсам)

В памяти лежат копии страниц данных с диска, иначе как узнать, когда там наступит момент переполнения страницы.
22 ноя 21, 17:29    [22399236]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
aleks222
Member

Откуда:
Сообщений: 1868
msLex
SERG1257
пропущено...
Уверен, что в памяти как раз все блоки разжаты. разжатие/сжатие идет при чтении/записи (каждый раз).
Возможно что для ТС больше подойдет ROW сжатие (гораздо дешевле по ресурсам)

В памяти лежат копии страниц данных с диска, иначе как узнать, когда там наступит момент переполнения страницы.

Ваши доказательства? (c) Шварценеггер.
22 ноя 21, 17:32    [22399238]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
msLex
Member

Откуда:
Сообщений: 9565
aleks222
msLex
пропущено...




Какой бы крутой не была дисковая подсистема, она все равно будет существенно уступать по скорости RAM.

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


Похоже мифы сжатия зохавали мир.

Даже мелкософт толкует только о "экономии дискового пр-ва".
Да оно и понятно, при считывании сжатой страницы в память она снова "разжимается".
Иначе данные с нее невозможно использовать.



Данные на диске в файле лежат 8Кб страницами. Не больше не меньше.

Все изменения с данными происходят только после поднятие этой страницы в память.
Как, скажите, отслеживать момент окончания страницы, если ее сжатый размер будет известен только при записи на диск?
22 ноя 21, 17:33    [22399239]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
aleks222
Member

Откуда:
Сообщений: 1868
msLex

Данные на диске в файле лежат 8Кб страницами. Не больше не меньше.

Свежо преданье.

msLex

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

Ты так и не ответил, как из "архива" достать строку, не распаковывая архив?
22 ноя 21, 17:35    [22399241]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
msLex
Member

Откуда:
Сообщений: 9565
aleks222
msLex

Данные на диске в файле лежат 8Кб страницами. Не больше не меньше.

Свежо преданье.

Т.е. по вашему это не так?


aleks222

msLex

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

Ты так и не ответил, как из "архива" достать строку, не распаковывая архив?



Вот вам, почитайте как происходит сжатие данных при PAGE компрессии в SQL Server


https://docs.microsoft.com/ru-ru/sql/relational-databases/data-compression/page-compression-implementation?view=sql-server-ver15

Советую особенно обратить вот на эту часть


После того как страница заполнена, добавление следующей строки вызывает операцию ее сжатия. Вся страница просматривается; каждый столбец оценивается для сжатия префикса, а затем оцениваются все столбцы для сжатия словаря.


И подумать, может ли это быть совместимо с вашим утверждением "сжатие только при записи на диск"
22 ноя 21, 17:43    [22399248]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
aleks222
Member

Откуда:
Сообщений: 1868
Советую не читать савецких газет перед обедом.
Ну... или читать "в подлиннике".
22 ноя 21, 17:49    [22399251]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
msLex
Member

Откуда:
Сообщений: 9565
aleks222
Советую не читать савецких газет перед обедом.
Ну... или читать "в подлиннике".


Там так же черным по белому написано, что вы балабол

https://docs.microsoft.com/en-us/sql/relational-databases/data-compression/page-compression-implementation?view=sql-server-ver15

When the page is full, the next row to be added initiates the page compression operation.


Сообщение было отредактировано: 22 ноя 21, 17:52
22 ноя 21, 17:51    [22399252]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
aleks222
Member

Откуда:
Сообщений: 1868
msLex


После того как страница заполнена, добавление следующей строки вызывает операцию ее сжатия. Вся страница просматривается; каждый столбец оценивается для сжатия префикса, а затем оцениваются все столбцы для сжатия словаря.



"После того как страница заполнена" => ДО момента сжатия страница НЕ сжата.

Очевидный факт.
Волга впадает в Каспийское море.
22 ноя 21, 17:53    [22399253]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
cad2206
Member

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

автор
Выберите десяток другой больших таблиц (желательно секционированых по дате) и сжимайте только старые партиции в которых нет записи (а лучше и чтения)


Большие таблицы выбрал так:
SELECT
  t.Name                                          AS TableName,
  s.Name                                          AS SchemaName,
  p.Rows                                          AS RowCounts,
  SUM(a.total_pages)*8/1024                       AS TotalSpace_MB,
  SUM(a.used_pages)*8/1024                        AS UsedSpace_MB,
  (SUM(a.total_pages) - SUM(a.used_pages))*8/1028 AS UnusedSpace_MB,
  t.create_date,
  t.modify_date
FROM
  sys.tables t
  INNER JOIN sys.indexes i ON t.object_id = i.object_id
  INNER JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
  INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
  LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id
WHERE
  t.Name NOT LIKE 'dt%'
  AND t.is_ms_shipped = 0
  AND i.object_id > 255
GROUP BY
  t.Name, s.Name, p.Rows
ORDER BY
  TotalSpace_MB desc;
GO


Буду признателен, если укажете где взять данные "только старые партиции в которых нет записи (а лучше и чтения)".
22 ноя 21, 17:57    [22399257]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
.Евгений
Member

Откуда:
Сообщений: 707
aleks222, msLex

интересно, не могут ли в памяти жить как сжатые, так и не сжатые страницы?
22 ноя 21, 17:59    [22399260]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
msLex
Member

Откуда:
Сообщений: 9565
aleks222
msLex


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



"После того как страница заполнена" => ДО момента сжатия страница НЕ сжата.

Очевидный факт.
Волга впадает в Каспийское море.


Вы бы полностью прочитали, хоть


Новая страницы заполняется без сжатие, пока на нее влезают данных, т.к. до этого момента сжатие не имеет смысла.

Как только данные без сжатия прекращают влезать, следующая же вставленная строка инициализирует процесс сжатия.
22 ноя 21, 17:59    [22399261]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
aleks222
Member

Откуда:
Сообщений: 1868
cad2206
SERG1257,

автор
Выберите десяток другой больших таблиц (желательно секционированых по дате) и сжимайте только старые партиции в которых нет записи (а лучше и чтения)


Большие таблицы выбрал так:
SELECT
  t.Name                                          AS TableName,
  s.Name                                          AS SchemaName,
  p.Rows                                          AS RowCounts,
  SUM(a.total_pages)*8/1024                       AS TotalSpace_MB,
  SUM(a.used_pages)*8/1024                        AS UsedSpace_MB,
  (SUM(a.total_pages) - SUM(a.used_pages))*8/1028 AS UnusedSpace_MB,
  t.create_date,
  t.modify_date
FROM
  sys.tables t
  INNER JOIN sys.indexes i ON t.object_id = i.object_id
  INNER JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
  INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
  LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id
WHERE
  t.Name NOT LIKE 'dt%'
  AND t.is_ms_shipped = 0
  AND i.object_id > 255
GROUP BY
  t.Name, s.Name, p.Rows
ORDER BY
  TotalSpace_MB desc;
GO


Буду признателен, если укажете где взять данные "только старые партиции в которых нет записи (а лучше и чтения)".


Секционирование таблиц у тебя еще впереди.
22 ноя 21, 17:59    [22399262]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
aleks222
Member

Откуда:
Сообщений: 1868
.Евгений
aleks222, msLex

интересно, не могут ли в памяти жить как сжатые, так и не сжатые страницы?

Это такой метод "экономии памяти"?
22 ноя 21, 18:00    [22399264]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
msLex
Member

Откуда:
Сообщений: 9565
.Евгений
интересно, не могут ли в памяти жить как сжатые, так и не сжатые страницы?


Т.е. каждая страница живет в двух экземплярах?
Нет, конечно, это уменьшит вместимость buffer pool почти в 2 раза
22 ноя 21, 18:00    [22399267]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
aleks222
Member

Откуда:
Сообщений: 1868
msLex
aleks222
пропущено...


"После того как страница заполнена" => ДО момента сжатия страница НЕ сжата.

Очевидный факт.
Волга впадает в Каспийское море.


Вы бы полностью прочитали, хоть


Новая страницы заполняется без сжатие, пока на нее влезают данных, т.к. до этого момента сжатие не имеет смысла.

Как только данные без сжатия прекращают влезать, следующая же вставленная строка инициализирует процесс сжатия.


Ты не сыпь цитатами из Мао - ты на пальцах покажи "как достать что-то из архива, не распаковывая архив?"

ЗЫ. Если ты не курсе, операции сервера не ограничиваются тупым "заполнением страниц". Иногда надо что-то с них достать...
22 ноя 21, 18:02    [22399272]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
.Евгений
Member

Откуда:
Сообщений: 707
msLex
.Евгений
интересно, не могут ли в памяти жить как сжатые, так и не сжатые страницы?


Т.е. каждая страница живет в двух экземплярах?
Нет, конечно, это уменьшит вместимость buffer pool почти в 2 раза

Нет. Сжатые и несжатые, аналогично тому, как они будут жить на диске (если бы были в этот момент записаны).
aleks222
.Евгений
aleks222, msLex

интересно, не могут ли в памяти жить как сжатые, так и не сжатые страницы?

Это такой метод "экономии памяти"?

Кто у нас отвечает вопросом на вопрос?
22 ноя 21, 18:02    [22399274]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
msLex
Member

Откуда:
Сообщений: 9565
.Евгений
msLex
пропущено...


Т.е. каждая страница живет в двух экземплярах?
Нет, конечно, это уменьшит вместимость buffer pool почти в 2 раза

Нет. Сжатые и несжатые, аналогично тому, как они будут жить на диске (если бы были в этот момент записаны).


Так и есть, станицы в памяти те же, что и на диске. За исключением dirty pages, что еще не скинуты на диск.
22 ноя 21, 18:08    [22399279]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
msLex
Member

Откуда:
Сообщений: 9565
aleks222
"как достать что-то из архива, не распаковывая архив?"

Распокавать на лету, конечно.

SQL Server для сжатия данных использует lightweight алгоритмы сжатия, позволяющие применять декомпрессию на потоке.

Вы почитайте,

Там все достаточно просто.
Основное :
Row Compression - урезание неиспользуемых байт из типов фиксированной длины
Page Compression - в добавлении к Row Compression постраничные справочники.
22 ноя 21, 18:21    [22399293]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
SERG1257
Member

Откуда:
Сообщений: 2934
msLex
Распокавать на лету, конечно.
Каждый раз когда блок понадобится из буфер кэша.
Что совой об пень, что пнем об сову.
cad2206, а ты выгоду-то посчитал? Сколько гигабайт экономии получил?
22 ноя 21, 19:33    [22399327]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
Владислав Колосов
Member

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

автор
Иначе данные с нее невозможно использовать.


Там же данные не зипом пожаты, там простая табличная подстановка словарь - метасимволы. Эти данные можно прекрасно читать и преобразовывать "на лету".
22 ноя 21, 19:46    [22399338]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
Владислав Колосов
Member

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

с чего вы взяли, что cad2206 использовал сжатие страниц? Он нигде об этом не писал.
22 ноя 21, 19:48    [22399339]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
SERG1257
Member

Откуда:
Сообщений: 2934
Владислав Колосов
с чего вы взяли, что cad2206 использовал сжатие страниц? Он нигде об этом не писал.

22399026
22 ноя 21, 20:58    [22399410]     Ответить | Цитировать Сообщить модератору
 Re: Поэтапное сжатие БД MS SQL Server  [new]
msLex
Member

Откуда:
Сообщений: 9565
SERG1257
msLex
Распокавать на лету, конечно.
Каждый раз когда блок понадобится из буфер кэша.


Именно так

Как я уже писал выше, там очень легковесное разжатие

В случае с Row так вообще, просто превращение всех типов данных в типы с переменой длиной (varint, vardecimal и т.д.), что, фактически, эквивалентно реализации varchar в несжатых страницах.

подробности тут

В случае с Page добавляются префиксы и справочники.
подробности тут

Ни одно из этих преобразований не требует "разжимать" всю страницы целиком, при чтении конкретной записи. Все разбирается при последовательном чтении данных.
22 ноя 21, 21:18    [22399427]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить