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

Откуда:
Сообщений: 10
Всем привет!
Работаем с Axapta 3.0, которая использует MS SQL 2005 Ent.
База старая,за 12 лет выросла из 6гб в 300гб. Файловые группы не используем.
Кто не знаком с архитектурой базы Axapta - большинство важных таблиц - кучи.
Фрагментация (avg_fragmentation_in_percent ) любой кучи больше 95%.
Количество последовательно идущих фрагментов (avg_fragment_size_in_pages) кучи и индексов не больше 10.
Read-ahead - абсолютно бесполезен на такой фрагментации и только приносит вред.

Так как у нас MS SQL 2005 ALTER TABLE [name] REBUILD в арсенале нету и решение только одно - перезаливка таблиц.

Сделал перезаливку таблиц в новый файл БД.
Делал по следующему принципу:

1.Создаём табличку.
2.С помощью BCP заливал данные.
3.Строил индексы.

Параметры avg_fragmentation_in_percent стали 0 и avg_fragment_size_in_pages выросло до сотен и тысяч. Круто.

И так вопрос:
В базе много пустых таблиц и таблиц умещающихся на 1,2 страницы. Так же есть кучи и таблицы с кластерными индексами.
Какие растут быстро, какие то нет.

Как правильнее будет разместить их в одном файле БД?
10 дек 15, 18:10    [18542160]     Ответить | Цитировать Сообщить модератору
 Re: Фрагментация куч MS SQL 2005  [new]
o-o
Guest
А что, можно уже управлять "размещением таблицы в одном файле бд"?
"сервер-сервер, ты могуч, ты гоняешь стаи куч!
на страницах 50-70 расположи мне table1,
потом пустое место под рост,
а с 200 по 400 забей место под table2"
10 дек 15, 18:27    [18542217]     Ответить | Цитировать Сообщить модератору
 Re: Фрагментация куч MS SQL 2005  [new]
Юрий Tehpribor
Member

Откуда:
Сообщений: 10
o-o,

Вы не поняли вопроса, если перезаливать таблицы в новый файл БД, то он заполняется последовательно. Если я залью константные таблицы первыми, то следовательно эти таблицы будут в начале файла. И так как с этих таблиц не будут удаляться данные, то дырок (свободных страниц) там не будет в будущем. Это так?
10 дек 15, 18:36    [18542252]     Ответить | Цитировать Сообщить модератору
 Re: Фрагментация куч MS SQL 2005  [new]
o-o
Guest
Я действительно не понимаю вопроса.
Если таблицы не меняются, то какая разница, где они расположены, дырок там не будет по-любому,
на одной странице не могут располагаться строки разных объектов, ну так если не удалять ничего из таблицы, откуда там быть дырам?
А в тех кучах, откуда удаляют, дыры будут, как ни располагай
10 дек 15, 19:32    [18542528]     Ответить | Цитировать Сообщить модератору
 Re: Фрагментация куч MS SQL 2005  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Юрий Tehpribor,

И часто у вас таблицы сканируются? Может лучше индексов некластерных добавить? А еще можно память увеличить, и тогда все равно будет на фрагментацию и Read-ahead.
12 дек 15, 01:34    [18549927]     Ответить | Цитировать Сообщить модератору
 Re: Фрагментация куч MS SQL 2005  [new]
pXn
Member

Откуда: Косопузая
Сообщений: 45
Юрий Tehpribor,

Возможно я тоже не понял вопроса.

Организовать кучу можно созданием кластерного индекса по нужному полю. После этого индекс удаляется.
Куча становится упорядоченной до момента изменения в ней данных.
14 дек 15, 10:04    [18555944]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить