fe_locks
fe_locks
provides information about metadata locks in StarRocks FE.
The following fields are provided in fe_locks
:
Field | Description |
---|---|
lock_type | Type of the lock (e.g., "DATABASE"). |
lock_object | Object identifier that is locked (database name, table name, etc.). |
lock_mode | Lock mode. Valid values: EXCLUSIVE , SHARED . |
start_time | When the lock was acquired. |
hold_time_ms | Duration the lock has been held (in milliseconds). |
thread_info | JSON string containing thread information (threadId, threadName). |
granted | Whether the lock is currently granted. |
waiter_list | Comma-separated list of threads waiting for this lock. |
Lock Modesβ
- EXCLUSIVE: Only one thread can hold this lock at a time.
- SHARED: Multiple threads can hold this lock simultaneously.
Lock Typesβ
- DATABASE: Database-level locks (when
lock_manager_enabled
is false). - TABLE: Table-level locks (when
lock_manager_enabled
is true).
Configurationβ
The behavior of fe_locks
depends on the lock_manager_enabled
configuration parameter:
- When
lock_manager_enabled = true
: Uses the new Lock Manager for centralized lock management with table-level granularity. - When
lock_manager_enabled = false
: Uses traditional database-level locking.
Examplesβ
Find long-running locksβ
SELECT lock_object, lock_mode, hold_time_ms, thread_info
FROM information_schema.fe_locks
WHERE hold_time_ms > 10000 -- Locks held for more than 10 seconds
ORDER BY hold_time_ms DESC;
Check for lock contentionβ
SELECT lock_object, COUNT(*) as lock_count
FROM information_schema.fe_locks
WHERE granted = true
GROUP BY lock_object
HAVING COUNT(*) > 1;
Find waiting threadsβ
SELECT lock_object, waiter_list
FROM information_schema.fe_locks
WHERE waiter_list != '';
Notesβ
- Querying
fe_locks
requiresOPERATE
privilege. - The view provides real-time information but may impact performance on systems with high lock activity.
- Use appropriate WHERE clauses to filter results when dealing with large numbers of locks.