powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поэтапное сжатие БД MS SQL Server
25 сообщений из 107, страница 2 из 5
Поэтапное сжатие БД MS SQL Server
    #40113854
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexПри включении сжатия данных, в тот же объем RAM уместиться больше (иногда, значительно) данныхУверен, что в памяти как раз все блоки разжаты. разжатие/сжатие идет при чтении/записи (каждый раз).
Возможно что для ТС больше подойдет ROW сжатие (гораздо дешевле по ресурсам)
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113855
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
SERG1257
Такое может получится только если CPU (лицензируемое) некуда девать, а дисковая система полный шлак.




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

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


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

Даже мелкософт толкует только о "экономии дискового пр-ва".
Да оно и понятно, при считывании сжатой страницы в память она снова "разжимается".
Иначе данные с нее невозможно использовать.
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113856
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257
msLexПри включении сжатия данных, в тот же объем RAM уместиться больше (иногда, значительно) данных
Уверен, что в памяти как раз все блоки разжаты. разжатие/сжатие идет при чтении/записи (каждый раз).
Возможно что для ТС больше подойдет ROW сжатие (гораздо дешевле по ресурсам)
В памяти лежат копии страниц данных с диска, иначе как узнать, когда там наступит момент переполнения страницы.
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113858
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
SERG1257
пропущено...
Уверен, что в памяти как раз все блоки разжаты. разжатие/сжатие идет при чтении/записи (каждый раз).
Возможно что для ТС больше подойдет ROW сжатие (гораздо дешевле по ресурсам)

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

Ваши доказательства? (c) Шварценеггер.
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113859
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
msLex
пропущено...




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

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


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

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



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

Все изменения с данными происходят только после поднятие этой страницы в память.
Как, скажите, отслеживать момент окончания страницы, если ее сжатый размер будет известен только при записи на диск?
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113861
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex

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

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

msLex

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

Ты так и не ответил, как из "архива" достать строку, не распаковывая архив?
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113868
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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

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


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

И подумать, может ли это быть совместимо с вашим утверждением "сжатие только при записи на диск"
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113871
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую не читать савецких газет перед обедом.
Ну... или читать "в подлиннике".
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113872
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113873
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex


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



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

Очевидный факт.
Волга впадает в Каспийское море.
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113876
cad2206
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257,

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

Большие таблицы выбрал так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
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



Буду признателен, если укажете где взять данные "только старые партиции в которых нет записи (а лучше и чтения)".
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113879
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222, msLex

интересно, не могут ли в памяти жить как сжатые, так и не сжатые страницы?
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113880
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
msLex


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



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

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


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


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

Как только данные без сжатия прекращают влезать, следующая же вставленная строка инициализирует процесс сжатия.
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113881
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cad2206
SERG1257,

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


Большие таблицы выбрал так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
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



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

Секционирование таблиц у тебя еще впереди.
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113883
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Евгений
aleks222, msLex

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

Это такой метод "экономии памяти"?
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113886
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Евгений
интересно, не могут ли в памяти жить как сжатые, так и не сжатые страницы?


Т.е. каждая страница живет в двух экземплярах?
Нет, конечно, это уменьшит вместимость buffer pool почти в 2 раза
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113890
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
aleks222
пропущено...


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

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


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


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

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


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

ЗЫ. Если ты не курсе, операции сервера не ограничиваются тупым "заполнением страниц". Иногда надо что-то с них достать...
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113891
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
.Евгений
интересно, не могут ли в памяти жить как сжатые, так и не сжатые страницы?


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

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

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

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

Кто у нас отвечает вопросом на вопрос?
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113893
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Евгений
msLex
пропущено...


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

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


Так и есть, станицы в памяти те же, что и на диске. За исключением dirty pages, что еще не скинуты на диск.
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113904
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
"как достать что-то из архива, не распаковывая архив?"

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

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

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

Там все достаточно просто.
Основное :
Row Compression - урезание неиспользуемых байт из типов фиксированной длины
Page Compression - в добавлении к Row Compression постраничные справочники.
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113920
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexРаспокавать на лету, конечно.Каждый раз когда блок понадобится из буфер кэша.
Что совой об пень, что пнем об сову.
cad2206, а ты выгоду-то посчитал? Сколько гигабайт экономии получил?
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113928
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

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

Там же данные не зипом пожаты, там простая табличная подстановка словарь - метасимволы. Эти данные можно прекрасно читать и преобразовывать "на лету".
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113929
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257,

с чего вы взяли, что cad2206 использовал сжатие страниц? Он нигде об этом не писал.
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40113984
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовс чего вы взяли, что cad2206 использовал сжатие страниц? Он нигде об этом не писал.
22399026
...
Рейтинг: 0 / 0
Поэтапное сжатие БД MS SQL Server
    #40114001
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257
msLexРаспокавать на лету, конечно.
Каждый раз когда блок понадобится из буфер кэша.


Именно так

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

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

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

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

Ни одно из этих преобразований не требует "разжимать" всю страницы целиком, при чтении конкретной записи. Все разбирается при последовательном чтении данных.
...
Рейтинг: 0 / 0
25 сообщений из 107, страница 2 из 5
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поэтапное сжатие БД MS SQL Server
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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