Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
11.12.2014, 15:59
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
Есть таблица, в ней есть записи. Часть записей заполнена только по колонке ID (поле идентификатор). Надо удалить все записи, у которых заполнено только это поле. Для удаления условие по полю не ID, а поле, которое если пустое - значит запись нужно удалять Делаю запрос: Код: sql 1.
При этом: Код: sql 1.
равно: 13 529 892 а всех записей в таблице = 22 406 658. Как можно выполнить такое удаление побыстрее? Дело в том, что запустив такой запрос: Код: sql 1.
он проработал минут 15 и выдал ошибку о переполнении лога для базы (лог ограничен 20 ГБ). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 16:00
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
Pvase, Добавил еще один лог файл на 40 ГБ, посмотрим, может пройдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 16:01
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
Pvase, удаляйте не все сразу, а порциями ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 16:02
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
1. в цикле DELETE TOP 2. select into newtable where <то, что надо оставить>, очистить [Fct_0008], из newtable перенести в [Fct_0008] ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 16:09
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
PvasePvase, Добавил еще один лог файл на 40 ГБ, посмотрим, может пройдет. для таких объёмов данных маловато. У вас Recovery Model какой? Если Full, то как бы лог не пришлось бекапить между операциями. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 16:24
|
|||
---|---|---|---|
|
|||
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
Pvase, Если таблица [Fct_0008] широкая, то создание индекса по [IdDOC310] WHERE [IdDOC310] IS NULL вероятно поможет делу. Конечно удалять порциями с коммитом после очередной порции. Ну и Simple предпочтительнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 16:26
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
Glory1. в цикле DELETE TOP 2. select into newtable where <то, что надо оставить>, очистить [Fct_0008], из newtable перенести в [Fct_0008] Спасибо, то что надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 16:30
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
Режим сразу поставил Simple. Спасибо, DELETE TOP (300000) выполняется всего по 40 секунд, пару раз прошелся и дело решено. По существу. Эта таблица используется для загрузки данных из DTSX пакетов. После месяца работы обнаружил что есть дубли по полю ID. Посмотрел сколько их - оказалось почти половина. Причем все поля равны NULL, а ID дублируется. Вот решил почистить и добавить класстерный индекс по полю. Но вопрос остается, почему пожет при загрузке в DTSX пакетах происходит такое дублирования поля идентификатора? MS SQL 2012. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 16:33
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
PvaseНо вопрос остается, почему пожет при загрузке в DTSX пакетах происходит такое дублирования поля идентификатора? Потому что DTSX пакета всего лишь добавляет те данные, которые вы ему указываете добавить ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 16:47
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
Glory, Это понятно, но почему он при этом значение в поле ID, которое является идентификатором с шагом 1 дублируется? Ведь ID вроде нигде не заполняется, SQL его должен сам прставлять уникальным, а получается что дублирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 16:55
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
PvaseЭто понятно, но почему он при этом значение в поле ID, которое является идентификатором с шагом 1 дублируется? Потому что так написан пакет/запрос PvaseВедь ID вроде нигде не заполняется, SQL его должен сам прставлять уникальным, а получается что дублирует. С чего бы это SQL вдруг самому начать заполнять какое-то поле, да еще следить за уникальностью значений в нем ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 17:34
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
Glory, Ну я так думал, что когда выполняешь INSERT для таблицы, то в поля, которые пропущены вставляется NULL, а в поле со свойством identity с шагом 1 должно автоматом вставлятся значение предыдущее + 1. Или для DTS пакетов это не действует? Вот каие настройки на шаге вставки данных через OLE DB. Сопоставления для поля ID нет (выбрано "<Пропустить>"), а флажек "Сохранять ИД" в диспетчере соединений не установлен. Может что-то не так настроено? Подскажите пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 19:58
|
|||
---|---|---|---|
|
|||
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
Pvase, Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 20:22
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
PvaseGlory, Ну я так думал, что когда выполняешь INSERT для таблицы, то в поля, которые пропущены вставляется NULL, а в поле со свойством identity с шагом 1 должно автоматом вставлятся значение предыдущее + 1. Или для DTS пакетов это не действует? Вот каие настройки на шаге вставки данных через OLE DB. Сопоставления для поля ID нет (выбрано "<Пропустить>"), а флажек "Сохранять ИД" в диспетчере соединений не установлен. Может что-то не так настроено? Подскажите пожалуйста.Подсказать нельзя, мы же не представляем. как там работает ваш пакет, и что там написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.12.2014, 22:37
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
PvaseНу я так думал, что когда выполняешь INSERT для таблицы, А вот так прямо команду INSERT написали у себя в пакете ? Или может в Профайлере ее увидели ? Pvaseа в поле со свойством identity с шагом 1 должно автоматом вставлятся значение предыдущее + 1. Вот именно, что +1. Только вот от чего +1 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.12.2014, 16:02
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
Glory, Это я предположил, ведь у задачи вставки данных в таблицу SQL, когда источником есть запрос T-SQL по идее может быть или INSERT или BULK INSERT. Но в любом случаем код ID не заполняется пакетом, потому что нет сопоставления для этого поля. Если бы поле не заполнялось, то оно везде было бы NULL, а так видно что идет наращивание. Есть предположение что когда то возник сбой, поэтому и произошла такая вставка. Потому что после удаления дублей и повтроного выполнения пакета (раз 20 минимум с разныими условиями) дубли не появились. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
12.12.2014, 16:06
|
|||
---|---|---|---|
Надо с таблицы удалить около 13 млн записей по условию, как это можно сделать? |
|||
#18+
PvaseT-SQL по идее может быть или INSERT или BULK INSERT А вы считаете, что ни одна из этих команд не может добавить дублирующие значения в indetity ? PvaseНо в любом случаем код ID не заполняется пакетом, Еще раз - вы видели команду, которая передается серверу на выполнение ? PvaseЕсть предположение что когда то возник сбой, поэтому и произошла такая вставка. Ну если, например,DBCC CHECKIDENT назвать сбоем, то да, однозначно сбой ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=46&mobile=1&tid=1699657]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
165ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 287ms |
0 / 0 |