SQLITE_MEMSTAT 虚拟表

、概述

SQLITE_MEMSTAT 扩展实现了一个同名虚拟表,它提供对sqlite3_status64()sqlite3_db_status()接口 的 SQL 访问。

SQLITE_STMT 扩展也可以在运行时加载,方法是使用https://sqlite.org/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 列标识了哪个“动词”被传递给了那些接口。例如,如果使用SQLITE_STATUS_MEMORY_USED调用 sqlite3_status64(),则 NAME 列为“MEMORY_USED”。或者,如果使用SQLITE_DBSTATUS_CACHE_USED调用sqlite3_db_status(),则 NAME 列为“DB_CACHE_USED”。

SCHEMA 列为 NULL,但使用sqlite3_file_control() 接口询问 ZIPVFS 后端的情况除外。因为这只发生在使用 -DSQLITE_ENABLE_ZIPVFS 编译 memstat.c 模块并且使用 ZIPVFS 时 SCHEMA 通常为 NULL。

VALUE 和 HIWTR 列报告度量的当前值及其“高水位线”。高水位线是测量的最高值,至少自上次重置以来是这样。SQLITE_MEMSTAT 虚拟表不提供重置高水位线的机制。

根据正在询问的参数,VALUE 或 HIWTR 标记测量之一可能未定义。例如,只有高水位线对SQLITE_STATUS_MALLOC_SIZE有意义,只有当前值对SQLITE_DBSTATUS_CACHE_USED有意义。对于其中一个或另一个 VALUE 或 HIWTR 没有意义的行,该值返回为 NULL。接口,与初始