SQL.RU
 client/server technologies
 Главная | Документация | Статьи | Книги | Форум | Блоги | Опросы | Гостевая | Рассылка | Работа | Поиск | FAQ |
   
#155<<  #156  >>#157

СОДЕРЖАНИЕ

1.СОВЕТЫ
1.1.Сокращение времени восстановления баз данных с помощью дифференциальных резервных копий
1.2.Порядок и беспорядок строк в таблице
2.ССЫЛКИ НА СТАТЬИ
2.1.Статьи на русском языке
2.2.Новые и обновлённые технические статьи Microsoft
3.ФОРУМ SQL.RU
3.1.Самые популярные темы недели
3.2.Вопросы остались без ответа
4.ПОЛЕЗНОСТИ
4.1.SQL Server 2000 XML

СОВЕТЫ

Сокращение времени восстановления баз данных с помощью дифференциальных резервных копий

По материалам статьи Neil Boyle: Speedy Database Recovery with Differential Backups
Перевод: Ирины Наумовой

Дифференциальное (разностное) резервное копирование появилось в MS SQL Server 7.0 и позволяет сократить время восстановления базы данных и журналов транзакций.

Что такое дифференциальное копирование?

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

Разработка эффективной стратегии резервирования

Самый простой путь для обеспечения возможности восстановления базы данных на любой момент времени - это регулярное создание копий журнала транзакций. При этом нужно будет восстановить копию базы данных и последовательность копий журнала транзакций до заданного момента времени.
Например, полная копия базы выполняется в полночь, а журнал транзакций резервируется каждый час. Для восстановления базы данных в ее состояние на 9:30 нужно сначала восстановить полную копию базы, затем все копии журналов транзакций, определив параметр "stopat 9:30" для последней (десятичасовой) копии журнала транзакций.

Технически это правильно, но тогда придется восстановить 11 файлов копий журнала и базы. Можно сделать это значительно проще, используя дифференциальные копии. В следующем примере мы добавим создание дифференциальной копии в 8 часов. Теперь для восстановления базы данных на состояние в 9:30, нам придется восстановить только 4 файла: полную копию базы, дифференциальную и затем копии журналов транзакций, сделанные в 9 и 10 часов.

Дифференциальные копии можно создавать и чаще, т.ч. для восстановления понадобиться только исходный полный бэкап базы, самый последний разностный бэкап и последующие копии журнала транзакций, позволяющие восстановить базу на любой момент времени после последнего разностного бэкапа.
Возьмем пример выше и расширим задачу. Добавим создание второй дифференциальной копии в 17 часов, продолжим делать ежечасно копии журнала транзакций. Тогда для восстановления базы данных на 17:30 нужно будет восстановить последнюю, полную копию базы, затем вторую дифференциальную копию (она включает в себя предыдущую разностную копию) и копию журнала транзакций, созданную в 18:00, с параметром "stopat 17:30".

В приведенном выше примере нам пришлось восстановить только 3 файла. Без использования дифференциальной копии, мы вынуждены были бы восстанавливать все копии журнала транзакций, созданные с 1:00 до 18:00, итого 19 файлов.

Расписание бэкапов

Я выбрал значения 8:00 и 17:00 для дифференциального копирования в вышеприведенном примере, потому что они более или менее определяют обычный рабочий день. Разумеется, время выполнения резервного копирования у Вас должно быть продиктовано Вашими собственными условиями.

Запомните - Вам по прежнему всегда нужно делать копии журнала транзакций!

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

[В начало]

Порядок и беспорядок строк в таблице

Автор: Александр ДЕНИСЕНКО aden@online.ru, aledin@academy.ru

Говоря о таблице как основном объекте базы данных, зачастую упускается такая подробность, как упорядоченность строк или отсутствие таковой. Это уточняет семантику операции сравнения таблиц. Равны ли две таблицы, если их состав по строкам одинаков? Такие вопросы редко задают себе программисты, чаще с этой проблемой сталкиваются дотошные администраторы (после восстановления базы из архива или перед ним хочется узнать, одинаковы ли две таблицы - в архиве и базе, двух базах или на двух машинах, участвующих в репликации.
С математической (точнее методологической) точки зрения понятие равенства, совпадения и одинаковости нуждается в уточнении, которое выходит за рамки настоящей заметки. Понятие равенства объектов зачастую корректно лишь с указанием 'точности'; следует различать в операции сравнения разные её варианты - полное совпадение (философы именуют его тождеством) или частичное - с точностью, например, до порядка. Так, множества {a,b,c} и {c,a,b} равны как множества математически, но не равны с точностью до порядка следования элементов.
В случае с таблицами ситуация ещё сложнее - необходимо учитывать порядок и строк и столбцов. Возможно, это одна из причин отсутствия в распространенных базах данных такой казалось бы элементарной операции над таблицами, как проверка на равенство.
Мы сейчас сыграем на этой недоговоренности, чтобы высветить сам феномен кодирования информации событийным временем вместо классической битовой ленты машины Тьюринга.
Рассмотрим таблицу T, состоящую из N строк. Предположим, что порядок строк не оговорён, то есть таблица T может иметь несколько вариаций - T1,…,TN, отличающихся лишь порядком следования строк. Это в свою очередь означает, что таблица - помимо собственно информации об объектах (строки) содержит ещё и информацию о порядке следования строк. Значит, имея таблицу в машине, мы на самом деле имеем некоторую дополнительную информацию - помимо её непосредственного состава в обыденном понимании. Если элементов N, то их можно упорядочить N! способами (! - это факториал, а не восклицание).
Теперь остаётся договориться о том, какую именно информацию несёт каждый вариант порядка. И всё.

Разъяснение

Порядок строк в таблице отслеживается в операциях с курсорами и в сеансовых протоколах сетевых компонент. Передавая по сети таблицу из десяти строк, машина фактически передаёт (или не передаёт) порядок этих строк. Обычный оператор выборки строк из таблицы (SELECT) этого порядка не отслеживает. Порядок не отслеживается и обычными протоколами транспортного уровня операционных систем (например, TCP/IP), хотя на принимающей стороне воссоздаётся порядок пакетов, хранящихся на передающей стороне - в составе заголовка каждого пакета есть его номер в исходном варианте, так что принимающая сторона восстанавливает порядок, имевшийся на передающей стороне). А где информация о фактическом порядке при передаче? При использовании стандартного стека протоколов она уничтожается в момент сборки пакетов принимающей стороной. Но если воспользоваться сеансовым уровнем протоколов (так называемой семиуровневой модели OSI), то порядок на принимающей стороне совпадёт с порядком на стороне передающей. А это означает, что можно извлечь достаточно много информации (например, 5! = 120 вариантов перестановок из пяти пакетов или строк), не искажая и не шифруя содержимого строк (тем самым не нарушая режима открытой передачи информации). Достаточно лишь знать базовый порядок элементов и фактически переданный.
В случае с Интернетом, например, совершенно неважно, что передавать по сети, контролируемой на источнике и приёмнике (фото Вашей бабушки или президента на лужайке вполне сгодится и не потребует ни одного дополнительного бита!). Также сгодится и репликация таблиц (например, полная - в терминах Микрософт SQL2000 это snapshot replication - репликация не сохраняет порядка, а репликация записей журнала сохраняет). Математика даёт астрономическоё число вариантов перестановок из элементов множества большой мощности.
Дальнейшее развитие этой схемы возможно при наличии нескольких каналов передачи. Оценка числа вариантов упорядочения для N элементов из курса школьной комбинаторики получена в предположении так называемого линейного (одномерного) порядка. Если же порядок не обязательно линеен, то число вариантов ещё больше. Здесь не место формулам, но очевидно, что даже два элемента при передаче по сети с двумя параллельными каналами имеют не два варианта упорядочения, а пять. Передача элемента по сети - это интервал во времени. А два интервала во времени могут соотноситься пятью способами (второй интервал следует до первого, после первого, внутри первого; начало второго интервала-до начала первого, окончание второго интервал - внутри первого; начало второго интервала - внутри первого, окончание - за первым интервалом). Для N интервалов вариантов порядка при передаче по К каналам очень велико. Заметим, что пакеты при передаче по сети могут проходить по произвольному количеству маршрутов - это также не нарушает режима открытой передачи данных, при котором вся передаваемая информация доступна контролирующей стороне).

ССЫЛКИ НА СТАТЬИ

Статьи на русском языке

Восстановление баз данных Microsoft SQL Server
Steven Warren
Для того чтобы разработать эффективный план резервного копирования в Microsoft SQL Server2000, Вам необходимо научиться восстанавливать данные из резервной копии. Восстановление может понадобиться в случае сбоя в работе оборудования или при необходимости создания на другом сервере абсолютно идентичной копии существующей базы данных...
Массивы и Списки в SQL Server
Erland Sommarskog
Часто в форумах можно видеть вопросы вида Как я могу использовать массивы в SQL сервере? или Почему не работает запрос SELECT * FROM tbl WHERE col IN (@list)? Данная статья описывает несколько способов решения этих вопросов как хороших, так и плохих. Также представлены данные о производительности этих способов решения...
Эффективный метод постраничной выборки
Глеб Уфимцев
Предлагаемый метод не претендует на звание самого лучшего. Он, может быть, и не лучше, но уж точно не хуже других. Поиск решения основывался на следующих пожеланиях...
Как быстро можно сортировать натуральные числа?
Александр ДЕНИСЕНКО
Сортировка Шелла является асимптотически оптимальной по сложности в смысле числа попарных сравнений элементов множества, предназначенного для сортировки. Если множество состоит из N элементов, то сложность такой сортировки - примерно N*LogN (логарифм двоичный)....
Проблемы резервного копирования и восстановления баз данных SQL Server
Alexander Chigrik
Если у Вас возникают проблемы с резервированием/восстановлением баз данных, просмотрите следующие рекомендации по выявлению проблем и принятию по ним правильного решения...
Динамика иерархии при навигации во многомерных кубах
Александр ДЕНИСЕНКО
В распространённых системах анализа многомерных кубов в хранилищах данных (типа[1]) группировка элементов по каждой координате (иерархия) задается при создании куба. Если одной из координат является время, то иерархии по другим координатам оказываются динамическими - при этом стандарные функции аггрегирования (сумма значений на нижележащих в иерархии элементах) становятся некорректными. Предлагается один из вариантов решения этой проблемы...
Навигация по времени в OLAP: недели и месяцы
Александр ДЕНИСЕНКО
Одна из проблем навигации по координате времени во многомерных кубах заключается в несовместимости недельного и месячного календарей. С одной стороны, вышележащим в иерархии объектом для суток бывает месяц (выше - квартал и/или год), а бывает - что неделя. Неделя не сворачивается в месяц - её начало может оказаться в одном месяце, а окончание - в другом. Системы типа [1] допускают работу с такими объектами, но довольно сложными приёмами. Традиционное представление об иерархии не допускает такого: представьте файл, разорванный между двумя папками. Или матрешку, голова которой находится в одной материнской игрушке, а низ - в другой. К сожалению, использование нескольких иерархий по одной координате имеет некоторые проблемы в реализации - так, например, в [1] не удается ис...

[В начало]

Новые и обновлённые технические статьи Microsoft

"String Data, Length Mismatch" Error Message with ODBC Driver for SQL Server If Application Inserts More Than 400 KB of Text Data
FIX: A Parallel Query May Generate an Access Violation After You Install SQL Server 2000 SP3
FIX: An UPDATE CUBE Statement Returns an Error When You Try to Update a Measure in a Virtual Cube
FIX: Cannot Create an Offline Cube That Contains a Parent-Child Dimension
Fix: Corrupted Data When You Enable Asynchronous Fetching in SQL Server ODBC Driver
FIX: Error Dialog Box During SQL Server Database Backup
FIX: Error Message 3628 May Occur When You Run a Complex Query
FIX: HTTP Connections to Analysis Services Server Computers Running Windows Server 2003 Are Slow
FIX: Incremental Update Process May Fail On Cubes or Partitions That Use the HOLAP Storage Mode
FIX: MDX Calculated Members That Return String Values May Cause an Empty Result Set
FIX: SETUSER Statement Fails for Built-In Accounts
FIX: SQL Extended Procedure Functions Contain Unchecked Buffers
FIX: SQLMail Extended Stored Procedures May Fail with an Access Violation on SQL Server 2000 SP2 when SQL Server is Run As a Windows NT Service
FIX: Transaction Rolls Back Automatically with Error 8144 on a Prepared Command
Fix: UDL Dialog for SQL Server OLE DB Provider Generates Empty Server List
HOW TO: Create a DTS Custom Task by Using Visual Basic .NET
HOW TO: Manually Remove a Microsoft SQL Server 2000 Desktop Engine (MSDE 2.0) Instance
HOW TO: Manually Remove SQL Server 2000 Default, Named, or Virtual Instance
HOW TO: Program the SQL Merge Control by Using Visual Basic .NET
HOW TO: Program the SQL Snapshot and SQL Distribution Control by Using Visual Basic .NET
HOW TO: Run a SQL Server Data Transformation Services Package from Visual Basic
HOW TO: Use the Server Name Parameter in a Connection String to Specify the Client Network Library
INF: Common SQL Mail Problems
INF: Connect to Analysis Services By Using "SSPI = Anonymous" on Windows XP
Post a Question to the Microsoft SQL Server Newsgroups
PRB: Connection to Analysis Services Fails After You Install Analysis Services SP3
PRB: MDAC 2.6/2.7 Roll Back Installation or Get Error on Install
PRB: The SQL Server Desktop Engine Setup Program May Stop Responding When It Is Started from an External Application
PRB: User Logon and/or Permission Errors After Restoring Dump
Some Named Pipes Features Are Not Disabled After You Disable the Named Pipes Protocol
SQL Server 2000 Cluster Does Not Install on Windows Server 2003-Based Computers Where Terminal Services Is Installed
SQL Server 2000 Is Not Supported on Windows Server 2003 Terminal Server Application Server
SQL Server Connection Fails When RC4 Encryption Is Disabled
Support WebCast: Microsoft SQL Server 2000 Desktop Engine (MSDE) Installation, Deployment, and Patching
TCP/IP Settings for SQL Server Drivers When Pooling Is Disabled

[В начало]

ФОРУМ SQL.RU

Самые популярные темы недели

Вопрос про оптимизацию запроса к большой таблице
Как получить @@identity
Помогите найти решение
Microsoft SQL Server "Yukon" Beta1 released
Как правильно написать условие следующего вида:?
Процедура
Как сделать сей запрос эффективнее?
При инсерте серевер медленнее чем обычный комп?
А кто нибудь знает какой-нибудь буржуйский продукт, аналог 1C?
openrowset() все таки
Как быстро определить сколько лет человеку по дате рождения
Не получается освобождать библиотеки с extended stored procedures
backup/restore базы 1С
Сколько живет временная таблица?
Тест для гуру
Почему недоступна временная таблица?
Зависание транзакции....
Сравнение полей записей двух таблиц одинковых по структуре
Создание таблицы через insert sysobjects?
Добавить данные через ADO
Ситуация однако... Может кто чего знает ;-)
SQL Redactor
pomogite s query pls !!
оператор top!!
Размер БД
MSSQ 70 не ставится
Люди, задайте направление
Три в одном как определить что это
Помогите с SQL запросом
индексы
Вопрос по RAID контроллеру
MSSQL2000: 2-ух процессорный сервак использует только 50% процессорной мощи
Присвоить значение из запроса
Wildcards для полей типа int
Возврат значений из процедуры
MS SQL Server 2000 : объясните чайнику
После усечения не добавляются записи
как из хранимой процедуры можно вернуть значение клиентскому приложению.
Расчет количества месяцев долга
Как заставить Enterprise Manager работать с нужными SET настройками
Ошибки 605 и 823 при создании индексов. Виноват Windows 2000 SP4?
Вложенный курсор
Удаление записей при репликации..
Иерархия, допускающая родственные связи
SQL server 6.5. Подскажите, плз!
блокировки записей? Помогите!!!!
Прилинкованные и ремоте сервера.
чексум для файлов, закачиваемых в базу
репликация
MS ACCESS c MS SQL SERVER 2000
Можно ли упростить такой запрос?
Возварщение параметров хранимой процедуры
Поля Merge replication
нехитрый запросец
MSDE и процедура, выполняющаяся при запуске БД
Не выводится результат :(
backup
А можно писать extended procedures на VB?
DTS - импорт файлов переменной структуры
Смена типа поля
Процедура, принимающая разное количество параметров
Помогите с запросом на обновление
ADO запрос показывает некорректно результат выборки
SQL Server 2000, Internet Explorer и отчеты...
Настройки сервера
Запросы
Temporary Tables
Помогите разобраться с detach database
Объясните плиз, что за блокировка PAGEIOLATCH_SH
Транзакционная репликация и снапшот.
GetDate() , GetDate() возвращают одно время?
Превышение размера записи в байтах???
ID-шники :)
Помогите облагородить триггер
four part names
поле real не сохраняет более 7 цифр!!! что делать?
значение автоинкрементного поля
Простая задачка, а решения нет. ((
запросы
Как узнать принадлежность юзера к определенной роли? (NT авторизация)
ADO параметер DateTime с миллисекундами
Виснет EM при попытке переименовать поле.
get id of n-th record

[В начало]

Вопросы остались без ответа

SP3a при установке не принимает пароль sa....в чем фигня..
Табличка - Дункан МакКлауд!!! (+)
Где стример раздобыть?
SQL2000+sp2+errors+procedures
OpenDataSource
Результат ХП (DBExpress)
ограничение прав в OLAP кубе
Репликация потянет или?
DbExpress и хранимые процедуры в MSSQL
OPTION(FAST n) ?????
MS DTC + cluster
Что бы вы посоветовали из литературы для изучения SQL-server с нуля?
blade-сервер
репликация процедур с аргументами sql_variant
Трабл: SQL Server 7.0 по TCP/IP
Помогите переписать запрос.....
Пароль SA
C++Builder ADOTable+DBGrid

[В начало]

ПОЛЕЗНОСТИ

SQL Server 2000 XML

Professional SQL Server 2000 XML (2003)

Подробно описана техника работы с базами данных SQL Server посредством XML-документов. Рассмотрен стандарт XML, техника извлечения данных из базы с помощью FOR XML, возможности представления XML-документов в виде реляционных наборов данных с помощью OPENXML. Уделено внимание XDR и XSD-схемам как средству получения данных посредством HTTP-запросов. Подробно обсуждается использование XPath-запросов к SQL Server и технология модификации баз данных с помощью апдейтограмм. Рассмотрены представления XML View как средство описания таблиц SQL Server. Продемонстрирована техника импорта XML-документов в базу данных с помощью массовой загрузки XML Bulk Load. Описаны новинки релиза Web Release 2. В книгу включены пять практических примеров, позволяющих читателю на собственном опыте убедиться в преимуществах XML-технологий при работе с SQL Server 2000. Книга рассчитана на опытных программистов SQL Server, которые хотят организовать XML-доступ к данным в базе SQL Server 2000, воспользовавшись новыми возможностями дополнений Web Release.

[В начало]

#155<<  #156  >>#157
Rambler's Top100 Рейтинг@Mail.ru  Administrator: Обратная связь 
Copyright: SQL.Ru 2000-2013