各种 RDBMS 查询的执行时间?

Posted

技术标签:

【中文标题】各种 RDBMS 查询的执行时间?【英文标题】:Execution times for various RDBMS queries? 【发布时间】:2009-12-31 02:08:07 【问题描述】:

是否有一些关于各种查询执行时间的可靠(即确认)数据,例如不同类型的连接、扫描,以及不同类型和大小的数据?我正在寻找数量级。这不一定是特定于供应商的数据。

latency for various access times 的呈现方式应该类似。 (点击查看回复。)

我寻找它的原因是决定我是否应该在我正在从事的项目中使用 RDBMS。我不需要复杂的连接,我可能会摆脱本地 memcache 甚至磁盘访问。

根据要求,可能需要 RMDBS 的项目部分都位于单个节点上的本地。节点可以存储任何类型的数据,任何类型的读/写都是基于键的,因为它将其存储组件视为一个巨大的字典。它可能会尝试遍历对象,并且可能有一个对象为这些对象提供列表。这种迭代可能类似于“查找具有此属性的所有对象”(即查找列与该值匹配的所有行)。这是我不确定的部分——如果有的话,RDBMS 能给我带来多少优势?我不认为需要加入。

我喜欢这个基准测试的另一个原因是,考虑到网络延迟和本地执行时间之间的差异,我可以决定向各个节点卸载多少。

【问题讨论】:

如果没有更多关于数据类型、您尝试解决的问题、预期用途等的详细信息,这真的不可能以任何有意义的方式回答。您最好只描述项目并确定如果 RDBMS 适合基于此。 我记得我的一位教授曾经说过,自己实现 DBMS 会很愚蠢。我认为他的引述类似于“你认为作为一个个体,你是否可以匹配过去 30 年左右由非常聪明的人开发的系统的性能?”当然,访问文件比在数据库中查找要快,但是您正在谈论对不同类型的数据类型进行搜索和搜索。对于实现自己的 DBMS,我会三思而后行。 【参考方案1】:

"No SQL" movement 可能会决定寻找关系数据库的替代方案是个好主意。

但在任何情况下,我都不会尝试自己实现持久性技术。

您的问题无法以通用的方式回答。

我能想到的最好的解决方法是编写一个通用的持久性接口,允许您交换实现。编写一个关系实现和您选择的另一种技术。对两者进行基准测试,看看哪一个在您的实际情况下适用。成为一名科学家 - 获取一些数据。自己创建而不是依赖论坛,对我来说似乎是一种聪明的方法。

【讨论】:

【参考方案2】:

根据您的描述,您似乎不需要 RDMS。

您是否有使用 SQL 语言访问数据的用途....或者您的使用是相当可预测的。

RDBMS 有很多层开销,例如解析 SQL 语句。

如果您可以将数据存储在内存和文件系统中而不需要 SQL 语言访问权限,那么您就有机会使系统更快。

希望对您有所帮助。 伊万

【讨论】:

【参考方案3】:

关于每种查询的时间问题很难直接回答,但我会尝试。我个人也喜欢知道不同操作的绝对时间。我认为对于简单的按键访问,您可以预期每个简单 SQL 需要 10-20 毫秒。另一个数字——如果你想从一个表中读取大量数据,你可以期望在一个现代 CPU 的服务器上每秒获得数百兆字节的数据。 关于 RDBMS 服务器的选择——对于简单的查询,像 mysql 这样的简单 RDBMS 引擎会做得最好。如果你的查询会变得复杂——那么像 Oracle、DB2、SQLServer 等更严重的引擎将会为自己买单。 我为谷歌应用引擎数据存储区做的更多基准测试:dbaspects.blogspot.com

【讨论】:

以上是关于各种 RDBMS 查询的执行时间?的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询优化

一个RDBMS左连接SQL执行计划解析

在 Hive 中执行 SQL 过程

mongoose 各种执行

傻瓜MySQL查询缓存都不知道...

查询的运行时间极其不成比例。试图理解 RDBMS