联合优网祝大家新年快乐,万事如意,Happy New Year!
因专注所以专业
我们一直在努力

SQLite v3.15.0 正式版- SQLite 数据库

SQLite是一个可实现独立、无服务器、零配置、事务性SQL数据库引擎的软件库”。这句话中的关键要素都围绕着“库”这一名词。与使用客户端程序集向服务器发送请求以供分析和执行的 SQL Server 不同的是,SQLite 完全驻留在客户端进程中,这使之成为一种“嵌入式”数据库。 在使用期间,SQLite 数据库的运行空间是一个存储在客户端文件系统的某一位置中的单个文件,并且安装空间通常也相当小。

SQLite v3.15.0 正式版- SQLite 数据库

尽管如此,SQLite 数据库的功能却是极其丰富的,因为它支持大部分 SQL-92 规范,只是去除了 RIGHT 和 FULL OUTER JOIN、ALTER TABLE、某一触发器支持、GRANT/REVOKE 以及写入 VIEW 等几项内容(更详细的说明请参见 SQLite 网站)。 令人印象深刻的是支持的功能数量,包括事务和各种数据类型。 虽然不加修改就将 SQL Server 数据库方案全盘迁移到 SQLite 是不足为信的,但有一点是合乎情理的,即在迁移非常简单(即未利用 SQL Server 特定的类型或功能)的方案时几乎不会遇到什么麻烦。 这使 SQLite 十分适合只需“轻型 SQL”的情形。

各部分的功能为:

接口

虽然也有部分实现散落在其他文件夹中以便可以访问到他们所需的数据结构,但大部分的公共接口SQLite库的方法是在main.c,legacy.c以及vdbeapi.c中实现的。同时,为避免与其他软件命名冲突,SQLite的所有外部符号都以sqlite3前缀开始。

标记生成器

当要执行一个包含SQL语句的字符串,接口将该字符串符号传给标记生成器。标记生成器的工作就是要打破原来的字符串成标记,并将这些标记传递给解析器。

解析器

解析器是一块基于标记内容的令牌。SQLite的解析器由 Lemon LALR(1)语法解析器生成,Lemon LALR(1)语法解析器与YACC / BISON,做同样的工作,但它使用了不同的输入语法,使得不容易出错,与此同时,Lemon还生成一个解析器,这是可重入和线程安全的。并且,Lemon定义了非终端的析构函数的概念,因此它不会泄露内存时遇到语法错误。

代码生成器

当解析器组装成完整的SQL语句的令牌后,它会调用代码生成器来生成虚拟机代码(SQL语句请求)。

虚拟机

由代码生成器生成的程序是由虚拟机执行。在虚拟机实现一个专门设计的操作数据库文件的摘要的计算引擎,另外,虚拟机具有用于中间存储栈。每个指令包含操作码和最多三个额外的操作数。

B-树

SQLite数据库保持在磁盘上发现btree.c源文件使用一个B-tree实现。一个单独的B-树是用于在数据库中的每个表和索引。所有的B树存储在同一个磁盘文件中。文件格式的详细信息被记录在一个大的评论在btree.c的开头。

页面缓存

B-树的模块要求在固定大小的块从磁盘信息。缺省块大小为1024字节,但也可能在512和65536字节之间。页面缓存负责,读,写和缓存这些块。页面缓存还提供了回滚和原子提交的抽象和保护锁定的数据库文件。B-树的驱动程序请求特定页面的页面缓存页面缓存和通知,当它想修改页面或提交或回滚的变化。页面缓存确保的要求迅速处理,安全,有效地处理所有繁琐的细节。

OS界面

为了提供POSIX和Win32的操作系统之间的可移植性,SQLite使用一个抽象层与操作系统的接口,即OS界面。

工具代码

工具代码的主要工作是:内存分配、不区分大小写比较、维护符号映射表、Unicode转换、打印以及随机数发生器。

测试代码

如果算上回归测试脚本中,超过半数的代码经过了基于的SQLite库的专门测试。

3.15.0 更新记录;
Added support for row values.
Allow deterministic SQL functions in the WHERE clause of a partial index.
Added the “modeof=filename” URI parameter on the unix VFS
Added support for SQLITE_DBCONFIG_MAINDBNAME.
Added the ability to VACUUM an ATTACH-ed database.
Enhancements to the command-line shell:
Add the “.testcase” and “.check” dot-commands.
Added the –new option to the “.open” dot-command, causing any prior content in the database to be purged prior to opening.
Enhance the fts5vocab virtual table to handle “ORDER BY term” efficiently.
Miscellaneous micro-optimizations reduce CPU usage by more than 7% on common workloads. Most optimization in this release has been on the front-end (sqlite3_prepare_v2()).
Bug Fixes:
The multiply operator now correctly detects 64-bit integer overflow and promotes to floating point in all corner-cases. Fix for ticket 1ec41379c9c1e400.
Correct handling of columns with redundant unique indexes when those columns are used on the LHS of an IN operator. Fix for ticket 0eab1ac759.
Skip NULL entries on range queries in indexes on expressions. Fix for ticket 4baa46491212947.
Ensure that the AUTOINCREMENT counters in the sqlite_sequence table are initialized doing “Xfer Optimization” on “INSERT … SELECT” statements. Fix for ticket 7b3328086a5c116c.
Make sure the ORDER BY LIMIT optimization (from check-in 559733b09e) works with IN operators on INTEGER PRIMARY KEYs. Fix for ticket 96c1454c
Hashes:
SQLITE_SOURCE_ID: “2016-10-14 102030 707875582fcba352b4906a595ad89198d84711d8”
SHA1 for sqlite3.c: fba106f8f6493c66eeed08a2dfff0907de54ae76

软件下载地址:

http://www.sqlite.org/download.html

赞(0) 打赏
转载请注明出处:联合优网 » SQLite v3.15.0 正式版- SQLite 数据库
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

立即登录   我要注册

如果文章对您有帮助,请打赏一下作者吧,感谢您!

支付宝扫一扫打赏

微信扫一扫打赏

请通过支付宝、微信 APP 扫一扫,海外读者可使用 PayPal 打赏
使用 PayPal 打赏