最近,我们的 Oracle 数据库遇到了问题,它锁定了我们目前所知的 1 个查询。
我会详细说明发生的事情,但实际上这与我的问题没有太大关系,但我愿意接受建议。
间歇性地不知道什么时候会发生,过去一个月已经发生过 4 次,用户会点击应用程序中的某个东西。用户点击的是什么仍然未知。无论点击什么,它都会在数据库上运行查询,这将生成大约 700k 行。
我已经检查了运行查询的表并且索引看起来良好。
数据库为 60GB,服务器上有 32GB。
从数据库服务器上的日志中我看到高 I/O,但 CPU 和 RAM 保持不变。
在应用程序服务器上,CPU 的使用率上升到 75% 左右。我可以找到工作进程,找到 PID,但是当我终止与工作进程关联的 PID 时,CPU 会短暂下降,然后立即恢复。
回收应用程序池并重新启动 IIS 也会执行相同的操作,CPU 将短暂下降然后立即恢复。
让服务器恢复正常的唯一办法就是重新启动。
所以我的建议是,如果这个查询是导致锁定的原因,是否可以增加机器上的内存,以允许数据库缓存并耗尽内存。我听说过一次,但我不确定这是否属实。
存储是具有 3 层的 HP PAR 3,数据库基本上位于 SSD 层。
SSD 和内存哪个更快
答案1
SSD 和内存哪个更快
DRAM 比 NAND 闪存更快。RAM 访问时间约为 100 纳秒,而 SSD 随机读取时间约为 16,000 纳秒。每个程序员都应该知道的延迟数字
您需要对正在发生的事情及其原因进行系统分析。不要仅仅因为听到关于另一个系统的间接消息就改变一切。找出这个系统的问题所在。
幸运的是,DBMS 系统往往有性能工具。Oracle 和其他 RDBMS 必须EXPLAIN PLAN
显示完整扫描和其他低效率。即使使用索引,查询也可能表现不佳。还有 Oracle AWR 等系统性能报告可以查找瓶颈。如果您想进一步了解 DB 性能,也可以询问我们的姊妹网站, https://dba.stackexchange.com/