在数据库体系中,OLTP(在线事务处理)数据库通常面对着高并发和高吞吐量的要求。
在某些情况下,可以通过启用 NUMA(非统一内存访问)来改善 OLTP 数据库的性能。
NUMA 体系的内存分配计谋与传统的对称多处理 (SMP) 体系差异。在 SMP 体系中,全部 CPU 焦点都可以访问同一个共享的内存。而在 NUMA 体系中,内存访问被限制在特定的节点(或节点聚集),这取决于 CPU 焦点的物理位置。
为了在 OLTP 数据库中利用 NUMA 技术来提拔性能,可以思量以下计谋:
NUMA大概导致的故障:
ORA-4031
ORA-600 with argument KSKRECONFIGNUMA2
ORA-600 with argument KSBASEND_INTERNAL
ORA-600 with argument KSMHEAP_ALLOC1
ORA-27302: FAILURE OCCURRED AT: SSKGXPCRE3
在Oracle NUMA Usage Recommendation (Doc ID 759565.1)中查询BUG列表
此中,以10204,11107版本遭遇到的BUG最多,因为这两个版本默认启用了NUMA
所以推荐在新装的体系上关闭掉NUMA,但是如果当前已经启用了NUMA而且运行精良,大概有时间做测试,建议照旧启用NUMA
Disable NUMA on database servers to improve performance of Linux file system utilities (Doc ID 1053332.1)
当启用NUMA后,将对内存分组。
当利用一些OS命令(cp,gzip)普通IO操作一个大的文件时,该命令会恒久占用一个CPU
同时,其会消耗这个CPU所关联的内存,用作文件体系缓存
终极导致在体系另有空闲内存的情况下,发生分页,影响数据库性能
11G on HP Creates 6 Shared Memory Segments [ID 601552.1]
共享内存分段,各个平台均大概遭遇到该问题
Sga can't Fit Into A Single Memory Segment and UDP port usage is exploding [ID 747486.1]
HP各平台,导致内存分段以及run out of UDP ports
Bug 8199533 - NUMA enabled by default can cause high CPU / OERI [ID 8199533.8]
导致高CPU消耗,各个平台均大概遭遇到该问题
Multiple DBWR Not Used Though DB_WRITER_PROCESSES is Set [ID 576888.1]
通过_enable_NUMA_optimization = FALSE关闭NUMA后,大概发生DBWR个数无法指定的问题
需要通过设置情况变量和利用_db_block_numa关闭NUMA
1.setenv DISABLE_NUMA TRUE
2._db_block_numa=1
Oracle Background Processes (Including Parallel Processes) Using Only First 8 CPUs (Half) on 16-CPU Server Under NUMA [ID 760705.1]
启用NUMA导致ORACLE无法利用全部CPU 10204
11gR2版本如何启用NUMA:
1._enable_NUMA_support=TRUE
2._enable_NUMA_optimization参数已经被废弃
3.如果启用OK,在alert日志中将看到如下信息:
...NUMA system found and support enabled (8 domains - 6,6,6,6,6,6,6,6)...
Oracle19c相关NUMA特性