Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Достаточно много Unused места в базе.  [new]
five-century
Member

Откуда:
Сообщений: 17
Здравствуйте! Вопрос к DBA. Потому как люди именующие себя DBA в реальной жизни помочь не смогли. Платформа SQL 2000.

Один раз в своей практике я сталкивался с этим, но там это было некритично. А именно, попала мне в руки база которую надо было привести в порядок. В итоге, после всех действий с ней. Unused спейс по данным артизана стал в ней около 30 процентов и заполнялся по мере надобности. Потом через год когда база для роста выбрала весь Unused спейс, она стала как и положено отжирать по 10 процентов сверху(так было настроено) и всё стало хорошо.

Теперь немного другая ситуация, мне необходимо именно убрать это unused спейс из базы. Т-к он достаточно велик, а сервер (пространство на сервере мало) и ждать пока оно само заполнится и всё придёт в порядок времени у меня особо нет.

Результаты спейсюзд

testdb 32619.00 MB 21.40 MB

33378920 KB 10163904 KB 7814608 KB 15400408 KB

Убрать желательно последние 15 гигабайт.

Заранее спасибо!

Сильно не пинайте. Про Dbcc shrink и BOL в курсе.
19 окт 09, 10:48    [7803631]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
--__Александр__--
Member

Откуда:
Сообщений: 2631
Я бы сделал так(самое не геморное).
Сделать бек ап.
Создать базу "нужных размеров"
Поднять туда бекап.
А еще есть DBCC SHRINKFILE.
19 окт 09, 10:53    [7803665]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
iljy
Member

Откуда:
Сообщений: 8711
five-century,
и что не получается?
19 окт 09, 11:02    [7803729]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

Откуда:
Сообщений: 17
--__Александр__--,

Уважаемый Александр! К сожалению нет, не получается. При поднятии бэкапа во вновь созданную базу размером 1 Мб и моделью симпл. Получается ровно то-же. Есть ведь наверняка ещё рецепты.
19 окт 09, 12:25    [7804400]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
1234567
Member

Откуда:
Сообщений: 704
five-century
Есть ведь наверняка ещё рецепты.


Вам написали про ещё рецепт:

>А еще есть DBCC SHRINKFILE
19 окт 09, 12:27    [7804420]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

Откуда:
Сообщений: 17
--__Александр__--,

К сожалению, DBCC Srinkfile срезает ровно то, что в артизане помечается желтым. Но никак не зелёным. Я имею ввиду аналлокейтед спейс, а зелёный анюзд спейс.
19 окт 09, 12:34    [7804474]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
Glory
Member

Откуда:
Сообщений: 104760
five-century
--__Александр__--,

К сожалению, DBCC Srinkfile срезает ровно то, что в артизане помечается желтым. Но никак не зелёным. Я имею ввиду аналлокейтед спейс, а зелёный анюзд спейс.

1. Начнем со
EXEC sp_spaceused @updateusage = N'TRUE'

2. Unused space принадлежит каким то объетам. Поэтому придется искать эти объекты. Через ту же sp_spaceused
19 окт 09, 12:39    [7804505]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
iljy
Member

Откуда:
Сообщений: 8711
five-century,

покажите команду, которой сжатие делаете.
19 окт 09, 12:41    [7804534]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

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

Дал вашу команду, тестовая машина задумалась не на шутку. :-)

Вот результат.
testdb;34316.75 MB;1430.54 MB

33479640 KB;10207544 KB;7857272 KB;15414824 KB

Каким образом искать те объекты, которым принадлежит анюзд спейс?
19 окт 09, 12:48    [7804603]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

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

Здравствуйте! Я сейчас вам напишу последовательность своих действий.

Перво наперво сделал следущее:

USE bssdb
go
sp_spaceused @updateusage = 'TRUE'
go

потому как ан аллокейтед было со знаком минус. всегда так делаю, если это вижу.

потом.

use testdb
DBCC SHRINKDATABASE (testdb, 10)
GO
BACKUP LOG testdb WITH NO_LOG
DBCC SHRINKDATABASE (testdb, TRUNCATEONLY)
GO
19 окт 09, 12:54    [7804664]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
iljy
Member

Откуда:
Сообщений: 8711
five-century,

а вам говорят про DBCC SHRINKFILE
19 окт 09, 13:12    [7804864]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

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

Даю dbcc shrinkfile (testdb_data, truncateonly) без изменений.
19 окт 09, 13:30    [7805099]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
iljy
Member

Откуда:
Сообщений: 8711
five-century
iljy,

Даю dbcc shrinkfile (testdb_data, truncateonly) без изменений.


вы описание это команды прочитали? truncateonly - отбрасывает свободное место в конце файла без дефрагментиции.
19 окт 09, 13:32    [7805125]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

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

Я же ведь прошу как анюзд сбить с базы!
19 окт 09, 13:33    [7805132]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
iljy
Member

Откуда:
Сообщений: 8711
five-century
iljy,

Даю dbcc shrinkfile (testdb_data, truncateonly) без изменений.


вы описание это команды прочитали? truncateonly - отбрасывает свободное место в конце файла без дефрагментиции.
19 окт 09, 13:34    [7805141]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
Glory
Member

Откуда:
Сообщений: 104760
five-century
iljy,

Даю dbcc shrinkfile (testdb_data, truncateonly) без изменений.

Поймите простую вещь
unallocated space - это место, неиспользуемое и незакрепленное ни за каким объектом
а, unused spece - это место, закрепленное за объектом, но неиспользуемое под данные этого объекта

Поэтому dbcc shrink сможет освободить только первоое. Потому что для освобождения второго нужно производить манипуляции с объектом. Причем манипуляции эти будут зависеть от типа объекта
19 окт 09, 13:36    [7805166]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

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

Уважаемый Глори! Подскажите пожалуйста, хотя бы с чего начать в освобождении анюзед спейс.
В структуре базы ориентируюсь, знаю какие таблицы за что отвечают.

Просто очень надо, иначе бы не надоедал.

Заранее спасибо!
19 окт 09, 13:47    [7805268]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
Glory
Member

Откуда:
Сообщений: 104760
five-century
Glory,

Уважаемый Глори! Подскажите пожалуйста, хотя бы с чего начать в освобождении анюзед спейс.

Уже сказал, что начинать нужна с поиска этих объектов. Через sp_spaceused для каждой таблицы
19 окт 09, 13:49    [7805286]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

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

Уважаемый Глору!

А подскажите алгоритм как-то:
19 окт 09, 14:08    [7805432]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

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

Уважаемый Глору!

А подскажите алгоритм как-то:

1) С какой таблицы начинать.

2) что делать с результатами запроса?
19 окт 09, 14:09    [7805445]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
Glory
Member

Откуда:
Сообщений: 104760
five-century
Glory,

Уважаемый Глору!

А подскажите алгоритм как-то:

Алгоритм чего ? Как запустить процедуру sp_spaceused с именем таблицы в качестве параметра ?
19 окт 09, 14:10    [7805449]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

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

Простите за предидущее сообщение, случайно по клавиатуре мазнул.
19 окт 09, 14:12    [7805466]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
Glory
Member

Откуда:
Сообщений: 104760
five-century
Glory,

Уважаемый Глору!

А подскажите алгоритм как-то:

1) С какой таблицы начинать.

2) что делать с результатами запроса?

1. С любой
2. Искать таблицу с наибольшим unused space
19 окт 09, 14:13    [7805479]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

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

Допустим я нашел эту таблицу, как мне отрезать у неё это самое анюзд место.

Ещё раз простите за тупизм.
19 окт 09, 14:26    [7805574]     Ответить | Цитировать Сообщить модератору
 Re: Достаточно много Unused места в базе.  [new]
five-century
Member

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

С 5 таблиц накопал уже 5 гигабайт.
19 окт 09, 14:31    [7805610]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить