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

МногиС ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ ΠΏΡƒΡ‚Π°ΡŽΡ‚ очистку индСксов с пСрСстроСниСм ΠΈΠ»ΠΈ Π΄Π΅Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ. На самом Π΄Π΅Π»Π΅ это Ρ€Π°Π·Π½Ρ‹Π΅ процСссы: очистка удаляСт ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ записи ΠΈΠ· систСмных Ρ‚Π°Π±Π»ΠΈΡ†, Π° пСрСстроСниС физичСски ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ структуру индСксов. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ трСбуСтся очистка, ΠΊΠ°ΠΊΠΈΠ΅ инструмСнты для этого Π΅ΡΡ‚ΡŒ Π² арсСналС 1Π‘, ΠΈ ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с MS SQL Server, PostgreSQL ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ.

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

πŸ“Š ΠšΠ°ΠΊΡƒΡŽ Π‘Π£Π‘Π” Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для 1Π‘?
MS SQL Server
PostgreSQL
Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚
Другая Π‘Π£Π‘Π”

Когда Π½ΡƒΠΆΠ½Π° очистка индСксов Π² 1Π‘

НС всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ очисткой индСксов. Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π° Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… случаях:

  • πŸ“‰ Π—Π°ΠΌΠ΅Ρ‚Π½ΠΎΠ΅ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ чтСния (ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹, Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌ) ΠΏΡ€ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π° сСрвСр. ОсобСнно Ссли Ρ€Π°Π½Π΅Π΅ всё Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ быстрСС.
  • πŸ—ƒοΈ Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ использованиС Π±Π°Π·Ρ‹ (Π±ΠΎΠ»Π΅Π΅ 1-2 Π»Π΅Ρ‚) Π±Π΅Π· рСгулярного обслуТивания. Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ "мусорныС" записи ΠΎΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • πŸ”„ ЧастыС массовыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π³Ρ€ΡƒΠΏΠΏΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ², ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ большого количСства Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².
  • πŸ› οΈ ПослС Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘ ΠΈΠ»ΠΈ Π‘Π£Π‘Π”, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ³Π»ΠΈ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ записи Π² систСмных Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ….

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° индСксов Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Ссли ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²:

  • πŸ–₯️ НСдостаточных рСсурсах сСрвСра (CPU, RAM, дисковоС пространство).
  • πŸ“Š ΠΠ΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… запросах Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° всСх строк Π±Π΅Π· Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²).
  • πŸ”Œ ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с ΡΠ΅Ρ‚ΡŒΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром 1Π‘.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ очистки, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ статистику Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ индСксов Π² вашСй Π‘Π£Π‘Π”. Π’ MS SQL Server для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ запрос:

SELECT

OBJECT_NAME(ind.OBJECT_ID) AS TableName,

ind.name AS IndexName,

indexstats.avg_fragmentation_in_percent

FROM

sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') indexstats

INNER JOIN

sys.indexes ind ON ind.object_id = indexstats.object_id AND ind.index_id = indexstats.index_id

WHERE

indexstats.avg_fragmentation_in_percent > 30

ORDER BY

indexstats.avg_fragmentation_in_percent DESC;

Если фрагмСнтация ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 30-40%, ΠΏΠΎΡ€Π° Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΠ± очисткС ΠΈΠ»ΠΈ пСрСстроСнии индСксов.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ очистки индСксов Π² 1Π‘ для Ρ€Π°Π·Π½Ρ‹Ρ… Π‘Π£Π‘Π”

Бпособ очистки зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅. Рассмотрим основныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹:

1. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ 1Π‘

Для Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π±Π°Π· (.1CD) процСсс максимально прост, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ограничСния:

  • πŸ”Ή ВыполняСтся автоматичСски ΠΏΡ€ΠΈ тСстировании ΠΈ исправлСнии Π±Π°Π·Ρ‹ (chdbfl.exe).
  • πŸ”Ή НС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв.
  • πŸ”Ή НС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ½ΠΊΡƒΡŽ настройку ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² очистки.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ:

  1. Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ всС сСансы 1Π‘, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Π±Π°Π·ΠΎΠΉ.
  2. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора.
  3. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:
    "C:\Program Files\1cv8\8.3.x.xxx\bin\chdbfl.exe" -F "ΠŸΡƒΡ‚ΡŒ_ΠΊ_Ρ„Π°ΠΉΠ»Ρƒ.1CD" -TestAndRepair
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π±Π°Π· (Π±ΠΎΠ»Π΅Π΅ 10 Π“Π‘) процСсс ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько часов. НС ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ β€” это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ….

2. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π² MS SQL Server

Для MS SQL очистка индСксов выполняСтся Ρ‡Π΅Ρ€Π΅Π· стандартныС инструмСнты сСрвСра. Π‘Π°ΠΌΡ‹ΠΉ бСзопасный способ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½ обслуТивания (Maintenance Plan):

  • πŸ”§ Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ индСксов (REORGANIZE) β€” мягкая очистка Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ†.
  • πŸ”„ ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ индСксов (REBUILD) β€” полная оптимизация структуры (Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС рСсурсов).
  • πŸ—‘οΈ ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° статистики β€” ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° запросов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ скрипта для очистки всСх индСксов Π±Π°Π·Ρ‹ 1Π‘:

USE [Π’Π°ΡˆΠ°Π‘Π°Π·Π°1Π‘];

GO

-- Π‘Π½Π°Ρ‡Π°Π»Π° пытаСмся Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСксы с Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ 10-30%

DECLARE @Database VARCHAR(255)

DECLARE @Table VARCHAR(255)

DECLARE @cmd NVARCHAR(500)

DECLARE @fillfactor INT

SET @fillfactor = 80 -- ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚ заполнСния страниц

DECLARE DatabaseCursor CURSOR FOR

SELECT name FROM sys.databases WHERE name = DB_NAME()

OPEN DatabaseCursor

FETCH NEXT FROM DatabaseCursor INTO @Database

WHILE @@FETCH_STATUS = 0

BEGIN

DECLARE TableCursor CURSOR FOR

SELECT TABLE_SCHEMA + '.' + TABLE_NAME AS TableName

FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_TYPE = 'BASE TABLE'

OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @Table

WHILE @@FETCH_STATUS = 0

BEGIN

SET @cmd = 'ALTER INDEX ALL ON ' + @Table + ' REORGANIZE'

BEGIN TRY

EXEC sp_executesql @cmd

END TRY

BEGIN CATCH

-- Если рСорганизация Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»Π°, ΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ

SET @cmd = 'ALTER INDEX ALL ON ' + @Table + ' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3), @fillfactor) + ')'

EXEC sp_executesql @cmd

END CATCH

FETCH NEXT FROM TableCursor INTO @Table

END

CLOSE TableCursor

DEALLOCATE TableCursor

FETCH NEXT FROM DatabaseCursor INTO @Database

END

CLOSE DatabaseCursor

DEALLOCATE DatabaseCursor

GO

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ индСксов (REBUILD) Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ЗапускайтС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ минимальной Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π·Ρ‹.

3. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π² PostgreSQL

Для PostgreSQL основной инструмСнт очистки β€” ΠΊΠΎΠΌΠ°Π½Π΄Π° VACUUM. Π’ контСкстС 1Π‘ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ свои Π½ΡŽΠ°Π½ΡΡ‹:

  • 🧹 VACUUM β€” стандартная очистка (Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹).
  • 🧹 VACUUM FULL β€” глубокая очистка с ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒΡŽ Ρ‚Π°Π±Π»ΠΈΡ† (Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹).
  • πŸ“Š VACUUM ANALYZE β€” очистка + ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ статистики для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ выполнСния для Π±Π°Π·Ρ‹ 1Π‘:

-- ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π±Π°Π·Π΅ Ρ‡Π΅Ρ€Π΅Π· psql ΠΈΠ»ΠΈ pgAdmin

VACUUM (VERBOSE, ANALYZE);

Для автоматичСской очистки настройтС autovacuum Π² postgresql.conf:

autovacuum = on

autovacuum_vacuum_threshold = 50 -- ΠΏΠΎΡ€ΠΎΠ³ срабатывания

autovacuum_analyze_threshold = 50

autovacuum_vacuum_scale_factor = 0.2

autovacuum_analyze_scale_factor = 0.1

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию Π±Π°Π·Ρ‹|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ свободноС мСсто Π½Π° дискС (трСбуСтся ~20% ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π°Π·Ρ‹)|ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΡ‚ Π±Π°Π·Ρ‹|Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ VACUUM Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ минимальной Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ-->

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° индСксов Ρ‡Π΅Ρ€Π΅Π· консоль администрирования 1Π‘

Π’ послСдних вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 появились встроСнныС инструмСнты для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с индСксами. Они ΠΌΠ΅Π½Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅, Ρ‡Π΅ΠΌ прямыС SQL-запросы, Π½ΠΎ бСзопаснСС для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ².

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ индСксы Ρ‡Π΅Ρ€Π΅Π· консоль:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Консоль администрирования сСрвСров 1Π‘ (rac.exe).
  2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΊ кластСру сСрвСров.
  3. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π±Π°Π·Ρƒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» АдминистрированиС β†’ ВСстированиС ΠΈ исправлСниС.
  4. УстановитС Ρ„Π»Π°Π³ΠΈ:
    • πŸ”˜ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ
    • πŸ”˜ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΡΡΡ‹Π»ΠΎΡ‡Π½ΡƒΡŽ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ
    • πŸ”˜ Π Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (это ΠΈ Π΅ΡΡ‚ΡŒ очистка индСксов)
    • πŸ”˜ ΠŸΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ индСксы полнотСкстового поиска (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅)
  5. ЗапуститС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ.
  6. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

    • βœ… НС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ знания SQL.
    • βœ… АвтоматичСски ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ особСнности структуры Π±Π°Π·Ρ‹ 1Π‘.
    • βœ… МоТно Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π±Π΅Π· ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Π½ΠΎ с ограничСниями).

    НСдостатки:

    • ❌ МСнСС Π³ΠΈΠ±ΠΊΠΈΠΉ, Ρ‡Π΅ΠΌ Ρ€ΡƒΡ‡Π½Ρ‹Π΅ SQL-запросы.
    • ❌ НС ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ статистику Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.
    • ❌ ΠœΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ дольшС Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π·Π°Ρ….
πŸ’‘

Если Π² консоли администрирования отсутствуСт опция "Π Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹", ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ 1Π‘ Π΄ΠΎ вСрсии 8.3.18 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ очисткС индСксов ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ администраторы ΠΈΠ½ΠΎΠ³Π΄Π° Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ сбоям ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎΡ‚ самыС распространСнныС:

  1. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π±Π΅Π· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ

    ΠŸΠ΅Ρ€Π΅Π΄ любой манипуляциСй с индСксами ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ создайтС бэкап Π±Π°Π·Ρ‹. Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ достаточно ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» .1CD, для SQL-Π±Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стандартныС инструмСнты рСзСрвирования.

  2. Запуск Π² Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя

    ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° индСксов β€” рСсурсоСмкая опСрация. На Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π·Π°Ρ… ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° часы, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ врСмя β€” Π½ΠΎΡ‡ΡŒΡŽ ΠΈΠ»ΠΈ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅.

  3. Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

    НС всС индСксы Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² очисткС. Если фрагмСнтация ΠΌΠ΅Π½Π΅Π΅ 10%, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° принСсСт большС Π²Ρ€Π΅Π΄Π°, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·Ρ‹ (лишняя Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° диск). ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ статистику ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ.

  4. ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ процСсса

    ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ очистки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· ДиспСтчСр Π·Π°Π΄Π°Ρ‡) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ индСксы Π² нСконсистСнтном состоянии. Если процСсс завис, Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ пСрСзапуститС сСрвСр Π‘Π£Π‘Π”.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ПослС очистки индСксов Π² MS SQL Server ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ β€” сСрвСр Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ мСсто для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π§Π΅Ρ€Π΅Π· нСсколько Π΄Π½Π΅ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ стабилизируСтся.

Автоматизация очистки индСксов

Ручная очистка индСксов β€” Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ процСсс, особСнно Ссли Ρƒ вас нСсколько Π±Π°Π· 1Π‘. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

1. ΠŸΠ»Π°Π½Ρ‹ обслуТивания Π² MS SQL Server

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Maintenance Plan с ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ шагами:

  1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° цСлостности Π±Π°Π·Ρ‹ (CHECKDB).
  2. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° индСксов (REORGANIZE ΠΈΠ»ΠΈ REBUILD).
  3. ОбновлСниС статистики.
  4. ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΆΡƒΡ€Π½Π°Π»Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ модСль восстановлСния FULL).

НастройтС расписаниС Π½Π° СТСнСдСльноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π½Π΅Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ врСмя.

2. Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ для PostgreSQL

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² cron Π·Π°Π΄Π°Ρ‡Ρƒ для автоматичСского запуска VACUUM:

0 3   0 /usr/bin/vacuumdb --dbname=Π’Π°ΡˆΠ°Π‘Π°Π·Π°1Π‘ --analyze --quiet

Для Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ очистки Ρ€Π°Π· Π² мСсяц:

0 4 1   /usr/bin/vacuumdb --dbname=Π’Π°ΡˆΠ°Π‘Π°Π·Π°1Π‘ --full --analyze --quiet

3. ВстроСнныС Π·Π°Π΄Π°Ρ‡ΠΈ 1Π‘

Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ тСстированиС ΠΈ исправлСниС Π±Π°Π·Ρ‹ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ:

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅.
  2. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² АдминистрированиС β†’ Π Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания.
  3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ с Ρ‚ΠΈΠΏΠΎΠΌ Π’Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Π˜Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉΠ‘Π°Π·Ρ‹.
  4. НастройтС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ€Π΅ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ) ΠΈ расписаниС.
ΠœΠ΅Ρ‚ΠΎΠ΄ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° НСдостатки Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ
ΠŸΠ»Π°Π½Ρ‹ обслуТивания MS SQL Гибкая настройка, интСграция с Agent Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€Π°Π² sysadmin Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π±Π°Π·
Cron-Π·Π°Π΄Π°Ρ‡ΠΈ (PostgreSQL) ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° настройки, ΠΊΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ НСт Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΎΠ³ΠΎΠ² Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π»ΠΎΠ³ΠΎΠ² Π² Ρ„Π°ΠΉΠ»
Π Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ задания 1Π‘ НС Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ знания SQL, управляСтся ΠΈΠ· 1Π‘ МСньшС ΠΎΠΏΡ†ΠΈΠΉ настройки ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π·

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли очистка индСксов Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»Π°

Если послС очистки индСксов ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»Π°ΡΡŒ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

  • πŸ” Анализ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… запросов: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ SQL Server Profiler ΠΈΠ»ΠΈ pg_stat_statements Π² PostgreSQL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ "ΡƒΠ·ΠΊΠΈΠ΅ мСста".
  • πŸ–₯️ РСсурсы сСрвСра: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ CPU, RAM ΠΈ дисковой подсистСмы. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, трСбуСтся Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄ "ΠΆΠ΅Π»Π΅Π·Π°".
  • πŸ“Š Бтатистика выполнСния: Π’ 1Π‘ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΆΡƒΡ€Π½Π°Π» рСгистрации с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
  • πŸ”§ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ 1Π‘: ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ послСдних вСрсий β€” Π² Π½ΠΈΡ… часто ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ запросы.

Если ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… запросах, рассмотритС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

  • πŸ› οΈ Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ индСксы для часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ.
  • πŸ“ ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ запросы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠŸΠžΠ”ΠžΠ‘ΠΠž Π½Π° полнотСкстовый поиск).
  • πŸ—‘οΈ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅: Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΠ»ΠΈ удаляйтС Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²Ρ‹Ρ… индСксов ΠΏΡ€ΠΎΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ 1Π‘. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ созданныС индСксы ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ…ΡƒΠ΄ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, особСнно ΠΏΡ€ΠΈ массовых опСрациях записи.
Как Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ запросы Π² 1Π‘?

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΆΡƒΡ€Π½Π°Π» рСгистрации с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ "ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ" ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, >1000 мс). ПослС сбора Π΄Π°Π½Π½Ρ‹Ρ… отсортируйтС записи ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΡ‚Π΅ запросам с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ IN, LIKE ΠΈ подзапросами.

FAQ: ЧастыС вопросы ΠΏΠΎ очисткС индСксов Π² 1Π‘

Как часто Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ индСксы Π² 1Π‘?

Частота зависит ΠΎΡ‚ интСнсивности использования Π±Π°Π·Ρ‹:

  • πŸ“… Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: 1 Ρ€Π°Π· Π² 3-6 мСсяцСв.
  • πŸ“… MS SQL/PostgreSQL: 1 Ρ€Π°Π· Π² 1-3 мСсяца (ΠΈΠ»ΠΈ ΠΏΠΎ Ρ€Π°ΡΠΏΠΈΡΠ°Π½ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ»Π°Π½Ρ‹ обслуТивания).
  • πŸ“… ВысоконагруТСнныС систСмы (Π±ΠΎΠ»Π΅Π΅ 100 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ): СТСмСсячно ΠΈΠ»ΠΈ Ρ‡Π°Ρ‰Π΅.

ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ Π½Π° статистику Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ β€” Ссли ΠΎΠ½Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 30%, ΠΏΠΎΡ€Π° ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ.

МоТно Π»ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ индСксы Π±Π΅Π· ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ?

Зависит ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  • βœ… REORGANIZE (MS SQL) β€” ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • ❌ REBUILD (MS SQL) β€” Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ доступа.
  • βœ… VACUUM (PostgreSQL) β€” Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (ΠΊΡ€ΠΎΠΌΠ΅ VACUUM FULL).
  • ❌ ВСстированиС ΠΈ исправлСниС Π² 1Π‘ β€” Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ монопольного доступа.

Для минимального простоя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ REORGANIZE ΠΈΠ»ΠΈ VACUUM Π² Π½Π΅ΠΏΠΈΠΊΠΎΠ²Ρ‹Π΅ часы.

Π§Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅: очистка индСксов ΠΈΠ»ΠΈ ΠΈΡ… пСрСстроСниС?

Π’Ρ‹Π±ΠΎΡ€ зависит ΠΎΡ‚ стСпСни Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ:

  • πŸ”Ή ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° (REORGANIZE/VACUUM) β€” Ссли фрагмСнтация 10-30%. Мягкий ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
  • πŸ”Ή ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ (REBUILD/VACUUM FULL) β€” Ссли фрагмСнтация >30%. Полная оптимизация, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС рСсурсов.

Для ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠΈ достаточно очистки. ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ примСняйтС ΠΏΡ€ΠΈ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ послС очистки индСксов Π±Π°Π·Π° стала Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅?

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • πŸ”Έ НС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° статистика: ПослС очистки Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ UPDATE STATISTICS (MS SQL) ΠΈΠ»ΠΈ ANALYZE (PostgreSQL).
  • πŸ”Έ Блишком высокий FILLFACTOR: Если ΠΏΡ€ΠΈ пСрСстроСнии индСксов использовался FILLFACTOR=100, страницы Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, Ρ‡Ρ‚ΠΎ замСдляСт Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ вставки.
  • πŸ”Έ НСхватка рСсурсов: ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΌΠΎΠ³Π»Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ диск, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π‘Π£Π‘Π” Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΎΠΉ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΏΠ»Π°Π½Ρ‹ выполнСния ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… запросов β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ стал ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСэффСктивныС индСксы.

Как ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ индСксы Π² ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ 1Π‘ (1C:Fresh, 1C:Guru)?

Π’ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисах прямой доступ ΠΊ Π‘Π£Π‘Π” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ дСйствий:

  • πŸ”Ή ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° с запросом Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹.
  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ встроСнныС инструмСнты:
    • Π’ 1C:Fresh: АдминистрированиС β†’ ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΠ΅ β†’ ВСстированиС ΠΈ исправлСниС.
    • Π’ 1C:Guru: Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» Π² Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚Π΅.
  • πŸ”Ή ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ: ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΡ‚Π±ΠΎΡ€Ρ‹ Π² часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹.

ΠžΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ сами слСдят Π·Π° состояниСм индСксов, Π½ΠΎ ΠΏΡ€ΠΈ явных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ стоит Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ.

πŸ’‘

РСгулярная очистка индСксов β€” это Π½Π΅ разовая акция, Π° Ρ‡Π°ΡΡ‚ΡŒ комплСксного обслуТивания 1Π‘. ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Ρ‘ с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ статистики, Π΄Π΅Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ дисков ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ запросов для максимального эффСкта.