12C开始oracle实现了SCALABLE LGWR多进程并行写redo log
12C开始oracle实现了SCALABLE LGWR多进程并行写redo log
原创 Oracle 作者:lusklusklusk 时间:2020-12-15 15:28:57 414 0
在oracle 12.1版本之前,oracle日志写进程LGWR为单进程,oracle 12.1开始实现了SCALABLE LGWR多进程,采用多个LGWR协同对redo log日志进行并行写入,这是Oracle数据库内部最重要的改进,解决了最后的并发瓶颈点
SCALABLE LGWR主要受到隐藏参数_use_single_log_writer和_max_outstanding_log_writes的控制
_use_single_log_writer参数主要有三个可选值 true,false,adaptive,默认值为adaptive
false,adaptive:如果CPU个数大于一个则会有多个lg0n进程
true:不生成多个lg0n进程,如同12.1之前那样仅有单个LGWR
_max_outstanding_log_writes参数默认值为2
[oracle@12C ~]$ ps -ef |grep ora_lg |grep -v grep oracle 6305 1 0 14:53 ? 00:00:00 ora_lgwr_OCP oracle 6311 1 0 14:53 ? 00:00:00 ora_lg00_OCP oracle 6315 1 0 14:53 ? 00:00:00 ora_lg01_OCP SQL> select VERSION from v$instance; VERSION ----------------- 12.1.0.2.0 SQL> select a.ksppinm name , b.ksppstvl value, a.ksppdesc description from x$ksppi a, x$ksppcv b where a.indx = b.indx and a.ksppinm in ( '_max_outstanding_log_writes' , '_use_single_log_writer' ); NAME VALUE DESCRIPTION ------------------------------ ---------- -------------------------------------------------- _use_single_log_writer ADAPTIVE Use a single process for redo log writing _max_outstanding_log_writes 2 Maximum number of outstanding redo log writes |
修改_max_outstanding_log_writes=3
SQL> alter system set "_max_outstanding_log_writes" =3 scope=spfile; System altered. SQL> startup force SQL> select a.ksppinm name , b.ksppstvl value, a.ksppdesc description from x$ksppi a, x$ksppcv b where a.indx = b.indx and a.ksppinm in ( '_max_outstanding_log_writes' , '_use_single_log_writer' ); NAME VALUE DESCRIPTION ------------------------------ ---------- -------------------------------------------------- _use_single_log_writer ADAPTIVE Use a single process for redo log writing _max_outstanding_log_writes 3 Maximum number of outstanding redo log writes [oracle@12C ~]$ ps -ef|grep lg|grep -v grep oracle 8589 1 0 15:13 ? 00:00:00 ora_lgwr_OCP oracle 8593 1 0 15:13 ? 00:00:00 ora_lg00_OCP oracle 8597 1 0 15:13 ? 00:00:00 ora_lg01_OCP oracle 8601 1 0 15:13 ? 00:00:00 ora_lg02_OCP |
修改_use_single_log_writer='true'
SQL>
alter
system
set
"_use_single_log_writer"
=
'true'
scope=spfile;
System altered.
SQL> startup
force
SQL>
select
a.ksppinm
name
, b.ksppstvl value, a.ksppdesc description
from
x$ksppi a,
x$ksppcv b
where
a.indx = b.indx
and
a.ksppinm
in
(
'_max_outstanding_log_writes'
,
'_use_single_log_writer'
);
NAME
VALUE DESCRIPTION
------------------------------ ---------- --------------------------------------------------
_use_single_log_writer
true
Use a single process
for
redo log writing
_max_outstanding_log_writes 1 Maximum number
of
outstanding redo log writes
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!