Small. Fast. Reliable.
Choose any three.
SQLITE_MEMSTAT虚拟表

1.概述

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()的包装。如果使用-DSQLITE_ENABLE_ZIPVFS选项编译了 memstat.c源文件,则SQLITE_MEMSTAT还将执行一些文件控制调用,以提取有关ZIPVFS子系统的内存使用信息 (如果该子系统已获得许可,已安装并正在使用)。

SQLITE_MEMSTAT表似乎具有以下架构:

创建表sqlite_memstat(
  名称TEXT,
  模式TEXT,
  值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后端的情况除外。由于这只是发生在memstat.c模块编译-DSQLITE_ENABLE_ZIPVFS当 ZIPVFS在使用中,模式通常为NULL。

VALUE和HIWTR列报告该度量的当前值及其“高水位线”。高水位标记是至少从上次重置以来测量中所见的最高值。SQLITE_MEMSTAT虚拟表不提供用于重置高水位线的机制。

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