Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
Есть таблица А размером 2.5ГБ. Если сделать ее копию то ее размер около 1.6ГБ. Есть какие-то средства (онлайн) шринкануть таблицу без пересоздания? База постоянно в онлайне. |
2 май 15, 01:25 [17593040] Ответить | Цитировать Сообщить модератору |
komrad Member Откуда: Сообщений: 5496 |
у вас наверно плотность данных на страницу %60 приведите индексы по таблице |
||
2 май 15, 01:36 [17593067] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
komrad,
|
|
2 май 15, 01:50 [17593085] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8317 |
Relic Hunter, ALTER TABLE REBUILD. |
2 май 15, 10:56 [17593447] Ответить | Цитировать Сообщить модератору |
Jovanny Member Откуда: Сообщений: 1196 |
А смысл? Если бы было 2,5 Tb, тогда ещё можно бы было пытаться. |
||
2 май 15, 10:59 [17593453] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
|
||||
2 май 15, 11:32 [17593526] Ответить | Цитировать Сообщить модератору |
komrad Member Откуда: Сообщений: 5496 |
Relic Hunter, а фрагментацию индексов не смотрели еще? полагаю, что она велика пересоздайте кластерный индекс |
3 май 15, 11:48 [17595442] Ответить | Цитировать Сообщить модератору |
komrad Member Откуда: Сообщений: 5496 |
и приведите значение @@version |
3 май 15, 11:50 [17595445] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4321.0 (X64) Jul 9 2014 15:59:57 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) |
4 май 15, 22:47 [17599504] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
|
||
4 май 15, 23:03 [17599549] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
и как это соотносится с
??? т.е. если SELECT INTO, то ужимается, а если ребилд, то нет? отличие только в том, что при SELECT INTO FF = 100%, а при ребилде заказанные вами 90% значит, у вас так легли данные, что если пытаться оставить 90% свободного места, то приходится больше оставлять, т.е. если еще записей поднапихать, то уже за 90 перевалит, такие подобрались значения варчаров. значит, надо ребилдить с FILLFACTOR = 100, ONLINE = ON, это и будет аналог SELECT INTO. только зачем-то же выбрали FF = 90%, или от фонаря? поди, апдэйты идут такие, что варчары раздувает |
||||||
4 май 15, 23:51 [17599663] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
o-o, Выполнил команду alter table LedgerMisc rebuild WITH(FILLFACTOR = 100) К сообщению приложен файл. Размер - 4Kb |
5 май 15, 00:02 [17599685] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
или еще вариант, вы может просто делаете SELECT INTO и "забываете" кластерный на нее навесить? у вас исходная таблица кластерная. это кучу можно как угодно заполнять, а кластерный -- в порядке кластерного ключа. т.е. конечно, когда порядок записей произвольный, что угодно лучше уложится, чем когда порядок строго фиксирован -- тут будут дыры на страницах, т.к. между той и этой строкой нельзя какую угодно еще поместить, хоть бы она и влезла. было бы без разницы, в каком порядке записи, в случае полей фиксированного размера. но у вас там варчары. утрированно: если у меня 10 строк по 5 Кб и 10 по 3 Kb, то я могу их уложить в 10 страниц в произвольном порядке (записывая на страницу по 2 записи: 5 + 3), а если они идут в указанном порядке, то сразу 10 страниц под записи в 5 Кб и потом еще 5 страниц под 3 + 3, итого 15, т.е. в 1,5 раза кластерный куче проиграл, + еще дерево навигации |
5 май 15, 00:03 [17599686] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
вторая таблица это полученная при SELECT INTO? тогда скорее второй вариант, что первая у вас кластерная, а вторая куча |
||
5 май 15, 00:05 [17599691] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
o-o, LedgerMisc2 - это "SELECT INTO". Да, LedgerMisc2 - куча. Кластерный индекс был добавлен после заливки. |
5 май 15, 00:09 [17599695] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
Но на размер LedgerMisc2 это не пoвлияло. |
5 май 15, 00:12 [17599699] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
Relic Hunter, покажите на всякий случай: select OBJECT_NAME(object_id), index_id from sys.indexes where OBJECT_NAME(object_id) like 'LedgerMisc%' |
5 май 15, 00:13 [17599704] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
o-o, К сообщению приложен файл. Размер - 5Kb |
5 май 15, 00:17 [17599709] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
select * from sys.dm_db_partition_stats where object_id in ( object_id('LedgerMisc2'), object_id('LedgerMisc')) and index_id = 1; |
5 май 15, 00:27 [17599724] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
o-o,partition_id object_id index_id partition_number in_row_data_page_count in_row_used_page_count in_row_reserved_page_count lob_used_page_count lob_reserved_page_count row_overflow_used_page_count row_overflow_reserved_page_count used_page_count reserved_page_count row_count |
5 май 15, 00:28 [17599725] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
это чтобы желающим прочесть удобнее было:
у меня нет идей кроме как вы может не по тем полям кластерный сделали во втором случае? или может уникальность ему приписали? |
|||||||||||||||||||||||||||||||||||||||||||
5 май 15, 00:41 [17599740] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
o-o, Вот прямо скопипастил из своего-же скрипта. /****** Object: Index [LedgerMiscWBS1WBS2WBS3IDX] Script Date: 5/1/2015 4:48:00 PM ******/ CREATE CLUSTERED INDEX [LedgerMiscWBS1WBS2WBS3IDX] ON [dbo].[LedgerMisc] ( [WBS1] ASC, [WBS2] ASC, [WBS3] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] GO |
5 май 15, 00:48 [17599751] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
ну так из своего же скрипта там снова FF = 90, и я не про исходную таблицу, а про вторую. давайте еще глобальнее поступим, вот есть 2 процедуры, взяты отсюда: sp_helpindex можете оттуда взять или мое запустить (оно же)
и потом по обоим своим кластерным результаты вывода второй процедуры(первая просто вспомогательная): exec sp_SQLskills_SQL2008_helpindex 'LedgerMisc'; exec sp_SQLskills_SQL2008_helpindex 'LedgerMisc2'; посмотрю уже завтра |
|
5 май 15, 01:00 [17599763] Ответить | Цитировать Сообщить модератору |
Relic Hunter Member Откуда: AB Сообщений: 7480 |
o-o,exec sp_SQLskills_SQL2008_helpindex 'LedgerMisc2'; |
5 май 15, 01:11 [17599780] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
Relic Hunter, А ничего, что ваш TotalSpaceKB учитывает и все индексы? Если уж пользуетесь запросами из сети, хотя бы сначала разберитесь как они работают. Выполните и сравните результаты: exec sp_spaceused 'LedgerMisc', 'true'; exec sp_spaceused 'LedgerMisc2', 'true'; |
5 май 15, 02:06 [17599812] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |