美文网首页iOS底层探究
FMDB 大量数据操作 卡顿优化

FMDB 大量数据操作 卡顿优化

作者: Cocoa_Coder | 来源:发表于2019-07-25 11:37 被阅读0次
    // 创建FMDatabaseQueue
        FMDatabaseQueue * queue = [FMDatabaseQueue databaseQueueWithPath:@"数据库路径"];
        dispatch_queue_t g_queue =  dispatch_queue_create("com.setNewsFavriteData", DISPATCH_QUEUE_SERIAL);//这里用串行队列,并行队列会创建多个线程,抢占cpu资源,造成卡顿
        //添加数据
        NSUInteger dataCount = favriteDataArray.count;
        
        [db  setShouldCacheStatements:YES];//打开存储过程-----SQLite插入数据效率最快的方式就是:事务+关闭写同步+执行准备(存储过程),如果对数据库安全性有要求的话,就开启写同步。
        
        for (int i = 0; i < dataCount/50 + 1; i++)
        {
            @autoreleasepool {
                for (int j = 0; j < 50 && i*50+j < dataCount; j++)
                {
                    dispatch_async(g_queue, ^{
                        //事务操作
                        [queue inTransaction:^(FMDatabase *db, BOOL *rollback) {
                
                            sqlstr = [NSString stringWithFormat:@"INSERT INTO XXXX"];
                            [db executeUpdate:sqlstr];
                        }];
                    });
                }
            }
        }
    
    

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

    相关文章

      网友评论

        本文标题:FMDB 大量数据操作 卡顿优化

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