開源數據庫服務器,SQLite 3.8.11 發布
SQLite 3.8.11 發布,更新內容如下:
-
Added the experimental RBU extension. (experimental)
-
Added the experimental FTS5 extension. (experimental)
-
Added the sqlite3_value_dup() and sqlite3_value_free() interfaces.
-
Enhance the spellfix1 extension to support ON CONFLICT clauses.
-
The IS operator is now able to drive indexes.
-
Enhance the query planner to permit automatic indexing on FROM-clause subqueries that are implemented by co-routine.
-
Disallow the use of "rowid" in common table expressions.
-
Added the PRAGMA cell_size_check command for better and earlier detection of database file corruption.
-
Added the matchinfo 'b' flag to the matchinfo() function in FTS3.
-
Improved fuzz-testing of database files, with fixes for problems found.
-
Add the fuzzcheck test program and automatically run this program using both SQL and database test cases on "make test".
-
Added the SQLITE_MUTEX_STATIC_VFS1 static mutex and use it in the Windows VFS.
-
The sqlite3_profile() callback is invoked (by sqlite3_reset() or sqlite3_finalize()) for statements that did not run to completion.
-
Enhance the page cache so that it can preallocate a block of memory to use for the initial set page cache lines. Set the default preallocation to 100 pages. Yields about a 5% performance increase on common workloads.
-
Miscellaneous micro-optimizations result in 22.3% more work for the same number of CPU cycles relative to the previous release. SQLite now runs twice as fast as version 3.8.0 and three times as fast as version 3.3.9. (Measured using cachegrind on the speedtest1.c workload on Ubuntu 14.04 x64 with gcc 4.8.2 and -Os. Your performance may vary.)
-
Added the sqlite3_result_zeroblob64() and sqlite3_bind_zeroblob64()interfaces.
重要 bug 修復
-
Fix CREATE TABLE AS so that columns of type TEXT never end up holding an INT value. Ticket f2ad7de056ab1dc9200
-
Fix CREATE TABLE AS so that it does not leave NULL entries in the sqlite_master table if the SELECT statement on the right-hand side aborts with an error. Ticket 873cae2b6e25b
-
Fix the skip-scan optimization so that it works correctly when the OR optimization is used on WITHOUT ROWID tables. Ticket 8fd39115d8f46
-
Fix the sqlite3_memory_used() and sqlite3_memory_highwater() interfaces so that they actually do provide a 64-bit answer.
Hashes:
-
SQLITE_SOURCE_ID: "2015-07-27 13:49:41 b8e92227a469de677a66da62e4361f099c0b79d0"
-
SHA1 for sqlite3.c: 719f6891abcd9c459b5460b191d731cd12a3643e
SQLite是遵守ACID的關聯式數據庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域項目。
不像常見的客戶-服務器范例,SQLite引擎不是個程序與之通信的獨立進程,而是連接到程序中成為它的一個主要部分。所以主要的通信協議是在編程語言內的直接API調用。這在消耗總量、延遲時間和整體簡單性上有積極的作用。整個數據庫(定義、表、索引和數據本身)都在宿主主機上存儲在一個單一的文件中。它的簡單的設計是通過在開始一個事務的時候鎖定整個數據文件而完成的。
特征
庫實現了多數的SQL-92標準,包括事務,就是代表原子性、一致性、隔離性和持久性的(ACID),觸發器和多數的復雜查詢。不進行類型檢查。你可以把字符串插入到整數列中。例如,某些用戶發現這是使數據庫更加有用的創新,特別是與無類型的腳本語言一起使用的時候。其他用戶認為這是主要的缺點。
多個進程或線程可以訪問同一個數據而沒有問題。可以并行的滿足多個讀訪問。只有在其他訪問當前不被服務的時候才能滿足寫訪問;否則寫訪問失敗并帶有一個錯誤代碼(也可以在可配置的超時過期之后自動的重試)。
提供了叫做sqlite的一個獨立程序用來查詢和管理SQLite數據庫文件。 它也充當寫使用SQLite庫的應用的一個例子。
語言綁定
可以從C/C++程序中使用這個庫,還可以獲得對Tcl和一些其他腳本語言的綁定。
在CPAN的DBD::SQLite上有一個Perl的DBI/DBD模塊,它不是到SQLite的接口,而是包括整個SQLite數據庫引擎在其中并不需要任何額外的軟件。
還有一個Python模塊叫做PySQLite。
PHP從PHP5.0開始包含了SQLite,但是自5.1版之后開始成為一個延伸函式庫。SQLite能與PHP4一起工作但不包含在其中。
Rails2.0.3將缺省的數據庫配置改為了SQLite 3
SQLite管理客戶端
SQLite亦可以作為桌面數據庫使用,以下為第三方SQLite的GUI軟件。例如,
-
SQLiteMan,使用QT開發的一個SQLite客戶端,支持多語言、跨平臺。SQLiteMan
-
SQLite Manager, 以 火狐瀏覽器的擴展形式提供的SQLite客戶端。
-
SQLite Database Browser, a graphical client to access SQLite databases
-
SqlPro SQL Client, another graphical client to work with SQLite databases