RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.
Виртуальная таблица SQLITE_STMT

1. Обзор

Расширение SQLITE_STMT осуществляет одноименную виртуальную таблицу, которая предоставляет информацию обо всех подготовленных запросах, связанных с соединением с базой данных.

Расширение SQLITE_STMT включено в объединение, хотя это отключено по умолчанию. Используйте выбор времени компиляции SQLITE_ENABLE_STMTVTAB, чтобы позволить расширение SQLITE_STMT. Расширение SQLITE_STMT может также быть загружено во время выполнения, собрав расширение в общую библиотеку или DLL с использованием исходного кода в https://sqlite.org/src/file/ext/misc/stmt.c и следуя инструкциям, как собрать загружаемые расширения.

Расширение 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 обеспечивается ниже:

  • sql: оригинальный код на SQL подготовленного запроса. Если подготовленный запрос собран, используя sqlite3_prepare(), код на SQL, возможно, не был сохранен, в этом случае этой колонкой будет NULL.

  • ncol: количество колонок в наборе результатов запроса. Для запросов DML у этой колонки есть значение 0.

  • ro: Столбец "read only". Эта колонка true (не 0), если SQL-оператор это запрос и false (0), если это запрос DML.

  • busy: Поле true, если подготовленный запрос в настоящее время выполняется. Другими словами, эта область true, если sqlite3_step() вызван для on the подготовленного запроса по крайней мере однажды, но sqlite3_reset() еще не вызвали.

  • nscan: Эта область указывает число раз, что bytecode прошел таблицу как часть полного сканирования таблицы. Большое значение этого поля может указать на возможность улучшить работу, добавив индекс. Эта область эквивалентна SQLITE_STMTSTATUS_FULLSCAN_STEP.

  • nsort: Это число раз, которое bytecode engine должен был сортировать. Положительное значение в этой области может указать на возможность улучшить работу, добавив индекс, который заставит результаты запроса появляться естественно в желаемом порядке. Эта область эквивалентна SQLITE_STMTSTATUS_SORT.

  • naidx: Это количество строк, которые были вставлены в автоматические индексы. Положительное значение в этой области может указать на возможность улучшить работу, добавив названный индекс, который занимает место автоматического индекса. Эта область эквивалентна SQLITE_STMTSTATUS_AUTOINDEX.

  • nstep: Количество операций bytecode, которые были выполнены для подготовленного запроса. Эта область может использоваться в качестве источника сведений о том, сколько процессорного времени использует запрос. Эта область эквивалентна SQLITE_STMTSTATUS_VM_STEP.

  • reprep: Это число раз, которое запрос должен был быть повторно подготовлен из-за изменений схемы или привязки параметра. Эта область эквивалентна SQLITE_STMTSTATUS_REPREPARE.

  • run: Эта область указывает число раз выполнения запроса. Эта область эквивалентна SQLITE_STMTSTATUS_RUN.

  • mem: Число байтов хранения кучи, используемых подготовленным запросом. Эта область эквивалентна SQLITE_STMTSTATUS_MEMUSED.