Главная Обратная связь

Дисциплины:






Задание для самостоятельной работы 8.3. Оптимизация системы индексов



Задание:

· Используйте собранный вами протокол выполнения команд (файл C:\AdventureWorksTrace.trc) для анализа системы индексов средствами Database Tuning Advisor.

· Сохраните предлагаемые рекомендации в файле C:\IndexTuning.sql.

Решение:

1. Запустите Database Tuning Advisor (меню Пуск àПрограммы àMicrosoft SQL Server 2008 àPerformance Tools) и подключитесь к своему локальному серверу SQL Server 2008.

2. На вкладке General выберите созданный вами файл C:\AdventureWorksTrace.trc, а в списке баз данных — базу данных AdventureWorks.

3. На вкладке Tuning Options снимите флажок Limit Tuning Time и установите переключатели в положение Indexes and indexed views, Full partitioning, Do not keep any existing PDS. Нажмите на кнопку Start Analysis на панели инструментов.

4. Дождитесь окончания анализа, затем перейдите на вкладку Reports и просмотрите созданные отчеты.

5. В меню Actions выберите команду Save Recommendations и сохраните сгенерированные команды SQL по выполнению рекомендаций в файле C:\IndexTuning.sql.

Задание для самостоятельной работы 8.4 Дефрагментация таблиц и индексов

Задание:

1. Произведите анализ степени фрагментации индекса PK_Address_AddressID для таблицы Person.Address в базе данных AdventureWorks на вашем сервере SQL Server 2008.

2. Произведите перестроение всех индексов и обновление статистики в базе данных Foodmart средствами SQL-DMO. Убедитесь, что обновление статистики произведено.

Решение:

К пункту 1 — анализ степени фрагментации:

Соответствующая команда может выглядеть так:

USE AdventureWorks

GO

DBCC SHOWCONTIG ('Person.Address', 'PK_Address_AddressID')

К пункту 2 — перестроение индексов в базе данных:

Соответствующий код на языке VBScript может выглядеть так:

Dim oServer, oDB, oTable

Set oServer = CreateObject("SQLDmo.SqlServer2")

oServer.LoginSecure = True

OServer.Connect

Set oDB = oServer.Databases("AdventureWorks")

For Each oTable In oDB.Tables

If oTable.SystemObject = False Then

OTable.RebuildIndexes

OTable.UpdateStatistics

End if

Next

Для того, чтобы убедиться, что обновление статистики произошло, можно открыть свойства статистики (например, для индекса PK_Address_AddressID), нужно:

1. В SQL Server Management Studio открыть контейнер Statistics - имя_сервера àDatabasesàимя_базы данныхà Tables àимя_таблицыà Statistics,

2. Открыть свойства нужной статистики и на вкладке Generalипросмотреть информацию о дате создания статистики.



Задание для самостоятельной работы 8.5 Управление уровнем блокировок

Задание:

1. Откройте новое окно редактора скриптов и перейдите к базе данных AdventureWorks.

2. Выполните команды

BEGIN TRAN

UPDATE person.address SET City = 'Test'

3. Засеките время выполнения этой команды (показывается в нижнем правом углу SQL Server Management Studio).

4. Затем выполните команду

sp_lock @@SPID

и просмотрите блокировки, которые установлены вашим процессом. SQL Server должен использовать только блокировки уровня объекта (TAB).

5. Выполните команду

Rollback tran

6. Отключите эскалацию блокировок и еще раз выполните команду

BEGIN TRAN

UPDATE person.address SET City = 'Test'

7. Засеките время выполнения этой команды, а затем выполните команду

sp_lock @@SPID

Время выполнения запроса должно увеличиться, а хранимая процедура sp_lock должна показать, что используются блокировки уровня страницы и ключа.

8. Выполните команду

Rollback tran

9. Отключите возможность применения блокировок уровня страницы для таблицы Person.Address и еще раз выполните команды

BEGIN TRAN

UPDATE person.address SET City = 'Test'

10. Засеките время выполнения этой команды, а затем выполните команду

sp_lock @@SPID

Хранимая процедура sp_lock должна вернуть только информацию о блокировках уровня записи.

11. Выполните команду

Rollback tran

12. Отключите возможность применения блокировок уровня записи для таблицы Person.Address и еще раз выполните команды

BEGIN TRAN

UPDATE person.address SET City = 'Test'

13. Засеките время выполнения этой команды, а затем выполните команду

sp_lock @@SPID

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

14. Выполните команду

Rollback tran

Решение:

К пункту 6:

Для отключения эскалации блокировок можно выполнить команду





sdamzavas.net - 2020 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...