Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
Mihail3
Member

Откуда:
Сообщений: 88
Доброго времени суток.
Выручайте советом.
Есть 2 базы данных(Data и DataArc)?огромные базы данных(Data уже over 120 Gb), в каждой базе по 5 таблиц(Одна с первичным ключем, а другие 5 с внешним), условно говоря в одной базе хранится информация до 2012 года(архив DataArc), в другой начиная с 2012(текущая Data). Сами понимаете бекап этих баз является проблематичным.
В основном используются текущая Data для формирования отчетов. а если надо отчет за больший период времени, то юзается еще и DataArc архивная БД.
Так вот вопрос, сейчас и в архивной базе и в текущей есть информация за 2012 год. И надо из архивной удалить все записи за 2012 год. Я вычислил что первичный ключ с которого начинается 2012 год является допустим 777 777 777
И хочу грохнуть эти записи из архивной.
(сообственно связь Table1(-5).operation_id = Main.id )

delete from DataArc..Table1 where operation_id > '777777777' --Этот Запрос у меня провисел 4 часа и мне пришлось его отменить
...
delete from DataArc..Table5 where operation_id > '777777777'
delete from DataArc..Main where id > '777777777' --Это главная таблица с которой связаны предыдущие 4

Я хотел бы просто услышать наставления и советы, как мне грохнуть данные за 2012 год?
А потом загрузить данные за 2012 год из Data в DataArc.
Может есть какие-то механизмы для этого и это все делается как-то по другому и подход является принципиально не правильным.

Заранее спасибо.
31 июл 15, 10:42    [17958867]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
Glory
Member

Откуда:
Сообщений: 104764
Mihail3
Я хотел бы просто услышать наставления и советы, как мне грохнуть данные за 2012 год?

Для "грохнуть" есть только DELETE

Mihail3
А потом загрузить данные за 2012 год из Data в DataArc.

INSERT ... SELECT
31 июл 15, 10:45    [17958892]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
Mihail3
Member

Откуда:
Сообщений: 88
Glory, Да оно понятно, что есть Delete, есть Insert, но чертовски долго все. Может есть другие варианты решения этой задачи? Как у других обстоят дела в похожей ситуации и что бы предприняли вы, если бы вам необходимо было сделать это.
31 июл 15, 10:48    [17958909]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
Glory
Member

Откуда:
Сообщений: 104764
Mihail3
Может есть другие варианты решения этой задачи?

Вы имеете ввиду "секретные команды" ? Или включение турбо-режима ?

Mihail3
Как у других обстоят дела в похожей ситуации и что бы предприняли вы, если бы вам необходимо было сделать это.

Вы сейчас про синтаксис ? Или про время выполнения ? Или про монтирониг прогресса выполнения ?
31 июл 15, 10:51    [17958923]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
Mihail3
Member

Откуда:
Сообщений: 88
Glory
Mihail3
Может есть другие варианты решения этой задачи?

Вы имеете ввиду "секретные команды" ? Или включение турбо-режима ?

Mihail3
Как у других обстоят дела в похожей ситуации и что бы предприняли вы, если бы вам необходимо было сделать это.

Вы сейчас про синтаксис ? Или про время выполнения ? Или про монтирониг прогресса выполнения ?


Я про организацию хранения в базе данных, когда базы очень большие? как строятся и на каких принципах должно основываться проектирование БД.
31 июл 15, 10:55    [17958944]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
Glory
Member

Откуда:
Сообщений: 104764
Mihail3
Я про организацию хранения в базе данных, когда базы очень большие?

Проектированием структуры занимаются в форуме Пректирование БД
31 июл 15, 10:56    [17958951]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 980
Mihail3
...


на будущее, можно почитать про секционирование и/или partitioned view.

пара лиспапедов натолкнет на мысли:

17480093
17473098
31 июл 15, 11:02    [17958997]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
Mihail3
Member

Откуда:
Сообщений: 88
churupaha, Спасибо, почитаю, может придумается что-нибудь)
31 июл 15, 11:11    [17959044]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 980
Mihail3
churupaha, Спасибо, почитаю, может придумается что-нибудь)


уже все придумано (разделяй и властвуй).
31 июл 15, 11:16    [17959072]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
4ward
Member

Откуда:
Сообщений: 20
Еще можно чистить так:
delete top (5000) from DataArc..Table1 where operation_id > '777777777'


кол-во для удаления можно подобрать экспериметально, главное чтобы быстро отрабатывало,
потом это все в хранимку, а хранимку в джоб с расписанием в 10 сек.

К хранимке потом можно добавить
if @@ROWCOUNT = 0
EXEC msdb.dbo.sp_update_job
    @job_name = N'truncate_хранимка',
    @enabled = 0 ;


Очищал таким образом таблицы с миллиардами записей, без особой нагрузки и блокировок.
31 июл 15, 14:08    [17960058]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 5731
К слову, 120Gb это вообще не база, если она только не на ноутбуке.
31 июл 15, 15:21    [17960591]     Ответить | Цитировать Сообщить модератору
 Re: Архивирование записей из таблиц одной базы данных в таблицу другой. MS SQL Server 2008  [new]
Mihail3
Member

Откуда:
Сообщений: 88
4ward,

Ого, спасибо за совет, Интересный способ:-) но так и пришлось очистить стандартным методом)
5 авг 15, 13:02    [17978269]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить