小巧。快速。可靠。
三选二。
SQLITE_STMT 虚拟表

1. 概述

SQLITE_STMT 扩展实现了一个仅同名虚拟表,提供与数据库连接相关的所有预处理语句的信息。

SQLITE_STMT 扩展包含在合并文件中,但默认情况下是禁用的。使用SQLITE_ENABLE_STMTVTAB编译时选项启用 SQLITE_STMT 扩展。SQLITE_STMT 扩展也可以在运行时加载,方法是使用位于https://sqlite.ac.cn/src/file/ext/misc/stmt.c的源代码将扩展编译成共享库或 DLL,并按照有关如何编译可加载扩展的说明进行操作。

命令行 shell的默认版本中启用了 SQLITE_STMT 扩展。

2. 用法

SQLITE_STMT 虚拟表是一个只读表,可以直接查询以访问当前数据库连接上所有预处理语句的信息。例如

SELECT * FROM sqlite_stmt;

在调用sqlite3_close()之前立即运行上述语句,可以确认所有预处理语句都已完成,并有助于识别和追踪那些“泄漏”而未完成的预处理语句。

SQLITE_STMT 虚拟表还可以用于访问预处理语句的性能信息,以帮助优化应用程序。例如,要找出从未使用过的预处理语句使用了多少内存,可以运行

SELECT sum(mem) FROM sqlite_stmt WHERE run=0;

2.1.

SQLITE_STMT 虚拟表提供的列由此处显示的假设 CREATE TABLE 语句概述

CREATE TABLE sqlite_stmt(
  sql    TEXT,    -- Original SQL text
  ncol   INT,     -- Number of output columns
  ro     BOOLEAN, -- True for "read only" statements
  busy   BOOLEAN, -- True if the statement is current running
  nscan  INT,     -- Number of full-scan steps
  nsort  INT,     -- Number of sort operations
  naidx  INT,     -- Number of automatic index inserts
  nstep  INT,     -- Number of byte-code engine steps
  reprep INT,     -- Number of reprepare operations
  run    INT,     -- Number of times this statement has been run
  mem    INT      -- Heap memory used by this statement
);

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

此页面上次修改于2022-01-08 05:02:57 UTC