如何在Oracle中解决大量并发写操作?

sup*_*leo 2 java oracle concurrency transactions real-time

我正在维护一个拥有超过数百万用户的彩票网站.一些活跃用户(可能超过30,000)将在1秒内购买超过1000个彩票.现在当前的逻辑使用select ....进行更新以确保帐户余额,但同时数据库服务器过载并且处理速度很慢?我们必须实时处理它们.

以前有没有人见过类似的场景?

Mar*_*bak 5

首先,您需要设计一个满足业务规则的事务系统.暂时忘记磁盘和内存,以及发生了什么.尝试设计一个尽可能轻量级的系统,它可以满足您的业务规则所需的最小锁定量.

现在,运行系统,会发生什么?如果表现可以接受,恭喜你,你已经完成了.

如果性能不可接受,请避免猜测问题的诱惑,并开始进行调整.您需要分析系统.您需要了解花费最多时间的地方,以便了解调整工作的重点领域.最简单的方法是使用SQL_TRACE跟踪它.您没有提及Oracle版本,版本或平台.所以,我假设你至少在某个版本的10gR2上.因此,使用DBMS_MONITOR来开始/结束跟踪.现在,范围界定在这里很重要.我的意思是,启动跟踪,运行要分析的代码然后立即关闭跟踪非常重要.这样,您只跟踪您感兴趣的内容,并且配置文件不会包含任何无关的信息.获得跟踪文件后,需要对其进行处理.有几种工具.最常见的是TkProf,它由Oracle提供,但实际上并没有做得很好.我所知道的最好的免费分析器是OraSRP.下载OraSRP的副本,并检查您的结果.报告中的数据应指向正确的方向.

完成所有这些后,如果您仍有疑问,请在此处提出一个新问题,我相信我们可以帮助您解释OraSRP的输出,以帮助您了解瓶颈所在.

希望有所帮助.