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

Откуда:
Сообщений: 16
Коллеги, прошу помощи!

Есть некая БД небольших размеров (около 20 Гб). Эта БД с помощью репликации транзакций реплицируется на 5 других серверов.
На четырех из них все прекрасно - те же 20 Гб.
А вот на одном размер уже около 250 Гб. Согласитесь, это несколько удивительно...
Помогает переинициализация подписчика - БД становится нормального размера, но через несколько недель опять так увеличивается.
Интересно, что с другими БД на этом сервере таких проблем нет.

Помогите, пожалуйста, хотя бы в какую сторону рыть.
Единственное что пришло в голову - Fill Factor, но он везде одинаковый (по умолчанию), да и не может же он дать такую разницу...
4 окт 11, 10:46    [11379194]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданный рост БД на одном сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
vnik82
Единственное что пришло в голову - Fill Factor, но он везде одинаковый (по умолчанию), да и не может же он дать такую разницу...

Ну так вы узнали что и где занимает эти 250Гб ?
4 окт 11, 10:47    [11379202]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданный рост БД на одном сервере  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
А что растёт то ? Журнал транзакций ?
4 окт 11, 10:52    [11379238]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданный рост БД на одном сервере  [new]
vnik82
Member

Откуда:
Сообщений: 16
Glory
vnik82
Единственное что пришло в голову - Fill Factor, но он везде одинаковый (по умолчанию), да и не может же он дать такую разницу...

Ну так вы узнали что и где занимает эти 250Гб ?


Смотрел разными способами. Вот, например, результаты запроса.
Слева "странный" сервер, справа - нормальный.
Обратите внимание - кол-во данных в таблицах практически одинаковое, а размер их сильно различается:

PROD05PROD09
table_namerowsreservedKBdataKBindex_sizeKBunusedKB table_namerowsreservedKBdataKBindex_sizeKBunusedKB
ThemeObject47865072840280332091043962061610560ThemeObject4765722534968082412763245040
ThemeMassMedia210746210602081268468883715603960ThemeMassMedia20997098928312164144826264
ThemeCluster79840568796565518395216871928512ThemeCluster797272591601345049807226584
ThemeArticle156161296121992270300646907262419304ThemeArticle1560788164058643977928101902562237680




Запрос:

DECLARE @pagesizeKB int
SELECT @pagesizeKB = low / 1024 FROM master.dbo.spt_values
WHERE number = 1 AND type = 'E'

SELECT
  table_name = OBJECT_NAME(o.id),
  rows = i1.rowcnt,
  reservedKB = (ISNULL(SUM(i1.reserved), 0) + ISNULL(SUM(i2.reserved), 0)) * @pagesizeKB,
  dataKB = (ISNULL(SUM(i1.dpages), 0) + ISNULL(SUM(i2.used), 0)) * @pagesizeKB,
  index_sizeKB = ((ISNULL(SUM(i1.used), 0) + ISNULL(SUM(i2.used), 0))
    - (ISNULL(SUM(i1.dpages), 0) + ISNULL(SUM(i2.used), 0))) * @pagesizeKB,
  unusedKB = ((ISNULL(SUM(i1.reserved), 0) + ISNULL(SUM(i2.reserved), 0))
    - (ISNULL(SUM(i1.used), 0) + ISNULL(SUM(i2.used), 0))) * @pagesizeKB
into #t
FROM sysobjects o
LEFT OUTER JOIN sysindexes i1 ON i1.id = o.id AND i1.indid < 2
LEFT OUTER JOIN sysindexes i2 ON i2.id = o.id AND i2.indid = 255
GROUP BY o.id, i1.rowcnt
ORDER BY 3 DESC
select * from #t
select sum(reservedKB) reservedKB,sum(dataKB) dataKB,sum(index_sizeKB) index_sizeKB,sum(unusedKB) unusedKB from #t
drop table #t


Сообщение было отредактировано: 4 окт 11, 11:19
4 окт 11, 11:08    [11379364]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданный рост БД на одном сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
Приведенные цифры говорят мне, что нужно проверить фрагментацию индексов PROD05. Прежде всего кластерных. И прежде всего на заполненность страниц
4 окт 11, 11:24    [11379506]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданный рост БД на одном сервере  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
vnik82
Единственное что пришло в голову - Fill Factor, но он везде одинаковый (по умолчанию), да и не может же он дать такую разницу...
Ну в принципе может.
Посмотрите, нет ли регулярного перестроения индексов с явным указанием FillFactor и какое его значение по умолчанию установлено на сервере.
4 окт 11, 11:32    [11379566]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданный рост БД на одном сервере  [new]
vnik82
Member

Откуда:
Сообщений: 16
DeColo®es, Fill Factor везде одинаковый, по умолчанию, т.е. 0. Индексы явно не перестраиваются.

Glory, спасибо, проверил фрагментацию в интерфейсе. Нашел интересную строчку:

PROD09
Page fullness 36,21 %
Total fragmantation 86,62 %
Ghost Rows 0


PROD05 (проблемный)
Page fullness 61,23 %
Total fragmantation 70,86%
Ghost Rows 16266300

в БОЛе как-то очень мало написано про этих фантомов:
BOL
Ghost rows
The number of rows that are marked as deleted but not yet removed. These rows will be removed by a clean-up thread, when the server is not busy. This value does not include rows that are being retained due to an outstanding snapshot isolation transaction.


Сервер, конечно, нагружен, но не сказать, что сильнее, чем PROD09. Есть идеи, как это пофиксить?
4 окт 11, 12:01    [11379863]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданный рост БД на одном сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
https://www.sql.ru/forum/actualthread.aspx?tid=811926&hl=ghost ???
4 окт 11, 12:04    [11379886]     Ответить | Цитировать Сообщить модератору
 Re: Неожиданный рост БД на одном сервере  [new]
vnik82
Member

Откуда:
Сообщений: 16
Glory, благодарю!
Буду раскуривать тему :)
4 окт 11, 12:23    [11380045]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить