SqlLite性能问题

news2024/11/13 8:40:05

sqlLite性能

最近使用sqlLite做了一些项目工具,对sqlLite的性能大概有了一个比较浅显的了解,在这里分析一下,希望能作为大家做技术选型的参考。

首先是写能力,sqlLite是一个单文件数据库,再加上锁问题,sqlLite的写能力比较弱,但是考虑到sqlLite主要应对的场景是桌面程序和嵌入式,这个写能力也完全能符合这个定位。

但是如果考虑在服务端使用sqlLite,还是要根据业务场景慎重考虑,尤其是写功能比较多的场景

下面是写性能的一些数据量级的参考

100条

插入订阅记录 : 101 条  耗时[ 484 ]

500条

插入订阅记录 :500 条  耗时[ 1979 ]  

500 条差不多就已经2秒钟了

1000 条

插入订阅记录 : 1000 条  耗时[ 5416 
插入订阅记录 : 1000 条  耗时[ 3958 ]   
 插入订阅记录 : 1000 条  耗时[ 4869 ]   
 插入订阅记录 : 1000 条  耗时[ 4022 ] 
 插入订阅记录 : 1000 条  耗时[ 4278 ]   

1000条数据写入基本上在4秒左右,这个性能与MYSQL这些数据库的差距还是很大的。

还有一点,sqllite的锁机制是库锁,写入时不能多线程并发写入,所以以上性能通过多线程并不能解决,反而会报错。因此为sqlLite维护一个大的链接池,没有必要,反而会报错。

小编的解决方案是创建多个sqlLite库来提高并发写能力,但是小编的业务场景是相对独立的,不会出现多表联查的情况。

读性能

虽然 SQLlite的写能力比较拉胯,但是不得不说,读能力还是可圈可点的。

在这里插入图片描述
小编使用SQLLite保存业务系统订阅的日志,日志内容是通过Mock工具读取的小说,数据有随机性,共创建了大概26万数据 。

下面是读性能的一些记录。

 共匹配[ 5601 ] 条, 页码[ 1 ] 页大小[ 50 ] ,耗时[ 108 ] 毫秒。  
 共匹配[ 5601 ] 条, 页码[ 113 ] 页大小[ 50 ] ,耗时[ 228 ] 毫秒。  
 共匹配[ 5601 ] 条, 页码[ 110 ] 页大小[ 50 ] ,耗时[ 174 ] 毫秒。    
 共匹配[ 260409 ] 条, 页码[ 1 ] 页大小[ 50 ] ,耗时[ 2387 ] 毫秒。  
 共匹配[ 260409 ] 条, 页码[ 5 ] 页大小[ 50 ] ,耗时[ 415 ] 毫秒。  
 共匹配[ 260409 ] 条, 页码[ 6 ] 页大小[ 50 ] ,耗时[ 432 ] 毫秒。  
 共匹配[ 260409 ] 条, 页码[ 5 ] 页大小[ 50 ] ,耗时[ 411 ] 毫秒。  
 共匹配[ 8 ] 条, 页码[ 1 ] 页大小[ 50 ] ,耗时[ 367 ] 毫秒。  
 共匹配[ 8 ] 条, 页码[ 1 ] 页大小[ 50 ] ,耗时[ 379 ] 毫秒。  
 共匹配[ 260420 ] 条, 页码[ 1 ] 页大小[ 50 ] ,耗时[ 666 ] 毫秒。  
 共匹配[ 260420 ] 条, 页码[ 1 ] 页大小[ 50 ] ,耗时[ 702 ] 毫秒。  
 共匹配[ 1000 ] 条, 页码[ 1 ] 页大小[ 50 ] ,耗时[ 148 ] 毫秒。  

对于这个查询结果,本身还是比较满意的,并且这个性能我并没有创建索引,如果创建索引性能会提升很多,并且查询都是 模糊查询,所以也没有创建索引的必要。
对于一个单文件数据库,这性能小编还是比较满意的。

为什么选择SqlLite

上面已经说明了SqlLite的一些性能问题,那么为什么还要选择SqlLite 。

首先SqlLite是小编这个运行记录组件的数据库解决方案之一,并不是仅支持SqlLite,对于一些中小型项目,SqlLite完全可以满足需求,并且不会增加集成成本,基本上一个注解既可以注入。

介绍一下运行记录组件的主要功能
如上图所示,运行记录功能提供了 接口访问记录 ,日志订阅 ,项目配置 ,接口列表 ,其中 访问记录由于并发量比较大,并未采用SqlLite 而是使用了Lucene ,其余三个功能模块都默认使用SqlLite存储数据。

其中日志订阅功能是数据量最大的,但是这个模块主要是记录业务系统的一些特定日志(主要是异常的错误日志),如果一个系统一个月能跑出来1万+ 的错误日志,就说明要么代码有问题,要么业务模型有问题,这也是这个模块设计的宗旨,帮助系统主动发现一下超出预期的错误,主动处理。

并且在这个模块里,小编采用了定时任务和缓存的机制批量记录错误记录,因此无需担心这个模块会影响业务系统性能。

至于这个系统工具,小编完善后会开源,欢迎有需要的订阅支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Postman:API开发与测试的强大伴侣

在当今的数字化时代,API(应用程序编程接口)已成为不同软件系统之间通信的桥梁,它们如同数字世界的“翻译官”,使得数据和服务能够在不同的平台和应用程序之间无缝流动。然而,API的开发、测试和维护并非易事…

大数据-62 Kafka 高级特性 主题 kafka-topics相关操作参数 KafkaAdminClient 偏移量管理

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

内网穿透的应用-Windows系统如何ssh连接群晖nas使用docker安装内网穿透软件

文章目录 前言1. 检查安装Container Manager2. 检查开启群晖SSH连接3. Windows SSH 连接群晖4. 下载Cpolar 镜像5. 群晖Docker安装Cpolar 前言 在某些群晖NAS型号版本,无法使用套件安装的时候,我们可以采用Docker的方式进行安装cpolar内网穿透工具&…

你看不上的“垃圾”——别人的赚钱“利器”

首先说一点,你认为是常识性的东西,也许还有4亿中国人不知道。 其次,你认为是遍地都有的、你看不上的、你瞧不起的这些“破烂玩意”,别人也许正拿来赚钱! 不可思议吧,事实就是如此。 我在老家,…

JAVA实战基于SSM的网上书店管理系统

目录 一、前言 二、技术介绍代码 三、项目实现流程 四、论文流程参考 五、核心代码截图 专注于大学生实战开发、讲解和毕业答疑等辅导,获取源码后台 一、前言 针对当前网络实际需求,我们深入剖析了过往系统的弊端,并依托计算机系统的先…

Hiredis_安装_重要API

目录 一 安装HiRedis 二 HiRedis的重要API 2.1 连接redis数据库 2.2 发送请求命令 2.3 释放资源 三 封装一个C版本的HiRedis 一 安装HiRedis 1.下载hiredis软件包 git clone https://github.com/redis/hiredis.git 2.进行解压与安装,步骤如下 cd hiredi…

2000-2022年 上市公司-投融资期限错配、短债长用、短贷长投(原始数据、计算代码、参考文献和最终计算结果)

上市公司在投融资过程中的管理决策对企业的财务稳定性和长期发展至关重要。投融资期限错配、短债长用和短贷长投是企业在资本运作中可能出现的问题,它们影响着企业的财务结构和风险管理。 投融资问题概述 投融资期限错配 指企业资产与债务的期限不匹配&#xff0…

ESG泡沫下的伊利:能否重拾消费者信任?

北京时间7月27日,第33届夏季奥林匹克运动会开幕式在法国巴黎举行,伊利作为中国体育代表团的主要赞助商,再次站在了聚光灯下。然而,在光鲜亮丽的营销背后,伊利正面临着前所未有的信任危机与业绩挑战。 近年来&#xff0…

关于IDEA git push 提交代码报committer 的邮件不是GitLab中的邮箱处理

1、报错截图 2、处理办法: 首先,‌需要检查GitLab的设置,‌确认登记的邮箱地址是否正确。‌ 如果发现邮箱不一致,‌需要更新Git的全局用户邮箱设置,‌以确保与GitLab中登记的邮箱保持一致。‌ 使用命令git config --g…

测试的基础概念

需求 需求的定义 用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。 软件需求:产品经理会把用户需求转化为软件需求(写成一个文档)…

软件技术(游戏软件开发方向)实训室解决方案

一、引言 随着数字娱乐产业的快速发展,游戏软件开发成为了一个热门领域。为满足市场对高质量游戏开发人才的需求,构建一套先进、全面、实战化的软件技术(游戏软件开发方向)实训室解决方案显得尤为重要。本方案旨在通过集成先进硬…

【守卫你的安全】基于高通QCS6490之AI智慧电子围篱展示方案

高通QCS6490是一款专为工业和商业物联网应用而设计的系统单芯片(SoC),支援高阶物联网装置的Wi-Fi 6E连线,以及先进的摄像头、人工智能和计算功能,以实现低功耗下的强大性能。这款芯片结合高通Kryo™ 670 CPU和高通Hexagon处理器,具…

Redis——哈希

哈希 是一个字符类型的字段和值的映射表,简单来说就是一个键值对的集合,特别适合存储对象; 哈希的命令有 H 有关; 1. 添加键值对 HSET 2. 获取键值对 HGET 3. 判断键值对是否存在 HEXISTS 4. 获取所有键 HKEYS

python-----------MRO知识点笔记

视频来源:【【python】B站最细致的super()详解,一定有你不知道的知识!】 https://www.bilibili.com/video/BV1FL4y1E7xK/?share_sourcecopy_web&vd_sourced59dcee6044af8fc880b46b581c3f58a MRO:方法解析顺序-------------M…

FastAPI 结合 JWT

文章目录 FastAPI 结合 JWT步骤安装步骤导入必要的模块设置配置和初始化应用创建数据模型实现辅助函数生成 JWT Token获取用户数据验证密码获取当前用户 用户登录获取 Token受保护的路由示例 所有代码测试获取 Token访问受保护的路由token正确token错误 总结注意 FastAPI 结合 …

【中项】系统集成项目管理工程师-第9章 项目管理概论-9.5 项目立项管理

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

RAGCache多级动态缓存管理系统,让RAG推理更高效|RAG论文分享

今天为大家分享北京大学和字节跳动联合发表的一篇关于加速RAG推理的论文: RAGCache: Efficient Knowledge Caching for Retrieval-Augmented Generation 论文地址:https://arxiv.org/abs/2404.12457 1.论文概述 Retrieval-Augmented Generation (RAG) …

聊聊Netty中几个重要的生命周期

写在文章开头 Netty内置了各种开箱即用的处理器,把握好处理器中几个比较重要的生命周期回调用助于我们编写出强大的网络通信程序,所以本文将基于一个简单的示例和源码介绍一下Netty中几个比较重要的生命周期函数,希望对你有帮助。 Hi&#x…

九州未来参编,《边缘计算产业发展研究报告》正式发布

日前,由中国通信标准化协会主办的第四届“云边协同”大会暨首届分布式算力论坛在北京成功举办。大会聚焦云边端分布式算力领域技术新突破、应用新场景以及发展新价值,搭建政产学研用交流对接平台,深化产业链协同开放合作。 会上,由…