ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с высоконагруТСнными конфигурациями 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ администраторы ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π΄Π΅Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста объСма Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹, зависания ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π΄ΠΎΠ»Π³ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈΠ· рСгистров β€” это Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ симптомы Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ справляСтся с Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ инструмСнтом Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ являСтся грамотная индСксация, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π‘Π£Π‘Π” Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ записи Π·Π° Π΄ΠΎΠ»ΠΈ сСкунды вмСсто ΠΌΠΈΠ½ΡƒΡ‚.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ индСксации Π² экосистСмС 1Π‘ Π½Π΅ являСтся Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Β«Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π·Π°Π±Ρ‹Π»Β». Он Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, особСнностСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ систСмы управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ MSSQL, PostgreSQL ΠΈΠ»ΠΈ Oracle) ΠΈ спСцифики бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ созданныС индСксы ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½ΠΎ ΠΈ сущСствСнно Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ запись Π΄Π°Π½Π½Ρ‹Ρ…, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π°Π·Ρ‹ ΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²ΡƒΡŽ подсистСму.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ создания индСксов, ΠΎΡ‚ стандартных срСдств ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π΄ΠΎ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… скриптов для администрирования Π‘Π£Π‘Π”. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Β«ΡƒΠ·ΠΊΠΈΠ΅ мСста» Π² запросах, ΠΊΠ°ΠΊΠΈΠ΅ поля Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ стоит ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ статистики для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмы Π² условиях постоянного измСнСния Π΄Π°Π½Π½Ρ‹Ρ….

ВСорСтичСскиС основы индСксации Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ 1Π‘

ИндСкс Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ структура, которая упорядочиваСт Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ поиск ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π°ΠΌ происходил максимально быстро. Π’ контСкстС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ индСксы строятся ΠΏΠΎΠ²Π΅Ρ€Ρ… физичСских Ρ‚Π°Π±Π»ΠΈΡ†, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° создаСт автоматичСски Π½Π° основС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ 1Π‘ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ слоТный ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ кластСризации ΠΈ ссылочной цСлостности.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ список Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ SQL-запрос ΠΊ сСрвСру Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Если Π² этом запросС Π΅ΡΡ‚ΡŒ условия ΠΎΡ‚Π±ΠΎΡ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«Π½Π°ΠΉΡ‚ΠΈ всС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π·Π° ΡΠ½Π²Π°Ρ€ΡŒ ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρƒ ООО Ромашка»), Π‘Π£Π‘Π” просматриваСт индСксы. Если подходящий индСкс сущСствуСт, систСма сразу ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½ΡƒΠΆΠ½Ρ‹ΠΌ страницам Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС происходит Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Full Table Scan β€” ΠΏΠΎΠ»Π½ΠΎΠ΅ сканированиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°Ρ… записСй ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ критичСским Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌ.

БущСствуСт нСсколько Ρ‚ΠΈΠΏΠΎΠ² индСксов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сцСнариях Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘.Clustered индСксы ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ физичСский порядок хранСния строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π° Non-clustered ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ структуру ссылок. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ создаСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ индСксы для основных Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² справочников ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½ΠΎ этого часто нСдостаточно для слоТной Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ количСства индСксов Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… с высокой ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ записи (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рСгистры накоплСния) ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ падСнию скорости провСдСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ индСкс Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ обновлСния ΠΏΡ€ΠΈ вставкС ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ записи.

Для принятия Π²Π΅Ρ€Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ поля ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½ выполнСния запроса. Π’ соврСмСнных Π‘Π£Π‘Π” Π΅ΡΡ‚ΡŒ инструмСнты Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ большС всСго рСсурсов. Часто оказываСтся, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° кроСтся Π½Π΅ Π² отсутствии индСкса, Π° Π² Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ написании запроса Π² ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

πŸ“Š Π§Ρ‚ΠΎ Ρ‡Π°Ρ‰Π΅ всСго Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Π² вашСй Π±Π°Π·Π΅ 1Π‘?
ΠžΡ‚Ρ‡Π΅Ρ‚Ρ‹ с большими Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ
ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ списков ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ²
Поиск ΠΏΠΎ элСмСнтам справочников

Диагностика ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ· запросов

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ созданию Π½ΠΎΠ²Ρ‹Ρ… индСксов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ Π·ΠΎΠ½Ρ‹. Π‘Π»Π΅ΠΏΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ индСксов Β«Π½Π° всякий случай» β€” плохая стратСгия. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· тСхнологичСского ΠΆΡƒΡ€Π½Π°Π»Π° (Π’Π–) сСрвСра 1Π‘ ΠΈΠ»ΠΈ использованиС встроСнных срСдств профилирования. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ запросы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ дольшС всСго ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ наибольший объСм рСсурсов процСссора ΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ прСдприятия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ запросов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ тСкст Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ SQL. Однако для Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ SQL Server Profiler для Microsoft SQL Server ΠΈΠ»ΠΈ pg_stat_statements для PostgreSQL. Π­Ρ‚ΠΈ инструмСнты ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния, количСство логичСских Ρ‡Ρ‚Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠ»Π°Π½ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

  • πŸ” Π˜Ρ‰ΠΈΡ‚Π΅ запросы с Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ выполнСния Π±ΠΎΠ»Π΅Π΅ 1-2 сСкунд β€” это ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Ρ‹ Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ.
  • πŸ“Š ΠžΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Β«Table ScanΒ» ΠΈΠ»ΠΈ Β«Clustered Index ScanΒ» Π² ΠΏΠ»Π°Π½Π΅ выполнСния β€” ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° отсутствиС сСлСктивных индСксов.
  • πŸ—„οΈ АнализируйтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса: часто тормозят Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ с динамичСскими условиями ΠΈΠ»ΠΈ слоТными соСдинСниями (JOIN).

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ слСдуСт ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ запросам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ часто, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстро. ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ запрос, запускаСмый Ρ€Π°Π· Π² сутки, ΠΌΠ΅Π½Π΅Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½, Ρ‡Π΅ΠΌ запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСтся тысячи Ρ€Π°Π· Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² интСрфСйсС. ΠΠ°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ эффСкт Ρ‚Π°ΠΊΠΈΡ… ΠΌΠΈΠΊΡ€ΠΎ-Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ создаСт ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅ «тормознутости» всСй систСмы.

ΠŸΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ стоит ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ спСцифику Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ рСгистров Π² 1Π‘. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° сама управляСт ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ аспСктами ΠΈΡ… чтСния, Π½ΠΎ ΠΏΡ€ΠΈ использовании слоТных ΠΎΡ‚Π±ΠΎΡ€ΠΎΠ² ΠΏΠΎ измСрСниям ΠΈΠ»ΠΈ рСсурсам, Π½Π΅ входящим Π² основныС ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ°Π΄Π°Ρ‚ΡŒ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ созданиС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… индСксов нСпосрСдствСнно Π½Π° физичСскиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ рСгистров.

πŸ’‘

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ консоль запросов для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π³ΠΈΠΏΠΎΡ‚Π΅Π·. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ запрос с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ условия ΠΏΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ индСксации ΠΈ сравнитС врСмя выполнСния.

УправляСмыС индСксы: настройка Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€

Начиная с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… вСрсий ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π² 1Π‘ появился ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ управляСмых индСксов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ систСмС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ создания индСксов для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ бСзопасный ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ способ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° сама Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ DDL скрипт ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Для настройки управляСмого индСкса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… (справочник, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ рСгистр) Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅. Π’ свойствах ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ настройки, связанныС с индСксациСй. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Ρ„Π»Π°Π³ Β«Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ» ΠΈΠ»ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Π²ΠΊΠ»Π°Π΄ΠΊΠ° для управлСния ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ обновлСния структуры Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя, особСнно Ссли Ρ‚Π°Π±Π»ΠΈΡ†Π° содСрТит ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ записСй. Π’ этот ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с систСмой Π±ΡƒΠ΄Π΅Ρ‚ нСдоступна ΠΈΠ»ΠΈ сильно Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ слСдуСт ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сдСлав ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Ρ‹.

Π’ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° 1Π‘ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ поля для индСкса ВлияниС Π½Π° запись ВлияниС Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅
Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ НаимСнованиС, Код, Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ МинимальноС ВысокоС (ускорСниС поиска)
Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π”Π°Ρ‚Π°, НомСр, ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ Π‘Ρ€Π΅Π΄Π½Π΅Π΅ ВысокоС (ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹, ΠΆΡƒΡ€Π½Π°Π»Ρ‹)
РСгистры свСдСний Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° ВысокоС ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ (срСзы)
РСгистры накоплСния ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСрСния ΠžΡ‡Π΅Π½ΡŒ высокоС ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ (остатки, ΠΎΠ±ΠΎΡ€ΠΎΡ‚Ρ‹)

ΠŸΡ€ΠΈ использовании управляСмых индСксов ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° автоматичСски отслСТиваСт ΠΈΡ… состояниС. Если Π²Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ индСкс Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ. Π­Ρ‚ΠΎ сниТаСт риск появлСния Β«ΠΎΡΠΈΡ€ΠΎΡ‚Π΅Π²ΡˆΠΈΡ…Β» индСксов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСсто, Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

ВСхничСскиС Π΄Π΅Ρ‚Π°Π»ΠΈ обновлСния структуры

ΠŸΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ 1Π‘ выполняСт сравнСниС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ физичСской структуры Π‘Π”. Если ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ индСксы, выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° CREATE INDEX. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ часы, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСстройки всСй структуры хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π ΡƒΡ‡Π½ΠΎΠ΅ созданиС индСксов срСдствами Π‘Π£Π‘Π”

Π’ ситуациях, ΠΊΠΎΠ³Π΄Π° возмоТности ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ нСдостаточны ΠΈΠ»ΠΈ трСбуСтся тонкая настройка ΠΏΠΎΠ΄ спСцифичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ, администраторы ΠΏΡ€ΠΈΠ±Π΅Π³Π°ΡŽΡ‚ ΠΊ Ρ€ΡƒΡ‡Π½ΠΎΠΌΡƒ созданию индСксов нСпосрСдствСнно Π² Π‘Π£Π‘Π”. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ высокой ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ остороТности, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ измСнСния Π½Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ 1Π‘.

Для создания индСкса Π² MS SQL Server ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° CREATE INDEX. Π’Π°ΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ индСкса ΠΈ порядок ΠΏΠΎΠ»Π΅ΠΉ Π² Π½Π΅ΠΌ. Поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² условиях WHERE ΠΈΠ»ΠΈ для соСдинСния Ρ‚Π°Π±Π»ΠΈΡ† (JOIN), Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡ‚ΠΎΡΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ»ΡŽΡ‡Π° индСкса. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΏΠΎΠ»Π΅ΠΉ критичСски Π²Π°ΠΆΠ΅Π½: индСкс ΠΏΠΎ полям (А, Π‘) Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π² поискС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ полю Π‘.

CREATE NONCLUSTERED INDEX IX_Documents_Contragent_Date

ON dbo._Document123

(_RRef124, _DateT)

INCLUDE (_Mark, _IsDeleted);

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся индСкс для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ПолС _RRef124 ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТит ссылку Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Π°, Π° _DateT β€” Π΄Π°Ρ‚Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ΠžΠΏΡ†ΠΈΡ INCLUDE позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² индСкс Π½Π΅Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ поля, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ индСкс Β«ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΒ» (covering index). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π‘Π£Π‘Π” смоТСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ прямо ΠΈΠ· индСкса, Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ основной Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт Ρ€Π°Π±ΠΎΡ‚Ρƒ.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ создании индСксов Π²Ρ‹ Π±Π΅Ρ€Π΅Ρ‚Π΅ Π½Π° сСбя ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° ΠΈΡ… Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ 1Π‘ (ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²) ваши Ρ€ΡƒΡ‡Π½Ρ‹Π΅ индСксы ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ошибки ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ структуры.

Для Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° основС PostgreSQL синтаксис ΠΏΠΎΡ…ΠΎΠΆ, Π½ΠΎ Π΅ΡΡ‚ΡŒ свои особСнности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° частичных индСксов (partial indexes). Частичный индСкс строится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для подмноТСства строк, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. Π­Ρ‚ΠΎ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для сцСнариСв, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ быстро ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ записи, игнорируя ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ массу Π΄Π°Π½Π½Ρ‹Ρ….

ПослС создания индСкса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» выявлСн Π½Π° этапС диагностики, ΠΈ посмотритС Π½Π° ΠΏΠ»Π°Π½ выполнСния. Если ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ запросов Π½Π°Ρ‡Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваш Π½ΠΎΠ²Ρ‹ΠΉ индСкс (опСрация Index Seek вмСсто Table Scan), Π·Π½Π°Ρ‡ΠΈΡ‚, оптимизация ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

β˜‘οΈ План Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ создания индСкса

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 6

ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ поиск ΠΈ индСксация тСкстовых ΠΏΠΎΠ»Π΅ΠΉ

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ индСксы B-Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΏΠ»ΠΎΡ…ΠΎ подходят для поиска ΠΏΠΎ содСрТимому тСкстовых ΠΏΠΎΠ»Π΅ΠΉ, особСнно Ссли трСбуСтся ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ слова ΠΈΠ»ΠΈ Ρ„Ρ€Π°Π·Ρƒ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ Π² 1Π‘ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π‘Π£Π‘Π” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ полнотСкстового поиска (Full-Text Search). Π­Ρ‚ΠΎ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ быстрый поиск ΠΏΠΎ описаниям Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², коммСнтариям Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΈΠ»ΠΈ содСрТимому Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

Π’ конфигурациях 1Π‘ полнотСкстовый поиск настраиваСтся Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Β«ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ поиск». Администратор Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ поля ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‚ индСксации. ПослС этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ наполнСния индСкса. Π­Ρ‚ΠΎΡ‚ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ рСсурсоСмким, поэтому Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Π½ΠΎΡ‡Π½ΠΎΠ΅ врСмя.

  • πŸ“ ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ индСкс Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ тСкст Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ слова (Ρ‚ΠΎΠΊΠ΅Π½Ρ‹) ΠΈ строит ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ индСкс.
  • πŸ”Ž Поиск становится Π½Π΅Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊ рСгистру ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡŽ (поиск ΠΏΠΎ склонСниям слов).
  • ⚑ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ поиска ΠΏΠΎ большим тСкстовым массивам возрастаСт Π² Ρ€Π°Π·Ρ‹ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ LIKE '%тСкст%'.

Π’Π°ΠΆΠ½ΠΎ рСгулярно ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ полнотСкстовыС индСксы. По ΠΌΠ΅Ρ€Π΅ добавлСния Π½ΠΎΠ²Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Π±Π°Π·Ρƒ, индСкс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ссли Π½Π΅ настроСно автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅. Π’ настройках Π‘Π£Π‘Π” ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ расписаниС пСрСсборки индСксов ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈΡ… ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания 1Π‘.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ полнотСкстовый поиск Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ дискового пространства. ОбъСм индСксов ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚ 10% Π΄ΠΎ 100% ΠΎΡ‚ объСма самих тСкстовых Π΄Π°Π½Π½Ρ‹Ρ… Π² зависимости ΠΎΡ‚ спСцифики ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈ настроСк Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ стоп-слов. Π‘Ρ‚ΠΎΠΏ-слова (ΠΏΡ€Π΅Π΄Π»ΠΎΠ³ΠΈ, ΡΠΎΡŽΠ·Ρ‹) ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ· индСксации для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ рСлСвантности Π²Ρ‹Π΄Π°Ρ‡ΠΈ.

πŸ’‘

ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉ поиск Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нСструктурированными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ обслуТивания ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° индСксов.

ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ рСорганизация индСксов

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ индСксов β€” это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° Π΄Π΅Π»Π°. Π’ процСссС Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… индСксы ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ частых вставках, обновлСниях ΠΈ удалСниях записСй логичСский порядок страниц индСкса пСрСстаСт ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΈΡ… физичСским располоТСниСм Π½Π° дискС. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π‘Π£Π‘Π” Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Π° Π΄Π΅Π»Π°Ρ‚ΡŒ большС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ диску для чтСния ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….

Для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ рСгулярно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ (Reorganize) ΠΈΠ»ΠΈ пСрСстроСния (Rebuild) индСксов. РСорганизация β€” это лСгкая опСрация, которая уплотняСт страницы индСкса ΠΈ происходит ΠΎΠ½Π»Π°ΠΉΠ½, Π½Π΅ блокируя Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ β€” Π±ΠΎΠ»Π΅Π΅ тяТСлая опСрация, которая ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ создаСт индСкс Π·Π°Π½ΠΎΠ²ΠΎ, устраняя Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ максимально эффСктивно, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ систСмными запросами. Если фрагмСнтация составляСт ΠΌΠ΅Π½Π΅Π΅ 10%, Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π½Π΅ трСбуСтся. ΠŸΡ€ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΎΡ‚ 10% Π΄ΠΎ 30% рСкомСндуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ. Если фрагмСнтация ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 30%, СдинствСнным эффСктивным Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ становится ΠΏΠΎΠ»Π½ΠΎΠ΅ пСрСстроСниС индСкса.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΈ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ обслуТивания ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вСрсии Π‘Π£Π‘Π” ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘. ВсСгда свСряйтС синтаксис ΠΊΠΎΠΌΠ°Π½Π΄ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΊ вашСй вСрсии SQL сСрвСра ΠΏΠ΅Ρ€Π΅Π΄ запуском Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π±Π°Π·Π΅.

Автоматизация этого процСсса β€” ΠΊΠ»ΡŽΡ‡ ΠΊ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ SQL Server Agent ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π·Π°Π΄Π°Ρ‡ Linux (для PostgreSQL) слСдуСт Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ скрипты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ nightly ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ этого этапа со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ свСдСт Π½Π° Π½Π΅Ρ‚ вСсь эффСкт ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’Π°ΠΊΠΆΠ΅ Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ статистики. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ запросов Π‘Π£Π‘Π” ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ± использовании индСкса Π½Π° основС статистики распрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ…. Если статистика устарСла, сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΠ»Π°Π½ выполнСния, игнорируя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ индСксы. РСгулярноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ статистики Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π° обслуТивания.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Rebuild ΠΈ Reorganize

Rebuild удаляСт старый индСкс ΠΈ создаСт Π½ΠΎΠ²Ρ‹ΠΉ, сбрасывая Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² 0%, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ мСста (Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡƒΠ΄Π²Π°ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ индСкса). Reorganize сдвигаСт страницы Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ индСкса, трСбуя мСньшС рСсурсов, Π½ΠΎ Π½Π΅ гарантируя идСального Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΏΡ€ΠΈ высокой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы (FAQ)

МоТно Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ индСксы Π½Π° вычисляСмыС поля Π² 1Π‘?

Π”Π°, это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ с ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ. Π’ SQL Server для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ индСксированныС прСдставлСния ΠΈΠ»ΠΈ вычисляСмыС столбцы с ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΎΠΉ PERSISTED. Π’ 1Π‘ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ вычисляСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ чтСния, нСльзя. НСобходимо ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСния Π² физичСскоС ΠΏΠΎΠ»Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚), ΠΈ ΡƒΠΆΠ΅ Π½Π° Π½Π΅Π³ΠΎ Π½Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ индСкс.

Как ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ индСкса повлияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±Π°Π·Ρ‹?

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ индСкса освободит дисковоС пространство ΠΈ ускорит ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ записи (вставку ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π‘Π£Π‘Π” Π½Π΅ придСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ лишнюю структуру. Однако, Ссли запросы всС ΠΆΠ΅ использовали этот индСкс, ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ замСдлится, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сСрвСр вСрнСтся ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ†.

НуТно Π»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ Β«ΠŸΠΎΠΌΠ΅Ρ‚ΠΊΠ° удалСния»?

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² этом Π½Π΅Ρ‚ нСобходимости, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠ·ΠΊΡƒΡŽ ΡΠ΅Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ (Π² Π±Π°Π·Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ записСй Π½Π΅ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹). ИндСкс ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ полю Π±ΡƒΠ΄Π΅Ρ‚ нСэффСктивСн. Однако, Ссли Π²Ρ‹ часто Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ очистки, спСцифичСский частичный индСкс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½.

ВлияСт Π»ΠΈ индСксация Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ?

Π”Π°, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ физичСскоС мСсто Π½Π° дискС, ΠΈΠ½ΠΎΠ³Π΄Π° сопоставимоС с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ самих Π΄Π°Π½Π½Ρ‹Ρ…. БоотвСтствСнно, Ρ„Π°ΠΉΠ» Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя ΠΈ всС индСксы, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ врСмя создания бэкапа ΠΈ объСм Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для ΠΈΡ… хранСния.

Как ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ индСкс Β«Π±ΠΈΡ‚Ρ‹ΠΉΒ» ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½?

ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΈ индСкса Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ошибками чтСния Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° логичСская Π½Π΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΒ»), ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ… ΠΈΠ»ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹ΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ процСссов Π‘Π£Π‘Π”. РСгулярная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° цСлостности Π±Π°Π·Ρ‹ (ΠΊΠΎΠΌΠ°Π½Π΄Π° DBCC CHECKDB Π² MS SQL) позволяСт Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ станут критичСскими.