powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Truncate Table
8 сообщений из 33, страница 2 из 2
Truncate Table
    #39787022
Elminzter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кажись все понятно. Нельзя в пятницу много работать. Всем спасибо.
...
Рейтинг: 0 / 0
Truncate Table
    #39787037
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elminzter,

ну и чего было?
...
Рейтинг: 0 / 0
Truncate Table
    #39787067
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa89Elminzter,

ну и чего было?
Наверное вот это:
ElminzterTaPaK,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
 USE UPD_E
 GO
 Truncate table dbo.AKP_Files
 GO
 USE UPD_E
 GO
 DBCC CLEANTABLE (UPD_E, AKP_Files,0)
 GO



После выполняю скрипт alexeyvg

Table Name File Group reserved_page_count reservedpages GB used_page_count usedpages GB pages rowCount dbo.Export_files PRIMARY 622420 4.75 622291 4.75 622289 33864
...
Рейтинг: 0 / 0
Truncate Table
    #39787070
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexОперация truncate не сразу освобождает данные.
"Создается" новая пустая таблица и меняется "указатель" в метаданных (на root/first/IAM).
Сама очистка данных это асинхронный процесс.Ради интереса сделал таблицу на 1Гб.
Может процесс и асинхронный, но очень быстрый. Физически сервер явно не удаляет гигабайты данных.

Код: sql
1.
2.
3.
4.
EXEC sp_spaceused
TRUNCATE TABLE [dbo].[Table_1]
EXEC sp_spaceused
GO



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
database_name                                                                                                                    database_size      unallocated space
-------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------
TEST                                                                                                                             4882.94 MB         31.75 MB

reserved           data               index_size         unused
------------------ ------------------ ------------------ ------------------
 2091264 KB         2085320 KB          5048 KB            896 KB

database_name                                                                                                                    database_size      unallocated space
-------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------
TEST                                                                                                                             4882.94 MB          1053.45 MB 

reserved           data               index_size         unused
------------------ ------------------ ------------------ ------------------
 1045048 KB         1043136 KB          1168 KB            744 KB
...
Рейтинг: 0 / 0
Truncate Table
    #39787104
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElminzterКажись все понятно.
Я же говорил:alexeyvgЧто то автор напутал.Не надо начинать с дезасемблирования ядра сиквела и чтения блогов команды Database Engine Team. Нужно просто всё аккуратно проверить, по возможности делая всё скриптами, а не в GUI

Тут много раз бывало: искали-искали ошибку, а в итоге оказывается, что автор выполнял действия на одном сервере, а проверял на другом :-)
...
Рейтинг: 0 / 0
Truncate Table
    #39787107
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MindmsLexСама очистка данных это асинхронный процесс.Ради интереса сделал таблицу на 1Гб.
Может процесс и асинхронный, но очень быстрый. Физически сервер явно не удаляет гигабайты данных.Я, например, не слышал про асинхронность. Может, и есть такое, но не встречал упоминаний (только про очистку "пустых" страниц после DELETE).
ИМХО это делается в транзакции, с соотв. блокировками чего нужно. Вот, например, в таких статьях пишут, что удаление ятраниц происходит внутри транзакции: https://www.sqlskills.com/blogs/paul/a-sql-server-dba-myth-a-day-(1930)-truncate-table-is-non-logged/
...
Рейтинг: 0 / 0
Truncate Table
    #39787125
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgMindпропущено...
Ради интереса сделал таблицу на 1Гб.
Может процесс и асинхронный, но очень быстрый. Физически сервер явно не удаляет гигабайты данных.Я, например, не слышал про асинхронность. Может, и есть такое, но не встречал упоминаний (только про очистку "пустых" страниц после DELETE).
ИМХО это делается в транзакции, с соотв. блокировками чего нужно. Вот, например, в таких статьях пишут, что удаление ятраниц происходит внутри транзакции: https://www.sqlskills.com/blogs/paul/a-sql-server-dba-myth-a-day-(1930)-truncate-table-is-non-logged/ Внутри другой, отложенной (deferred) транзакции, которая стартует сразу после той, которая разметила новый датаспейс под таблицу. Об этом даже по ссылке есть:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Current LSN             Operation           Context             Transaction ID  AllocUnitName               Transaction Name
———————-  ——————  ——————  ————–  ————————–  —————-
...
00000081:000001aa:0001  LOP_BEGIN_XACT      LCX_NULL            0000:00001072   NULL                        TRUNCATE TABLE
...
00000081:000001aa:0018  LOP_COMMIT_XACT     LCX_NULL            0000:00001072   NULL                        NULL
00000081:000001b0:0001  LOP_BEGIN_XACT      LCX_NULL            0000:00001073   NULL                        DeferredAllocUnitDrop::Process
...
...
Рейтинг: 0 / 0
Truncate Table
    #39787129
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичВнутри другой, отложенной (deferred) транзакции, которая стартует сразу после той, которая разметила новый датаспейс под таблицу. Об этом даже по ссылке есть:О, спасибо!

Вот ещё нашёл: how to deallocate the truncated table space
Там пишут, что, действительно, шринк может не увидеть пространство до завершения асинхронного освобождения, но если серверу нужно будет пространство для новых данных, то он может выполнить освобождение принудительно.
В общем, интересно, ещё ращз спасибо за наводку.
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Truncate Table
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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