当启用预写式日志记录时,SQLite仍支持原子提交,但它通过与本文中介绍的机制不同的机制完成原子提交。有关SQLite如何在该上下文中支持原子提交的更多信息,请参阅预写日志文档。
没有TO子句的COMMIT命令和ROLLBACK命令在SAVEPOINT事务上的作用与BEGIN开始的事务作用相同。 交易可以延期,立即或排他。默认的事务行为是延迟的。
数据库连接和事务处理 你可以在程序的任何地方使用数据库查询,当执行查询时你需要有一个数据库连接。 你可以通过创建一个Database对象来连接一个JDBC数据库,有多种方法可以创建一个数据库对象。
与涉及C-API要求的其他文档的关系: 打开连接。 关闭连接。 与SQL要求相关: 打开一个只读事务。 终止只读事务。 打开一个读写事务。 提交一个读写事务。 回滚一个读写事务。 打开一个声明事务。
这不是明确的,一个事务在它首次写入数据库表之前是隐式的读事务,在这一点上它变成了写事务。 至多一个连接到单个共享缓存的任何时候都可以打开写入事务。这可能与任何数量的读取事务共存。
但是,在执行事务时,在崩溃或电源故障后回滚该事务所需的信息将存储在辅助日志文件中。这些日志文件与原始数据库文件具有相同的名称,但添加了后缀-journal或-wal后缀。
=SQLITE_OK)break;}returnrc;} 当两个或更多连接以共享高速缓存模式访问同一数据库时,将使用对各个表的读和写(共享和排它)锁来确保并发执行的事务处于隔离状态。
这对创建数据库备份或将内存数据库复制到永久文件或从永久文件复制非常有用。 另请参阅:使用SQLite联机备份API 在备份操作期间,SQLite会在目标数据库文件上保留一个写事务。
通常,当SQLite写入数据库文件时,它会等到写操作完成后再将控制权返回给调用应用程序。由于与CPU绑定操作相比,写入文件系统通常非常缓慢,因此这可能是性能瓶颈。
SQLite使用锁来自动序列化写操作;这不是使用SQLite的应用程序需要担心的问题。 隔离和并发 SQLite使用临时日志文件实现隔离和并发控制(和原子性),这些日志文件与数据库文件在同一目录中。
请注意,与那个普通的ROLLBACK命令(没有TO关键字)不同,ROLLBACKTO命令不会取消事务,而是在开始时重新启动事务,但所有介入的SAVEPOINT都被取消。
SQLite使用读写器锁来控制对数据库的访问。(在Win95/98/ME下,缺少对读/写锁的支持,而是使用概率模拟。)但要小心:如果数据库文件保存在NFS文件系统上,则此锁定机制可能无法正常工作。
在运行时与SQLite链接并从多个线程使用SQLite的应用程序应该检查此API,以确保它们不会意外链接到禁用了互斥锁的SQLite库的版本。

扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2026 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059
粤公网安备44030502008569号
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号
