Important
이 기능은 베타 버전으로 제공됩니다. 작업 영역 관리자는 미리 보기 페이지에서 이 기능에 대한 액세스를 제어할 수 있습니다. Azure Databricks 미리 보기 관리를 참조하세요.
이 페이지에서는 프로젝트에 대한 가시성을 구성 한 후 Lakebase가 Unity 카탈로그 스키마에 쓰는 테이블을 설명합니다. Insights와 Genie는 이 동일한 데이터를 읽고 고유한 Unity 카탈로그에 배치되므로 Azure Databricks 도구를 사용하여 직접 쿼리할 수 있습니다.
메모
베타 기능입니다. 일반 공급 전에 테이블 및 열 이름이 변경될 수 있습니다.
캡처되는 항목
Lakebase는 숙련된 DBA가 살펴볼 만한 신호를 포착해, 내보낸 뒤 직접 쿼리할 수 있는 몇 개의 테이블에 담아 줍니다.
| 캡처된 내용 | 착지 위치 |
|---|---|
| 활성 세션 및 대기 이벤트 |
active_session_history, wait_event_counters |
| 쿼리 계획 및 쿼리별 실행 통계 |
plan_history, pg_stat_statements_counters |
| 스키마 변경: 변경된 내용, 시기 및 대상 | ddl_history |
| 데이터베이스 통계: 크기, 행 읽기 및 수정, 세션 수 |
database_counters, database_gauges |
| 컴퓨팅 리소스 사용량: CPU, 메모리, 캐시, 연결 |
compute_counters, compute_gauges |
| 실패의 원인이 된 오류를 포함한 Postgres 원시 로그 메시지 | postgres_logs |
Insights와 Genie는 이 데이터를 읽어 데이터베이스에서 실제로 일어난 일에 근거해 답변을 내고, 같은 테이블이 이미 만들어진 관측 가능 대시보드를 구동합니다. 이 페이지의 나머지 부분은 각 표의 모든 열을 기록합니다.
모든 테이블에 공통된 열
아래의 모든 표에는 행의 원본을 식별하는 다음 열이 포함되어 있습니다.
| Column | 유형 | Description |
|---|---|---|
project_id |
STRING | 행이 온 Lakebase 프로젝트입니다. |
branch_id |
STRING | 행이 온 분기입니다. |
endpoint_id |
STRING | 행이 온 컴퓨팅 엔드포인트입니다. |
compute_id |
STRING | 특정 컴퓨팅 인스턴스입니다. 컴퓨팅 크기가 0으로 조정되고 다시 시작될 때 변경됩니다. |
ts |
TIMESTAMP | 행이 기록된 경우입니다. |
compute_mode |
STRING | 당시의 컴퓨팅 모드(예: 읽기-쓰기 또는 읽기 전용)입니다. |
이름이 끝나는 _counters 테이블에는 행 값이 누적된 간격의 시작을 표시하는 열도 포함 previous_ts 됩니다. 이러한 값은 지정 시간 판독값이 아니라 해당 간격에 대한 누적 값입니다. 끝으로 끝나는 _gauges 테이블은 대신 지정 시간 판독값이며 , 이 값은 없습니다 previous_ts.
아래 표에는 이러한 공통 열을 초과하는 열만 나열되어 있습니다.
세션 활동
지속적으로 샘플링되는 모든 활성 백 엔드의 스냅샷입니다. 이는 AWS Performance Insights 또는 Oracle의 ASH(활성 세션 기록)와 동일한 패턴입니다. 세션이 대기를 비롯한 작업을 수행하는 경우 여기에 표시됩니다.
active_session_history
| Column | 유형 | Description |
|---|---|---|
sample_seq |
LONG | 일괄 처리 내에서 이 샘플의 서수 위치입니다. |
pid |
LONG | 백 엔드의 프로세스 ID입니다. |
datid |
LONG | 데이터베이스의 개체 ID입니다. |
userid |
LONG | 연결 역할의 개체 ID입니다. |
queryid |
LONG | 실행 중인 쿼리를 식별합니다. 에서 queryid일치 pg_stat_statements_counters |
wait_event_info |
LONG | 대기 이벤트의 내부 인코딩입니다. |
wait_event_type |
STRING | 대기 이벤트의 범주(예 Timeout : 또는 Lock.)입니다. |
wait_event |
STRING | 특정 대기 이벤트(예 PgSleep: .) |
backend_state |
LONG | 백 엔드의 상태(예: 활성 또는 유휴 상태)입니다. |
backend_type |
LONG | 백 엔드 프로세스의 형식입니다. |
xact_age_ms |
LONG | 현재 트랜잭션이 열린 기간입니다. |
query_age_ms |
LONG | 현재 쿼리가 실행된 기간입니다. |
blocking_pid |
LONG | 이 세션이 차단되는 세션의 PID(있는 경우)입니다. |
leader_pid |
LONG | 이 백 엔드가 병렬 작업자인 경우 병렬 쿼리 리더의 PID입니다. |
flags |
LONG | 내부 상태 플래그입니다. |
plan_fingerprint |
LONG | 의 특정 계획 셰이프에 대한 링크입니다 plan_history. |
appname_hash |
LONG | 연결 애플리케이션 이름의 해시입니다. |
대기 이벤트
대기 이벤트 수 및 시간을 집계하여 샘플별 보기를 보완합니다 active_session_history.
wait_event_counters
| Column | 유형 | Description |
|---|---|---|
wait_event_id |
LONG | 대기 이벤트의 내부 인코딩입니다. |
wait_class_name |
STRING | 대기 이벤트의 범주입니다. |
wait_event_name |
STRING | 특정 대기 이벤트입니다. |
wait_event_count |
LONG | 이 대기 이벤트가 간격에서 발생한 횟수입니다. |
wait_event_time |
DOUBLE | 간격 동안 이 대기 이벤트에 소요된 총 시간입니다. |
쿼리 계획
전체 계획 및 Neon 관련 스토리지 통계를 포함한 쿼리 계획의 실행별 레코드입니다. 가장 자세한 테이블이며 일반적으로 느린 쿼리 조사가 종료됩니다.
plan_history
| Column | 유형 | Description |
|---|---|---|
row_position |
LONG | 일괄 처리 내에서 이 행의 서수 위치입니다. |
analyze_enabled |
BOOLEAN | 계획에 예측뿐만 아니라 실제 실행 통계()EXPLAIN ANALYZE가 포함되는지 여부입니다. |
buffers_enabled |
BOOLEAN | 계획에 버퍼 사용 통계가 포함되는지 여부입니다. |
query_hash |
STRING | 쿼리 텍스트를 식별하는 해시입니다. |
queryid |
LONG | 쿼리를 식별합니다. 일치 queryid 항목 pg_stat_statements_counters 및 active_session_history. |
duration_ms |
DOUBLE | 쿼리를 실행하는 데 걸린 시간입니다. |
total_cost |
DOUBLE | 쿼리에 대한 플래너의 예상 비용입니다. |
plan_rows |
LONG | 플래너의 예상 행 수입니다. |
actual_rows |
LONG | 반환된 실제 행 수입니다. |
plan_fingerprint |
LONG | 이 특정 계획 셰이프를 식별합니다. 에서 plan_fingerprint일치 active_session_history |
lock_wait_time_ms |
DOUBLE | 잠금을 기다리는 데 소요된 시간입니다. |
planning_time_ms |
DOUBLE | 실행과는 별도로 쿼리를 계획하는 데 소요된 시간입니다. |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | 이 실행에 대한 공유 버퍼 캐시 작업입니다. |
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written |
LONG | 임시 테이블에 대한 로컬 버퍼 작업입니다. |
temp_blks_read / temp_blks_written |
LONG | 임시 파일 작업(예: 큰 정렬 또는 해시). |
neon_getpage_count |
LONG | pageserver로 전송된 페이지 요청 수입니다. |
neon_file_cache_hits |
LONG | pageserver 대신 로컬 파일 캐시에서 제공되는 페이지 수입니다. |
neon_getpage_wait_us |
LONG | pageerver 페이지 요청에서 대기하는 데 소요된 시간(마이크로초)입니다. |
backend_pid |
LONG | 이 쿼리를 실행한 백 엔드 프로세스 ID입니다. |
lock_wait_count |
LONG | 이 실행이 잠금에서 대기한 횟수입니다. |
userid / dbid |
LONG | 연결 역할 및 데이터베이스의 개체 ID입니다. |
query_text |
STRING | 쿼리 텍스트입니다. |
plan_json |
STRING | 전체 쿼리 계획(JSON)입니다. |
usename / datname |
STRING | 연결 역할 및 데이터베이스의 이름입니다. |
application_name / client_addr |
STRING | 연결 애플리케이션의 이름 및 클라이언트 주소입니다. |
wait_events |
STRING | 이 실행 중에 관찰된 이벤트를 대기합니다. |
parameters |
STRING | 쿼리에 사용되는 매개 변수(있는 경우)를 바인딩합니다. |
blocking_pids |
STRING | 이 실행을 차단한 세션의 PID(있는 경우)입니다. |
neon_branch_id / neon_endpoint_id / neon_timeline_id |
STRING | 분기, 엔드포인트 및 타임라인에 대한 내부 네온 식별자입니다. |
cpu_user_time_ms / cpu_sys_time_ms |
DOUBLE | 이 실행에 사용된 CPU 시간은 사용자 및 시스템 시간으로 분할됩니다. |
voluntary_csw / involuntary_csw |
LONG | 이 실행 중에 컨텍스트가 전환됩니다. |
trace_id / span_id / trace_flags / service_name |
줄 / 줄 / 긴 / 줄 | 쿼리가 추적된 요청의 일부인 경우 OpenTelemetry 스타일 추적 식별자입니다. |
timeline_id |
LONG | 내부 타임라인 식별자입니다. |
truncated |
BOOLEAN | 이 행의 데이터(예: 대규모 계획)가 작성되기 전에 잘렸는지 여부입니다. |
쿼리 통계
표준 pg_stat_statements 확장에서 파생된 쿼리별 집계 통계입니다.
pg_stat_statements_counters
| Column | 유형 | Description |
|---|---|---|
userid / dbid |
LONG | 연결 역할 및 데이터베이스의 개체 ID입니다. |
queryid |
LONG | 쿼리를 식별합니다. 일치 queryid 항목 plan_history 및 active_session_history. |
toplevel |
BOOLEAN | PL/pgSQL 함수 또는 프로시저 내에 중첩된 행이 아닌 최상위 문에 대한 행인지 여부입니다. PL/pgSQL 제한 사항을 참조하세요. |
query |
STRING | 쿼리 텍스트입니다. |
calls |
LONG | 이 쿼리가 간격으로 실행된 횟수입니다. |
plans |
LONG | 이 쿼리가 간격으로 계획된 횟수입니다. |
rows |
LONG | 반환되거나 영향을 받는 총 행입니다. |
total_exec_time / total_plan_time |
DOUBLE | 간격으로 이 쿼리를 실행하고 계획하는 데 소요된 총 시간입니다. |
shared_blks_hit / shared_blks_read / shared_blks_dirtied / shared_blks_written |
LONG | 공유 버퍼 캐시 작업입니다. |
local_blks_hit / local_blks_read / local_blks_dirtied / local_blks_written |
LONG | 임시 테이블에 대한 로컬 버퍼 작업입니다. |
temp_blks_read / temp_blks_written |
LONG | 임시 파일 작업입니다. |
wal_bytes / wal_fpi / wal_records |
LONG | 이 쿼리에서 생성된 미리 쓰기 로그 볼륨입니다. |
jit_emission_count / jit_emission_time / jit_functions / jit_generation_time / jit_inlining_count / jit_inlining_time / jit_optimization_count / jit_optimization_time |
혼합 | JIT가 이 쿼리에 사용된 경우 JIT(Just-In-Time) 컴파일 통계입니다. |
스키마 변경
스키마 변경: 변경된 내용, 시기 및 대상 이는 Genie가 인시던트를 배포 또는 수동 편집 중에서 스키마 변경으로 다시 추적하기 위해 읽는 내용입니다.
ddl_history
| Column | 유형 | Description |
|---|---|---|
row_position |
LONG | 일괄 처리 내에서 이 행의 서수 위치입니다. |
command_tag |
STRING | DDL 명령의 형식입니다(예 ALTER TABLE: .). |
object_type / object_name |
STRING | 변경된 개체의 종류 및 이름입니다. |
schema_name |
STRING | 개체가 속한 Postgres 스키마입니다. |
query_text |
STRING | 전체 DDL 문입니다. |
duration_ms |
DOUBLE | DDL 문을 실행하는 데 걸린 시간. |
userid / usename |
LONG/STRING | 연결 역할의 개체 ID 및 이름입니다. |
application_name |
STRING | 연결 애플리케이션의 이름입니다. |
backend_pid |
LONG | 문을 실행한 백 엔드 프로세스 ID입니다. |
dbid |
LONG | 데이터베이스의 개체 ID입니다. |
search_path |
STRING | 당시 세션의 검색 경로입니다. |
ddl_json |
STRING | DDL 문의 구조화된 구문 분석 표현입니다. |
메모
DDL 캡처에는 실제 간격이 있습니다. 크기 조정에서 0으로 다시 시작하는 컴퓨팅을 중심으로 변경한 내용을 놓칠 수 있습니다. 스키마 변경이 발생했음을 알고 있더라도 여기에 표시되지 않는 것이 가장 가능성이 큰 이유입니다. 제한 사항을 참조하세요.
Postgres 로그
오류 뒤에 있는 특정 오류를 포함하여 원시 Postgres 로그 메시지입니다.
postgres_logs
| Column | 유형 | Description |
|---|---|---|
sample_seq |
LONG | 일괄 처리 내에서 이 행의 서수 위치입니다. |
elevel |
LONG | 내부 로그 수준 인코딩. |
severity |
STRING | 로그 심각도(예 ERRORLOG: |
sqlstate |
STRING | Postgres SQLSTATE 오류 코드(예 42703 : 정의되지 않은 열)입니다. |
backend_pid / leader_backend_pid |
LONG | 백 엔드 프로세스 ID 및 해당하는 경우 병렬 쿼리 리더의 PID입니다. |
userid / usename |
LONG/STRING | 연결 역할의 개체 ID 및 이름입니다. |
datid / datname |
LONG/STRING | 데이터베이스의 개체 ID 및 이름입니다. |
application_name / client_addr |
STRING | 연결 애플리케이션의 이름 및 클라이언트 주소입니다. |
schema_name / table_name / column_name / constraint_name / datatype_name |
STRING | Postgres에 있는 경우 오류에서 참조하는 스키마, 테이블, 열, 제약 조건 또는 데이터 형식입니다. |
funcname |
STRING | 해당하는 경우 오류가 발생한 함수입니다. |
filename / lineno |
끈 / 긴 | Postgres 원본 파일 및 오류가 발생한 줄입니다. |
message |
STRING | 로그 메시지 텍스트입니다. |
detail / hint / context |
STRING | Postgres에 추가 세부 정보, 제안된 수정 사항 및 오류 컨텍스트가 있습니다. |
internalquery |
STRING | 해당하는 경우 오류와 관련된 내부적으로 생성된 쿼리입니다. |
statement |
STRING | 이 로그 항목을 트리거한 문입니다. |
truncated_mask |
LONG | 쓰기 전에 잘린 필드(있는 경우)를 나타냅니다. |
메모
구조적 schema_name및 table_namecolumn_name 필드는 모든 오류 유형에 대해 채워지지 않습니다. 예를 들어 일반 "열이 존재하지 않음" 구문 분석 오류(SQLSTATE 42703예: 열 이름을 직접 지정하더라도 message 비워 둡니다.) 이러한 필드가 채워지는 것을 사용하지 마세요. 먼저 확인합니다 message .
컴퓨팅 메트릭
컴퓨팅 수준 리소스 사용: CPU, 메모리, 디스크 및 네트워크 I/O, 그리고 페이지 서버 앞에 있는 Lakebase의 컴퓨팅 쪽 캐시인 LFC(로컬 파일 캐시)입니다.
compute_counters
| Column | 유형 | Description |
|---|---|---|
backpressure_throttling_seconds |
DOUBLE | 스토리지 계층이 이 간격으로 쓰기를 제한하는 데 소요된 시간입니다. 0이 아닌 값은 쓰기 볼륨이 스토리지가 흡수할 수 있는 용량을 초과했음을 의미합니다. |
host_busiest_cpu_seconds / host_cpu_seconds |
DOUBLE | CPU 시간이 가장 많이 소요되고 코어가 가장 많이 소요됩니다. |
host_disk_read_bytes / host_disk_written_bytes |
DOUBLE | 디스크 I/O 볼륨. |
host_network_receive_bytes / host_network_transmit_bytes |
DOUBLE | 네트워크 I/O 볼륨. |
lfc_evictions / lfc_hits / lfc_misses / lfc_writes |
LONG | 이 간격에 대한 로컬 파일 캐시 작업입니다. |
replica_lfc_redo_evictions |
LONG | 이 컴퓨팅이 읽기 복제본인 경우 복제본 다시 실행으로 인한 로컬 파일 캐시 제거입니다. |
compute_gauges
| Column | 유형 | Description |
|---|---|---|
current_lsn |
LONG | 현재 미리 쓰기 로그 위치입니다. |
replica_wal_replay_lsn / replica_wal_receive_lsn |
LONG | 이 컴퓨팅이 읽기 복제본인 경우 WAL 재생 및 수신 위치입니다. |
max_connections |
LONG | 구성된 연결 제한입니다. |
lfc_working_set_size_5m / lfc_working_set_size_15m / lfc_working_set_size_60m |
LONG | 지난 5분, 15분, 60분 동안의 예상 작업 집합 크기입니다. |
lfc_size_limit / lfc_allocated / lfc_used |
LONG | 로컬 파일 캐시 용량 및 현재 사용. |
total_size_limit / total_size |
LONG | 전체 스토리지 용량 및 현재 사용량. |
replication_lag_bytes / replication_lag_time_ms |
LONG/DOUBLE | 이 컴퓨팅이 읽기 복제본인 경우 복제 지연입니다. |
host_logical_cpus / host_memory_total_bytes |
DOUBLE | 컴퓨팅의 프로비전된 CPU 및 메모리입니다. |
데이터베이스 메트릭
데이터베이스별 작업: 행 변경, 트랜잭션, 세션 및 진공 상태. 테이블 bloat 및 자동 진공 신호가 있는 위치입니다.
database_counters
| Column | 유형 | Description |
|---|---|---|
datid / datname |
LONG/STRING | 데이터베이스의 개체 ID 및 이름입니다. |
active_time_ms / idle_in_transaction_time_ms / session_time_ms |
DOUBLE | 활성, 열린 트랜잭션에서 유휴 상태, 전체 연결에 소요된 시간입니다. |
deadlocks |
LONG | 검색된 교착 상태의 수입니다. |
rows_deleted / rows_fetched / rows_inserted / rows_returned / rows_updated |
LONG | 간격에 대한 행 수준 작업입니다. |
sessions_abandoned / sessions_established / sessions_fatal / sessions_killed |
LONG | 세션 수명 주기 수입니다. |
shared_blks_hit / shared_blks_read |
LONG | 공유 버퍼 캐시 작업입니다. |
xact_commit / xact_rollback |
LONG | 커밋된 트랜잭션 및 롤백 트랜잭션 |
database_gauges
| Column | 유형 | Description |
|---|---|---|
datid / datname |
LONG/STRING | 데이터베이스의 개체 ID 및 이름입니다. |
numbackends |
LONG | 이 데이터베이스에 대한 현재 연결 수입니다. |
size |
LONG | 데이터베이스의 디스크 크기입니다. |
oldest_frozen_xid_age / oldest_mxid_age |
LONG | 가장 오래된 고정되지 않은 행의 트랜잭션 ID 및 multixact ID 기간입니다. 값 상승은 테이블 크기에서 bloat이 표시되기 전에 진공이 뒤처지는 초기 신호입니다. |
Limitations
Warning
애플리케이션을 연결하는 역할을 만드는 경우 SQL 문에 입력된 암호는 CREATE ROLE ... PASSWORD '...' 쿼리 또는 문 기록에 입력될 수 있습니다. 대신 UI, SDK, API, 또는 CLI를 통해 역할을 생성하세요. 이들은 서버 측에서 비밀번호를 생성하므로 클리어텍스트로 입력하지 않도록 하세요. UI는 생성된 비밀번호를 한 번 보여줍니다. SDK, API, CLI는 비밀번호를 반환하지 않으니 나중에 비밀번호를 받으세요.
비밀번호 획득 방법을 참조하세요.
베타 중에는 다음과 같은 제한 사항이 적용됩니다.
COPY작업은 현재 쿼리 계획 기록에 캡처되지 않습니다.PL/pgSQL 함수 또는 프로시저 내에서 실행되는 쿼리는 최상위 문으로 실행되지 않는 한 쿼리 수준 원격 분석에서 캡처되지 않습니다. Postgres의 자체 문 추적은 기본적으로 최상위 문만 계산합니다.
분기 및 엔드포인트는 "프로덕션"과 같은 표시 이름이 아니라 내부 ID(예:
br-odd-mud-y2icrn1h)로 내보낸 원격 분석 및 인사이트에 표시됩니다. 인사이트 또는 테이블 행이 참조하는 분기 또는 엔드포인트를 확인해야 하는 경우 Lakebase UI에서 ID를 상호 참조합니다.텔레메트리 수집을 활성화하는 GUC는 기존 컴퓨트에 자동으로 전파되지 않을 수 있습니다. 옵저버빌리티를 구성한 후에도 텔레메트리가 표시되지 않으면 프로젝트에 연결한 후 다음을 확인하세요.
SHOW neon_monitor.log_capture_enabled; SHOW databricks.o11y_exporter_enabled;둘 다
on를 반환해야 합니다. 둘 중 하나가 반환off되면 컴퓨팅 엔드포인트를 다시 시작합니다.
다음 단계
- 인사이트로 문제를 찾아 해결하세요: 이 데이터를 원시 행이 아닌 진단 자료로 표시하세요.
- 지니와 함께 조사하세요: 이 텔레메트리에 대해 자신의 말로 질문하세요.