powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как ускорить перенос данных из одной БД в другую?
8 сообщений из 33, страница 2 из 2
Как ускорить перенос данных из одной БД в другую?
    #39857756
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Satans ClawsYasha123разница в 4 раза это простая модель в явном виде.
типа перевел базу в полную, бэкап сделать "забыл".


Сорри за оффтоп (я автор, мне можно :D ), но можно с этого момента подробнее?
Я правильно понимаю, что, поскольку в FULL-модели восстановления лог содержит информацию о всех транзакциях с момента последнего бэкапа - то пока бэкапа не будет, логу нет стартовой точки, чтоб начать хранить эту информацию (соответственно, в лог ничего не пишется).
Обратный переход (FULL -> SIMPLE) применяется сразу?

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

про обратный переход тоже верно,
просто дается сигнал логу не удерживать более записи для бэкапа лога
...
Рейтинг: 0 / 0
Как ускорить перенос данных из одной БД в другую?
    #39857801
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123msLexпропущено...

А не встречался ли вам какой-нибудь список условий, при которых включается "постраничное" логирование?
По какой-то неясно для меня причине, он не совпадает с условиями минимпльного логирование?
мне не встречался,
но из соображений здравого смысла:

если идет вставка с таблоком и в кучу(пустую или нет неважно),
таблица эксклюзивно блокирована и никто другой вставить не может за все время вставки.
отсюда вывод:
данные будут вставляться страницами.
мы валим все подряд и нет никаких причин вставлять их куда-то в середину(т.е. построчно)
-> будет логироваться постранично.

если вставка в кластерный с tablock и order by таблица пуста, все ровно то же самое,
мы валим точно в конец, т.е. пишем новые целые страницы подряд.
будет логироваться постранично.

ну а вставка в непустой кластерный, хоть бы и отсортированный набор вставляем,
может оказаться вставкой вперемежку с уже имеющимся, простейший пример:
уже вставлены нечетные числа, а теперь свтавляем четные, хоть бы и упорядоченные.
все равно вставка пойдет в уже имеющиеся страницы.
вывод: постраничного логирования не будет, только построчное

т.е. на первый взгляд все те же условия, что и для минимального логирования в simple и bulk logged.
у вас есть примеры, когда не так?

думаю, еще есть ограничение на объем.
если строк мало, будет построчно в любой модели
Здравый смысл мне тоже подсказывает, что постраничное логирование должно происходить при тех же условиях, что и минимальное (с разницей лишь в модели восстановления), но...
Я проводил небольшие эксперименты, с целью понять в каких случаях происходит постраничное логирование.
За основу брал вот эти условия по минимальному логирования. У меня получалось, что постраничное логирование включается только в двух или трех случаях из указанных.
...
Рейтинг: 0 / 0
Как ускорить перенос данных из одной БД в другую?
    #39857815
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex
Я проводил небольшие эксперименты, с целью понять в каких случаях происходит постраничное логирование.
За основу брал вот эти условия по минимальному логирования. У меня получалось, что постраничное логирование включается только в двух или трех случаях из указанных.

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

на картинке: зеленым то, что соответствует минимальному
или постраничному логированию (в зависимости от модели)
красным: в это я не верю, см. рассуждение выше.
...
Рейтинг: 0 / 0
Как ускорить перенос данных из одной БД в другую?
    #39857825
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и 2 строки под красным тоже подозрительны.
вставка в непустой кластер хоть с таблоком хоть без
невозможно минимально логировать.
почему именно постранично-то пойдет,
может, как раз вставится среди имеющегося(см.пример чет-нечет)
...
Рейтинг: 0 / 0
Как ускорить перенос данных из одной БД в другую?
    #39857850
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123да и 2 строки под красным тоже подозрительны.
вставка в непустой кластер хоть с таблоком хоть без
невозможно минимально логировать.
почему именно постранично-то пойдет,
может, как раз вставится среди имеющегося(см.пример чет-нечет)


С 2016 TF610 стал работать по умолчанию, и если глянуть на вашу таблицу (но в соседний столбик), то таблицы совпадут.

PS
Ваша табличка из ссылки на SQL 2008
...
Рейтинг: 0 / 0
Как ускорить перенос данных из одной БД в другую?
    #39857862
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123вставка в непустой кластер хоть с таблоком хоть без
невозможно минимально логировать.Inside Microsoft® SQL Server® 2008: T-SQL QueryingSQL Server 2008 also introduces support for minimal logging when inserting data into a
nonempty B-tree (clustered or nonclustered index). Minimal logging is used when inserting
new key ranges that allocate and populate new pages while TF-610 is on regardless of
whether the TABLOCK hint is specifi ed. For those new key ranges, SQL Server internally takes
key-range locks to ensure that other processes don’t run confl icting activities.
...
Рейтинг: 0 / 0
Как ускорить перенос данных из одной БД в другую?
    #39857866
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexС 2016 TF610 стал работать по умолчанию, и если глянуть на вашу таблицу (но в соседний столбик), то таблицы совпадут.

понятно.
не было возможности тестировать на 2016-ом,
он у меня хоть и стоит локально, руки не доходят.
рабочий сервер 2014,
и на нем у меня включен TF610.
ну что могу сказать.
у меня нет куч и нет пустых таблиц.
а вставка в непустой кластер + индекс всегда логируется полностью
(у нас простая модель),
так что не Depends, а постоянное полное логирование.
причем не только в индекс, а даже в сам кластерный.
это даже при том, что у них тут кластерный везде и всюду по id identity,
и любая вставка с таблоком это гарантированные новые страницы в конец таблицы

это на тестовом.
в прод у меня таблок не пошел вообще,
т.к. выигрыша по времени никакого,
а блокировать остальных нехорошо.
...
Рейтинг: 0 / 0
Как ускорить перенос данных из одной БД в другую?
    #39857869
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmYasha123вставка в непустой кластер хоть с таблоком хоть без
невозможно минимально логировать.Inside Microsoft® SQL Server® 2008: T-SQL QueryingSQL Server 2008 also introduces support for minimal logging when inserting data into a
nonempty B-tree (clustered or nonclustered index). Minimal logging is used when inserting
new key ranges that allocate and populate new pages while TF-610 is on regardless of
whether the TABLOCK hint is specifi ed. For those new key ranges, SQL Server internally takes
key-range locks to ensure that other processes don’t run confl icting activities.
ну он может и introduces,
только у меня inserting data into a nonempty B-tree (clustered or nonclustered index) логирует полностью
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как ускорить перенос данных из одной БД в другую?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]