关系型数据库文档有如下描述:
1、“为保证数据的准确性,数据库同一时间只能支持一个写操作”
2、“数据库中有4个读连接和1个写连接,线程获取到空闲读连接时,即可进行读取操作。当没有空闲读连接且有空闲写连接时,会将写连接当做读连接来使用”
相关问题:
1、RDB框架内部做了安全同步同步吗?是否支持多线程写操作?还是需要开发者自己考虑同步操作?
2、如果不支持多线程写入,HarmonyOS 上有没有类似java synchronized 同步锁的一些方案?
3、普通的写、查、删操作,比如query、delete、insert等API内部是否实现了事务?是否还需要开发者自己实现?
RdbStore中有安全同步,支持多线程写,因为只有一个写链接,所以在同时有多个写操作时,只会有一个写操作写入,其他写操作需要等待写链接空闲时才能写入:
https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-local-database-management-16-V5
可以在调用的异步方法前面加上await将方法转为同步:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/concurrency-overview-V5
可以通过beginTransaction开启事务:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-relationalstore-V5\#begintransaction