【发布时间】: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