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

Откуда:
Сообщений: 130
Добрый день.

Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Desktop Engine on Windows NT 6.1 (Build 7601: Service Pack 1)

Пытаюсь уменшить размер базы путем DBCC SHRINKFILE так как приближаюсь к ограничению в 2 Гб.
Индексы все пересоздал при помощи DBCC DBREINDEX (@tablename,'',0) WITH NO_INFOMSGS.
Пытаюсь найти таблицу с "распухшим" индексом. Нахожу, что у одной таблицы размер индекса 7Гб а в свойствах базы размер
базы без лога ~2Гб. Лог не заполнен. Как такое может быть и в чём измеряется размеры таблиц и размеры индексов в Management
Studio. Пересоздание индекса у "распухшей" таблицы тоже не уменшает размер. Создаётся впечатление, что так и нужно.
Знаю точно, что размер базы без лога должен быть в пределах 1Гб.
Подскажите, как проанализировать ситуацию и выяснить причину увеличенного размера базы.
14 ноя 12, 12:52    [13471043]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
Glory
Member

Откуда:
Сообщений: 104760
USE mydb
exec sp_spaceused @updateusage = 'TRUE'
14 ноя 12, 12:53    [13471074]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
_Gavrysh_
Member

Откуда:
Сообщений: 130
Показало результат
reserveddataindex_sizeunused
1926480 KB488288 KB122448 KB1315744 KB


Сообщение было отредактировано: 14 ноя 12, 13:33
14 ноя 12, 13:02    [13471180]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
_Gavrysh_
Показало результат
reserved data index_size unused
1926480 KB 488288 KB 122448 KB 1315744 KB

Разве ещё какие-то вопросы есть ?
14 ноя 12, 13:24    [13471478]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
Glory
Member

Откуда:
Сообщений: 104760
_Gavrysh_
Нахожу, что у одной таблицы размер индекса 7Гб

USE pubs
exec sp_spaceused @objname='Mytable', @updateusage = 'TRUE'

Сообщение было отредактировано: 14 ноя 12, 13:34
14 ноя 12, 13:34    [13471601]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
_Gavrysh_
Member

Откуда:
Сообщений: 130
data
488288 KB

index_size
122448 KB

488288+ 122448=610 736 КВ

Почему в свойствах базы её рамер близок к 2Гб?
14 ноя 12, 14:42    [13472340]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
Glory
Member

Откуда:
Сообщений: 104760
_Gavrysh_
Почему в свойствах базы её рамер близок к 2Гб?

Потому что файл - это контейнер.
14 ноя 12, 14:49    [13472402]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
_Gavrysh_
Member

Откуда:
Сообщений: 130
Glory
USE mydb
exec sp_spaceused @updateusage = 'TRUE'


После запуска этой процедуры значение размера индекса в 7Гб у якобы "распухшей" таблици пропало и приняло значение 22408 KB.
Да и по остальным таблицам вроде всё адекватно. Запустил повторную переидексацию и повторный шринк. Размер базы всё равно не
уменьшается и близок к 2Гб.

database_name database_size unallocated space
MY_DB 2272.13 MB 114.29 MB


reserved data index_size unused
1968408 KB 493048 KB 123928 KB 1351432 KB
14 ноя 12, 15:02    [13472517]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
Glory
Member

Откуда:
Сообщений: 104760
unallocated space - 114.29 MB
вот место, которое неиспользовано

unused - 1351432 KB
вот место, которое зарезервировано за объектами, но незаполнено

Скорее всего причина во фрагментированности
Читать про DBCC SHOWCONTIG и DBCC INDEXDEFRAG
14 ноя 12, 15:07    [13472575]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
А нет желание проапгрейдиться ? Хотя бы на 2008 R2 или 2012 ? Там места то по боле будет, чем 2 гига :)
14 ноя 12, 15:26    [13472828]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
_Gavrysh_
Member

Откуда:
Сообщений: 130
Ozerov
А нет желание проапгрейдиться ? Хотя бы на 2008 R2 или 2012 ? Там места то по боле будет, чем 2 гига :)


У MSDE 2000 есть свои плюсы
1.Он бесплатный
2.Поддерживает репликацию и как подписчик и как издатель

У бесплатной версии SQL 2008 репликация только в качестве подписчика
14 ноя 12, 16:25    [13473480]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
_Gavrysh_
Member

Откуда:
Сообщений: 130
Glory
Скорее всего причина во фрагментированности
Читать про DBCC SHOWCONTIG и DBCC INDEXDEFRAG


Прошёлся по всем индексам DBCC INDEXDEFRAG (@db_name,@tname,@iname) /*WITH NO_INFOMSGS*/.

Размер базы всё равно не уменьшается. Я бы так не переживал но это база одного из наших филиалов. Филиалов около 10.
Ночью все таблици из всех филиалов сливаются в одну базу. Размер этой базы не превышает 1,3Гб. А тут размер базы одного
филиала больше 2Гб. Что то не в порядке с таблицами.
14 ноя 12, 17:33    [13473913]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
Glory
Member

Откуда:
Сообщений: 104760
_Gavrysh_
Прошёлся по всем индексам DBCC INDEXDEFRAG (@db_name,@tname,@iname) /*WITH NO_INFOMSGS*/.

Размер базы всё равно не уменьшается.

Еще раз
1. Размер базы не уменьшется больше, чем на unallocated space
2. unallocated space можно увеличить за счет unused space
3. Для этого мало механического выполнения команды DBCC INDEXDEFRAG. Для этого сначала нужно найти, какие именно объекты занимают места больше, чем используют. А потом уже решать, возможно ли какими средствами избавиться от фрагментации
14 ноя 12, 17:41    [13473943]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
_Gavrysh_
Member

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

Еще раз
3. Для этого сначала нужно найти, какие именно объекты занимают места больше, чем используют. А потом уже решать, возможно ли какими средствами избавиться от фрагментации


Доброе утро!
Пошелся по таблицам при помощи exec sp_spaceused @tablename. Обнаружил около десятка таблиц с большими значениями
unused. Не подскажите как уменьшить значение unused в таблицах?
15 ноя 12, 10:19    [13476440]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
Spartakich
Member

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

индексы на этих таблицах есть ?
15 ноя 12, 10:25    [13476471]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
_Gavrysh_
Member

Откуда:
Сообщений: 130
Spartakich
_Gavrysh_,

индексы на этих таблицах есть ?


Имеются не кластеризованные.
15 ноя 12, 10:27    [13476485]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
Spartakich
Member

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

создай/удали кластерный индекс
15 ноя 12, 10:36    [13476545]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
_Gavrysh_
Member

Откуда:
Сообщений: 130
Spartakich
_Gavrysh_,

создай/удали кластерный индекс


Спасибо, отлично помогает.

Не подскажите а на будущее куда копать. У меня во всех таблицах не кластеризованные индексы с фулл фактором 0. Можно ли как то программно избавится от лишнего просстранства или нужно пробегать по всем таблицам
и создавать а потом удалять кластерные индексы?
15 ноя 12, 10:45    [13476610]     Ответить | Цитировать Сообщить модератору
 Re: Не уменьшается размер базы  [new]
Spartakich
Member

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

те таблицы которые без кластерного индекса - кучи.
При удалении данных из куч, они фрагментируются. в 2000 дефрагментировать кучи можно создав/удалив кластерный индекс.
один из советов Майкрософта: иметь на каждой таблице кластерный индекс.

http://msdn.microsoft.com/ru-ru/library/ms188270%28v=sql.105%29.aspx
15 ноя 12, 10:53    [13476671]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить