数据库性能,CPU或内存的瓶颈是什么?

我们都知道内存I / O比磁盘I / O更快。 数据库使用caching机制来提高性能。 似乎没有CPU的开销业务。

我的意思是CPU通常足够快,不会成为使用像Berkeley DB这样的小型本地数据库的性能瓶颈。 相对更快的CPU不会改善这种数据库的性能。

我的问题是,我的上面的假设是否正确。

我做了一些简单的testing,结果是违背了我的假设,让我感到困惑。

例如,我做了一个testing,做了10万次写入/读取darabase操作,并且在每次写入操作之前放了一点FOR循环来增加一些CPU开销。 我期望的是FOR循环不会影响程序的总运行时间。 但结果却恰恰相反。 额外的运行时间与FOR循环完全相同。

这是否意味着CPU将数据写入内存时,无论CPU本身有多快,都只是暂停等待操作完成。

PS:对不起我英文expression不准确。 我已经尽力了

是的,数据库操作通常必须在成功返回之前写入磁盘。 这是一件非常好的事情,因为程序在知道操作是否正确之前不应该继续。 如果你要并行化你的testing程序,你可能会发现你的循环对运行时的影响较小,因为循环可以在其他线程等待IO操作完成的时候运行。

另外,虽然现代CPU当然是最有可能成为数据库瓶颈的候选人,但这通常并不正确:根据您的应用程序和数据库查询,它们可能会严重影响CPU,导致磁盘子系统空闲CPU运行在100%。