Какая разница между усечением и удалением на сервере SQL? - PullRequest
6 голосов
/ 04 мая 2010

Кто-нибудь может предоставить мне список всех различий между усечением и удалением в SQL-сервере?

Ответы [ 3 ]

17 голосов
/ 04 мая 2010

Вы должны погуглить, прежде чем спрашивать.

Обрезание

  1. Truncate удаляет все ссылки из базы данных.
  2. Fast
  3. Нет записи в журнале транзакций.
  4. Невозможно восстановить, если удалить один раз.
  5. Ссылки на страницы очищены.
  6. Все или нет
  7. Столбец идентификации повторно инициализируется на семена
  8. Усечение - DDL

Усеченная таблица tblName

Никакое условие не может быть дано

Удалить

  1. Записи делаются в журнале транзакций.
  2. Извлекаемые
  3. Медленное
  4. За удаление на основе записи
  5. Ссылки поддерживаются на странице
  6. Идентичность начинается с предыдущего положение
  7. DML
Delete FROM tableName

Ни один из двух эффектов не структура в таблице. Все ссылки должны быть удалены перед выполнением любой операции, хотя это не относится к удалению при использовании с Cascade = true для удаления

0 голосов
/ 05 июля 2015

При работе с базой данных мы используем Delete и Truncate, не зная различий между ними и когда их использовать. В этой статье мы обсудим разницу между Delete и Truncate в Sql.

Удалить Удалить - это команда DML. Оператор удаления выполняется с использованием блокировки строк, каждая строка в таблице блокируется для удаления. Мы можем указать фильтры в предложении where. Удаляет указанные данные, если существует условие. Удалите действия триггера, потому что операция регистрируется индивидуально. Медленнее, чем усечение, потому что он ведет логи усекать Усечение - это команда DDL. Усеченная таблица всегда блокирует таблицу и страницу, но не каждую строку. Так как она удаляет все данные. Невозможно использовать Где условие. Удаляет все данные. Усеченная таблица не может активировать триггер, поскольку операция не регистрирует удаление отдельных строк. Быстрее с точки зрения производительности, потому что он не ведет журналы. Заметка Удалить и усечь оба можно откатить при использовании с транзакцией. Если транзакция выполнена, значит зафиксирована, то мы не можем откатить команду Truncate из файлов журнала, но мы все равно можем откатить команду удаления из файлов журнала, так как удаляем записи записи их в файле журнала на случай, если в будущем потребуется откат из файлов журнала.

Если у вас есть ограничение внешнего ключа, относящееся к таблице, которую вы пытаетесь усечь, это не сработает, даже если в ссылающейся таблице нет данных. Это связано с тем, что проверка внешнего ключа выполняется с помощью DDL, а не DML. Это можно обойти, временно отключив ограничение (я) внешнего ключа для таблицы.

Удаление таблицы является зарегистрированной операцией. Таким образом, удаление каждой строки записывается в журнал транзакций, что делает его медленным. Усеченная таблица также удаляет все строки в таблице, но не регистрирует удаление каждой строки, а записывает освобождение страниц данных таблицы, что ускоряет ее.

~ Если вы случайно удалили все данные из таблицы, используя Delete / Truncate. Вы можете откатить совершенную транзакцию. Восстановите последнюю резервную копию и запустите журнал транзакций до того времени, когда должно произойти удаление / усечение.

Проверьте эту таблицу отката статьи после команды усечения в Sql или

разница между ними-удалить-усечения в

Также см. когда используется команда усечения и удаления

0 голосов
/ 14 октября 2012

Разница между усечением и удалением указана ниже:

+----------------------------------------+----------------------------------------------+
|                Truncate                |                    Delete                    |
+----------------------------------------+----------------------------------------------+
| We can't Rollback after performing     | We can Rollback after delete.                |
| Truncate.                              |                                              |
|                                        |                                              |
| Example:                               | Example:                                     |
| BEGIN TRAN                             | BEGIN TRAN                                   |
| TRUNCATE TABLE tranTest                | DELETE FROM tranTest                         |
| SELECT * FROM tranTest                 | SELECT * FROM tranTest                       |
| ROLLBACK                               | ROLLBACK                                     |
| SELECT * FROM tranTest                 | SELECT * FROM tranTest                       |
+----------------------------------------+----------------------------------------------+
| Truncate reset identity of table.      | Truncate reset identity of table.            |
+----------------------------------------+----------------------------------------------+
| It locks the entire table.             | It locks the table row.                      |
+----------------------------------------+----------------------------------------------+
| Its DDL(Data Definition Language)      | Its DML(Data Manipulation Language)          |
| command.                               | command.                                     |
+----------------------------------------+----------------------------------------------+
| We can't use WHERE clause with it.     | We can use WHERE to filter data to delete.   |
+----------------------------------------+----------------------------------------------+
| Trigger is not fired while truncate.   | Trigger is fired.                            |
+----------------------------------------+----------------------------------------------+
| Syntax :                               | Syntax :                                     |
| 1) TRUNCATE TABLE table_name           | 1) DELETE FROM table_name                    |
|                                        | 2) DELETE FROM table_name WHERE              |
|                                        |    example_column_id IN (1,2,3)              |
+----------------------------------------+----------------------------------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...