OceanBase (g)v$sql_audit 介紹

2021-06-30 11:43 更新

(g)v$sql_audit 是全局 SQL 審計表,可以用來查看每次請求客戶端來源、執(zhí)行服務(wù)器信息、執(zhí)行狀態(tài)信息、等待事件以及執(zhí)行各階段耗時等。

sql_audit 相關(guān)設(shè)置

  • 設(shè)置 sql_audit 使用開關(guān)。

    obclient>ALTER SYSTEM SET enable_sql_audit = true;
    /*開啟 sql_audit*/
    
    obclient>ALTER SYSTEM SET enable_sql_audit = false;
    /*關(guān)閉 sql_audit*/
  • 設(shè)置 sql_audit 內(nèi)存上限。默認(rèn)內(nèi)存上限為 3 G,可設(shè)置范圍為 [64M,+∞]。

    obclient>ALTER SYSTEM SET sql_audit_memory_limit = '3G';

sql_audit 淘汰機(jī)制

  • sql_audit 每隔 1s 會檢測后臺任務(wù)并根據(jù)以下標(biāo)準(zhǔn)決定是否淘汰:

    • sql_audit 內(nèi)存最大可使用上限為 avail_mem_limit = min (OBServer 可使用內(nèi)存 *10%sql_audit_memory_limit)。

      • 當(dāng) avail_mem_limit 在 [64M, 100M] 范圍內(nèi)時, 內(nèi)存使用達(dá)到 avail_mem_limit-20M 時觸發(fā)淘汰。

      • 當(dāng) avail_mem_limit 在 [100M, 5G] 范圍內(nèi)時, 內(nèi)存使用達(dá)到 availmem_limit*0.8 時觸發(fā)淘汰。

      • 當(dāng) avail_mem_limit 在 [5G, +∞)范圍內(nèi)時, 內(nèi)存使用達(dá)到 availmem_limit-1G 時觸發(fā)淘汰。

    • 當(dāng) sql_audidt 記錄數(shù)超過 900 萬條時,觸發(fā)淘汰。

  • sql_audit 根據(jù)以下標(biāo)準(zhǔn)決定是否停止淘汰:

    • 如果是達(dá)到內(nèi)存上限觸發(fā)淘汰則:

      • 當(dāng) avail_mem_limit 在 [64M, 100M] 時, 內(nèi)存使用淘汰到 avail_mem_limit-40M 時停止淘汰。

      • 當(dāng) avail_mem_limit 在 [100M, 5G] 時, 內(nèi)存使用淘汰到 availmem_limit*0.6 時停止淘汰。

      • 當(dāng) avail_mem_limit 在 [5G, +∞] 時, 內(nèi)存使用淘汰到 availmem_limit-2G 時停止淘汰。

    • 如果是達(dá)到記錄數(shù)上限觸發(fā)的淘汰則淘汰到 800 萬行記錄時停止淘汰。

sql_audit 字段解釋

字段名稱

類型

描述

SVR_IP

varchar(32)

IP 地址

SVR_PORT

bigint(20)

端口號

REQUEST_ID

bigint(20)

請求的 ID 號

TRACE_ID

varchar(128)

這條語句的 trace ID

CLIENT_IP

varchar(32)

發(fā)送請求的 client IP

CLIENT_PORT

bigint(20)

發(fā)送請求的 client port

TENANT_ID

bigint(20)

發(fā)送請求的租戶 ID

TENANT_NAME

varchar(64)

發(fā)送請求的租戶名稱

USER_ID

bigint(20)

發(fā)送請求的用戶 ID

USER_NAME

varchar(64)

發(fā)送請求的用戶名稱

SQL_ID

varchar(32)

這條 SQL 的 ID

QUERY_SQL

varchar(32768)

實際的 SQL 語句

PLAN_ID

bigint(20)

執(zhí)行計劃 ID

AFFECTED_ROWS

bigint(20)

影響行數(shù)

RETURN_ROWS

bigint(20)

返回行數(shù)

PARTITION_CNT

bigint(20)

該請求涉及的分區(qū)數(shù)

RET_CODE

bigint(20)

執(zhí)行結(jié)果返回碼

EVENT

varchar(64)

最長等待事件名稱

P1TEXT

varchar(64)

等待事件參數(shù) 1

P1

bigint(20) unsigned

等待事件參數(shù) 1 的值

P2TEXT

varchar(64)

等待事件參數(shù) 2

P2

bigint(20) unsigned

等待事件參數(shù) 2 的值

P3TEXT

varchar(64)

等待事件參數(shù) 3

P3

bigint(20) unsigned

等待事件參數(shù) 3 的值

LEVEL

bigint(20)

等待事件的 level 級別

WAIT_CLASS_ID

bigint(20)

等待事件所屬的 class ID

WAIT_CLASS#

bigint(20)

等待事件所屬的 class 的下標(biāo)

WAIT_CLASS

varchar(64)

等待事件所屬的 class 名稱

STATE

varchar(19)

等待事件的狀態(tài)

WAIT_TIME_MICRO

bigint(20)

該等待事件所等待的時間(微秒)

TOTAL_WAIT_TIME_MICRO

bigint(20)

執(zhí)行過程所有等待的總時間(微秒)

TOTAL_WAITS

bigint(20)

執(zhí)行過程總等待的次數(shù)

RPC_COUNT

bigint(20)

發(fā)送 RPC 個數(shù)

PLAN_TYPE

bigint(20)

執(zhí)行計劃類型(local/ remote/distribute)

IS_INNER_SQL

tinyint(4)

是否為內(nèi)部 SQL 請求

IS_EXECUTOR_RPC

tinyint(4)

當(dāng)前請求是否為 RPC 請求

IS_HIT_PLAN

tinyint(4)

是否命中計劃緩存

REQUEST_TIME

bigint(20)

開始執(zhí)行時間點(diǎn)

ELAPSED_TIME

bigint(20)

接收到請求到執(zhí)行結(jié)束消耗總時間

NET_TIME

bigint(20)

發(fā)送 RPC 到接收到請求時間

NET_WAIT_TIME

bigint(20)

接收到請求到進(jìn)入隊列時間

QUEUE_TIME

bigint(20)

請求在隊列等待事件

DECODE_TIME

bigint(20)

出隊列后 decode 時間

GET_PLAN_TIME

bigint(20)

開始執(zhí)行到獲得計劃時間

EXECUTE_TIME

bigint(20)

plan 執(zhí)行消耗時間

APPLICATION_WAIT_TIME

bigint(20) unsigned

所有 application 類事件的總時間

CONCURRENCY_WAIT_TIME

bigint(20) unsigned

所有 concurrency 類事件的總時間

USER_IO_WAIT_TIME

bigint(20) unsigned

所有 user_io 類事件的總時間

SCHEDULE_TIME

bigint(20) unsigned

所有 schedule 類事件的時間

ROW_CACHE_HIT

bigint(20)

行緩存命中次數(shù)

BLOOM_FILTER_CACHE_HIT

bigint(20)

bloom filter 緩存命中次數(shù)

BLOCK_CACHE_HIT

bigint(20)

塊緩存命中次數(shù)

BLOCK_INDEX_CACHE_HIT

bigint(20)

塊索引緩存命中次數(shù)

DISK_READS

bigint(20)

物理讀次數(shù)

EXECUTION_ID

bigint(20)

執(zhí)行 ID

SESSION_ID

bigint(20)

SESSION 的 ID

RETRY_CNT

bigint(20)

重試次數(shù)

TABLE_SCAN

tinyint(4)

判斷該請求是否含全表掃描

CONSISTENCY_LEVEL

bigint(20)

一致性級別

MEMSTORE_READ_ROW_COUNT

bigint(20)

MEMSTORE 中讀的行數(shù)

SSSTORE_READ_ROW_COUNT

bigint(20)

SSSTORE 中讀的行數(shù)

REQUEST_MEMORY_USED

bigint(20)

該請求消耗的內(nèi)存

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號