Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Уменьшить размер mdf  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1199
Поиском пользовался. На подобные вопросы Гуру больше стебутся, чем по делу.
Поэтому конкретные вопросы, хотелось бы услышать конкретные ответы
Исходные данные: SQL Express 2008 r2.
1. Поддерживает ли этот сервер компрессию mdf? Если нет, то все остальные вопросы снимаются. И где про это написано, я не видел :(
2. Ужмется ли БД после удаления данных из таблиц? Собственно я это сделал, но ужать не вышло.
Откуда ноги растут - у клиента база достигает 10Гb. На нормальный сервак он тратится не хочет. Данные за прошлые года ему НЕ НУЖНЫ. Значит все это удаляем(delete from table1 where datefield < '20180101' - это примерно 2/3 всех записей), но база сильно не сжимается. так и остается больше 9 гигов
3. какой командой сжимать файл? Использовал ShrinkFile/ но что-то эффекта не увидел
8 июн 18, 12:34    [21478738]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
1. Что такое "компрессия mdf"?
2-3. Свободное место в файле данных освобождается командой shrink. Свободное место в страницах объектов освобождается с помощью ребилда этих объектов.
8 июн 18, 12:37    [21478749]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1199
Гавриленко Сергей Алексеевич, компрессия mdf - когда данные удалили и файл данных ожидается, что тоже уменьшится
8 июн 18, 12:42    [21478768]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
minva
Гавриленко Сергей Алексеевич, компрессия mdf - когда данные удалили и файл данных ожидается, что тоже уменьшится

просто так уменьшаться не будет, достаточно бессмысленная операция. SHRINK если очень хотите, как уже сказали
8 июн 18, 12:43    [21478779]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
minva
Гавриленко Сергей Алексеевич, компрессия mdf - когда данные удалили и файл данных ожидается, что тоже уменьшится
Нет, MSSQL вашим фантазиям не соответствует. Так же не понятно, зачем вообще сжимать файл после удаления данных. Чтобы при добавлении его опять расширять?
8 июн 18, 12:45    [21478788]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1199
TaPaK, воооот.. В том то и дело, что удалил очень много, процентов 60 данных, а после шринка он ужался процентов на 5 только
8 июн 18, 12:45    [21478792]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1507
minva
Поиском пользовался. На подобные вопросы Гуру больше стебутся, чем по делу.
Поэтому конкретные вопросы, хотелось бы услышать конкретные ответы
Если бы еще и вопросы были не только "конкретными", но и хоть немного корректными...
Исходные данные: SQL Express 2008 r2.
1. Поддерживает ли этот сервер компрессию mdf? Если нет, то все остальные вопросы снимаются. И где про это написано, я не видел :(
Если под "компрессией mdf" понимается изменение размеров файлов, то поддерживается всеми версиями.
2. Ужмется ли БД после удаления данных из таблиц?
С какого перепуга?
Собственно я это сделал, но ужать не вышло.
Разумеется.
Откуда ноги растут - у клиента база достигает 10Гb. На нормальный сервак он тратится не хочет. Данные за прошлые года ему НЕ НУЖНЫ. Значит все это удаляем(delete from table1 where datefield < '20180101' - это примерно 2/3 всех записей), но база сильно не сжимается. так и остается больше 9 гигов
И зачем ей изменяться в размере? Чтобы сначала ужиматься, а потом по новой растягиваться, тратя на всё это время и ресурсы? Вы на чём, собственно, свои ожидания строите?
3. какой командой сжимать файл? Использовал ShrinkFile/ но что-то эффекта не увидел
Ну так правильно надо пользоваться.
8 июн 18, 12:48    [21478807]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1199
>>Гавриленко Сергей Алексеевич, Чтобы при добавлении его опять расширять?

Так... Тогда куда смотреть. Значит файл у меня 9.5 гигов, что близко к границе SQL express.
Данные мы из mdf удалили на 2/3. Как узнать, столько свободных мегабайт осталось в этих 9.5 объема, куда будут писаться новые данные.
8 июн 18, 12:49    [21478812]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
minva
>>Гавриленко Сергей Алексеевич, Чтобы при добавлении его опять расширять?

Так... Тогда куда смотреть. Значит файл у меня 9.5 гигов, что близко к границе SQL express.
Данные мы из mdf удалили на 2/3. Как узнать, столько свободных мегабайт осталось в этих 9.5 объема, куда будут писаться новые данные.

провая кнопочка на базе - свойства
8 июн 18, 12:50    [21478818]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
minva
>>Гавриленко Сергей Алексеевич, Чтобы при добавлении его опять расширять?

Так... Тогда куда смотреть. Значит файл у меня 9.5 гигов, что близко к границе SQL express.
Данные мы из mdf удалили на 2/3. Как узнать, столько свободных мегабайт осталось в этих 9.5 объема, куда будут писаться новые данные.
Начните со свойств базы в SSMS хотя бы.
8 июн 18, 12:50    [21478822]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1199
>Sergey Sizov, Ну так правильно надо пользоваться.

так я для того и спрашиваю, чтоб правильно пользоваться. Тогда какой смысл этой команды?

А цель я озвучил выше. Надо знать, что сколько жить осталось на SQL Express, чтоб данные не перевалили за 10 Гигов
8 июн 18, 12:52    [21478831]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1199
.[/quot]Начните со свойств базы в SSMS хотя бы.[/quot]

Да. там тоже непонятно. Вот посмотрел свою первую попавшуюся базу. объем 4гига. доступное место 800 метров
Доступное место - это текущий свободный объем в пределах 4гигов? А дальше начнет нарастать?
8 июн 18, 12:56    [21478858]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
minva
.
Начните со свойств базы в SSMS хотя бы.[/quot]

Да. там тоже непонятно. Вот посмотрел свою первую попавшуюся базу. объем 4гига. доступное место 800 метров
Доступное место - это текущий свободный объем в пределах 4гигов? А дальше начнет нарастать?[/quot]
yep
8 июн 18, 12:57    [21478867]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1507
minva
>Sergey Sizov, Ну так правильно надо пользоваться.

так я для того и спрашиваю, чтоб правильно пользоваться. Тогда какой смысл этой команды?
Спрашиваете вы несколько другое.

А цель я озвучил выше. Надо знать, что сколько жить осталось на SQL Express, чтоб данные не перевалили за 10 Гигов
Для получения этих знаний сжатие файла совершенно не нужно. Про свойства базу же не единожды написано.
8 июн 18, 12:57    [21478868]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
minva
TaPaK, воооот.. В том то и дело, что удалил очень много, процентов 60 данных, а после шринка он ужался процентов на 5 только

откуда удалял, из кластерных таблиц или из куч? если из куч, то удалять надо было с таблоком, иначе хоть данные и удаляются, страницы не высвобождаются, а остаются allocated to heap. соответственно, шринк их не трогает.

если же удаляли из кластерного индекса, но он НЕ по дате, то поудалялось из рандомных страниц, а не полностью страницы. а шринк не трогает страницы, где хоть что-то еще есть. соответственно, вас спасет ребилд.
8 июн 18, 14:11    [21479207]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1199
Yasha123
вас спасет ребилд.


Это что?

Поясню суть, зачем это надо, цитирую клиента: "у руководства периодически случаются приступы паранойи и они требуют обрубить все данные о продажах, кроме последнего квартала например (тоже самое они делают и с базами 1С). Когда мы месяц назад в очередной раз обрезали базу то её объём не особо сильно уменьшился, таким образом сейчас уже спустя всего месяц у нас на горизонте уже опять маячит цифра 10Гб"
Зачем это делает клиент, вопрос второй. но в базе за квартал 100% не может набраться 10 гб данных.

>Начните со свойств базы в SSMS хотя бы
Начал. Размер 9.5 Gb, доступное место 0,5 Mb
19 июл 18, 09:11    [21583449]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
minva,
автор
Размер 9.5 Gb, доступное место 0,5 Mb

теперь узнайте сколько лог и сколько база
19 июл 18, 09:17    [21583467]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
minva
Yasha123
вас спасет ребилд.


Это что?
REBUILD - DDL команда по перестроению таблиц и индексов.

Если таблица-куча, то делаете вначале ребилд таблицы, затем - всех её индексов.
Если таблица-кластер, то достаточно сделать ребилд таблицы (либо - ребилд её кластерного индекса)
19 июл 18, 09:34    [21583573]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Щукина Анна,

автор
Если таблица-куча, то делаете вначале ребилд таблицы, затем - всех её индексов.

от скуки вселенской?
19 июл 18, 09:40    [21583613]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
Владислав Колосов
Member

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

Вы же прибили данные, а не таблицы. Сжатие базы не подразумевает реорганизацию таблиц и это верно, т.к. Ваши намерения относительно таблиц не ясны - будете изменять их содержимое или нет в дальнейшем.
19 июл 18, 14:22    [21585155]     Ответить | Цитировать Сообщить модератору
 Re: Уменьшить размер mdf  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1199
Спасибо всем, вопрос закрыт. Помог такой скрипт. Клиенты в одной из таблиц хранили огромный объем блобов, такое её использование не предполагалось (и по статистике этой фичей в программе почти никто не пользовался), поэтому она не чистилась при усечении старых данных. Тупо про неё забыли :) Поэтому и были странности с объемом казалось бы пустой базы

DBCC UPDATEUSAGE (0)
create table #t(name varchar(255), row varchar(255), reserved varchar(255), data varchar(255), inxex_size varchar(255), unused varchar(255))

insert into #t
exec sp_msforeachtable N'exec sp_spaceused ''?''' 

select * from #t
order by (cast(Replace(data, ' KB', '') as float)) desc
drop table #t
19 июл 18, 15:40    [21585495]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить