1

我最近一直在研究的几个数据库在内部实现了一个虚拟机来执行各自的数据读取和写入。例如,查看这篇关于他们称之为“VDBE”的 SQLite 虚拟机的文章。我很好奇这种架构的好处是什么。我会假设性能是一个,但为什么像这样的虚拟机会运行得更快?事实上,这个额外的层似乎会导致它运行得更慢。所以也许是为了安全?还是便携性?反正就是好奇这个。

4

1 回答 1

1

他们在“类似组装”的水平上做他们的事情,在那里你可以获得可接受的速度而不会失去便携性。我认为他们提供了一个虚拟机,所以他们得到了一个平衡的权衡。要么您将高级代码(SQL 代码**)作为高级语言执行,但您会失去速度,但会获得便利。另一种方法是生成特定于平台的(本机)代码,与解释的相比,它运行得更快,但对于在 ANSI-C 存在的地方运行的广泛传播的库来说,这是很多麻烦。

** 当然不必是 SQL 代码。我认为命令式表示更适合执行。无论如何,与“操作码”相比,该表示仍然是非常高级的表示。

于 2010-03-19T01:30:04.113 回答