分享一个SQLite性能优化实例
最早接触iOS开发了解到的第一个缓存数据库就是SQLite,后面一直也以SQLite作为中坚力量使用,以前没有接触到比较大量数据的读写,所以在性能优化方面关注不多,这次对一个特定场景的较多数据批量读写做了一个性能优化,使性能提高了十倍。
大致应用场景是这样:
每次程序启动会从服务器拉取一些数据,对本地数据库两个表进行同步更新,不存在就写入,存在就更新其字段。数据少的时候几十条,多的上千条。
由于缓存的数据可能会存在异步同时读写,所以做了一个后台同步队列,所有的缓存数据库操作都在这个队列里面,然后我监控了一下写数据库的关键代码执行耗时,一千条数据更新到数据库就能耗时30秒之久,磁盘写入在1。5Ms浮动,虽然没有卡主线程,这个消耗即使在后台也是不可容忍的。
核心的数据库操作大概是这样的for1000:{SelectUpdateOrInsertSelectUpdateOrInsert}
由于牵涉到两张表,所以会有两次,经过测试,Select一次几乎没有多少消息,可是Update或者Insert(〔FMDatabaseQueueexecuteUpdate:〕)就消耗大了,因为会写入磁盘,然后想到是不是可以把所有的SQL语句拼接起来,最后只想一次;再后来想到SQLite不是有事务(Transaction)嘛,于是尝试了一下利用FMDB的事务操作,在循环开始前〔dbbeginTransaction〕,循环结束〔dbcommit〕,包起来就行了。
增加事务之后的大概逻辑:beginTransactionfor1000:{SelectUpdateOrInsertSelectUpdateOrInsert}commit
测试效果非常好,整个耗时从30秒下降到了2。8秒左右,仅仅增加了两行代码。
总结:
踩过的坑,走过的坎,都是以后的经验
虽然利用事务取巧来提高了性能,但是这样做其实并不安全,好在所属场景对这部分数据绝对一致要求不是太高。
模拟器和真机有时候测试并不能重现同一个问题,因为所属架构、CPU、硬盘都不一样,所以性能测试最好还是以真机为准。该问题测试的时候在模拟器上很多问题都没有,因为硬盘比真机读写速度要高,所以避免了很多问题,测试的时候也就没有发现。
数据库设计设计的时候得多考虑考虑,多想想以后怎么扩展,怎么升级,读写的时候性能怎么样。
分享一个SQLite性能优化实例《Linux就该这么学》(linuxprobe。com)
刘强东马云的争论正式落幕本文原创,请勿抄袭和搬运,违者必究刘强东,马云都是中国电商界的领军人物,但是二者也有观念不合的时候。比如在物流方面,马云并不看好自建物流体系,而刘强东坚持自建物流。时隔多……
地面通信那么方便,为何物联网还要连卫星?智东西(公众号:zhidxcom)编译杨畅编辑Panken智东西8月15日消息,据外媒IEEESpectrum报道,近日,德国弗劳恩霍夫协会集成电路研究所(F……
苹果MacPro新AMDW6000显卡兼容性细节公开中关村在线消息:据Macrumors报道,苹果发布了三份新的支持文件,其中包含有关MacPro的新AMDRadeonProW6000系列MPX图形模块的更多详细信息。该图……
谈谈互联网的利弊?互联网改变了人们的生活状态,一个质的飞跃。让人们的生活质量也同时得到质的提升。也使各行各业借助于大数据而加快了发展。其功和利是主流无疑。互联网本身无(弊)可言,此(弊)产……
一个设备解决两大品牌无线充电,亿色雅置磁吸无线充支架套装入手之前入手华为mate30的时候就已经知道有无线充电,之前倒是没啥感觉,年初的时候刚入手了原装的无线充电底座,体验还是很不错的,但最近快618了,领导打算要入手iPhone12,……
1600得苹果x和2000多得安卓新机哪个好点?感谢您的阅读!1600的苹果x和2000多的安卓新机哪个好点?1600块钱的iPhoneX和2000多的安卓手机,我们该选择哪一款?实际上我们也很清楚现在的iPhoneX……
2021年818手机节高性价比手机推荐8000字长文,旨在帮助你挑选最适合你的高性价比手机,如果对你有一点帮助,欢迎点赞支持,有任何问题可以在评论区留言,我都会一一回复的非常感谢大家历史3周,整理了目前主流的……
三款值得入手的5G手机!日常使用完全没问题1、荣耀50Pro这款手机的拍摄功能无非是最大的亮点,荣耀50Pro加入了1亿像素的超清镜头,从而展示出非常清晰的拍摄效果,即便是经过剪裁后也会特别清晰可见。手机的前置双……
工信部一纸限令,无线充电产业影响几何?每年iPhone新机上市前都会有大量预测和爆料,今年的iPhone13也不例外,一个讨论的焦点是iPhone13会不会取消Lightning充电接口,其实这一讨论从iPhone……
中国移动发布报告华为遗憾出局,小米成功出圈8月24日,中国智能硬件测试中心正式发布《中国移动2021智能硬件质量报告》及《中国移动5G通信指数报告》,针对今年上半年发布的11个品牌43款5G手机等电子产品进行综合测试。……
充电桩价格战何时休伴随着以电动汽车为代表的新能源出行方式及其配套的基建领域成为市场聚焦的热点,充电服务平台(以下简称充电App)也应运而生,众多资本纷纷入局。然而,和很多行业一样,竞争者多了,价……
家里的老人耳朵有点背,请问助听器怎么配?助听器是一种能提高声音强度的装置。它是用于聋人教育和提高聋人听力不可缺少的重要工具。有残余听力的耳聋患者,在经过药物治疗或手术治疗无效且病情稳定时,均可佩戴助听器。家里的……