HarmonyOS 关于RdbStore的操作的一些疑问?

关系型数据库文档有如下描述:

1、“为保证数据的准确性,数据库同一时间只能支持一个写操作”

2、“数据库中有4个读连接和1个写连接,线程获取到空闲读连接时,即可进行读取操作。当没有空闲读连接且有空闲写连接时,会将写连接当做读连接来使用”

相关问题:

1、RDB框架内部做了安全同步同步吗?是否支持多线程写操作?还是需要开发者自己考虑同步操作?

2、如果不支持多线程写入,HarmonyOS 上有没有类似java synchronized 同步锁的一些方案?

3、普通的写、查、删操作,比如query、delete、insert等API内部是否实现了事务?是否还需要开发者自己实现?

阅读 654
1 个回答
  1. RdbStore中有安全同步,支持多线程写,因为只有一个写链接,所以在同时有多个写操作时,只会有一个写操作写入,其他写操作需要等待写链接空闲时才能写入:

    https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-local-database-management-16-V5

  2. 可以在调用的异步方法前面加上await将方法转为同步:

    https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/concurrency-overview-V5

  3. 可以通过beginTransaction开启事务:

    https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-relationalstore-V5\#begintransaction

  4. ArkTS是线程隔离的,并不存在线程锁,rdb底层基于sqlite,应用使用时c层会单独创建线程,c存在线程锁,支持多线程写操作,在多线程中,RDB在同一时间只支持一个写操作,只有存在空闲的写链接才能继续进行写操作,用这样的限制来保证数据存储的正确性
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进