تاثیر log strand بر اندازه آرشیولاگ

از اوراکل نسخه 9i به بعد این امکان وجود دارد تا log buffer به چند قسمت مساوی تقسیم شود و هر قسمتآن به قسمتی از redo log مپ شود و به این طریق انتفال اطلاعات صورت گیرد به این ویژگی public redo strand می گویند.

با این کار waitهای کمتری را از جنس log file sync و latch redo allocation در سیستم شاهد خواهیم بود کهرابطه مستقیم تعداد strandها با latchهای redo allocation در نسخه 10g مویدیست بر این نکته. تعداد redo strand به طور پیش فرض با استفاده از مقدار cpu_count مشخص می شود همچنین می توان با پارامتر_log_parallelism_max تعداد جاری آن را مشاهده کرد:

select  nam.ksppinm, val.KSPPSTVL, nam.ksppdesc from sys.x$ksppi nam,   sys.x$ksppsv val where nam.indx=val.indx AND upper(nam.ksppinm) LIKE ‘%LOG_PARALLE%’;

 

معمولا مقدار پیش فرض آن برابر با دو می باشد و با هر 16 cpu یک عدد به مقدار آن اضافه می شود.

حال زمانی را فرض کنید که چند redo strand به صورت موازی در حال نوشتن اطلاعات بر روی redo log هستندو در همین حال کار یکی از redo strandها زودتر به اتمام می رسد و قصد دارد ادامه اطلاعات را به redo logمنتقل کند به دلیل اینکه redo log فضای خالی ای به اندازه یک redo strand ندارد، اوراکل مجبور است تا بهredo log دیگری سوییچ کند(حتی اگر بقیه strandها مشغول به کار باشند) تا این redo strand آزاد را به یک آن مپ کند با این کار اندازه آرشیو لاگها کوچکتر خواهند شد چون قسمتی از redo log بدون استفاده باقی ماندهاست.

در این قسمت نتیجه چند مورد تست انجام شده را با هم خواهیم دید.

در اینجا فرض ما بر آن است که تنها یک کاربر به بانک وصل شده و همه پارامترهای مرتبط به checkpoint همانندfast_start_mttr_target مقدار پیش فرض دارند و همچنین هیچ کاربری دستور switch logfile را صادر نمی کندالبته اگر تعداد sessionهای همزمان بیشتر شوند، رفتار بانک کمی متفاوت تر خواهد بود.

create table usef_tbl (a number, b char(400));

begin

for i in 1..600000 loop

insert into usef_tbl values (i,’b’);

end loop;

end;

/

_log_parallelism_max

log_buffer size redo log size Archive log size
1 15MB 50MB 49M
2 15MB 50MB 41M
2 20MB 50MB 39M
8 15MB 50MB 36M

 

همانطور که می بینید با افزایش تعداد redo strand، اندازه آرشیولاگ کوچکتر شده است.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد.