【发布时间】:2017-07-29 10:15:02
【问题描述】:
在传统的 RDBMS 中, 为什么多对多连接比多对一连接消耗更多资源? 毕竟,多对多关系不就像两个多对一关系吗?
我观察到多对多查询在使用具有 3-4 GB RAM 的主流计算机时变得缓慢,超过了表中大约 10 到 15 百万行。 在查询多对一关系时,我观察到即使有 5000 万行也没有减速。
- 如何根据预期性能预测内存和 CPU 需求? (是否有可用的基准?)
- 过去哪些阈值值得使用其他解决方案? (MPP 或 NoSQL)
【问题讨论】:
-
如果你想了解查询是如何执行的,那就学习使用
explai。 -
感谢@Gordon-Linoff。解释命令真的可以预测内存和 CPU 需求并提供多对多关系的基准吗?
-
一般来说是的,但这取决于数据库。
-
我正在使用 postgresql。我会看看 explain 命令是否可以提供有关最佳内存和 cpu 要求的有效提示,也欢迎社区对此主题的任何反馈
-
@Gordon-Linoff,据我所知,粗略回顾一下 postgres 文档,即使转换为磁盘页面单位 (postgresql.org/docs/8.0/static/performance-tips.html),也会提供 CPU 工作量估计值,但我没有看到内存要求,也没有速度预测给定内存和 cpu 参数。
标签: sql query-optimization rdbms database-optimization