0

在 Oracle 11g DBMS 上,我们有一个包含约 100 列的约 5000 万条数据记录的平面表。主要出于性能原因制作了一个表。

有多个客户端应用程序对该表执行不同的选择 SQL 查询,此外它们可以异步侦听来自该表的更新。

问题:

主要问题 - 一些 sql 查询的工作非常缓慢 - 准确地说,最多 8 分钟。问题是 SQL 查询可以是任意的,这取决于客户端。Oracle-hints 不是解决方案。此外,在某些情况下,Oracle 优化器会做出错误的估计或数据库索引会降低性能。关系数据库在这里很烂。

要求:

  1. 查询必须基于标准 SQL。
  2. 显着提高了从该表执行几乎所有选择查询的速度。
  3. 该解决方案必须在客户端和数据数量方面具有可扩展性。
  4. 该解决方案应该简单且具有成本效益。

问题:

您推荐什么解决方案/架构来实现上述要求?我们可能会考虑不同的非关系数据库或内存缓存,开发我们自己的解决方案,无论如何。

4

1 回答 1

0

如果您使用的是单个表格,它应该只用于报告,否则您做错了。报告数据不应该经常更新,而不是每小时更新一次。如果 oracle 提示失败,您可以手动更改它,有时会发生,但这主要是因为更新/插入。并且了解你的查询,不要盲目地为每一列创建索引(你确实使用正确的索引),检查这些慢查询花费时间的地方然后你就会知道在哪里进行优化。

如果您知道如何使用它们,关系数据库并不糟糕。

于 2013-07-19T08:06:09.703 回答