среда, 17 февраля 2016 г.

Интервью с DBA

Контрольный список вопросов для технического собеседования DBA SQL Server. Планируется постоянно расширять и обновлять список. 
При ответе на 8 из 10, можно считать кандидата успешным. При ответе на 19 из 20 - перед вами гуру :)

1. Напишите простую команду для бэкапа базы master
  
BACKUP DATABASE master
 TO DISK = 'путь к файлу бэкапа'

2. Где сохраняется информация о выполненных бэкапах?
  
В системной базе данных msdb

3. Какие системные базы данных Вы будете бэкапить?
   
Обязательно master и msdb.
Также можно базу model, если её сильно изменили - забэкапить 1 раз после изменений.


4. Как часто нужно делать бэкап журнала транзакций для БД, у которой включена простая модель восстановления? 

Это не нужно делать вообще! Бэкапы ЖТ не применимы для баз с простой моделью восстановления
  
5. Для боевой БД важно, чтобы были сохранены все пользовательские операции, кроме операций массовой загрузки данных (в случае необходимости такую загрузку можно будет заново запустить). Какую модель восстановления вы включите для этой БД? Нужно ли сделать что-то ещё?

Bulk-logged.
Также нужно будет обязательно забэкапить журнал транзакций ДО и сразу ПОСЛЕ выполнения операций массовой загрузки данных
  
6. Боевая БД (модель восстановления Full) была забэкаплена следующим образом:
-полный бэкап ночью;
-бэкап журнала транзакций в начале каждого часа.
В 09:53 происходит сбой диска, где расположены все файлы данных. Файл журнала транзакций живой (он находится на отдельном диске). Как вы будете восстанавливать БД?


1.сделать бэкап журнала транзакций, чтобы сохранить все последние изменения (tail log);
2.восстановить БД из полного бэкапа с опцией norecovery;
3.восстановить по очереди все сохраненные бэкапы журнала транзакций с опцией norecovery;
4.восстановить последний бэкап журнала транзакций (сделанный в 1-м пункте).

7. Что произойдёт если запустить команду checkpoint ?

Все измененные страницы данных (dirty pages) из кэша (буфер-пула) попадут на диск в файлы данных.

8. Что означает параметр recovery interval ?

Интервал времени восстановления в минутах. Указывает приемлемое для нас время восстановления БД из журнала транзакций при запуске SQL Server. Влияет на частоту запуску фонового процесса checkpoint. По умолчанию равен 0 (checkpoint срабатывает примерно 1 раз в минуту).


9. Как сделать полный бэкап базы данных, чтобы при этом не было записи об этом бэкапе в цепочке восстановления  ?

Используя опцию COPY_ONLY


10. Вы работаете с SQL Server 2012 Standard Edition. Можно ли сжимать бэкапы "на лету"? Если да, то как?

Да
Используя опцию COMPRESSION

11. Какие преимущества даёт сжатие бэкапов "на лету"?

Помимо экономии места, бэкапы создаются гораздо быстрее за счет уменьшения операций Ввода-Вывода.

12. Какой уровень изоляции транзакций лучше других гарантирует работу с достоверными данными и обеспечивает повторяемость результатов?

 SERIALIZABLE


13. Что такое Buffer Pool Extension?

 Это технология расширения объема буфер-пула за счет размещения на быстрых (SSD) дисках. Появилась в 2014 версии. Доступна в редакции Standard.



14. Минимальный блок хранения информации в SQL Server?

 Страница размером 8Кб



15. Минимальное количество файлов у БД в SQL Server?

 Два файла: журнал транзакций и файл данных


16. Что такое журнал транзакций?

 Это компонент СУБД SQL Server, который обеспечивает сохранность и согласованность всех изменений в базе (даже в случае сбоя сервера).


17. Свойства транзакции?

 A- Atomicity (атомарность) , С - Соnsistency (согласованность) , I - Isolation (изолированность) , D - Durability (Живучесть/долговечность)

18. Что такое экстент?

 Это 8 последовательных страниц данных. Размер=64 Кб

19. Назовите системные БД и для чего они нужны?

 1.master - главная БД SQL Server. Содержит всю серверную конфигурацию
2.msdb - обеспечивает работу SQL Server Agent (задания, расписания, alerts и т.д.)
3.tempdb - временные таблицы.
4.model - шаблонная база, всегда используется при создании новых БД
5.Resource - скрытая системная база данных. Содержит все системные объекты, которые доступны в каждой базе (например, объекты схемы sys и information_schema)

20. Назовите 4 любых компонентов, которые есть только в Enterprise редакции?

1. Сжатие данных ;
2. Секционирование ;
3. ONLINE перестроение индексов ;
4. Колоночные индексы ;
5. Snapshot(моментальный снимок) баз данных;
6. Регулятор ресурсов (Reource Governor) ;
7. In-memory OLTP ;
8. Прозрачное шифрование баз данных (TDE) ;
9. Чтение данных со вторичных реплик в AlwaysOn Availability Groups ;
10. Автоматическое восстановление битых страниц с зеркальной копии БД;
11. Аудит на уровне баз данных (Audit specifications);
и т.д.


21. Как прочитать данные из таблицы БЕЗ блокировок?

Использовать "грязное чтение" данных:
 -хинт(подсказка) with (nolock) в запросе
-или настроить сессию: set tran isolation level read uncommitted

22. На сколько мы ускорим работу, если для одной БД сделаем 2 файла журнала транзакций и разместим из на двух разных физических дисках?

 Никакого ускорения НЕ будет. Работа с файлами ЖТ происходит строго последовательно!

23. Если на сервере SQL Server создать новый логин, но не давать никаких разрешений (ни на уровне сервера, ни на уровне баз данных) увидеть ли такой логин список всех баз на сервере ?

 Да. Потому что в базе  master включен служебный пользователь guest.


24. Если на сервере SQL Server создать новый логин, но не давать никаких разрешений (ни на уровне сервера, ни на уровне баз данных) сможет ли такой логин создавать свои временные таблицы и работать с ними?

 Да. Потому что в базе  tempdb включен служебный пользователь guest.


25. Вы хотите оптимизировать длительный запрос. Сравнив estimated plan и actual plan вы заметили большую разницу в показателях. Что нужно сделать в первую очередь?
Estimated plan опирается на статистику распределения.
 Нужно обновить статистику распределения данных (например, exec sp_updatestats ). Желательно по всем таблицам, участвующим в проблемном запросе  выполнить полный пересчет статистик распределения (команда: update statistics [Таблица] with fullscan ). 


26. Можно ли выполнить запрос к таблицам, которые расположены на разных серверах БД ?
Да можно! Это делается с помощью Linked Server. 

Комментариев нет:

Отправить комментарий