小巧、快速、可靠
任選三項
SQLITE_MEMSTAT 虛擬表格

1. 概觀

SQLITE_MEMSTAT 擴充套件實作一個同名虛擬表格,提供 SQL 存取權給sqlite3_status64()sqlite3_db_status() 介面。

SQLITE_STMT 擴充套件也可以在執行時期載入,方法是使用https://sqlite.dev.org.tw/src/file/ext/misc/memstat.c 的原始碼將擴充套件編譯成共用函式庫或 DLL,並遵循編譯可載入擴充套件的說明。

2. 用法

SQLITE_MEMSTAT 虛擬表格是一個唯讀表格,可查詢以確定 SQLite 目前執行個體的效能特徵(主要是正在使用的記憶體量)。SQLITE_MEMSTATE 表格基本上是 C 語言 API sqlite3_status64()sqlite3_db_status() 的包裝器。如果memstat.c 原始碼使用 -DSQLITE_ENABLE_ZIPVFS 選項編譯,則 SQLITE_MEMSTAT 也會執行一些檔案控制呼叫,以擷取關於ZIPVFS 子系統的記憶體使用資訊,如果該子系統已取得授權、安裝並正在使用中。

SQLITE_MEMSTAT 表格似乎有下列結構

CREATE TABLE sqlite_memstat(
  name TEXT,
  schema TEXT,
  value INT,
  hiwtr INT
);

SQLITE_MEMSTAT 表格的每一列都對應到對sqlite3_status64()sqlite3_db_status() 介面之一的單一呼叫。該列的 NAME 欄位識別傳遞給這些介面的「動詞」。例如,如果sqlite3_status64() 使用SQLITE_STATUS_MEMORY_USED 呼叫,則 NAME 欄位為「MEMORY_USED」。或者,如果sqlite3_db_status() 使用SQLITE_DBSTATUS_CACHE_USED 呼叫,則 NAME 欄位為「DB_CACHE_USED」。

SCHEMA 欄位為 NULL,除非在使用 sqlite3_file_control() 介面來查詢 ZIPVFS 後端時。由於這只會在 memstat.c 模組編譯時加上 -DSQLITE_ENABLE_ZIPVFS,而且在 ZIPVFS 使用中才會發生,因此 SCHEMA 通常為 NULL。

VALUE 和 HIWTR 欄位會報告測量項目的目前值和其「高水位標記」。高水位標記是測量項目曾經出現過的最高值,至少從上次重設後開始。SQLITE_MEMSTAT 虛擬表格並未提供重設高水位標記的機制。

根據查詢的參數,VALUE 或 HIWTR 標記測量項目之一可能會未定義。例如,只有高水位標記對 SQLITE_STATUS_MALLOC_SIZE 有意義,而只有目前值對 SQLITE_DBSTATUS_CACHE_USED 有意義。對於 VALUE 或 HIWTR 其中之一沒有意義的列,該值會回傳為 NULL。介面,加上初始

此頁面最後修改於 2022-01-08 05:02:57 UTC