近期,项目选择使用sqlite为数据库,考虑到它的优点高效,方便部署,可以满足项目的需求,最开始用的时otl_stream,但是otl_stream优点是可以支持不同的数据库,项目暂时没有这个需要。
sqlite的接口总体来讲很简单,分为以下三种执行方式
1 直接执行,比如说建表,删除表等
2 预编译执行,比如说插入表,但是每次的值有变化,可以以?的形式预编译处理,然后将具体的值绑定到预编译对象
3 事务执行,比如一开始初始化一批数据,一个一个的势必会影响效率,可以使用begin,把所有的数据都插入,commit这样效率会快很多
sqlite的线程和进程读取
sqlite默认编译时要加入线程安全模式,这意味着不同线程之间可以随意对数据库进行读写操作
sqlite如果使用默认方式,那么一个进程在对数据库进行操作时,另一个线程时没有权限读或写数据库的,因为已经把数据库锁住了,如果想要实现进程间同步,需要使用WAL模式,即在初始化后执行PRAGMA journal_mode=WAL;这个语句,然后就会发现,
别的进程也可以成功读取数据库了。