Перейти к основному содержимому
Версия: 2.0.x

fe_locks

fe_locks предоставляет информацию о блокировках метаданных в Selena FE.

В fe_locks предоставляются следующие поля:

ПолеОписание
lock_typeТип блокировки (например, "DATABASE").
lock_objectИдентификатор объекта, который заблокирован (имя базы данных, имя таблицы и т.д.).
lock_modeРежим блокировки. Допустимые значения: EXCLUSIVE, SHARED.
start_timeКогда была получена блокировка.
hold_time_msПродолжительность удержания блокировки (в миллисекундах).
thread_infoJSON-строка, содержащая информацию о потоке (threadId, threadName).
grantedПолучена ли блокировка в настоящее время.
waiter_listСписок потоков, ожидающих эту блокировку, разделенный запятыми.

Режимы блокировки

  • EXCLUSIVE: Только один поток может удерживать эту блокировку одновременно.
  • SHARED: Несколько потоков могут удерживать эту блокировку одновременно.

Типы блокировок

  • DATABASE: Блокировки на уровне базы данных (когда lock_manager_enabled установлен в false).
  • TABLE: Блокировки на уровне таблицы (когда lock_manager_enabled установлен в true).

Конфигурация

Поведение fe_locks зависит от параметра конфигурации lock_manager_enabled:

  • Когда lock_manager_enabled = true: Использует новый Lock Manager для централизованного управления блокировками с детализацией на уровне таблиц.
  • Когда lock_manager_enabled = false: Использует традиционные блокировки на уровне базы данных.

Примеры

Поиск долго выполняющихся блокировок

SELECT lock_object, lock_mode, hold_time_ms, thread_info
FROM information_schema.fe_locks
WHERE hold_time_ms > 10000 -- Блокировки, удерживаемые более 10 секунд
ORDER BY hold_time_ms DESC;

Проверка конкуренции за блокировки

SELECT lock_object, COUNT(*) as lock_count
FROM information_schema.fe_locks
WHERE granted = true
GROUP BY lock_object
HAVING COUNT(*) > 1;

Поиск ожидающих потоков

SELECT lock_object, waiter_list
FROM information_schema.fe_locks
WHERE waiter_list != '';

Примечания

  • Запрос fe_locks требует привилегию OPERATE.
  • Представление предоставляет информацию в реальном времени, но может влиять на производительность систем с высокой активностью блокировок.
  • Используйте соответствующие предложения WHERE для фильтрации результатов при работе с большим количеством блокировок.