powered by simpleCommunicator - 21.11.28     © 2024 Programmizd 02
Map
Форумы / Вопросы по IT / бакап ресторе MS SQL
13 сообщений из 13, страница 1 из 1
бакап ресторе MS SQL
    #2570730
vad72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ранее на FB делал бакап ресторе ,чтобы удалить мусор в БД, при этом размер файла БД уменьшался.
Есть ли подобная операция на MS SQL или там всё автоматом чистится при массовых апдейтах данных?
...
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2570752
WildMage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vad72  10.11.2020, 08:41
Ранее на FB делал бакап ресторе ,чтобы удалить мусор в БД, при этом размер файла БД уменьшался.
Есть ли подобная операция на MS SQL или там всё автоматом чистится при массовых апдейтах данных?
Шринк
...
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2570753
WildMage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vad72  10.11.2020, 08:41
Ранее на FB делал бакап ресторе ,чтобы удалить мусор в БД, при этом размер файла БД уменьшался.
Есть ли подобная операция на MS SQL или там всё автоматом чистится при массовых апдейтах данных?
А что за мусор то?
...
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2570770
vad72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildMage  10.11.2020, 09:02
vad72  10.11.2020, 08:41
Ранее на FB делал бакап ресторе ,чтобы удалить мусор в БД, при этом размер файла БД уменьшался.
Есть ли подобная операция на MS SQL или там всё автоматом чистится при массовых апдейтах данных?
А что за мусор то?
в FB, когда делается update в таблице, физически в БД просто добавляется новая строка с новыми данными, строка со старыми данными остаётся в БД. Оно физически удаляется из БД только про бакап/ресторе (может еще как-то можно почистить, но я не знаю). Аналогично с удалением записей.
...
Изменено: 10.11.2020, 09:21 - vad72
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2570778
vad72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildMage  10.11.2020, 09:01
vad72  10.11.2020, 08:41
Ранее на FB делал бакап ресторе ,чтобы удалить мусор в БД, при этом размер файла БД уменьшался.
Есть ли подобная операция на MS SQL или там всё автоматом чистится при массовых апдейтах данных?
Шринк
спасибо за помощь!
...
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2570785
WildMage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vad72  10.11.2020, 09:21
WildMage  10.11.2020, 09:02
vad72  10.11.2020, 08:41
...
А что за мусор то?
в FB, когда делается update в таблице, физически в БД просто добавляется новая строка с новыми данными, строка со старыми данными остаётся в БД. Оно физически удаляется из БД только про бакап/ресторе (может еще как-то можно почистить, но я не знаю). Аналогично с удалением записей.
Такой фигни в сиквеле нету
...
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2573045
SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Powered by Power Rangers
Что такое FB?

Шринк - это зло.

Если-бы ТС немного больше рассказал, то было-бы более понятнее чем правильнее лечить.

Вопросы
1. В каком transactional mode ваша база? Full or simple?
2. О каком размере мы вообще говорим?
3. Сколько в базе таблиц, которые из них выросли и сколько в них свободного места?

Обычно такая-сякая херня случается в следующих случаях:
1. База в Фулл и немеряно растёт лог.
2. Обновляемая таблица зачем-то подвергается Index rebuild, что увеличивает базу на размер таблицы.
3. Обновляемая таблица имеет филл-фактор 100%, что при даже небольших вставках может привести к увеличению размера на 70% и более.

Какая херня у вас?
...
А вы шо думали, всё так просто?
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2577528
vad72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTree  11.11.2020, 06:15
Что такое FB?

Шринк - это зло.

Если-бы ТС немного больше рассказал, то было-бы более понятнее чем правильнее лечить.

Вопросы
1. В каком transactional mode ваша база? Full or simple?
2. О каком размере мы вообще говорим?
3. Сколько в базе таблиц, которые из них выросли и сколько в них свободного места?

Обычно такая-сякая херня случается в следующих случаях:
1. База в Фулл и немеряно растёт лог.
2. Обновляемая таблица зачем-то подвергается Index rebuild, что увеличивает базу на размер таблицы.
3. Обновляемая таблица имеет филл-фактор 100%, что при даже небольших вставках может привести к увеличению размера на 70% и более.

Какая херня у вас?
1. не знаю.
2. 258879,06 МБ (это после шринк)
3. не знаю.

На FireBird, бакап-ресторе уменьшал размер БД за счет чистки мусора. Подумал, может в ms sql что-то подобное есть.
БД использую для себя, храню там данные, так как в Excel не помещаются.
...
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2578145
SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Powered by Power Rangers
vad72  13.11.2020, 11:08
SandalTree  11.11.2020, 06:15
Что такое FB?

Шринк - это зло.

Если-бы ТС немного больше рассказал, то было-бы более понятнее чем правильнее лечить.

Вопросы
1. В каком transactional mode ваша база? Full or simple?
2. О каком размере мы вообще говорим?
3. Сколько в базе таблиц, которые из них выросли и сколько в них свободного места?

Обычно такая-сякая херня случается в следующих случаях:
1. База в Фулл и немеряно растёт лог.
2. Обновляемая таблица зачем-то подвергается Index rebuild, что увеличивает базу на размер таблицы.
3. Обновляемая таблица имеет филл-фактор 100%, что при даже небольших вставках может привести к увеличению размера на 70% и более.

Какая херня у вас?
1. не знаю.
2. 258879,06 МБ (это после шринк)
3. не знаю.

На FireBird, бакап-ресторе уменьшал размер БД за счет чистки мусора. Подумал, может в ms sql что-то подобное есть.
БД использую для себя, храню там данные, так как в Excel не помещаются.
1. Запустите этот скрипт и там смотрите
Код: SQL
1.
2.
3.
SELECT compatibility_level, recovery_model_desc
FROM sys.databases
WHERE name = '<имя вашей базы>';
...
А вы шо думали, всё так просто?
Изменено: 13.11.2020, 15:25 - SandalTree
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2578202
SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Powered by Power Rangers
3. Запустите этот скрипт в вашей базе и смотрите свои самые большие таблицы.
Смотрите: Fill factor, %
Ещё посмотрите "Used_Data_Space_MB" + "Used_Index_Space_MB" и отношение к "Full_Size_MB".
Особенно обратите внимание на эти цифры когда ваша база вспухнет.
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
;WITH InMemory as (
  SELECT object_id
    , SUM(CASE memory_consumer_type WHEN 2 THEN allocation_count ELSE 0 END) as row_count
    , SUM(CASE memory_consumer_type WHEN 2 THEN allocated_bytes ELSE 0 END)/8192. as Alloc_Pages
    , SUM(CASE memory_consumer_type WHEN 2 THEN used_bytes ELSE 0 END)/8192. as Used_Pages
    , SUM(CASE memory_consumer_type WHEN 2 THEN 0 ELSE allocated_bytes END)/8192. as Index_Alloc_Pages
    , SUM(CASE memory_consumer_type WHEN 2 THEN 0 ELSE used_bytes END)/8192. as Index_Used_Pages
    , SUM(allocated_bytes)/8192. as Total_Alloc_Pages
    , SUM(used_bytes)/8192. as Total_Used_Pages
  FROM sys.dm_db_xtp_memory_consumers
  WHERE object_id > 0
  GROUP BY object_id
  )
  SELECT CASE WHEN t.name Is Null THEN 'View' ELSE 'Table' END as Type,
  [Object Name] = '[' + OBJECT_SCHEMA_NAME(st.object_id) + '].[' + OBJECT_NAME(st.object_id) + ']',
  CASE WHEN t.is_memory_optimized > 0 THEN mc.row_count ELSE SUM(CASE WHEN st.index_id < 2 THEN st.row_count ELSE 0 END) END as row_count,
  ROUND(CAST(CASE WHEN t.is_memory_optimized > 0 THEN mc.Alloc_Pages ELSE SUM(CASE WHEN st.index_id < 2 THEN st.reserved_page_count ELSE 0 END) END AS float)/128.,3) as Data_Size_MB,
  ROUND(CAST(CASE WHEN t.is_memory_optimized > 0 THEN mc.Used_Pages ELSE SUM(CASE WHEN st.index_id < 2 THEN st.used_page_count ELSE 0 END) END AS float)/128.,3) as Used_Data_Space_MB,
  [Fill factor, %] = IsNull(CAST(CASE i.fill_factor WHEN 0 THEN 100 ELSE i.fill_factor END as CHAR(3)),'N/A'),
  ROUND(CAST(CASE WHEN t.is_memory_optimized > 0 THEN mc.Index_Alloc_Pages ELSE SUM(CASE WHEN st.index_id > 1 THEN st.reserved_page_count ELSE 0 END) END AS float)/128.,3) as Index_Size_MB,
  ROUND(CAST(CASE WHEN t.is_memory_optimized > 0 THEN mc.Index_Used_Pages ELSE SUM(CASE WHEN st.index_id > 1 THEN st.used_page_count ELSE 0 END) END AS float)/128.,3)as Used_Index_Space_MB,
  ROUND(CAST(CASE WHEN t.is_memory_optimized > 0 THEN mc.Total_Alloc_Pages ELSE SUM(st.reserved_page_count) END AS float)/128.,3) as Full_Size_MB,
  ROUND(CAST(CASE WHEN t.is_memory_optimized > 0 THEN mc.Total_Used_Pages ELSE SUM(st.used_page_count) END AS float)/128.,3) as Full_Used_Space_MB,
  t.max_column_id_used as MaxColumn,
  CASE WHEN t.is_memory_optimized > 0 THEN 'Yes' ELSE '' END as 'In-Memory',
  CASE WHEN t.temporal_type > 0 THEN t.temporal_type_desc ELSE '' END as Temporal,
  t.lock_escalation_desc as 'Lock Escalation'
FROM sys.dm_db_partition_stats st
LEFT JOIN InMemory as mc ON mc.object_id = st.object_id
LEFT JOIN sys.tables as t ON t.object_id = st.object_id
LEFT JOIN sys.indexes i ON i.OBJECT_ID = st.OBJECT_ID AND i.index_id = 1
WHERE OBJECT_SCHEMA_NAME(st.object_id) != 'sys'
GROUP BY OBJECT_SCHEMA_NAME(st.object_id), OBJECT_NAME(st.object_id), t.name
  , t.max_column_id_used, t.lock_escalation_desc, CAST(CASE i.fill_factor WHEN 0 THEN 100 ELSE i.fill_factor END as CHAR(3)), t.is_memory_optimized, mc.row_count, mc.Alloc_Pages, mc.Used_Pages, mc.Index_Alloc_Pages, mc.Index_Used_Pages, mc.Total_Alloc_Pages, mc.Total_Used_Pages, t.temporal_type, t.temporal_type_desc
ORDER BY Full_Size_MB DESC, row_count DESC
OPTION (RECOMPILE);
...
А вы шо думали, всё так просто?
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2583107
vad72
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandalTree  13.11.2020, 15:16
Код: SQL
1.
2.
3.
SELECT compatibility_level, recovery_model_desc
FROM sys.databases
WHERE name = '<имя вашей базы>';
compatibility_level recovery_model_desc
100 SIMPLE
...
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2584186
SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Powered by Power Rangers
vad72  16.11.2020, 09:56
SandalTree  13.11.2020, 15:16
Код: SQL
1.
2.
3.
SELECT compatibility_level, recovery_model_desc
FROM sys.databases
WHERE name = '<имя вашей базы>';
compatibility_level recovery_model_desc
100 SIMPLE
предыдущий скрипт похоже не отработал.
Кто-ж знал что вы на 2008м сидите.

Кстати, что у вас даёт вот этот?
Цитата 
SELECT @@version
...
А вы шо думали, всё так просто?
Рейтинг: 0 / 0
бакап ресторе MS SQL
    #2584294
SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[игнорирует гостей кроме]
Powered by Power Rangers
Попробуйте скрипт попроще.
Может он у вас пойдёт.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT [Object Name] = '[' + OBJECT_SCHEMA_NAME(st.object_id) + '].[' + OBJECT_NAME(st.object_id) + ']',
  SUM(CASE WHEN st.index_id < 2 THEN st.row_count ELSE 0 END) as row_count,
  ROUND(CAST(SUM(CASE WHEN st.index_id < 2 THEN st.reserved_page_count ELSE 0 END) AS float)/128.,3) as Data_Size_MB,
  ROUND(CAST(SUM(CASE WHEN st.index_id < 2 THEN st.used_page_count ELSE 0 END) AS float)/128.,3) as Used_Data_Space_MB,
  [Fill factor, %] = IsNull(CAST(CASE i.fill_factor WHEN 0 THEN 100 ELSE i.fill_factor END as CHAR(3)),'N/A'),
  ROUND(CAST(SUM(CASE WHEN st.index_id > 1 THEN st.reserved_page_count ELSE 0 END) AS float)/128.,3) as Index_Size_MB,
  ROUND(CAST(SUM(CASE WHEN st.index_id > 1 THEN st.used_page_count ELSE 0 END) AS float)/128.,3)as Used_Index_Space_MB,
  ROUND(CAST(SUM(st.reserved_page_count) AS float)/128.,3) as Full_Size_MB,
  ROUND(CAST(SUM(st.used_page_count) AS float)/128.,3) as Full_Used_Space_MB,
  t.max_column_id_used as MaxColumn
FROM sys.dm_db_partition_stats st
LEFT JOIN sys.tables as t ON t.object_id = st.object_id
LEFT JOIN sys.indexes i ON i.OBJECT_ID = st.OBJECT_ID AND i.index_id = 1
WHERE OBJECT_SCHEMA_NAME(st.object_id) != 'sys'
GROUP BY OBJECT_SCHEMA_NAME(st.object_id), OBJECT_NAME(st.object_id), t.name
  , t.max_column_id_used, t.lock_escalation_desc
  , CAST(CASE i.fill_factor WHEN 0 THEN 100 ELSE i.fill_factor END as CHAR(3)), t.is_memory_optimized, t.temporal_type, t.temporal_type_desc
ORDER BY Full_Size_MB DESC, row_count DESC;
...
А вы шо думали, всё так просто?
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Вопросы по IT / бакап ресторе MS SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (2): Анонимы (1), Yandex Bot 1 мин.
Пользователи онлайн (3): Анонимы (2), Yandex Bot
x
x
Закрыть


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