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

Откуда: Куала-Лумпур
Сообщений: 644
Что такое Truncate и для чего используется ?
26 дек 03, 09:38    [474956]     Ответить | Цитировать Сообщить модератору
 Re: Что такое Truncate и для чего используется ?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
В смысле, что такое? Переводится как? Переводится - усечь, усекать.

Если применить TRUNCATE TABLE, то эта команда
Removes all rows from a table without logging the individual row deletes.
(Удаляет все строки таблицы без журналирования удаления строк).
26 дек 03, 09:43    [474962]     Ответить | Цитировать Сообщить модератору
 Re: Что такое Truncate и для чего используется ?  [new]
iMorsh
Member

Откуда: Москва
Сообщений: 124
Для чего.
  • быстро очистить таблицу с большим числом данных (быстрее чем Delete т.к. не происходит перестроение индексов)
  • сбросить значение счетчика identity

    Используется как правило в технологических целях (очистка БД)
    в коде программы, которую запускает пользователь быть не должно (т.к. права только у sysadm)
  • 26 дек 03, 09:53    [474983]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    tpg
    Member

    Откуда: Novosibirsk
    Сообщений: 23902
    (быстрее чем Delete т.к. не происходит перестроение индексов)

    А ссылочку можно про то, что не происходит перестроение индексов?
    26 дек 03, 10:24    [475030]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    iSestrin
    Member

    Откуда: Новосибирск
    Сообщений: 3811
    это в той же статье бол про truncate, потому оно и работает так быстро, что не трогает ничего
    26 дек 03, 10:33    [475055]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    tpg
    Member

    Откуда: Novosibirsk
    Сообщений: 23902
    Тогда, я совсем не знаю английский. Как бедет по английски "не происходит перестроение индексов"?
    26 дек 03, 10:42    [475062]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    iSestrin
    Member

    Откуда: Новосибирск
    Сообщений: 3811
    там вот так написано:

    TRUNCATE TABLE removes all rows from a table, but the table structure and its columns, constraints, indexes and so on remain.

    означает: ... индексы и т.д остаются
    26 дек 03, 10:45    [475073]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    АлексейК
    Member

    Откуда: http://www.msdatabase.ru , Moscow
    Сообщений: 7683
    индексы как объекты остаются но содержание их грохается (перестроение все же )

    иначе при пыполнении запроса по индексу была бы ссылка на несуществующую строку
    26 дек 03, 10:49    [475085]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    iSestrin
    Member

    Откуда: Новосибирск
    Сообщений: 3811
    а вот на это я бы хотел получить ссылку
    26 дек 03, 10:51    [475093]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    tpg
    Member

    Откуда: Novosibirsk
    Сообщений: 23902
    Странно, а я считал, что это переводится так, что "TRUNCATE TABLE удаляет все строки в таблице, но структура таблицы и её колонок, консрэйнтов и индексов не изменяется", т.е. речь здесь идет о структуре, а не о наполнении индексов.
    Т.е. что, получается, что строки удалили, а индксы (их заполнение) остались прежними?
    26 дек 03, 10:52    [475097]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    tpg
    Member

    Откуда: Novosibirsk
    Сообщений: 23902
    А вот в статье Deleting All Rows Using TRUNCATE TABLE черным по белому сказано TRUNCATE TABLE immediately frees all the space occupied by that table's data and indexes. The distribution pages for all indexes are also freed.
    26 дек 03, 11:02    [475120]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    pkarklin
    Member

    Откуда: Москва (Муром)
    Сообщений: 74925
    автор
    Т.е. что, получается, что строки удалили, а индксы (их заполнение) остались прежними?


    Не совсем так. TRUNCATE не удаляет в таком же смысле как DELETE, а просто очищает страницы с данными и индексами. Так что может и правильно будет сказать - не происходит перестроение индексов.

    А ссылка вот:

    mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\acdata.chm::/ac_8_md_05_3mn9.htm
    26 дек 03, 11:04    [475122]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    iSestrin
    Member

    Откуда: Новосибирск
    Сообщений: 3811
    так "освободить" и "перестроить" совсем разные вещи, для первого достаточно пометить, что там просто ничего уже нет.
    да и смысла нет перестраивать, т.к. truncate удаляет все данные без исключения
    26 дек 03, 11:04    [475123]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    АлексейК
    Member

    Откуда: http://www.msdatabase.ru , Moscow
    Сообщений: 7683
    Позволил себе вульгарность , каюсь

    все же перестроения индексов не происходит
    ибо по русски говоря термин перестроение индексов это изменение их параметров и дефрагментация


    а то о чем все подумали наверное правильней назвать изменением содержания, удаление строк индекса - они автоматом удаляются вместе с данными при любых операциях
    26 дек 03, 11:06    [475128]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    tpg
    Member

    Откуда: Novosibirsk
    Сообщений: 23902
    Ну, дык, я же придрался к фразе (быстрее чем Delete т.к. не происходит перестроение индексов), т.е. к тому, что транкейт быстрее делейта потому что нет операций с индексами, хотя на самом деле происходит освобождение страниц памяти, т.е. их соответствующая пометка. (может быть я как-то коряво выразил свою мысль)
    26 дек 03, 11:12    [475139]     Ответить | Цитировать Сообщить модератору
     Re: Что такое Truncate и для чего используется ?  [new]
    Smile
    Member

    Откуда:
    Сообщений: 1148
    only the page deallocations are recorded in the transaction log.
    помоему это здесь главное
    26 дек 03, 11:19    [475158]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить