性能。
当旋转磁盘是标准技术时,这尤为重要,因为查找时间和旋转延迟是一个问题。这是将磁盘的正确部分放在读/写磁头下的物理过程。使用SSD时,这些注意事项并不是那么重要,但是避免进行一些写操作,而较大的顺序写操作仍然有帮助。
更新:
由于各种原因,SSD在进行较大的顺序写入时也具有更好的性能。这并不像说“没有寻找时间或轮换等待时间,因此只是随机写入”那样简单。例如,将较大的块写入SSD知道为“空闲”的空间(例如,通过对驱动器的TRIM命令)要优于读取-修改-写入,在这种情况下,驱动器还需要管理损耗平衡并可能将更新映射到不同内部块大小。
,
我有些猜想。
直接对磁盘进行每次写入都不需要关闭电源即可恢复。但是性能问题需要用两种方式来讨论。
情况1:
所有存储设备都在旋转磁盘。 WAL方式将具有更好的性能。因为在编写WAL时是顺序写入。将数据写入磁盘操作是随机写入。随机写入的性能比旋转磁盘的顺序写入要差得多。
情况2:
您所有的设备都是SSD。则性能可能不会有太大差异。因为顺序写入和随机写入的SSD性能几乎相同。
,
正如您所注意到的,WAL的关键作用是耐用性。将突变提交给WAL之后,您可以返回到调用方,因为即使系统崩溃,该突变也永远不会丢失。
如果将更新直接写入磁盘,则有两个选项:
- 将所有记录写到某个文件的末尾
- 文件具有某种结构
如果您选择1),那么不必说读取成本为O(变异),因此几乎每个系统都使用2)。 RocksDB使用LSM,该LSM使用在内部按键排序的文件。因此,“直接写入磁盘”意味着您可能必须重写当前键之后的所有记录。那太贵了,所以你代替
- 写入WAL以保持持久性
- 更新内存表(在RAM中)
由于内存表和磁盘上的文件已排序,因此读取访问仍然相当快。更新内存中的排序结构很容易,因为那只是一棵平衡的树。当您将内存表刷新到磁盘和/或运行压缩时,由于多次写入操作,您会将文件结构重写为更新状态,这使每次写入的成本大大降低。
本文链接:https://www.f2er.com/3166534.html