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

Откуда:
Сообщений: 19
Ситуация следующая:
есть два SQL Server 2005. Один из них - основной; на основном ведется чтение запись серверным ПО, на неосновной данные реплицируются с основного.

С некоторых пор размер БД на неосновном сервере стал сильно расти по сравнению с основным, хотя они должны быть примерно одинаковыми.
mdf - файл на основном сервере - 1,2 Гб
mdf - файл на неосновном сервере - 13 Гб

вот что показал отчет Disk Usage by Top Tables:
Table Name	# Records	Reserved (KB)	Data (KB)	Indexes (KB)	Unused (KB)	
dbo.Form 901 11 398 192 12 370 680 24 0
.......

и отчет Disk Usage by Partition:
dbo.Form				901	11 398 192	12 370 704
Index (PK_Form) 901 11 398 192 12 370 704

размер таблицы dbo.Form на основном сервере около 50 Мб

Индекс PK_Form был пересоздан, но размер базы прежний.
Можно ли как-то уменьшить размер БД без использования shrink, которое повлечет нежелательную остановку работы серверного ПО на неосновном сервере?

Сообщение было отредактировано: 29 ноя 12, 11:24
29 ноя 12, 11:21    [13547837]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
Glory
Member

Откуда:
Сообщений: 104760
пользоват.11
Индекс PK_Form был пересоздан, но размер базы прежний.

C fillfactor 1% наверное ?

пользоват.11
Можно ли как-то уменьшить размер БД без использования shrink,

Прежде надо освободить место, занятое таблицей
Потом уже делать shrink
29 ноя 12, 11:26    [13547881]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
пользоват.11
Member

Откуда:
Сообщений: 19
пользоват.11
Можно ли как-то уменьшить размер БД без использования shrink,

Прежде надо освободить место, занятое таблицей
Потом уже делать shrink[/quot]

Я вижу, что таблица Form занимает значительно больше места, чем размер хранимых в ней данных.
Но как освободить это место?
29 ноя 12, 11:40    [13547973]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
Glory
Member

Откуда:
Сообщений: 104760
для начала сделать и показать результат
EXEC sp_spaceused @objname = 'Form', @updateusage = 'TRUE'
29 ноя 12, 11:42    [13547982]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
пользоват.11
пользоват.11
Можно ли как-то уменьшить размер БД без использования shrink,

Прежде надо освободить место, занятое таблицей
Потом уже делать shrink


Я вижу, что таблица Form занимает значительно больше места, чем размер хранимых в ней данных.
Но как освободить это место?[/quot]
убиением индексов, шринком таблицы и креэйтом индексов заново при fillfactor 100
29 ноя 12, 11:43    [13547986]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
пользоват.11
Member

Откуда:
Сообщений: 19
Glory
для начала сделать и показать результат
EXEC sp_spaceused @objname = 'Form', @updateusage = 'TRUE'


name    rows                 reserved           data                index_size      unused
Form 901 11398192 KB 10937064 KB 24 KB 461104 KB


Сообщение было отредактировано: 29 ноя 12, 11:50
29 ноя 12, 11:48    [13548032]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
пользоват.11
Member

Откуда:
Сообщений: 19
stavgreengo
убиением индексов, шринком таблицы и креэйтом индексов заново при fillfactor 100


а как делается шринк одной таблицы?
29 ноя 12, 11:54    [13548072]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
Glory
Member

Откуда:
Сообщений: 104760
пользоват.11
Glory
для начала сделать и показать результат
EXEC sp_spaceused @objname = 'Form', @updateusage = 'TRUE'


name    rows                 reserved           data                index_size      unused
Form 901 11398192 KB 10937064 KB 24 KB 461104 KB

Удалите существующий индекс
Создайте его заново.Кластерный.С fillfactor 100
29 ноя 12, 11:55    [13548085]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
пользоват.11
Member

Откуда:
Сообщений: 19
Glory
пользоват.11
пропущено...


name    rows                 reserved           data                index_size      unused
Form 901 11398192 KB 10937064 KB 24 KB 461104 KB

Удалите существующий индекс
Создайте его заново.Кластерный.С fillfactor 100


Удалил и создал индекс. А как теперь сделать shrink этой таблицы?
29 ноя 12, 12:08    [13548180]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
Glory
Member

Откуда:
Сообщений: 104760
пользоват.11
Удалил и создал индекс

Опять покзать
EXEC sp_spaceused @objname = 'Form', @updateusage = 'TRUE'
29 ноя 12, 12:09    [13548185]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
Glory
Member

Откуда:
Сообщений: 104760
пользоват.11
А как теперь сделать shrink этой таблицы?

"Шринк" таблицы и есть дефрагментация индекса.
29 ноя 12, 12:09    [13548192]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
пользоват.11
Member

Откуда:
Сообщений: 19
Glory
Опять покзать
EXEC sp_spaceused @objname = 'Form', @updateusage = 'TRUE'



name rows reserved data index_size unused
Form 901 11398128 KB 10953984 KB 24 KB 444120 KB


Размер индекса вроде как удовлетвоиртельный.
Соответственно, и результат прежний: таблица продолжате занимать много места
29 ноя 12, 12:16    [13548264]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Вы кластерный индекс создали ? Fillfactor указали 100 ?

DBCC SHOWCONTIG (Forms)
29 ноя 12, 12:20    [13548293]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
пользоват.11
Member

Откуда:
Сообщений: 19
Glory
Вы кластерный индекс создали ? Fillfactor указали 100 ?

DBCC SHOWCONTIG (Forms)



Все сделал, как Вы сказали:

ALTER TABLE dbo.Form ADD CONSTRAINT
PK_Form PRIMARY KEY CLUSTERED
(
ID,
GrpID
) WITH( PAD_INDEX = OFF, FILLFACTOR = 100, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO

вот DBCC SHOWCONTIG ('oik..Form')

DBCC SHOWCONTIG scanning 'Form' table...
Table: 'Form' (258099960); index ID: 1, database ID: 5
TABLE level scan performed.
- Pages Scanned................................: 11
- Extents Scanned..............................: 8
- Extent Switches..............................: 7
- Avg. Pages per Extent........................: 1.4
- Scan Density [Best Count:Actual Count].......: 25.00% [2:8]
- Logical Scan Fragmentation ..................: 54.55%
- Extent Scan Fragmentation ...................: 75.00%
- Avg. Bytes Free per Page.....................: 119.6
- Avg. Page Density (full).....................: 98.52%
29 ноя 12, 12:27    [13548367]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
Glory
Member

Откуда:
Сообщений: 104760
Что то аномальное
Приведите скрипт создания вашей таблицы
29 ноя 12, 12:59    [13548693]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
пользоват.11
Member

Откуда:
Сообщений: 19
Glory
Что то аномальное
Приведите скрипт создания вашей таблицы


не то слово, аномальное
вот результат запроса по все полям таблицы:
select sum(ISNULL(datalength(id),0) + ISNULL(datalength(grpid),0) + ..........) from Form
-------------
44738031
Т.е. 44Мб
В тоже время на закладке General свйств этой таблицы в поле Data Space - 10 762,648 MB

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

USE [OIK]
GO
/****** Object: Table [dbo].[Form] Script Date: 11/29/2012 13:10:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Form](
[ID] [int] NOT NULL,
[GrpID] [int] NOT NULL,
[Comment] [varchar](75) COLLATE Cyrillic_General_CI_AS NOT NULL,
[FTime] [smalldatetime] NOT NULL,
[Form] [image] NULL,
[Author] [int] NULL,
[TreeIndex] [smallint] NULL,
[DLL] [varchar](16) COLLATE Cyrillic_General_CI_AS NULL,
[bgPicName] [varchar](32) COLLATE Cyrillic_General_CI_AS NULL,
[bgPic] [image] NULL,
[GraphRes] [image] NULL,
[RecGroup] [int] NULL CONSTRAINT [DF__Form__RecGroup] DEFAULT ((0)),
[FDescr] [text] COLLATE Cyrillic_General_CI_AS NULL,
[ForWEB] [bit] NOT NULL CONSTRAINT [DF__Form__ForWEB] DEFAULT ((1)),
[FTimeCreate] [smalldatetime] NULL,
CONSTRAINT [PK_Form] PRIMARY KEY CLUSTERED
(
[ID] ASC,
[GrpID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, FILLFACTOR = 100) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO
SET ANSI_PADDING OFF
29 ноя 12, 13:11    [13548813]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
Glory
Member

Откуда:
Сообщений: 104760
4 blob-а
LOB-объекты. Не очищается место после удаления. Помогите советом, пжл. ??
29 ноя 12, 13:16    [13548864]     Ответить | Цитировать Сообщить модератору
 Re: Ненормально большой размер файла БД (SQL 2005)  [new]
пользоват.11
Member

Откуда:
Сообщений: 19
Glory
4 blob-а
LOB-объекты. Не очищается место после удаления. Помогите советом, пжл. ??


выполнил
select sum(sts.ghost_record_count) from sys.dm_db_index_physical_stats (DB_ID(), NULL, null, null, N'DETAILED') sts
WHERE sts.ghost_record_count != 0
-----
результат: 32

т.е. все очищается
29 ноя 12, 13:36    [13549077]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить