[多进程访问sqlite3 bug] 解决方法 2023年11月10日 下午9:38 • 大数据 • 阅读 97 目录 使用 SQLite_编程的快速介绍……………………………………………………. 5 下载代码 ……………………………………………………………….. 5 创建 _一个_新 _数据库 ………………………………………………………… 5 使用 SQLite 编写程序 …………………………………………………….. 5 SQLite_适用的范围 …………………………………………………………… 7 _SQLite_最佳试用场合………………………………………………………. 7 哪些场合适合使用其他的关系型 _数据库_管理系统(RDBMS) …………………………. 9 _SQLite 第三版总览(简介)…………………………………………………….. 10 命名上的变化 …………………………………………………………… 10 新的文件格式 …………………………………………………………… 10 弱类型和BLOB技术支持 …………………………………………………… 11 支持UTF-8和UTF-16……………………………………………………… 11 用户定义的分类排序 ……………………………………………………… 12 64字节的行编号…………………………………………………………. 12 改良的并发性 …………………………………………………………… 13 致谢 ………………………………………………………………….. 13 SQLite 第三版中的数据类型…………………………………………………… 14 1.存储类别 …………………………………………………………….. 14 2.列之间的亲和性 ……………………………………………………….. 14 3.比较表达式 …………………………………………………………… 16 4.运算符 ………………………………………………………………. 17 5.分类,排序混合挑选 ………………………………………………….. 17 6.其它亲和性模式 ……………………………………………………….. 17 7.用户定义的校对顺序 ……………………………………………………. 18 SQLite 不支持的 SQL 特性……………………………………………………. 20 SQLite_的体系结构简介 ………………………………………………………. 21 简介 ………………………………………………………………….. 21 接口程序 ………………………………………………………………. 21 Tokenizer ……………………………………………………………… 21 Parser ………………………………………………………………… 22 代码发生器 …………………………………………………………….. 22 虚拟机器 ………………………………………………………………. 22 B-树 ………………………………………………………………….. 23 页面高速缓存 …………………………………………………………… 23 OS 接口程序 ……………………………………………………………. 23 Utilities ……………………………………………………………… 23 测试代码 ………………………………………………………………. 23 _SQLite_与其他 _数据库_的速度比较 ……………………………………………….. 24 执行程序总结 …………………………………………………………… 24 测试环境 ………………………………………………………………. 24 测试1:1000 INSERTs……………………………………………………… 25 测试2:在事务处理程序中的 25000 INSERTs……………………………………. 25 测试3:在编入索引表格中的25000 INSERTs ……………………………………. 26 测试4:没有索引的 100 SELECTs…………………………………………….. 26 测试5:在 _一个_字符串比较上的100 SELECTs ……………………………………. 27 2 / 123 测试6:创建索引…………………………………………………………. 27 测试7:没有索引的5000 SELECTs ……………………………………………. 27 测试8:没有索引的1000 UPDATEs ……………………………………………. 28 测试9:有索引的25000 UPDATEs …………………………………………….. 28 测试10:有索引的25000 text UPDATEs ……………………………………….. 28 测试11:来源于SELECT的INSERTs …………………………………………… 29 测试12:没有索引的DELETE ………………………………………………… 29 测试13:有索引的DELETE ………………………………………………….. 29 测试14: _一个_大 DELETE之后的 _一个_大INSERT…………………………………… 30 测试15: _一个_大的DELETE及许多小INSERTs ……………………………………. 30 测试16:DROP TABLE………………………………………………………. 30 _SQLite_中的空处理与其它 _数据库_引擎比较 ………………………………………. 31 _SQLite 数据库_的速度比较(wiki)……………………………………………….. 34 Test 1: 1000 INSERTs ……………………………………………………. 36 Test 2: 25000 INSERTs in a transaction ……………………………………. 36 Test 3: 25000 INSERTs into an indexed table ……………………………….. 37 Test 4: 100 SELECTs without an index ……………………………………… 37 Test 5: 100 SELECTs on a string comparison ………………………………… 38 Test 6: INNER JOIN without an index ………………………………………. 38 Test 7: Creating an index ……………………………………………….. 38 Test 8: 5000 SELECTs with an index ……………………………………….. 39 Test 9: 1000 UPDATEs without an index …………………………………….. 39 Test 10: 25000 UPDATEs with an index ……………………………………… 39 Test 11: 25000 text UPDATEs with an index …………………………………. 40 Test 12: INSERTs from a SELECT …………………………………………… 40 Test 13: INNER JOIN with index on one side ………………………………… 41 Test 14: INNER JOIN on text field with index one side ……………………. 41 Test 15: 100 SELECTs with subqueries. Subquery is using an index …………….. 41 Test 16: DELETE without an index …………………………………………. 42 Test 17: DELETE with an index ……………………………………………. 42 Test 18: A big INSERT after a DELETE ………………………………….. 42 Test 19: A big DELETE followed by many small INSERTs ……………………….. 42 Test 20: DROP TABLE …………………………………………………….. 43 附加文件……………………………………………………………. 43 _SQLite_在Windows中的性能调试 ……………………………………………….. 44 直接使用 _SQLite…………………………………………………………. 44 2:Indexes 和 数据库_结构是非常重要的。 …………………………………….. 44 3:页面规模也很重要 …………………………………………………….. 45 4:成群的索引 ………………………………………………………….. 45 5:作为读这篇文章的收获,这里有个不智能的事情需要提醒你。 …………………… 46 _SQLite_中如何用触发器执行取消和重做逻辑 ………………………………………. 47 _SQLite_3 C/ _C++ 开发接口简介(API函数) ……………………………………….. 55 1.0 总览 ………………………………………………………………. 55 2.0 C/ C++ 接口 …………………………………………………………. 55 如何在VS 2003下编译 SQLite …………………………………………………. 61 下载 ………………………………………………………………….. 61 创建 一个 DLL 工程 ………………………………………………………. 61 3 / 123 把 SQLite 的源文件添加到工程当中去 ……………………………………….. 61 Make a .DEF file ……………………………………………………….. 61 如何编译 SQLITE.EXE 命令行程序 …………………………………………… 62 SQLite_常见问题解答 ………………………………………………………… 64 Frequently Asked Questions ………………………………………………. 64 (1)如何建立自动增长字段? ………………………………………………… 64 (2) _SQLite_支持何种数据类型?……………………………………………… 65 (3) _SQLite_允许向 _一个_integer型字段中插入字符串!……………………………. 65 (4)为什么 _SQLite_不允许在同 _一个_表不同的两行上使用0和0.0作主键? …………….. 65 (5)多个应用程序或 _一个_应用程序的多个实例可以同时 _访问_同 _一个 数据库_文件吗? ………. 65 (6) _SQLite_线程安全吗?…………………………………………………… 66 (7)在 _SQLite 数据库_中如何列出所有的表和索引? ………………………………. 66 (8) _SQLite _数据库_有已知的大小限制吗?………………………………………. 67 (9)在 _SQLite_中,VARCHAR字段最长是多少?…………………………………… 67 (10) _SQLite_支持二进制大对象吗?…………………………………………… 67 (11)在 _SQLite_中,如何在 _一个_表上添加或删除一列? ……………………………. 68 (12)我在 _数据库_中删除了很多数据,但 _数据库_文件没有变小,是 _Bug_吗? …………….. 68 (13)我可以在商业产品中使用 _SQLite_而不需支付许可费用吗? …………………….. 68 (14)如何在字符串中使用单引号(‘)? ………………………………………… 68 (15) _SQLITE__SCHEMA error是什么错误?为什么会出现该错误?…………………….. 69 (16)为什么 ROUND(9.95,1) 返回 9.9 而不是 10.0? 9.95不应该圆整 (四舍五入)吗?… 70 _SQLite_的原子提交原理 ………………………………………………………. 71 1.0 简介 ………………………………………………………………. 71 2.0 硬件设定 …………………………………………………………… 71 3.0 单个文件提交 ……………………………………………………….. 73 3.1 实始状态………………………………………………………… 73 3.2 申请 _一个_共享锁…………………………………………………… 73 3.3 从 _数据库_里面读取信息……………………………………………… 74 3.4 申请 _一个_Reserved Lock ……………………………………………. 74 3.5 生成 _一个_回滚日志文件……………………………………………… 75 3.6 修改用户 _进程_中的数据页……………………………………………. 76 3.7 刷新回滚日志文件到存储设备中………………………………………. 76 3.8 获得 _一个_独享锁…………………………………………………… 77 3.9 将变更写入到 _数据库_文件中………………………………………….. 78 3.10 刷新变更到存储………………………………………………….. 78 3.11 删除回滚日志文件………………………………………………… 79 3.12 释放锁…………………………………………………………. 80 4.0 回滚 ………………………………………………………………. 81 4.1出事了,!!! ………………………………………………… 81 4.2 Hot Rollback Journals…………………………………………….. 81 4.3 取得 _数据库_的 _一个_独享锁……………………………………………. 82 4.4 回滚没有完成的变更……………………………………………….. 83 4.5 删除hot日志文件…………………………………………………. 83 4.6 如果一切正常,没有什么未完成的写操作……………………………….. 84 5.0 多文件提交 …………………………………………………………. 84 5.1 每个 _数据库_文件单独拥有日志…………………………………….. 85 5.2 主日志文件………………………………………………………. 85 4 / 123 5.3 更新回滚日志文件头……………………………………………….. 86 5.4 修改 _数据库_文件…………………………………………………… 86 5.5 删除主日志文件…………………………………………………… 87 5.6 清除回滚日志…………………………………………………….. 87 6.0原子操作的一些实现细节……………………………………………….. 88 6.1 总是记录整个扇区…………………………………………………. 88 6.2 写日志文件时垃圾的处理……………………………………………. 88 6.3 提交前缓存溢出…………………………………………………… 89 7.0 优化 ………………………………………………………………. 89 7.1 在事务间保存缓…………………………………………………. 90 7.2 独享 _访问_模式…………………………………………………….. 90 7.3 不必将空闲页写进日志……………………………………………… 90 7.4 单页更新及扇区原子写……………………………………………… 91 7.5 Filesystems With Safe Append Semantics……………………………… 91 8.0 原子提交行为测试 ……………………………………………………. 91 9.0 会导致完蛋的事情 ……………………………………………………. 92 9.1 缺乏文件锁实现…………………………………………………… 92 9.2 不完整的磁盘刷新…………………………………………………. 92 9.3 文件部分地删除…………………………………………………… 93 9.4 写入到文件中的垃圾……………………………………………….. 93 9.5 删除掉或更名了”hot”日志文件……………………………………… 93 10.0 总结及未来的路 …………………………………………………….. 93 _SQLite_的查询优化 ………………………………………………………….. 95 一、影响查询性能的因素: ………………………………………………… 95 二、几个查询优化的转换 ………………………………………………….. 95 三、 几种查询语句的处理(复合查询) ………………………………………. 95 四、子查询扁平化 ……………………………………………………….. 96 五、连接查询 …………………………………………………………… 98 六、索引 ………………………………………………………………. 99 _SQLITE_3 使用总结………………………………………………………….. 102 前序: ……………………………………………………………….. 102 一、版本 ……………………………………………………………… 102 二、基本编译 ………………………………………………………….. 102 三、 _SQLITE_操作入门…………………………………………………….. 103 (1)基本流程………………………………………………………. 103 (2)SQL语句操作 …………………………………………………… 104 (2)操作二进制…………………………………………………….. 108 (4)事务处理………………………………………………………. 109 四、给 _数据库_加密 ………………………………………………………. 109 五、后记 ……………………………………………………………… 122 Original: https://blog.csdn.net/weixin_42445727/article/details/122458770Author: OverboomTitle: [多进程访问sqlite3 bug] 解决方法 原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/815896/ 转载文章受原作者版权保护。转载请注明原作者出处! 大数据 赞 (0) 0 生成海报 【自取】最近整理的,有需要可以领取学习: Linux核心资料大放送~ 全栈面试题汇总(持续更新&可下载) 一个提高学习100%效率的工具! 【超详细】深度学习面试题目! LeetCode Python刷题答案下载! LeetCode Java版刷题答案下载! LeetCode C++ 版本,抓紧保存! LeetCode GO语言 刷题答案下载! 大家都在看 保姆级教程:Python数据库编程(SQLite3+MySQL) Python数据库编程 操作SQLite3数据库 使用SQLite3创建表 使用SQLite3插入数据 使用SQLite3查询数据 下载安装MySQL * 下载MySQL 安装My… 大数据 2023年11月11日 0053 在Unity中使用Sqlite创建数据库 可以实现本地数据存储和查询功能。您可以按照以下步骤进行操作: 1. 下载 插件,例如 3d或 。 2. 将插件导入到 。 3. 和表结构。您可以 命令或插件提供的API来执行此操作… 大数据 2023年11月10日 0065 UNITER: UNiversal Image-TExt Representation Learning 目录 Introduction Model Architecture Pre-training tasks Pre-training datasets Experiments Re… 大数据 2023年5月28日 00116 Anaconda安装教程 [Anaconda是什么?Anconda下载安装教程 一.如果从事Python开发,配置环境需要安装两个包:第一个安装开发工具,俗称IDE : 推荐使用 Pycharm第二个安装开… 大数据 2023年5月26日 00125 Get SparkUncaughtExceptionHandler when run spark-perf You have not entered your Spark master URL correctly. It could be because upper case error… 大数据 2023年6月11日 00146 bert参数统计 bert主要的实现是基于transformer的encoder部分,参数维度不同的地方是1)输入多了一项segment embedding,2)中间维度基本是768,以及多头注意力… 大数据 2023年5月28日 0069 深度学习实体关系抽取研究综述笔记 鄂海红,张文静,肖思琪,程瑞,胡莺夕,周筱松,牛佩晴.深度学习实体关系抽取研究综述.软件学报,2019,30(6): 1793−1818. http://www.jos.org.c… 大数据 2023年5月28日 00118 15个免费数据集-数据科学项目 15个免费数据集-数据科学项目 如果你曾经参与过个人数据科学项目,你可能花了很多时间在互联网上搜索有趣的数据集进行分析。 [En] If you have ever been in… 大数据 2023年5月26日 0096 Android 开发中 Mac 解决 SQLite 连接问题 本文章是使用 Navicat 连接 SQLite 来替换 终端连接 SQLite 目录 一、下载Navicat Premium 二、在Android 中找到数据库文件 三、把数据库… 大数据 2023年11月11日 0058 升级 MDK 5.37 后的问题处理: AC6编译选项, printf, 重启失效等 烧录后 Reset And Run 重启失效 存在于 MDK ARM 5.28 之后包括 5.37 的版本. 这些版本即使勾选 Reset And Run, 在烧录后也不会自动重启… 大数据 2023年6月3日 00139 VMware 虚拟机图文安装和配置 AlmaLinux OS 8.6 教程 镜像下载、域名解析、时间同步请点击阿里云开源镜像站 一、VMWare 安装配置 1、VMware 下载地址:VMware Workstation Pro 16.x(需要登录),安装… 大数据 2023年5月27日 00165 Python操作常用数据库 Python操作常用数据库 前言 简介 SQLite * 连接SQLite 创建数据表 增 删 改 查 MySQL * mysql-connector操作MySQL –… 大数据 2023年11月10日 0057 3.Hadoop Hive服务 大数据 2023年11月14日 0061 Android jetpack room 将外部数据库导入到本地数据库(附带创建Sqlite3的教程) main目录下新建 assets目录 并将数据库文件弄进来 这个test.db使我们自己生成的。。如何生成。。首先你需要安装sqlite3 下载地址:https://www.sql… 大数据 2023年11月12日 0059 YoloV5实战 [CBNet :目标检测性能提升,集成多个相同的主干网络构建新主干网络 费力构建更强大的新型主干网络还不如组合多个同样的主干网络?来自北京大学王选计算机研究所和纽约州立大学石溪分校… 大数据 2023年5月26日 0075 算法工程师的开发基础-Linux的常用Shell命令 一 Linux操作系统和Shell 简介 操作系统(Operating Systems, OS)实际上是一种用于计算机的软、硬件资源管理调度的系统级软件,它的主体是内核(Kerne… 大数据 2023年5月27日 00123