powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / разница размеров 2 очень похожих таблиц в 2 раза
23 сообщений из 23, страница 1 из 1
разница размеров 2 очень похожих таблиц в 2 раза
    #40045368
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть 2 похожие таблицы в двух базах одна с общим размером полей 126 байт, вторая с общим размером 157 байт - поменены некоторые поля с iNT на BIGINT и добавлено 3 поля (int,decimal(18,2),timestamp)
количество записей примерно одинаковое ~ 700 млн
При этом размер данных(по sp_spaceused) в первой таблице 90GB а во второй 180GB
В чем причина? Неужели из-за изменения длины записи в 2 раза увеличились занятые страницы ?
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045374
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexusR
поменены некоторые поля с iNT на BIGINT
Это означает, что добавлены новые столбцы bigint, старые столбцы int будут удалены при перестроении таблицы.
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045378
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в таблице изначально нарезаны столбцы bigint и добавлены 3 поля. Потом данные перелиты из старой таблицы в новую.
Вопрос в том что общая длина полей выросла с 126 до 157 байт то есть на 25 % а размер данных в таблице вырос в 2 раза
и против теоеретических 110-115 GB показывает 180 GB
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045382
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045391
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexusR,

разговор ни о чем, сравните структуру старой таблицы и новой, возьмите калькулятор и подсчитайте разницу.
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045399
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже посчитал - я же написал что старая структура 126 байт сумма размеров всех полей а новая 157 байт итого на 700 млн должно быть
110ГБ а sp_spaceused показывает размер данных (без индексов) 189ГБ
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045412
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
старая таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE TABLE [dbo].[StateLetter](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[Letter_Id] [int] NOT NULL,
	[StatusReasonLetter_Id] [int] NOT NULL,
	[Date] [datetime] NOT NULL,
	[DateActual] [datetime] NOT NULL,
	[Employee_Id] [int] NOT NULL,
	[StateDocument_Id] [int] NULL,
	[Hidden] [bit] NOT NULL,
	[First] [bit] NULL,
	[Amount] [int] NOT NULL,
	[BranchPrice] [numeric](18, 2) NULL,
	[Branch_Id] [int] NULL,
	[SuccessStatusReasonLetter_Id] [int] NULL,
	[PriceDelivery] [numeric](18, 2) NULL,
	[PriceReturn] [numeric](18, 2) NULL,
	[PriceNotice] [numeric](18, 2) NULL,
	[AmountReturn] [int] NULL,
	[Ord] [int] NULL,
	[Document_Id] [int] NULL,
	[Lat] [float] NULL,
	[Long] [float] NULL,
	[DISTANCE] [float] NULL,
	[DaysDelta] [int] NULL,
 CONSTRAINT [PK_LetterDocument] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = ON, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045413
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
новая таблица
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
CREATE TABLE [dbo].[StateLetter](
	[Letter_Id] [bigint] NOT NULL,
	[Id] [bigint] IDENTITY(1,1) NOT NULL,
	[Document_Id] [bigint] NULL,
	[StateDocument_Id] [bigint] NULL,
	[Branch_Id] [int] NULL,
	[Date] [datetime] NOT NULL,
	[DateActual] [datetime] NOT NULL,
	[Employee_Id] [int] NOT NULL,
	[StatusReasonLetter_Id] [int] NOT NULL,
	[SuccessStatusReasonLetter_Id] [int] NULL,
	[Hidden] [bit] NULL,
	[First] [bit] NULL,
	[Amount] [int] NULL,
	[BranchPrice] [numeric](18, 2) NULL,
	[PriceDelivery] [numeric](18, 2) NULL,
	[PriceReturn] [numeric](18, 2) NULL,
	[PriceNotice] [numeric](18, 2) NULL,
	[AmountReturn] [int] NULL,
	[Ord] [int] NULL,
	[Lat] [numeric](9, 6) NULL,
	[Long] [numeric](9, 6) NULL,
	[DISTANCE] [float] NULL,
	[DaysDelta] [int] NULL,
	[CalcStatusReasonLetter_Id] [int] NULL,
	[CalcPrice] [numeric](18, 2) NULL,
	[rowversion] [timestamp] NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[Letter_Id] ASC,
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045432
Эх... а как вы данные переливали в новую таблицу? Может банально фрагментация на новой таблице высокая потому и такие результаты. Вставляли с WITH(TABLOCK)?
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045440
Какие еще индексы у вас там есть? Кроме кластерных. Есть подозрение что таки еще что-то прячете :)
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045455
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ fill factor может быть разный
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045500
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,
после заливки делал шринк базы с дефрагментацией.
индексы есть и они разные , но я смотрю разницу по данным без индексов
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045503
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

EXEC sp_configure 'fill factor' ---- 100 на обоих серверах
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045505
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
name minimum maximum config_value run_value
fill factor (%) 0 100 0 0
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045519
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexusR
komrad,

EXEC sp_configure 'fill factor' ---- 100 на обоих серверах

это серверный
лучше проверить в sys.indexes для ваших таблиц (index_id=1)
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045521
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad
LexusR
komrad,

EXEC sp_configure 'fill factor' ---- 100 на обоих серверах

это серверный
лучше проверить в sys.indexes для ваших таблиц (index_id=1)

А смысл?
Он используется только при ребилде и начальном построении индекса
К реальной заполненности страниц он имеет очень далекое отношение
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045535
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexusR,

гляньте на avg_page_space_used_in_percent в sys.dm_db_index_physical_stats c SAMPLED а лучше DETAILED


!!!DETAILED вызовет полный скан таблицы включая нелистовые уровни
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045568
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы были правы - в старой таблице 98.73922659% для index_id=1 а в новой 59.18146775%
Как с этим бороться и надо ли ?
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045569
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я имею в виду avg_page_space_used_in_percent в sys.dm_db_index_physical_stats
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045571
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexusR
Вы были правы - в старой таблице 98.73922659% для index_id=1 а в новой 59.18146775%
Как с этим бороться и надо ли ?

Как - ребилд.
Нужно ли - это сложный вопрос.
Из потенциальных плюсов такого низкого avg_page_space_used_in_percent - отсутствие расщепления при вставка в середину индекса (кластерного в вашем случае)
Из потенциальных минусов - больший объем как на диске, так и в памяти.
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045574
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так понимаю надо дефрагментацию кластерного индекса запустить или реиндексацию. Что быстрее сработает на 700 млн записей ?
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045575
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LexusR
я так понимаю надо дефрагментацию кластерного индекса запустить или реиндексацию. Что быстрее сработает на 700 млн записей ?

Я не знаю, что в вашем понимании дефрагментация и реиндексация индекса
Самый быстрый способ - это alter index rebuild
...
Рейтинг: 0 / 0
разница размеров 2 очень похожих таблиц в 2 раза
    #40045580
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запустил ребилд так как выгоды от отсутствия расщепления не будет. Вставка старых записей была с отключением автоинкремента а дальше будет работать автоинкремент и ключи будут монотонно возрастающие. А вот уменьшить объем памяти будет весьма полезно.
Спасибо за советы.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / разница размеров 2 очень похожих таблиц в 2 раза
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]