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

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

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

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

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

Какая херня у вас?
...
А вы шо думали, всё так просто?
Рейтинг: 0 / 0
13.11.2020, 11:08
    #2577528
vad72
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бакап ресторе MS SQL
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
13.11.2020, 15:16
    #2578145
SandalTree
Участник
[игнорирует гостей кроме]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Powered by Power Rangers
бакап ресторе MS SQL
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
13.11.2020, 15:33
    #2578202
SandalTree
Участник
[игнорирует гостей кроме]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Powered by Power Rangers
бакап ресторе MS SQL
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
16.11.2020, 09:56
    #2583107
vad72
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
бакап ресторе MS SQL
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
16.11.2020, 17:13
    #2584186
SandalTree
Участник
[игнорирует гостей кроме]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Powered by Power Rangers
бакап ресторе MS SQL
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
16.11.2020, 17:41
    #2584294
SandalTree
Участник
[игнорирует гостей кроме]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Powered by Power Rangers
бакап ресторе MS SQL
Попробуйте скрипт попроще.
Может он у вас пойдёт.
Код: 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
Форумы / Вопросы по IT / бакап ресторе MS SQL / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (8): Анонимы (7), Yandex Bot 1 мин.
Пользователи онлайн (13): Анонимы (11), Yandex Bot, Bing Bot 1 мин.
x
x
Закрыть


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