【发布时间】:2013-07-18 10:16:15
【问题描述】:
在 Oracle 11g DBMS 上,我们有一个包含约 5000 万条数据记录和约 100 列的单一平面表。主要出于性能原因制作了一个表。
有多个客户端应用程序对该表执行不同的选择 SQL 查询,此外它们可以异步侦听来自该表的更新。
问题:
主要问题 - 一些 sql 查询的工作非常缓慢 - 最多 8 分钟,确切地说。问题是 SQL 查询可以是任意的,这取决于客户端。 Oracle-hints 不是解决方案。此外,在某些情况下,Oracle 优化器会做出错误的估计或数据库索引会降低性能。关系数据库在这里很烂。
要求:
- 查询必须基于标准 SQL。
- 显着提高了从该表执行几乎所有选择查询的速度。
- 解决方案必须在客户端和数据数量方面具有可扩展性。
- 解决方案应该简单且经济高效。
问题:
您推荐哪些解决方案/架构来实现上述要求? 我们可能会考虑不同的非关系型数据库或内存缓存,开发我们自己的解决方案等等。
【问题讨论】:
-
还会更新吗?我的意思是经常?
-
是的,更新很频繁。更新的峰值数量是在一天结束时 = 每秒最多 500 条新记录。平均更新次数约为 100 次更新/秒。
-
如果你有一个单一的平面表每秒有 100 次更新,使用 mysql,不要使用 oracle。因为在这种情况下您不需要关系数据库。
-
我们在谈论什么样的MySql?还有一个关系 MySql DBMS。
标签: sql performance scalability database database-table