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

1.概述

SQLITE_STMT扩展实现了提供别名的虚拟表,该提供有关与数据库连接关联的所有准备好的语句信息

SQLITE_STMT扩展名包括在合并中,但默认情况下处于禁用状态。使用SQLITE_ENABLE_STMTVTAB编译时选项启用SQLITE_STMT扩展。也可以在运行时加载SQLITE_STMT扩展,方法是使用https://sqlite.org/src/file/ext/misc/stmt.c上的源代码并将扩展编译为共享库或DLL,并按照说明进行操作。如何编译可加载的扩展

命令行shell的默认构建中启用了SQLITE_STMT扩展。

2.用法

SQLITE_STMT虚拟表是一个只读表,可以直接查询该表以访问有关当前数据库连接上所有准备好的语句的信息。例如:

SELECT * FROM sqlite_stmt;

可以在调用sqlite3_close()之前立即运行诸如上述的语句, 以确认所有准备好的语句已经 完成,并有助于识别和跟踪“泄漏”和错过了最终效果的准备好的语句。

SQLITE_STMT虚拟表也可以用于访问有关准备语句的性能信息,以帮助优化应用程序。例如,要找出从未使用过的准备好的语句正在使用多少内存,可以运行以下语句

从sqlite_stmt处选择sum(mem),运行= 0;

2.1。

由SQLITE_STMT虚拟表提供的列由假设的CREATE TABLE语句汇总,如下所示:

创建表sqlite_stmt(
  sql TEXT,-原始SQL文本
  ncol INT,-输出列数
  ro BOOLEAN,-对于“只读”语句为true
  busy BOOLEAN,-如果该语句当前正在运行,则为true
  nscan INT,-全扫描步骤数
  nsort INT,-排序操作数
  naidx INT,-自动索引插入的数量
  nstep INT,-字节码引擎步骤数
  reprep INT,-reprepare操作数
  运行INT,-此语句已运行的次数
  mem INT-此语句使用的堆内存
);

将来的版本可能会添加新的输出列,并可能更改旧列的顺序。下面提供了有关SQLITE_STMT虚拟表中各列的含义的更多详细信息: