fsync/fdatasync 调用很昂贵,但它们在数据库中是必不可少的,因为它允许 ACID 中的持久性。正如我所测试的,当只有一个进程定期进行一些写入和 fsync 时,每个 fsync 大约需要 50 毫秒。但是当有多个进程在做同样的事情时,比如说其中两个,有时(可能 50%)fsync 会花费大量时间,数百或数千毫秒,甚至数十秒,显然系统在这种情况下变得无法使用。我想知道如何在数据库中解决这个问题,特别是在分布式时间序列数据库中,当有多个节点使用单个硬盘时。
fsync/fdatasync 调用很昂贵,但它们在数据库中是必不可少的,因为它允许 ACID 中的持久性。正如我所测试的,当只有一个进程定期进行一些写入和 fsync 时,每个 fsync 大约需要 50 毫秒。但是当有多个进程在做同样的事情时,比如说其中两个,有时(可能 50%)fsync 会花费大量时间,数百或数千毫秒,甚至数十秒,显然系统在这种情况下变得无法使用。我想知道如何在数据库中解决这个问题,特别是在分布式时间序列数据库中,当有多个节点使用单个硬盘时。