【问题标题】:How do I load the Oracle schema into memory instead of the hard drive?如何将 Oracle 模式加载到内存而不是硬盘驱动器中?
【发布时间】:2010-04-14 01:03:08
【问题描述】:

我有一个特定的 Web 应用程序,它连续对 Oracle 数据库进行约 100 次以上的更新。这可能需要 3-5 分钟,这有时会导致网页超时。很快就会重新设计应用程序,但有人告诉我,有一种方法可以配置“加载器文件”,它将模式加载到内存中并在那里而不是在硬盘上运行事务,据说可以提高几个订单的速度量级。我试图研究这个“加载器文件”,但我只能找到有关 SQL* 批量数据加载器的信息。有谁知道他在说什么?这真的有可能吗?这是一个可行的快速解决方案,还是我应该等到重新设计应用程序?

【问题讨论】:

  • 我认为 'loader' 是错误的搜索词。尝试“内存缓存”或“延迟写入”等。
  • 我听说有人试图通过在应用程序启动时访问表来缓存表,但我建议努力确定什么是缓慢的并努力解决确切的问题。 Oracle 已经在缓存最近和最常用数据的算法上投入了大量时间和精力。你确定它会为这些操作写入磁盘吗?您知道 Web 应用程序和数据库之间每次往返的开销吗?可以以任何方式对更新进行批处理吗?您是否检查过 StatsPack 或 AWR 报告中的顶级等待事件?
  • lexu:感谢提醒,这些搜索词更有帮助。
  • David Mann:既然你提到了它,我很确定主要瓶颈是应用程序的糟糕设计,它将每个更新作为单独的查询运行,而不是按照你的建议进行批处理,所以任何与应用程序和数据库之间的开销相比,内存与磁盘优化可以忽略不计。
  • 你是对的安德鲁。听起来这可能是应用服务器和数据库服务器之间往返的固定开销成本。

标签: oracle memory schema performance loader


【解决方案1】:

Oracle 已经在内存中完成了它的工作——磁盘 I/O 在幕后进行管理。经常访问的数据保留在缓冲区高速缓存中的内存中。也许您的线人指的是在内存中“固定”一个对象,但这在 Oracle 的现代版本(自 V8 起)中确实无效,尤其是对于表数据。让 Oracle 完成它的工作——它实际上非常擅长(可能比我们更好)。面对现实吧 - 10 万次更新需要一段时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-02
    • 2012-12-11
    • 2015-07-27
    • 2018-08-16
    • 2017-01-27
    • 2010-09-14
    • 2012-11-03
    相关资源
    最近更新 更多