Я использую базу данных Sybase и имею огромную таблицу ~ 300G и хочу просто избавиться от нее. Попытался удалить таблицу, но команда выполнялась более 16 часов, и ее пришлось убить из-за заполнения журналов. Как лучше всего это сделать? Поможет ли усечение таблицы перед удалением?
Лучше ли Truncate and Drop, чем просто Drop для большой таблицы в sybase
comment
Это часть подписки?
- person Raj More   schedule 05.02.2015
comment
что вы имеете в виду под подпиской?
- person p.m.   schedule 05.02.2015
comment
Подписки используются, когда таблица является частью системы репликации. Это может привести к регистрации некоторых обычно незарегистрированных транзакций.
- person Michael Gardner   schedule 05.02.2015
Ответы (1)
'DROP TABLE' НЕ должен создавать журналы. Я бы проверил, не обращается ли другое соединение к таблице, тем самым предотвратив ее удаление.
TRUNCATE — это очень быстрый способ (по сравнению с DELETE) удаления больших объемов данных, и я использовал его в корпоративных настройках для гигантских таблиц, которые нам больше не нужны. Это намного быстрее, чем DELETE, так как не регистрирует удаления. Однако просто убедитесь, что у вас есть соответствующие разрешения. Это часто не работает в производственных средах из-за ограничений разрешений.
Подробнее о DROP читайте здесь: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36272.1572/html/commands/X58548.htm
person
sandrasaur
schedule
05.02.2015
Спасибо, Сандра, насколько я понимаю, и Drop, и truncate ведут минимальное ведение журнала и, следовательно, лучше, чем удалить. Однако я не нашел причин полагать, что все, что работает с Drop, будет работать с Truncate, поскольку в обоих случаях ведение журнала минимально.
- person p.m.; 05.02.2015
Правильный. Вот почему я предположил, что может быть другое соединение, обращающееся к таблице. Как я упоминал во втором абзаце, TRUNCATE работает быстрее, чем DELETE (не DROP). Извините, если было непонятно!
- person sandrasaur; 09.02.2015