SQLite

软件截图:
SQLite
软件详细信息:
版本: 3.24.0 更新
上传日期: 22 Jun 18
许可: 免费
人气: 82

Rating: 5.0/5 (Total Votes: 1)

SQLite 是一个开源,多平台,免费和小型C库,它实现了一个自包含,可嵌入,事务性,无服务器和零配置的SQL数据库引擎。它是世界上最常用的SQL数据库引擎。


功能一目了然

主要功能包括支持隔离,原子,持久和一致的事务,SQL92实现,数据库文件可以在计算机之间自由共享,支持最大2 TB的数据库,支持千兆字节大小的blob和字符串,代码占用空间小,如以及易于使用且非常简单的API(应用程序编程接口)。

此外,SQLite不需要初始配置或进一步管理,允许开发人员将完整的数据库存储在单个跨平台磁盘文件中,这对于使用应用程序文件格式是完美的,没有外部依赖性,附带内置 - 在TCL(工具命令语言)绑定和全面的文档。

许多其他编程语言的绑定可单独提供。它的源代码经过充分评论,并附带一个独立的CLI(命令行界面)客户端,该客户端是根据偏移量设计的,用于管理SQLite数据库。


我可以用它做什么?

SQLite数据库引擎可用于任何目的,个人或商业用途。 SQLite的建议用途包括小工具数据库,网站数据库,企业RDBMS(关系数据库管理系统)的替代,以及应用程序文件格式。


引擎盖和支持的操作系统

SQLite发行版附带一个独立的命令行访问程序(sqlite),可用于管理SQLite数据库,并作为如何使用SQLite库的示例。它完全用ANSI-C编程语言编写。

支持的桌面操作系统包括GNU / Linux,Mac OS X和Microsoft Windows。支持的移动操作系统包括Android和iOS。它已成功通过32位和64位硬件平台进行测试,并且可轻松移植到其他操作系统。

此版本中的新功能

  • 此版本的亮点包括支持PostgreSQL风格的UPSERT和改进的性能,特别是对于ORDER BY LIMIT查询。

版本中的新功能

  • 充分利用F2FS文件系统中的原子写入功能,大大降低了事务开销。这当前需要SQLITE_ENABLE_BATCH_ATOMIC_WRITE编译时选项。
  • 允许ATTACH和DETACH命令在事务内部工作。
  • 如果PRIMARY KEY只包含一列,则允许WITHOUT ROWID虚拟表可写。
  • “fsync()”在WAL重置中写入标头后发生的情况现在使用检查点的同步设置。这意味着它将使用“fullfsync”。如果PRAGMA checkpoint_fullfsync设置为on,则在mac上。
  • sqlite3_sourceid()函数尝试检测源代码是否已从检查到版本控制的内容进行修改,如果有修改,则版本哈希的最后四个字符显示为“alt1”。或“alt2”。目标是检测意外和/或粗心编辑。伪造者可以破坏此功能。
  • 使用右侧的聚合查询改进了对CREATE TABLE AS语句的列名的取消引用。
  • 更少“stat()”系统调用由unix VFS发出。
  • 增强了LIKE优化,使其适用于ESCAPE子句。
  • 增强了PRAGMA integrity_check和PRAGMA quick_check,以检测以前缺少的模糊行损坏。同时更新两个编译指示,以便在遇到记录损坏时返回错误文本而不是SQLITE_CORRUPT。
  • 查询规划器现在更喜欢使用协同例程而不是使用查询拼合器优化来实现FROM子句子查询。可能不再禁用对子查询使用协同例程的支持。
  • 将有关!=,IS,IS NOT,NOT NULL和IS NULL约束的信息传递给虚拟表的xBestIndex方法。
  • 增强了CSV虚拟表,以便在缺少最终换行符时接受最后一行输入。
  • 删除很少使用的“划痕”。内存分配器。将其替换为SQLITE_CONFIG_SMALL_MALLOC配置设置,该设置为SQLite提供了一个提示,即尽可能避免大量内存分配。
  • 将swarm虚拟表添加到现有的联合虚拟表扩展名。
  • 添加了sqlite_dbpage虚拟表,用于提供对数据库文件页面的直接访问。源代码内置于合并中,并使用-DSQLITE_ENABLE_DBPAGE_VTAB编译时选项激活。
  • 添加新类型的fts5vocab虚拟表 - " instance" - 可以在尽可能低的水平上直接访问FTS5全文索引。
  • 删除对Windows VFS中rand_s()的调用,因为它在某些较旧的笔记本电脑上导致Firefox出现问题。
  • 命令行shell的src / shell.c源代码不再受版本控制。该文件现在作为构建过程的一部分生成。
  • 其他微优化可将CPU使用率降低约2.1%。
  • 错误修复:
  • 修复OSSFuzz发现的错误assert()语句。门票cb91bf4290c211d
  • 在sqlite3_result_pointer()中修复一个模糊的内存泄漏。机票7486aa54b968e9b
  • 在查询计划程序运行完毕之前,通过推迟架构重置来避免可能的释放后使用错误。门票be436a7f4587ce5
  • 如果COLLATE正确,则仅使用index-on-expressions来优化ORDER BY或GROUP BY。机票e20dd54ab0e4383
  • 修复当表达式索引中的表达式实际上是常量时出现的断言错误。门票aa98619ad08ddca
  • 修复PRAGMA reverse_unordered_selects之后可能发生的断言故障。门票cb91bf4290c211d
  • 修复在IN或EXISTS子查询中使用表值函数的查询可能发生的段错误。票务b899b6042f97f5
  • 在编译特定的可怕公用表表达式时修复潜在的整数溢出问题。这是OSSFuzz发现的另一个问题。办理登机手续6ee8cb6ae5。
  • 在查询损坏的数据库文件时修复潜在的越界读取,这是Google Project Zero的Natalie Silvanovich发现的问题。办理登机手续04925dee41a21f。

版本3.20.1中的新功能

  • 版本3.20.1补丁版本更改了sqlite3_result_pointer()界面中的两行代码,以修复罕见的内存泄漏。

版本3.9.2中的新功能

  • SQLite版本3.9.2是修补两个模糊错误的补丁版本。

版本3.8.9中的

新功能

  • 此版本中的新功能包括PRAGMA index_xinfo命令,sqlite3_status64()接口和命令行shell的“.dbinfo”命令。

版本3.8.8.2中

什么是新

  • 3.8.8.2修补程序版本修复了一个小问题:它确保sqlite3_wal_checkpoint(TRUNCATE)操作将始终截断预写日志,即使日志已被重置且不包含新内容。目前还不清楚这是错误修复还是新功能。
  • 这样的事情通常会进入下一个定期发布的版本,但是一个着名的SQLite用户需要匆忙进行更改,所以我们很乐意通过这个补丁来推迟发布。
  • 除非您确实需要sqlite3_wal_checkpoint(TRUNCATE)的增强行为,否则没有理由进行升级。

版本3.8.8.1中的新功能

  • 修复自3.8.4版以来出现的排序逻辑中的错误,该错误可能导致输出在包含ORDER BY子句,LIMIT子句且包含大约60个或更多列的查询中以错误的顺序出现结果集。票务f97c4637102a3ae72b79。
  • SQLITE_SOURCE_ID:“2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55”
  • SHA1 for sqlite3.c:33987fb50dcc09f1429a653d6b47672f5a96f19e

版本3.8.8中的

新功能

  • 新功能:
  • 添加了PRAGMA data_version命令,该命令可用于确定数据库文件是否已被其他进程修改。
  • 在sqlite3_wal_checkpoint_v2()界面中添加了SQLITE_CHECKPOINT_TRUNCATE选项,并对PRAGMA wal_checkpoint进行了相应的增强。
  • 添加了sqlite3_stmt_scanstatus()接口,仅在使用SQLITE_ENABLE_STMT_SCANSTATUS编译时可用。
  • 增强了sqlite3_table_column_metadata()以在WITHOUT ROWID表上正常工作,并在列名参数为NULL时检查是否存在表。现在,该接口默认包含在构建中,无需SQLITE_ENABLE_COLUMN_METADATA编译时选项。
  • 添加了SQLITE_ENABLE_API_ARMOR编译时选项。
  • 添加了SQLITE_REVERSE_UNORDERED_SELECTS编译时选项。
  • 添加了SQLITE_SORTER_PMASZ编译时选项和SQLITE_CONFIG_PMASZ启动时选项。
  • 为sqlite3_config()添加了SQLITE_CONFIG_PCACHE_HDRSZ选项,使应用程序更容易确定与SQLITE_CONFIG_PAGECACHE一起使用的适当内存量。
  • VALUES子句中的行数不再受SQLITE_LIMIT_COMPOUND_SELECT的限制。
  • 添加了eval.c可加载扩展,该扩展实现了一个递归评估SQL的eval()SQL函数。
  • 性能增强:
  • 减少平衡b树所涉及的memcpy()操作次数,使整体性能提升3.2%。
  • 跳过扫描优化的成本估算的改进。
  • 如果合适,自动索引优化现在能够生成部分索引。
  • 错误修复:
  • 通过在截断日志文件后立即调用fsync(),确保“PRAGMA journal_mode = TRUNCATE”断电后的持久性。
  • 查询计划程序现在可以识别LEFT JOIN右侧表中的任何列都可以为NULL,即使该列具有NOT NULL约束也是如此。在这些情况下,避免尝试优化NULL测试。修复了机票6f2222d550f5b0ee7ed。
  • 确保ORDER BY按行按升序排列,即使使用降序索引实现DISTINCT运算符也是如此。修复了机票c5ea805691bfc4204b1cb9e。
  • 修复在共享缓存模式下使用多个线程运行时可能在压力下发生的数据争用,其中某些线程正在打开和关闭连接。
  • 修复美国模糊lop发现的模糊崩溃错误。票a59ae93ee990a55。
  • 解决GCC优化器错误(对于Mac OS 10.7上的gcc 4.2.1)导致R-Tree扩展在使用-O3编译时计算错误结果。
  • 其他变化:
  • 禁止使用strchrnul()C库例程,除非使用-DHAVE_STRCHRNULL编译时选项专门启用它。
  • 对可能性(),可能()和不太可能的()SQL提示函数的有效性和准确性的改进。
  • SQLITE_SOURCE_ID:“2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf”
  • SHA1 for sqlite3.c:91aea4cc722371d58aae3d22e94d2a4165276905

版本3.8.7.4中的新功能

  • 此版本修复了添加3.8.7.3修补程序更改所需的互斥锁但却意外省略的情况。任何内部SQLite测试都不需要互斥锁,但Firefox没有它就会崩溃。添加了测试用例以确保永远不会再次错过互斥锁。

版本3.8.7.3中的新功能

  • 错误修复:确保缓存的KeyInfo对象(应用程序看不到的内部抽象)在共享缓存模式下运行时不会过时,并且经常关闭并重新打开某些数据库连接,同时保持同一共享缓存上的其他数据库连接处于打开状态不断。票务e4a18565a36884b00edf。
  • 错误修复:识别LEFT JOIN右侧表中的任何列都可以为NULL,即使该列具有NOT NULL约束也是如此。不应用假定列永远不为NULL的优化。门票6f2222d550f5b0ee7ed。
  • SQLITE_SOURCE_ID:“2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86”
  • SHA1 for sqlite3.c:3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

版本3.8.7.2中的

新功能

  • 此版本的主要原因是增强ROLLBACK命令,以便只要ROLLBACK不更改架构,它就允许在同一数据库连接上运行查询以继续运行。在所有以前版本的SQLite中,ROLLBACK会导致挂起的查询立即停止并返回SQLITE_ABORT或SQLITE_ABORT_ROLLBACK。如果ROLLBACK更改了数据库架构,则挂起的查询仍会中止,但是从此修补程序版本开始,如果架构未修改,则允许查询继续运行。
  • 除了ROLLBACK增强功能之外,此修补程序版本还包含针对三个模糊错误的修复程序。

版本3.8.7.1中的新功能

  • 此错误修复发布的主要原因是解决使用ALTER TABLE ADD COLUMN更新表末尾的字段值的问题。这个问题1首次出现在3.8.7版本中。
  • 3.8.7版本中的另一个小烦恼是Android版本试图使用标准C库中的strchrnul()函数,但该功能在Android上不可用。 Android版本必须添加-DHAVE_STRCHRNUL = 0才能解决问题。此补丁修复了这一问题,以便Android版本现在可以正常运行而无需任何更改。
  • PRAGMA journal_mode = TRUNCATE的操作已得到增强,因此在PRAGMA synchronous = FULL时截断日志文件后会调用fsync()。这有助于在提交后不久发生断电的情况下保持事务持久性。
  • 最后,修复了与VIEW上运行UPDATE和DELETE相关的一些长期存在且模糊不清的问题。

版本3.8.7中的

新功能

  • 上一版本中的大多数更改都是微优化,旨在帮助SQLite运行得更快一些。每个单独的优化都会产生不可估量的小型性能影响。但这些改进加起来。使用明确定义的工作负载(SQLite开发人员用作典型应用程序工作负载的代理)在Linux上使用cachegrind进行测量,并在x64 linux上使用gcc 4.8.1和-Os编译,当前版本的工作量增加了20%以上与先前版本相比,CPU周期数相同。 Cachegrind不是真正的CPU,用于测量的工作负载只是一个代理。所以你的表现会有所不同。我们希望在实际应用中看到大约一半的测量和报告的改进。我们认为10%低于20%,但仍然相当不错。
  • 此版本包含一组新的C语言接口,这些接口具有无符号64位而不是带符号的32位长度参数。新API不提供任何新功能。但它们确实使编写更能抵抗整数溢出漏洞的应用程序变得更容易。
  • 此版本还包括一个新的分拣机,它能够使用多个线程来帮助进行大型分拣操作。 (有时需要排序操作来实现ORDER BY和/或GROUP BY子句,并且几乎总是需要CREATE INDEX。)默认情况下,多线程排序器处于关闭状态,必须使用PRAGMA threads SQL命令启用。请注意,多线程分拣机为大型分拣机提供了更快的实时性能,但它也使用了更多的CPU周期和更多的能量。

版本3.8.3.1中的新功能

  • SQLite版本3.8.3.1修复了版本3.8.1,3.8.2和3.8.3中存在的错误,该错误可导致查询省略有效的输出行。建议从这些版本升级。
  • 如果使用SQLITE_ENABLE_STAT3或SQLITE_ENABLE_STAT4编译时选项编译SQLite,则只会出现此问题。在这种情况下,如果查询的WHERE子句包含如下表达式:
  • WHERE(expr1 OR expr2 OR ... OR exprN)AND列IS NOT NULL
  • 如果expr1到exprN的所有内容都适合索引使用,那么在查询规划期间,SQLite可能会错误地将“列IS NOT NULL”术语转换为“column> NULL”。但后一个术语永远不会成立,因此查询将不返回任何行。

版本3.8.3中

什么是新

  • 添加了对公用表表达式和WITH子句的支持。
  • 添加了printf()SQL函数。
  • 在sqlite3_create_function()和相关接口的第4个参数中添加了SQLITE_DETERMINISTIC作为可选位,为应用程序提供了创建新函数的能力,当它们具有常量参数时,可以将这些函数从内部循环中分解出来。
  • 添加在事务开始时返回的SQLITE_READONLY_DBMOVED错误代码,以指示已从SQLite下重命名或移出基础数据库文件。
  • 允许任意表达式,包括函数调用和子查询,在文件名参数中为ATTACH。
  • 允许在SELECT语句有效的任何地方使用VALUES子句。
  • 在使用N == 0调用时,重新设定sqlite3_randomness(N,P)使用的PRNG。在unix上的fork()之后自动重新设定。
  • 增强spellfix1虚拟表,以便它可以通过rowid高效搜索。
  • 性能增强。
  • 运行EXPLAIN时对VDBE字节码显示中注释的改进。
  • 将“%token_class”指令添加到LEMON解析器生成器并使用它来简化语法。
  • 更改LEMON源代码以避免调用OpenBSD认为危险的C库函数。 (例如:sprintf)。
  • 错误修复:在命令行shell CSV导入功能中,当CRLN行末尾出现转义双引号时,请勿结束字段。
  • SQLITE_SOURCE_ID:“2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538”
  • SHA1 for sqlite3.c:98a07da78f71b0275e8d9c510486877adc31dbee

类似的软件

Sesame
Sesame

20 Feb 15

PostGIS
PostGIS

19 Feb 15

HyperSQL
HyperSQL

11 May 15

意见 SQLite

评论没有发现
添加评论
打开图片!