美文网首页
sqlite 100 200 300 W数据 存取数据速度记录

sqlite 100 200 300 W数据 存取数据速度记录

作者: 一个冬季 | 来源:发表于2021-11-09 22:56 被阅读0次

测试手机: Honor 6A
手机生产日期:2017年05月25日

操作\数据量 100W 200W 300W
for循环插入 146秒 292秒 457秒
插入数据在最后面 12毫秒 14毫秒 16毫秒
查询数据,where customName = ? 662毫秒 1253毫秒 1858毫秒
update数据(故意更新最后一条) 654毫秒 1320毫秒 1869毫秒
根据条件删除数据(故意查最后一条) 683毫秒 1259毫秒 3630毫秒
like customName = ? 1257毫秒 2371毫秒 3632毫秒
查询主键 where _id = ? 10毫秒 13毫秒 16毫秒
索引查询 where messageUId = ? 750毫秒 1161毫秒 1591毫秒
order by randumNumber asc 11毫秒 11毫秒 17毫秒

github

多线程测试

前置条件:同一进程,2个线程,同一个SQLiteDatabase,同一个WritableDatabase()
  • 执行方式:A线程insert(开启事务操作),B线程select
    能正常执行,但是会得到一串警告,测试的insert数量为10W条数据,select数量为3条数据。如果insert数量为1W条数据,就没有这样的警告
com.gxx.testdbapplication W/SQLiteConnectionPool: The connection pool for database '/data/user/0/com.gxx.testdbapplication/databases/myTest.db' has been unable to grant a connection to thread 478 (Thread-3) with flags 0x1 for 30.000002 seconds.
    Connections: 1 active, 0 idle, 0 available.

可能您想在之前没有结束事务的事务上使用的表上选择查询。尝试在 finally 事务块上执行 endTransaction()。
 或者 
您正在更新两个表,两个不同的事务持有不同的表,等待另一个释放。
 或者 
只是有太多打开的连接,数据库或连接池就会变得混乱。 不管是什么,上面的内容可能是错误的。

原话地址

  • 执行方式:A线程insert(开启事务操作),B线程update
    遇到的问题同上

  • 执行方式:A线程update(开启事务操作1000条),B线程update(开启事务操作1000条),执行update的id都是不同
    正常执行

  • 执行方式:A线程update(开启事务操作1000条),B线程update(开启事务操作1000条),都不加锁,相同表,执行不同方法,传递相同ids
    没有发现什么异常信息,但是会出现B线程没有更新到字段信息的情况

  • 执行方式:A线程update(开启事务操作1000条),B线程update(开启事务操作1000条),都加锁,相同表,执行不同方法,传递相同ids
    遇到的问题同上

  • 执行方式:A线程update(开启事务操作1000条),B线程update(开启事务操作1000条),加锁,相同表,相同方法,传递相同ids
    A线程执行的更新,会被B线程给替换掉

多进程测试

前置条件:2个进程,A进程只查询,B进程进行分别insert,update,select
  • 执行方式:A进程select,测试select数量为18条,B进程insert,测试的insert数量为10W条数据
    能正常执行,未发现异常

  • 执行方式:A进程select,测试select数量为18条,B进程update,测试的update数量为18条数据
    能正常执行,未发现异常

  • 执行方式:A进程select,测试select数量为18条,B进程select,测试的update数量为18条数据
    能正常执行,未发现异常

相关文章

  • sqlite 100 200 300 W数据 存取数据速度记录

    测试手机: Honor 6A手机生产日期:2017年05月25日 操作\数据量100W200W300Wfor循环...

  • iOS - SQLite数据存取

    概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库。例如前面IOS开发系列—...

  • LiveData原理分析

    1 LiveData简介 大部分Android应用会从网络或SQLite数据库存取数据,并根据数据更新界面。为了避...

  • FMDB 大量数据操作 卡顿优化

    参考 :sqlite 操作速度优化浅谈iOS 提升SQLite数据插入效率低、速度慢的方法

  • Redis作为缓存和数据库的思考

    区别 缓存 数据可丢失 存取速度快数据库 数据绝对不能丢,速度 + 持久化 缓存 1 击穿 缓存击穿:...

  • 八、Android数据存储与IO

    2019-06-06 Android中提供了多种存取数据的方式: Preference File文件 SQLite...

  • 存储器的存储方式

    存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取等四种。(1)顺序存取:存储器的数据以记录的形式...

  • 文件与目录操作

    数据的存取方式数据库存取-->适合大量、且关系复杂并有序的数据存取文件存取-->适合大量、数据关系简单的数据存取,...

  • mysql存储过程

    一、好言 努力!!! 二、内容 说明最近在处理一张表,这张表是收集数据的,每天有大约100w-200w的数据量,所...

  • (三)Numpy 数据存取与函数|python数据分析与展示(学

    数据的CSV文件存取-Numpy 数据存取与函数 1多维数据的存取-Numpy 数据存取与函数 2Numpy的随机...

网友评论

      本文标题:sqlite 100 200 300 W数据 存取数据速度记录

      本文链接:https://www.haomeiwen.com/subject/xssvzltx.html