Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Относится к: SQL Server 2025 (17.x)
Azure SQL Database
SQL Database в Microsoft Fabric
Возвращает аналитические сведения в реальном времени о работоспособности и производительности векторного индекса. Используйте это представление для мониторинга операций обслуживания векторного индекса и определения индексов, требующих внимания.
Соглашения о синтаксисе Transact-SQL
| Имя столбца | Тип данных | Описание |
|---|---|---|
object_id |
int | Идентификатор объекта таблицы. |
index_id |
int | Идентификатор индекса. |
approximate_staleness_percent |
decimal(10,2) | Процент изменений, ожидающих обновления индекса. Более высокие значения указывают на более ожидающие изменения. |
quantized_keys_used_percent |
decimal(10,2) | Процент пространства ключей, потребляемого индексом. |
last_background_task_time |
datetime2 | Метка времени последнего фонового обслуживания. Указывает, когда завершена последняя операция обслуживания. |
last_background_task_succeeded |
bit | Состояние успешности последней задачи обслуживания. 1 указывает на успешность, 0 указывает на сбой. |
last_background_task_duration_seconds |
bigint | Длительность последней задачи обслуживания в секундах. |
last_background_task_processed_inserts |
bigint | Количество операций вставки, обработанных в последней задаче обслуживания. |
last_background_task_processed_deletes |
bigint | Количество операций удаления, обработанных в последней задаче обслуживания. |
last_background_task_error_message |
nvarchar(max) | Сообщение об ошибке, если последняя задача обслуживания завершилась ошибкой. Значение NULL, если задача выполнена успешно. |
Замечания
Это представление возвращает сведения обо всех векторных индексах в текущей базе данных. Индексы векторов выполняют фоновое обслуживание для включения изменений DML (вставки, обновления, удаления). Столбец approximate_staleness_percent указывает, сколько изменений ожидается включение в структуру индекса.
Анализ approximate_staleness_percent
Столбец approximate_staleness_percent указывает, какой процент изменений данных еще не обработан задачей фонового обслуживания, которая сохраняет индекс вектора up-to-date. При вставке, обновлении или удалении строк в таблице с векторным индексом эти изменения не сразу включаются в структуру графа DiskANN. Вместо этого изменения помещаются в очередь и обрабатываются задачей фонового обслуживания. Процент устаревания возвращается к 0% по мере обработки невыполненной работы.
Например, если у вас есть таблица с 10 000 строками и векторным индексом, и вы вставляете 500 новых строк, то процент устаревших значений составляет примерно 5% (500 ожидающих изменений из 10500 общих строк). Когда фоновое обслуживание обрабатывает эти 500 вставок, процент устаревания снижается к нулю.
Влияние на запросы VECTOR_SEARCH
VECTOR_SEARCH использует текущее состояние графа DiskANN в сочетании с ожидающими изменениями, которые еще не были полностью включены. Это означает:
- Даже если устаревшие значения выше нуля, запросы
VECTOR_SEARCHпо-прежнему возвращают результаты и включают недавно вставленные или обновленные строки. - Однако алгоритм поиска не может использовать полную структуру графа для оптимального ранжирования до завершения фонового обслуживания.
- Точность ранжирования может быть сокращена. Оценки сходства и упорядочение могут быть менее оптимальными для строк, которые еще не полностью интегрированы в структуру индекса.
Качество поиска лучше всего, если все векторы правильно интегрированы в граф и процент устаревших значений равен нулю.
Интерпретация значений устаревших значений
Не существует универсального порогового значения для "высокой" устаревшей работы, так как она зависит от шаблона рабочей нагрузки. Используйте следующие рекомендации для интерпретации отображаемых значений:
- Во время пакетной загрузки: 20-30% устаревание, которое снижается до нуля в течение нескольких минут ожидается и нормально.
- Во время регулярных операций: 0-5% устаревшей нагрузки указывает, что фоновое обслуживание продолжается в соответствии с рабочей нагрузкой.
Проверьте работоспособность индекса, если вы столкнулись со следующими сценариями:
- Устойчивый высокий уровень устаревания: значения постоянно выше 10–15% во время регулярных операций предполагают, что фоновое обслуживание не может соответствовать скорости DML.
-
Сокращенный отзыв: вы заметили измеримое падение релевантности
VECTOR_SEARCHрезультатов. -
Сбои задач:
last_background_task_succeededзначение равно 0. Фоновый процесс сталкивается с ошибками и не может обновить индекс.
Когда перестроение векторного индекса
Рекомендуется перестроить векторный индекс при наблюдении за производительностью или снижением отзыва, а не исключительно на основе процента устаревших значений. К сценариям перестроения относятся следующие:
- Значительное снижение качества отзыва: векторный поиск возвращает меньше релевантных результатов, чем ожидалось
- Замена крупномасштабных данных: при замене большинства или всех внедрений (например, повторное внедрение с новой моделью)
Подробные рекомендации по сценариям качества данных и обслуживания см. в руководстве по качеству и обслуживанию данных для векторных индексов.
Отслеживайте эту метрику, чтобы понять шаблоны обслуживания индексов и определить индексы, требующие внимания.
Разрешения
Необходимо разрешение VIEW DATABASE STATE на базу данных.
Примеры
А. Мониторинг всех векторных индексов
Следующий запрос отслеживает все векторные индексы в текущей базе данных, показывая состояние устаревших и обслуживания.
SELECT
DB_NAME() AS database_name,
OBJECT_NAME(object_id) AS table_name,
index_id,
approximate_staleness_percent,
last_background_task_succeeded
FROM sys.dm_db_vector_indexes
ORDER BY approximate_staleness_percent DESC;
В. Определение индексов, требующих внимания
Следующий запрос находит векторные индексы с высокой устареванием или недавними сбоями обслуживания.
SELECT
OBJECT_NAME(object_id) AS table_name,
approximate_staleness_percent,
last_background_task_error_message
FROM sys.dm_db_vector_indexes
WHERE
approximate_staleness_percent > 15.0 -- Example value, adjust based on your workload
OR last_background_task_succeeded = 0 -- Recent failure
ORDER BY approximate_staleness_percent DESC;