|
Программирование >> Администрирование microsoft sql
Примечание мом, приложение, ожидающее юда, должно налагать разделяемые, а не монопольные блокировки. Контейнер Locks/Object отображает информацию о заблокированных объектах БД, начиная с уровня рядов и таблиц и заканчивая уровнем БД (рис. 14-21). Заметьте: три процесса налагают блокировки в таблице Customer БД SSFMDB, Процесс с идентификатором 53 удерживает монопольную блокировку уровня ряда, а процессы с идентификаторами 55 и 56 ожидают, когда они смогут наложить такую же блокировку на этот же ряд. Упражнение 3. Устранение проблем, связанных с блокировками, при помощи окна Current Activity и системных хранимых процедур в этом упражнении вы с помошью SQL Server Enterprise Manager и системных хранимых процедур будете вести мониторинг проблем с блокировками. ► Для наблюдения за проблемами с блокировками пр и окня Current Activity и системных хранимгх процедур 1. Убедитесь, что вы зарегистрировались на контроллере домена под учетной записью Administrator. 2. Раскройте меню Start\Programs\Microsoft SQL Server и выберите Enterprise Manager. 3. В дереве консоли последовательно раскройте контейнеры Microsoft SQL Servers, SQL Server Group, SelfPacedCPU. Management, Current Activity и затем шелкните Process Info. В правой панели отобразится информация о процессах. Если подробные сведения не отображаются, щелкните значок Process Info правой кнопкой и выберите View\Detail. 4. В правой панели щелкните заголовок столбца чтобы упорядочить данные по имени пользователя. Обратите внимание на два запущенные пользователем ministrator: один - это подключение консоли SQL Server Enterprise Manager к БД master, a второй - подключение SQL Query Analyzer к БД Northwind. Запомните идентификатор второго процесса. 5. Переключитесь в SQL Query Analyzer. 6. Щелкните кнопку Load SQL Script в панели инструментов. Откроется окно Open Query File. 7. Откройте файл BlockLock.sql из папки C:\SelfPacedSQL\CH 14. Запустится сценарий Transact-SQL, который начнет транзакцию, обновляющую значение поля ContactName записи с заданным значением поля CustomerlD, Он также выполняет системную хранимую процедуру 8. Щелкните кнопку Execute Query в панели инструментов. Внимательно просмотрите информацию, возвращаемую системной хранимой гро-цедурой splock. Обратите внимание на блокировки, наложенные процессом подключения SQL Query Analyzer, и, в частности, на наложенную им монопольную блокировку уровня ряда. 9. В меню File выберите Connect Откроется окно Connect To SQL Server. 47 роиэводительности и активности SQ rver Глава 14 10. Убедитесь, что установлен переключатель Windows Authentication. Затем щелкните ОК, чтобы подключиться к экземпляру SQL Server по умолчанию на компьютере SelfPacedCPU. 11. Щелкните кнопку Load SQL Script в панели инструментов. - . Откроется окно Open Query File. 12. Откройте файл BlockLock2.sql из папки C:\SelfPacedSQL\CH 14. 13. Откроется запрос BiockLock2,sql, который обновляет ту же запись таблицы, что и первый сценарий, но при этом транзакцию. 14. Щелкните кнопку Execute Query в панели инструментов. , Заметьте: запрос не завершил выполнение. 15. Переключитесь в SQL Server Enterprise Manager. 16. В дереве консоли щелкните контейнер Current Activity правой кнопкой и выберите Refresh. 17. В правой панели дважды щелкните Locks/Process ID. Заметьте: второй процесс заблокирован первым. 18. Щелкните блокирующий процесс правой кнопкой и выберите Properties. Откроется окно Process Details, где показан последний пакет команд TSQL, выполненный блокирующим процессом. 19. Щелкните кнопку Send Message. Откроется окно Send Message - SelfPacedCPU. 20. В поле Message введите Your application is blocking. Please close your open transaction и щелкните кнопку Send. Откроется окно Send Message, извещающее об успешной отправке сообщения. Затем появится окно службы Messenger Service с самим сообщением (одно окно будет отображаться под другим). 21. Дважды щелкните ОК, чтобы закрыть окна сообщений. . 22. В окне Process Details щелкните Close. 23. В дереве консоли выберите заблокированный процесс. Заметьте: значение столбца Status правой панели - waiting, т. е. этот процесс ожидает, когда он сможет наложить блокировку уровня ряда. 24. В дереве консоли раскройте контейнер Locks/Object и щелкните SSEMDB.dbo.Customer. В правой панели обратите внимание на две блокировки уровня записи. Первый процесс наложил монопольную блокировку уровня ряда, а второй ожидает, когда сможет наложить блокировку. 25. Переключитесь в SQL Query Analyzer. Заметьте: выполнение второго до сих пор не завершено. 26. Перейдите к первому подключению. В области запросов выделите и в панели инструментов щелк- ните кнопку Execute Query. Перейдите ко второму запросу. Обратите внимание, что теперь он успешно выполнен. Заметьте также, к завершению транзакции второй запрос не удерживает каких-либо монопольнгх блокировок. 28. Переключитесь в SQL Server Enterprise Manager. 29. В дереве консоли щелкните контейнер Current Activity правой кнопкой и выберите команду Refresh. 30. В правой панели дважды Locks/Process ID. Заметьте: мешающих блокировок и заблокированных процессов нет. 31. Закройте SQL Server Enterprise Manager и SQL Query Analyzer. Резюме При наблюдении за производительностью и активностью SQL Server сначала определите задачу мониторинга и затем выберите соответствующее средство наблюдения. Вместо одновременного мониторинга всех операций и ресурсов следует проводить конкретные, узкоспециализированные наблюдения. Проводя в течение определенного времени одинаковые наблюдения, вы сможете установить и корректировать базовый уровень производительности. Окно Current Activity консоли SQL Server Enterprise Manager позволяет управлять взаимоблокировками и просматривать имеюшие- ся мешающие блокировки.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |