【发布时间】:2015-09-12 20:56:00
【问题描述】:
我有一台运行 Oracle 11g 和 Server 2008r2 的服务器,具有 32GB 的 RAM 和 2 个 3Ghz 的四核 CPU(总共 8 个核,无 HT)。我的磁盘由 RAID 10 中的 4 个 10,000RPM SAS 驱动器组成。
当我执行 DML 语句从另一个表中插入行并删除它们时,这可能会耗尽我的机器上的 CPU 并锁定数据库并阻止写入新记录。
有没有办法限制 SQL 查询可以使用的系统资源或 oracle 资源的数量?
谢谢
【问题讨论】:
-
除非您运行的是 express 版本或者您使用的是并行 DML,否则单个会话最多会使用一个内核的 100%。这将使 7 个核心可供其他会话使用。您确定瓶颈在 CPU 上吗?您使用的是哪个版本的数据库?
-
具有 Oracle 和 SQL Server 的单一服务器?那是怎么配置的?
-
APC:Windows Server 2008r2 和 Oracle 11g (11.2) Enterprise。
-
Justin Cave:我正在执行一些相当简单的 DML:INSERT INTO ARCHIVE_MYTABLE SELECT * FROM MYTABLE WHERE UNIX_DATE BETWEEN V_ST AND V_ET 其中 V_ST 和 V_ET 是一个月开始和结束时传递的 unix_dates。紧随其后的是 DELETE FROM MYTABLE WHERE UNIX_DATE BETWEEN V_ST AND V_ET。此语句可能会导致所有 8 个内核的上限为 100%,并有大量 RAM 和磁盘 I/O 可供备用。