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

Откуда:
Сообщений: 149
Коллеги, помогите оптимизировать рост данных БД.
Ситуация такова, что 2 файлы данных БД сожрали все место на диске и не помещаются больше на нем (Disk G).
В одной файловой группе индексы(_5.ndf), в другой данные таблицы(_4.ndf), которая постоянно пополняется, в основном растет она.
Меня смущает тот факт, что бОльшая часть файловых групп зарезервирована, но не используется.
Можно ли как-то использовать это пространство и прекратить непомерный рост файловых групп.
Слышал, что можно сжать данные, но не скажется ли это на скорости?
Если я установлю порог роста, уменьшит ли SQL файл данных и станет ли использовать зарезервированное пространство?

К сообщению приложен файл. Размер - 145Kb
6 окт 14, 11:51    [16665127]     Ответить | Цитировать Сообщить модератору
 Re: Разрослась база. Что делать?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Kipetcoff
Меня смущает тот факт, что бОльшая часть файловых групп зарезервирована, но не используется.

1. То, что неиспользуется, называется Unused, а не Reserved

2. Вы какие регламентные работы проводите в своей базе ?
Перестроение/реорганизация индексов там есть ?
Дефрагментация ?
6 окт 14, 11:58    [16665172]     Ответить | Цитировать Сообщить модератору
 Re: Разрослась база. Что делать?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31781
Kipetcoff
Ситуация такова, что 2 файлы данных БД сожрали все место на диске и не помещаются больше на нем (Disk G).
В одной файловой группе индексы(_5.ndf), в другой данные таблицы(_4.ndf), которая постоянно пополняется, в основном растет она.
Меня смущает тот факт, что бОльшая часть файловых групп зарезервирована, но не используется.
Можно ли как-то использовать это пространство и прекратить непомерный рост файловых групп.
Зарезервировано 270 гигов, используется 150. При этом "которая постоянно пополняется, в основном растет она."
Вывод - там постоянно для каких то целей (например, перестройка индексов) требуется много места, потом это место освобождается.
Можно обрезать неиспользуемое место, но оно всё равно потребуется, так что смысла нету.

Вам нужно либо разобраться с проводимыми операциями, что бы они меньше кушали диска, либо просто выделить дополнительное дисковое пространство.
Kipetcoff
Слышал, что можно сжать данные, но не скажется ли это на скорости?
Иногда скорость даже увеличивается, но естественно может и уменьшится. Но это требует дополнительных исследований, так сразу нельзя сказать (иначе, сами понимаете, сжатие данных было бы включено по умолчанию и не отклуючалось бы).
6 окт 14, 12:01    [16665189]     Ответить | Цитировать Сообщить модератору
 Re: Разрослась база. Что делать?  [new]
Kipetcoff
Member

Откуда:
Сообщений: 149
Меня тут ввели в заблуждение немного.
На самом деле на обоих группах и индексы и данные.
Индексы перестраиваются. Раз в неделю. Данных в таблицах много.
Т.е. при перестроении резервируется пространство?
В таком случае я так понял единственных выход это перемещение файловых групп на более большое хранилище?
6 окт 14, 12:33    [16665408]     Ответить | Цитировать Сообщить модератору
 Re: Разрослась база. Что делать?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Kipetcoff
В таком случае я так понял единственных выход это перемещение файловых групп на более большое хранилище?

Надо смотреть распределение места по объектам.
И выяснять, зачем за объектом зарезервировано столько места.
6 окт 14, 12:40    [16665451]     Ответить | Цитировать Сообщить модератору
 Re: Разрослась база. Что делать?  [new]
Kipetcoff
Member

Откуда:
Сообщений: 149
Поможет ли урезание файла данных?
Не посыпятся ли БД? Не расширится ли обратно при перестроении индекса в следующий раз?

К сообщению приложен файл. Размер - 31Kb
6 окт 14, 14:31    [16666111]     Ответить | Цитировать Сообщить модератору
 Re: Разрослась база. Что делать?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Kipetcoff
Не посыпятся ли БД?

Вы думаете, что сжатие файла - это документированный способ разрушить базу что ли ?

Kipetcoff
Не расширится ли обратно при перестроении индекса в следующий раз?

Запросто
6 окт 14, 14:33    [16666128]     Ответить | Цитировать Сообщить модератору
 Re: Разрослась база. Что делать?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31781
Kipetcoff
Поможет ли урезание файла данных?
Не посыпятся ли БД?
Если с этими опциями - то не посыпятся и поможет.
Но я же вам писал, что до следующего обслуживания, так что бесполезно.
Kipetcoff
Т.е. при перестроении резервируется пространство?
Да, конечно, обычно на все операции нужно хоть какое то место на диске. Для перестроения индекса нужно место, равное размеру индекса, если индекс кластерный, то соответственно равное размеру таблицы.
Kipetcoff
В таком случае я так понял единственных выход это перемещение файловых групп на более большое хранилище?
Может, у вас неправильное обслуживание? Может, вы раз в неделю все кластерные индексы перестраиваете?

Соответственно, как я уже писал - если вам реально нужно место для выполнения бизнес-задач, то покупаете диски. Если место реально не нужно, и выделение дискового пространства - ошибка, то правите ошибку.
6 окт 14, 14:49    [16666253]     Ответить | Цитировать Сообщить модератору
 Re: Разрослась база. Что делать?  [new]
Spartakich
Member

Откуда: Riga
Сообщений: 380
Kipetcoff,
+

SELECT 
    t.NAME AS TableName,
    i.name as indexName,
    i.type,
    sum(p.rows) as RowCounts,
    sum(a.total_pages) as TotalPages, 
    sum(a.used_pages) as UsedPages, 
    sum(a.data_pages) as DataPages,
    (sum(a.total_pages) * 8) / 1024 as TotalSpaceMB, 
    (sum(a.used_pages) * 8) / 1024 as UsedSpaceMB, 
    (sum(a.data_pages) * 8) / 1024 as DataSpaceMB
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
WHERE 
    t.NAME NOT LIKE 'dt%' AND
    i.OBJECT_ID > 255 AND   
    i.index_id <= 1
GROUP BY 
    t.NAME, i.object_id, i.index_id, i.name ,i.type
ORDER BY 
    9 desc
    


может там у Вас банально "кучи" растут ?
6 окт 14, 14:57    [16666324]     Ответить | Цитировать Сообщить модератору
 Re: Разрослась база. Что делать?  [new]
Kipetcoff
Member

Откуда:
Сообщений: 149
Коллеги, спасибо за ответы.
На данный момент я обрезал файл данных, что высвободило около 19 ГБ места.
Причем обрезание выполнилось подозрительно быстро.
Посмотрим что будет после следующего пересчета индексов.
8 окт 14, 09:59    [16674544]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить