πŸ”’ Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½ обслуТивания MS SQL Π² Ρ„Π°ΠΉΠ»?

Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½ обслуТивания MS SQL Π² Ρ„Π°ΠΉΠ»?

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½ обслуТивания MS SQL Π² Ρ„Π°ΠΉΠ», ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ sp_create_plan_guide. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½-Π³Π°ΠΉΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΠ»Π°Π½Π΅ обслуТивания.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:


-- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Π½-Π³Π°ΠΉΠ΄Π°
EXEC sp_create_plan_guide 
     @name = N'PlanGuideName',
     @stmt = N'SELECT * FROM TableName',
     @type = N'SQL',
     @module_or_batch = NULL,
     @params = N'@parameter_name INT',
     @hints = N'OPTION (QUERYTRACEON 8649)';

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм ΠΏΠ»Π°Π½-Π³Π°ΠΉΠ΄ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "PlanGuideName", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ относится ΠΊ SQL запросу "SELECT * FROM TableName". УказываСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ @hints, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΎΠΏΡ†ΠΈΡŽ QUERYTRACEON 8649, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΠ»Π°Π½ обслуТивания.

ПослС создания ΠΏΠ»Π°Π½-Π³Π°ΠΉΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ sp_control_plan_guide для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΏΠ»Π°Π½Π° обслуТивания.


-- Активация ΠΏΠ»Π°Π½-Π³Π°ΠΉΠ΄Π°
EXEC sp_control_plan_guide 
     @name = N'PlanGuideName',
     @operation = N'ENABLE';

-- ДСактивация ΠΏΠ»Π°Π½-Π³Π°ΠΉΠ΄Π°
EXEC sp_control_plan_guide 
     @name = N'PlanGuideName',
     @operation = N'DISABLE';

ΠŸΡ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ ΠΏΠ»Π°Π½Π°-Π³Π°ΠΉΠ΄Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ обслуТивания Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для выполнСния запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ SQL Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ.

НадСюсь, эта информация Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚!

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ студСнт!

Π Π°Π΄ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ тСбя здСсь! БСгодня я ΠΏΠΎΠΌΠΎΠ³Ρƒ Ρ‚Π΅Π±Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½ обслуТивания Π² MS SQL Π² Ρ„Π°ΠΉΠ». Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ понадобится ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ»Π°Π½ обслуТивания ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½.

План обслуТивания Π² MS SQL - это Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ порядок выполнСния запросов ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎΡ‚ ΠΏΠ»Π°Π½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Запросы с Ρ…ΠΎΡ€ΠΎΡˆΠΎ спланированным ΠΏΠ»Π°Π½ΠΎΠΌ обслуТивания Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ быстрСС ΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивно.

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π½Π° обслуТивания Π² Ρ„Π°ΠΉΠ» позволяСт Π½Π°ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Π΄Π΅Π»Π°Ρ‚ΡŒ сравнСния ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΈΠΌ с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ для совмСстного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ»Π°Π½Π° обслуТивания ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ Π΅Π³ΠΎ сохранСния, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ» Π² MS SQL.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ SQL Server Management Studio (SSMS)

SSMS - это графичСская срСда управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… для MS SQL. Она прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ сохранСния ΠΏΠ»Π°Π½Π° обслуТивания Π² Ρ„Π°ΠΉΠ».

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉ SSMS ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡΡŒ ΠΊ сСрвСру Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ‚Ρ‹ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.
  2. Π’Ρ‹Π±Π΅Ρ€ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Object Explorer (ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²).
  3. НаТми ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈ "New Query" (Новый запрос).
  4. Π’ Π½ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ напиши запрос, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½ обслуТивания.
  5. НаТми Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ "Include Actual Execution Plan" (Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ фактичСский ΠΏΠ»Π°Π½ выполнСния) Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ инструмСнтов.
  6. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈ запрос, Π½Π°ΠΆΠ°Π² Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ "Execute" (Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ) ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сочСтаниС клавиш Ctrl+Shift+E.
  7. ПослС выполнСния запроса Ρ‚Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡˆΡŒ Ρ‚Ρ€ΠΈ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², Π½Π°ΠΆΠΌΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ "Execution Plan" (План выполнСния).
  8. НаТми ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° области ΠΏΠ»Π°Π½Π° выполнСния ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈ "Save Execution Plan As" (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½ выполнСния ΠΊΠ°ΠΊ).
  9. Π’Ρ‹Π±Π΅Ρ€ΠΈ мСсто ΠΈ имя Ρ„Π°ΠΉΠ»Π°, ΠΊΡƒΠ΄Π° Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½ обслуТивания, ΠΈ Π½Π°ΠΆΠΌΠΈ "Save" (Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ).
  10. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ тСбя Π΅ΡΡ‚ΡŒ сохранСнный ΠΏΠ»Π°Π½ обслуТивания Π² Ρ„Π°ΠΉΠ»Π΅!

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PowerShell

PowerShell - это сцСнарный язык ΠΈ срСда ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PowerShell для сохранСния ΠΏΠ»Π°Π½Π° обслуТивания Π² Ρ„Π°ΠΉΠ».

$connectionString = "Data Source=имя_сСрвСра;Initial Catalog=имя_Π±Π°Π·Ρ‹_Π΄Π°Π½Π½Ρ‹Ρ…;Integrated Security=SSPI;"
$query = "ваш_запрос"

$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
$command = New-Object System.Data.SqlClient.SqlCommand($query, $connection)

$connection.Open()

$reader = $command.ExecuteReader([System.Data.CommandBehavior]::Default)
$reader.GetExecutionPlanXml() | Out-File -FilePath "ΠΏΡƒΡ‚ΡŒ_ΠΊ_Ρ„Π°ΠΉΠ»Ρƒ"

$reader.Close()
$connection.Close()

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ PowerShell для выполнСния запроса ΠΈ сохранСния ΠΏΠ»Π°Π½Π° обслуТивания Π² Ρ„Π°ΠΉΠ». Π—Π°ΠΌΠ΅Π½ΠΈ "имя_сСрвСра", "имя_Π±Π°Π·Ρ‹_Π΄Π°Π½Π½Ρ‹Ρ…", "ваш_запрос" ΠΈ "ΠΏΡƒΡ‚ΡŒ_ΠΊ_Ρ„Π°ΠΉΠ»Ρƒ" Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния Π² своСй срСдС.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, Ρƒ тСбя Π±ΡƒΠ΄Π΅Ρ‚ сохранСнный ΠΏΠ»Π°Π½ обслуТивания Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Ρ‹ знаСшь, ΠΊΠ°ΠΊ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½ обслуТивания Π² Ρ„Π°ΠΉΠ» Π² MS SQL. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ эти ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ своСй Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π£Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ!

Если Ρƒ тСбя Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ вопросы ΠΈΠ»ΠΈ понадобится ΠΏΠΎΠΌΠΎΡ‰ΡŒ - ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡΡŒ ΠΊΠΎ ΠΌΠ½Π΅. Π― всСгда Π³ΠΎΡ‚ΠΎΠ² ΠΏΠΎΠΌΠΎΡ‡ΡŒ!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

7.5 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Π½ΠΎΠ² обслуТивания ΠΏΠΎ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡŽ индСксов Π² MS SQL Server

Π£Ρ€ΠΎΠΊ 6 Экспорт ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² MS SQL Server

7.3 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π² MS SQL Server

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”’ Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π½ обслуТивания MS SQL Π² Ρ„Π°ΠΉΠ»?