本文へスキップ

SQLite 3.54.0が4%高速に、Windows XPのサポートを終了

SQLite(エスキューライト)3.54.0は約4%速く動作します。sqlite3_analyzerに代わるdiskused()関数を追加し、CLIのデフォルトを変更し、Windows XPのサポートを終了しました。

著者 Tech AI Wire Team

3 分で読めます

SQLiteのリリースログのページ「SQLite Release 3.54.0 On 2026-10-09」のスクリーンショット。CLIの機能強化が一覧表示されている。

数字で見る

faster than the previous release, in CPU cycles
~4%
faster than SQLite 3.51.0 a year ago
~7.5%
now the oldest supported Windows version
Vista

SQLite 3.54.0は2026年10月9日にリリースされ、前のリリースより約4%速く動作します。SQLiteは、スマートフォン、ブラウザー、そして数えきれないほどのアプリに組み込まれている小さなデータベースエンジンです。そのため、わずかな速度の向上でも、非常に多くのデバイスに届きます。今回のリリースでは、コマンドラインツールのいくつかのデフォルトも変わり、Windows XPのサポートも終了します。Linux Compatibleによると、API、SQL構文、ファイル形式は後方互換性を保っています。

どれくらい速くなったのか

リリースノートには、2つの数字が載っています。

  • 前のリリースより約4%速い
  • 1年前にリリースされたバージョン3.51.0より約7.5%速い

SQLiteは、Linux x64上のvalgrindでspeedtest1ベンチマークを実行し、CPUサイクルを数えることで速度を測っています。リリースノートは、結果がワークロード、ビルドオプション、CPU、コンパイラー、オペレーティングシステムによって異なると注意しています。

向上の多くは、クエリプランナーによるものです。クエリプランナーは、各クエリをどう実行するかを決める部分です。

  • 式インデックスを持つテーブルへのUPDATEは、インデックス対象の値が変わっていない場合、そのインデックスをスキップするようになりました。
  • x OR TRUEやx OR FALSEのような式の扱いが改善されました。
  • INの右側にあるSELECTでは、DISTINCTが無視されます。そこでは結果に違いが出ないためです。
  • LIMIT 1付きのUNIONが速くなり、使うメモリも減りました。

新しい関数と制限

SQLite 3.54.0では、開発者向けの新しいツールがいくつか追加されます。

追加されたもの機能
diskused()ディスク使用量を報告するオプションの拡張機能です。非推奨のsqlite3_analyzerに代わります
%Jと%jJSON文字列リテラル用の、printf()とformat()の新しい変換指定
sqlite3_result_str()新しいCインターフェース
sqlite3_incomplete()新しいCインターフェース
weekday -Nとend of日付と時刻の新しい修飾子
SQLITE_LIMIT_SCHEMAsqlite3_limit()の新しいカテゴリー
SQLITE_LIMIT_TRIGGER_STEPSsqlite3_limit()の新しいカテゴリー

SQLiteは、システムが対応している場合、一時ファイルにO_TMPFILEを使うようになりました。また、ALTER TABLEは、ROWID、ROWID、OIDという名前の列の追加、削除、名前変更を拒否するようになりました。

セキュリティに関係する変更が1つあります。オーソライザーは、SQLの操作を承認またはブロックするコールバックです。これが、CREATE TABLEのDEFAULT句にあるSQL関数に対しても実行されるようになりました。テーブルの作成時とデフォルト値の使用時には実行されますが、データベースを開く際にスキーマが読み込まれるときには実行されません。

コマンドラインの変更

sqlite3シェルにはいくつかの変更があり、その一部はデフォルトの動作を変えます。

  • プロンプトは環境変数SQLITE_PS1とSQLITE_PS2で設定でき、デフォルトのプロンプトはNO_COLORに従います。
  • 列形式のモードでは、クエリが行を1つも返さない場合でも列見出しが表示されるようになりました。
  • .modeに--rowcount on、--ifmt、--fpfmtが加わり、--titles alwaysがデフォルトになりました。
  • goまたは/だけを含む行は、文を終了しなくなりました。ただし、SQLiteを-DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR付きでビルドした場合は除きます。
  • 新しい.diskusedコマンドは、diskused()関数を使います。

Windows XPのサポート終了

SQLiteは、Windows CEを含め、Windows XP以前をサポートしなくなりました。2007年ごろのWindows Vistaが、新たな最低要件です。Windowsでは、一部の内部ロックで、より新しいWindowsの機能であるSlim Reader/Writer Locksが使われるようになりました。UWPとWebUIのアプリは、-DSQLITE_UWP=1付きでビルドする必要があります。Linux、macOS、BSD、その他のUnix系システムは影響を受けません。

古いWindowsのサポートを削っているのは、SQLiteだけではありません。今月初めには、Rust 1.100が32ビットWindows向けのコンパイラーの提供を終了しました。

開発者にとっての意味

  • 速度のためにアップグレードすること。 CPUサイクルで4%の向上は、ほとんどのアプリにとって無償で得られます。結果はワークロードによって変わるので、自分でベンチマークを実行してください。
  • CLIを使うスクリプトを確認すること。 結果が空でも見出しが表示されるようになり、goや/は文を終了しなくなりました。sqlite3の出力を解析するスクリプトは、修正が必要になるかもしれません。
  • sqlite3_analyzerを置き換えること。 これは非推奨です。ディスク使用量のレポートは、.diskusedまたはdiskused()関数に移してください。
  • ALTER TABLEのマイグレーションを監査すること。 ROWID、ROWID、OIDという名前の列に触れるマイグレーションは、今後失敗します。
  • Windowsのターゲットを確認すること。 まだWindows XPやWindows CE向けに出荷しているなら、古いSQLiteを使い続けるか、それらのシステムへの対応をやめてください。
  • オーソライザーのコールバックを見直すこと。 アプリで使っている場合は、DEFAULT句がSQL関数を呼び出すテーブルをテストしてください。

ほとんどのアプリは安全にアップグレードできます。まず、CLIのスクリプトと古いマイグレーションをテストしてください。

出典

  1. SQLite Release 3.54.0 On 2026-10-09 - SQLite
  2. SQLite 3.54.0 Release: Faster Engine, New CLI Features, and Dropped Windows XP Support - Linux Compatible

関連記事