小巧、快速、可靠。
三者选其二。
SQLITE_MEMSTAT 虚拟表

1. 概述

SQLITE_MEMSTAT 扩展实现了 仅同名虚拟表,可通过 SQL 访问 sqlite3_status64()sqlite3_db_status() 接口。

SQLITE_STMT 扩展也可以在运行时加载,方法是使用 https://sqlite.ac.cn/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