一> 如果优化SQLite的性能? (2种方式)
Q> 如果我们一次性存储10000条数据, 那么该如何优化自己程序的性能呢? (卡主主界面/性能优化)
A> 第一种办法: 使用多线程来优化, 子线程存储数据(卡主主界面); 第二种办法: 处理sqlite开启, 关闭事务(性能优化)
Q> 第一种办法, 具体如何操作?
A> 由于数据库是一个文件, 所以在使用多线程对于其操作的时候, 需要注意线程之间资源的抢占所导致的安全问题, 解决办法: 使用串行队列, 在进行数据库操作的时候, 将任务添加到队列(此时可以传入一个闭包 / block)中执行
X: 一定不要开多条线程来操作数据库, 才能保证我们的数据不会混乱
Q> 第二种办法, 具体如何操作 ?
A> 关于Sqlite事务的理解:
1> 事务: 在执行SQL语句之前, 事务会把SQL备份一份, 防止一些SQL内部的错误操作导致不可挽回的错误. 当语句成功执行完毕后, 会把之前的备份删除, 如果语句执行失败, 则用备份的数据库还原会以前的数据库(称之为回滚)
1.1> 开启事务: 备份数据库
1.2> 提交事务: 删除备份
1.3> 回滚: 用备份还原数据库
2> 如果我们没有开启事务, 那么多默认帮我们开启事务, 插入一条开启一次, 关闭一次; 所以当我们在插入数据前, 主动开启一次, 在插入数据之后, 主动关闭一次, 会大大提高我们程序的性能(at least 100M)
Q> 还有没有其他方式 ?
A> 预编译+事务, 提高性能(2M)