Таблиците UNDO съдържат история на промените (ако
Журнал на промените функцията е активирана).
За всяка промяна, направена в базата данни на PANTHEON, се записва в таблиците UNDO,
заедно с това кой е направил промяната и кога.
Таблиците UNDO нарастват много бързо и по този начин заемат много пространство,
потенциално намалявайки производителността на сървъра и увеличавайки
размера на резервното копие.
Преместването на таблиците UNDO на друго място може:
- да подобри производителността,
- да намали натоварването на сървъра,
- да намали размера на резервното копие.
Преместване на таблици UNDO на вторичен сървър
Преместването на таблиците UNDO на вторичен сървър намалява натоварването на вашия основен
сървър и запазва данните от таблиците UNDO архивирани. Препоръчителната
конфигурация е следната:
 |
Всички записи UNDO на определена възраст се преместят от
основния на вторичния сървър.
Преместените данни не са налични онлайн, но могат да бъдат възстановени при
необходимост.
|
Първо, създайте база данни на вторичния сървър.
 |
В примера по-долу, активната база данни на
основния сървър е наречена PRI_SERVER.PANTHEON и архивът на
вторичния сървър е SEC_SERVER.ARHIV_UNDO.
Основният и вторичният сървър са свързани сървъри. |
На основния сървър, създайте работа в SQL Server, която премества стари записи
(по-стари от 3 месеца в примера) на вторичния сървър. Работата има
две стъпки:
Актуализиране на структурата
Структурата на базата данни на PANTHEON често се актуализира, затова
структурата на архивната база данни трябва да бъде синхронизирана с активната
база данни преди преместването на данни.
Преместване на данни
Следният скрипт премества записи от най-често използваните таблици в
архивната база данни. Можете да добавяте или премахвате таблици, ако е необходимо.
insert into SEC_SERVER.ARHIV_UNDO.dbo.BUDGET_UNDO
select * from PRI_SERVER.PANTHEON.dbo.BUDGET_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.BUDGET_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.BUDGETPOZ_UNDO
select * from PRI_SERVER.PANTHEON.dbo.BUDGETPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.BUDGETPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.CHSTATPROM_UNDO
select * from PRI_SERVER.PANTHEON.dbo.CHSTATPROM_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.CHSTATPROM_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.CONTACTS_UNDO
select * from PRI_SERVER.PANTHEON.dbo.CONTACTS_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.CONTACTS_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.CONTADDRESS_UNDO
select * from PRI_SERVER.PANTHEON.dbo.CONTADDRESS_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.CONTADDRESS_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.PROMET_UNDO
select * from PRI_SERVER.PANTHEON.dbo.PROMET_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.PROMET_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.PROMETPOZ_UNDO
select * from PRI_SERVER.PANTHEON.dbo.PROMETPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.PROMETPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.SERIALNOP_UNDO
select * from PRI_SERVER.PANTHEON.dbo.SERIALNOP_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.SERIALNOP_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.SUBJEKT_UNDO
select * from PRI_SERVER.PANTHEON.dbo.SUBJEKT_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.SUBJEKT_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.TEME_UNDO
select * from PRI_SERVER.PANTHEON.dbo.TEME_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.TEME_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
insert into SEC_SERVER.ARHIV_UNDO.dbo.TEMEPOZ_UNDO
select * from PRI_SERVER.PANTHEON.dbo.TEMEPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
delete from PRI_SERVER.PANTHEON.dbo.TEMEPOZ_UNDO
where _dl_LastCh < DateAdd(mm,-3,GetDate())
Преместване на таблици UNDO в рамките на същия сървър
Преместването на таблиците UNDO от една база данни в друга на същия сървър
решава проблема само частично. Размерът на активната база данни намалява,
но натоварването на сървъра не се намалява значително, тъй като все още изразходва
някои ресурси (кеш, памет) за архивната база данни.