Highload++ Siberia 2019 හි අඩිපාරේ යමින් - Oracle හි කාර්යයන් 8ක්

හෙලෝ!

ජූනි 24-25 දිනවල Highload++ Siberia 2019 සමුළුව Novosibirsk හිදී පැවැත්විණි.අපේ කට්ටියත් එතන හිටියා. වාර්තාව “ඔරකල් බහාලුම් දත්ත සමුදායන් (CDB/PDB) සහ මෘදුකාංග සංවර්ධනය සඳහා ඒවායේ ප්‍රායෝගික භාවිතය”, අපි ටික වේලාවකට පසුව පෙළ අනුවාදයක් පළ කරන්නෙමු. එය සිසිල් විය, ස්තූතියි ඔලෙග්බුනින් සංවිධානයට මෙන්ම පැමිණි සියල්ලන්ටම.

Highload++ Siberia 2019 හි අඩිපාරේ යමින් - Oracle හි කාර්යයන් 8ක්
මෙම පෝස්ටුවෙන්, ඔබේ ඔරකල් දැනුම පරීක්ෂා කර බැලීමට අපගේ කුටියේ ඇති වූ ගැටළු ඔබ සමඟ බෙදා ගැනීමට අපි කැමැත්තෙමු. කප්පාදුවට පහළින් ගැටළු 8 ක්, පිළිතුරු විකල්ප සහ පැහැදිලි කිරීමක් ඇත.

පහත ස්ක්‍රිප්ට් එක ක්‍රියාත්මක කිරීමේ ප්‍රතිඵලයක් ලෙස අපට පෙනෙන උපරිම අනුක්‍රමික අගය කුමක්ද?

create sequence s start with 1;
 
select s.currval, s.nextval, s.currval, s.nextval, s.currval
from dual
connect by level <= 5;

  • 1
  • 5
  • 10
  • 25
  • නැත, දෝෂයක් සිදුවනු ඇත

පිළිතුරOracle ලියකියවිලි වලට අනුව (8.1.6 උපුටා දක්වා ඇත):
තනි SQL ප්‍රකාශයක් තුළ, Oracle විසින් අනුපිළිවෙල වැඩි කරනු ලබන්නේ පේළියකට එක් වරක් පමණි. ප්‍රකාශයක අනුපිළිවෙලක් සඳහා NEXTVAL වෙත යොමු එකකට වඩා තිබේ නම්, Oracle එක වරක් අනුපිළිවෙල වැඩි කර NEXTVAL හි සියලුම සිදුවීම් සඳහා එකම අගය ලබා දෙයි. ප්‍රකාශයක CURRVAL සහ NEXTVAL යන දෙකටම යොමු අඩංගු නම්, Oracle එම අනුපිළිවෙල වැඩි කර CURRVAL සහ NEXTVAL යන දෙකටම එම ප්‍රකාශය තුළ ඇති අනුපිළිවෙල නොසලකා එකම අගය ලබා දෙයි.

මේ අනුව, උපරිම අගය රේඛා ගණනට අනුරූප වේ, එනම් 5.

පහත ස්ක්‍රිප්ට් ධාවනය කිරීමේ ප්‍රතිඵලයක් ලෙස වගුවේ පේළි කීයක් තිබේද?

create table t(i integer check (i < 5));
 
create procedure p(p_from integer, p_to integer) as
begin
    for i in p_from .. p_to loop
        insert into t values (i);
    end loop;
end;
/
 
exec p(1, 3);
exec p(4, 6);
exec p(7, 9);

  • 0
  • 3
  • 4
  • 5
  • 6
  • 9

පිළිතුරOracle ලියකියවිලි වලට අනුව (11.2 උපුටා දක්වා ඇත):

ඕනෑම SQL ප්‍රකාශයක් ක්‍රියාත්මක කිරීමට පෙර, Oracle ව්‍යංග සුරැකුම් ලක්ෂ්‍යයක් සලකුණු කරයි (ඔබට ලබා ගත නොහැක). ඉන්පසුව, ප්‍රකාශය අසාර්ථක වුවහොත්, Oracle එය ස්වයංක්‍රීයව පෙරළන අතර අදාළ දෝෂ කේතය SQLCA හි SQLCODE වෙත ආපසු ලබා දෙයි. උදාහරණයක් ලෙස, INSERT ප්‍රකාශයක් අද්විතීය දර්ශකයක අනුපිටපත් අගයක් ඇතුළු කිරීමට උත්සාහ කිරීමෙන් දෝෂයක් ඇති වුවහොත්, ප්‍රකාශය ආපසු හරවනු ලැබේ.

සේවාලාභියාගෙන් HP ඇමතීම ද තනි ප්‍රකාශයක් ලෙස සලකා සකසනු ලැබේ. මේ අනුව, පළමු HP ඇමතුම වාර්තා තුනක් ඇතුළත් කිරීමෙන් සාර්ථක ලෙස සම්පූර්ණ වේ; දෙවන HP ඇමතුම දෝෂයකින් අවසන් වන අතර එය ඇතුල් කිරීමට සමත් වූ සිව්වන වාර්තාව ආපසු හරවයි; තුන්වන ඇමතුම අසාර්ථකයි සහ වගුවේ වාර්තා තුනක් ඇත.

පහත ස්ක්‍රිප්ට් ධාවනය කිරීමේ ප්‍රතිඵලයක් ලෙස වගුවේ පේළි කීයක් තිබේද?

create table t(i integer, constraint i_ch check (i < 3));
 
begin
    insert into t values (1);
    insert into t values (null);
    insert into t values (2);
    insert into t values (null);
    insert into t values (3);
    insert into t values (null);
    insert into t values (4);
    insert into t values (null);
    insert into t values (5);
exception
    when others then
        dbms_output.put_line('Oops!');
end;
/

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

පිළිතුරOracle ලියකියවිලි වලට අනුව (11.2 උපුටා දක්වා ඇත):

වගුවේ ඇති සෑම පේළියක්ම තෘප්තිමත් විය යුතු කොන්දේසියක් නියම කිරීමට පිරික්සුම් සීමාවක් ඔබට ඉඩ සලසයි. සීමාව තෘප්තිමත් කිරීමට, වගුවේ ඇති සෑම පේළියක්ම කොන්දේසිය සත්‍ය හෝ නොදන්නා (ශුන්‍යයක් හේතුවෙන්) කළ යුතුය. Oracle විසින් යම් පේළියක් සඳහා චෙක්පත් සීමා කොන්දේසියක් ඇගයීමට ලක් කරන විට, කොන්දේසියේ ඇති ඕනෑම තීරු නාමයක් එම පේළියේ තීරු අගයන් වෙත යොමු වේ.

මේ අනුව, අගය null චෙක්පත සමත් වනු ඇත, සහ 3 අගය ඇතුල් කිරීමට උත්සාහ කරන තෙක් නිර්නාමික බ්ලොක් එක සාර්ථකව ක්‍රියාත්මක වේ. මෙයින් පසු, දෝෂ හැසිරවීමේ අවහිරය ව්‍යතිරේකය ඉවත් කරයි, ආපසු හැරීමක් සිදු නොවේ, සහ මේසයේ පේළි හතරක් ඉතිරි වනු ඇත අගයන් සමඟ 1, null, 2 සහ null නැවත.

බ්ලොක් එකේ එකම ඉඩ ප්‍රමාණයක් ගන්නේ කුමන අගයන් යුගලද?

create table t (
    a char(1 char),
    b char(10 char),
    c char(100 char),
    i number(4),
    j number(14),
    k number(24),
    x varchar2(1 char),
    y varchar2(10 char),
    z varchar2(100 char));
 
insert into t (a, b, i, j, x, y)
    values ('Y', 'Вася', 10, 10, 'Д', 'Вася');

  • A සහ X
  • බී සහ වයි
  • සී සහ කේ
  • C සහ Z
  • K සහ Z
  • මම සහ ජේ
  • J සහ X
  • සියල්ල ලැයිස්තුගත කර ඇත

පිළිතුරOracle හි විවිධ වර්ගයේ දත්ත ගබඩා කිරීම පිළිබඳ ලියකියවිලි (12.1.0.2) වෙතින් උපුටා ගැනීම් මෙහි දැක්වේ.

CHAR දත්ත වර්ගය
CHAR දත්ත වර්ගය දත්ත සමුදා අක්ෂර කට්ටලයේ ස්ථාවර දිග අක්ෂර මාලාවක් නියම කරයි. ඔබ ඔබේ දත්ත සමුදාය නිර්මාණය කරන විට දත්ත සමුදා අක්ෂර කට්ටලය සඳහන් කරයි. CHAR තීරුවක ගබඩා කර ඇති සියලුම අගයන් තෝරාගත් දිග අර්ථ ශාස්ත්‍රයේ ප්‍රමාණයෙන් දක්වා ඇති දිග ඇති බව Oracle සහතික කරයි. ඔබ තීරු දිගට වඩා කෙටි අගයක් ඇතුළත් කළහොත්, Oracle හිස් පෑඩ් අගය තීරු දිගට ලබා දෙයි.

VARCHAR2 දත්ත වර්ගය
VARCHAR2 දත්ත වර්ගය දත්ත සමුදා අක්ෂර කට්ටලයේ විචල්‍ය-දිග අක්ෂර මාලාවක් නියම කරයි. ඔබ ඔබේ දත්ත සමුදාය නිර්මාණය කරන විට දත්ත සමුදා අක්ෂර කට්ටලය සඳහන් කරයි. Oracle ඔබ නියම කරන ආකාරයටම VARCHAR2 තීරුවක අක්ෂර අගයක් ගබඩා කරයි, කිසිදු හිස් පිරවුමකින් තොරව, අගය තීරුවේ දිග නොඉක්මවන්නේ නම්.

NUMBER දත්ත වර්ගය
NUMBER දත්ත වර්ගය 1.0 x 10-130 සිට 1.0 x 10126 දක්වා නිරපේක්ෂ අගයන් සහිත ශුන්‍ය මෙන්ම ධන සහ සෘණ ස්ථාවර සංඛ්‍යා ගබඩා කරයි. ඔබ අංක ගණිත ප්‍රකාශනයක් සඳහන් කරන්නේ නම්, එහි අගයට වඩා වැඩි හෝ සමාන අගයක් ඇත 1.0 x 10126, එවිට Oracle දෝෂයක් ලබා දෙයි. සෑම NUMBER අගයකටම බයිට් 1 සිට 22 දක්වා අවශ්‍ය වේ. මෙය සැලකිල්ලට ගනිමින්, යම් සංඛ්‍යාත්මක දත්ත අගයක් වන NUMBER(p) සඳහා බයිට් වල තීරු ප්‍රමාණය, p යනු දී ඇති අගයක නිරවද්‍යතාවය, පහත සූත්‍රය භාවිතයෙන් ගණනය කළ හැක: වටය(දිග(p)+s)/2))+1 මෙහි සංඛ්‍යාව ධන නම් s ශුන්‍යයට සමාන වන අතර සංඛ්‍යාව සෘණ නම් s 1 ට සමාන වේ.

ඊට අමතරව, Null අගයන් ගබඩා කිරීම පිළිබඳ ලියකියවිලි වලින් උපුටා ගැනීමක් ගනිමු.

null එකක් යනු තීරුවක අගයක් නොමැති වීමයි. Nulls අස්ථානගත, නොදන්නා හෝ අදාළ නොවන දත්ත දක්වයි. දත්ත අගයන් සහිත තීරු අතරට වැටේ නම් ඒවා දත්ත ගබඩාවේ ගබඩා වේ. මෙම අවස්ථා වලදී, තීරුවේ දිග (ශුන්‍ය) ගබඩා කිරීම සඳහා ඔවුන්ට බයිට් 1 ක් අවශ්‍ය වේ. නව පේළි ශීර්ෂයක් පෙර පේළියේ ඉතිරි තීරු ශූන්‍ය බව සංඥා කරන නිසා පේළියක පසුපසට යන ශුන්‍ය සඳහා ගබඩාවක් අවශ්‍ය නොවේ. උදාහරණයක් ලෙස, වගුවක අවසාන තීරු තුන ශුන්‍ය නම්, මෙම තීරු සඳහා දත්ත ගබඩා නොවේ.

මෙම දත්ත මත පදනම්ව, අපි තර්කනය ගොඩනඟමු. දත්ත සමුදාය AL32UTF8 කේතනය භාවිතා කරන බව අපි උපකල්පනය කරමු. මෙම කේතනය කිරීමේදී රුසියානු අකුරු බයිට් 2 ක් ගනී.

1) A සහ ​​X, 'Y' ක්ෂේත්‍රයේ අගය බයිට් 1ක් ගනී, x 'D' ක්ෂේත්‍රයේ අගය බයිට් 2ක් ගනී
2) B සහ Y, b හි 'Vasya' අගය අක්ෂර 10 ක් දක්වා හිස්තැන් වලින් පිරවිය හැකි අතර බයිට් 14 ක් ගනී, d හි 'Vasya' බයිට් 8 ක් ගනී.
3) C සහ K. ක්ෂේත්‍ර දෙකටම NULL අගය ඇත, ඒවාට පසුව සැලකිය යුතු ක්ෂේත්‍ර ඇත, එබැවින් ඒවා බයිට 1 ක් ගනී.
4) C සහ Z. ක්ෂේත්‍ර දෙකෙහිම NULL අගය ඇත, නමුත් Z ක්ෂේත්‍රය වගුවේ අවසාන වේ, එබැවින් එය ඉඩ නොගනී (බයිට් 0). C ක්ෂේත්‍රය බයිට 1ක් ගනී.
5) K සහ Z. පෙර නඩුවට සමානයි. K ක්ෂේත්‍රයේ අගය Z – 1 හි 0 බයිටයක් ගනී.
6) I සහ J. ලේඛනයට අනුව, අගයන් දෙකම බයිට් 2 ක් ගනී. ප්‍රලේඛනයෙන් ලබාගත් සූත්‍රය භාවිතයෙන් අපි දිග ගණනය කරමු: වටය ( (1 + 0)/2) +1 = 1 + 1 = 2.
7) J සහ X. J ක්ෂේත්රයේ අගය බයිට් 2 ක් ගනී, X ක්ෂේත්රයේ අගය බයිට් 2 ක් ගනී.

සමස්තයක් වශයෙන්, නිවැරදි විකල්ප වනුයේ: C සහ K, I සහ J, J සහ X.

T_I දර්ශකයේ පොකුරු සාධකය ආසන්න වශයෙන් කුමක් වනු ඇත්ද?

create table t (i integer);
 
insert into t select rownum from dual connect by level <= 10000;
 
create index t_i on t(i);

  • දහයක් පමණ
  • සිය ගණනක් පමණ
  • දහස් ගණනක් පමණ
  • දස දහස් ගණනක් පමණ

පිළිතුරOracle ලියකියවිලි වලට අනුව (12.1 උපුටා දක්වා ඇත):

B-tree index සඳහා, index clustering factor මගින් දර්ශක අගයකට අදාළව පේළිවල භෞතික කාණ්ඩගත කිරීම මනිනු ලබයි.

සමහර විමසුම් සඳහා දර්ශක ස්කෑන් හෝ සම්පූර්ණ වගු පරිලෝකනය වඩාත් කාර්යක්ෂමද යන්න තීරණය කිරීමට දර්ශක පොකුරු සාධකය ප්‍රශස්තකරණයට උපකාර කරයි). අඩු පොකුරු සාධකයක් කාර්යක්ෂම දර්ශක ස්කෑන් කිරීමක් පෙන්නුම් කරයි.

වගුවක ඇති කුට්ටි ගණනට ආසන්නව ඇති පොකුරු සාධකයක් පෙන්නුම් කරන්නේ, දර්ශක යතුර මගින් වගු කුට්ටි තුළ පේළි භෞතිකව අනුපිළිවෙළට සකස් කර ඇති බවයි. දත්ත සමුදාය සම්පූර්ණ වගු පරිලෝකනයක් සිදු කරන්නේ නම්, දත්ත සමුදාය දර්ශක යතුර මගින් අනුපිළිවෙලට තැටි මත ගබඩා කර ඇති බැවින් පේළි නැවත ලබා ගැනීමට නැඹුරු වේ. පේළි ගණනට ආසන්න පොකුරු සාධකයක් පෙන්නුම් කරන්නේ පේළි දර්ශක යතුරට අදාළව දත්ත සමුදා කුට්ටි හරහා අහඹු ලෙස විසිරී ඇති බවයි. දත්ත සමුදාය සම්පූර්ණ වගු පරිලෝකනයක් සිදු කරන්නේ නම්, දත්ත සමුදාය මෙම දර්ශක යතුර මගින් කිසිදු අනුපිළිවෙලකට පේළි ලබා නොගනී.

මෙම අවස්ථාවේදී, දත්ත ඉතා මැනවින් වර්ග කර ඇත, එබැවින් පොකුරු සාධකය වගුවේ වාඩිලාගෙන සිටින කුට්ටි ගණනට සමාන හෝ ආසන්න වේ. කිලෝබයිට් 8 ක සම්මත බ්ලොක් ප්‍රමාණය සඳහා, ඔබට පටු සංඛ්‍යා දහසක් පමණ එක් කොටසකට ගැලපෙනු ඇතැයි අපේක්ෂා කළ හැකිය, එබැවින් කුට්ටි ගණන සහ එහි ප්‍රතිඵලයක් ලෙස පොකුරු සාධකය වනු ඇත. දහයක් පමණ.

සම්මත සිටුවම් සහිත සාමාන්‍ය දත්ත සමුදායක් තුළ පහත ස්ක්‍රිප්ට් සාර්ථකව ක්‍රියාත්මක වන්නේ N හි කුමන අගයන් යටතේද?

create table t (
    a varchar2(N char),
    b varchar2(N char),
    c varchar2(N char),
    d varchar2(N char));
 
create index t_i on t (a, b, c, d);

  • 100
  • 200
  • 400
  • 800
  • 1600
  • 3200
  • 6400

පිළිතුරOracle ලියකියවිලි වලට අනුව (11.2 උපුටා දක්වා ඇත):

තාර්කික දත්ත සමුදා සීමාවන්

අයිතමය
සීමාවේ වර්ගය
සීමාව අගය

දර්ශක
සුචිගත කළ තීරුවේ සම්පූර්ණ ප්‍රමාණය
දත්ත සමුදාය බ්ලොක් ප්‍රමාණයෙන් 75% ක් සමහර උඩිස් ප්‍රමාණය අඩු කරයි

මේ අනුව, සුචිගත කළ තීරුවල සම්පූර්ණ ප්‍රමාණය 6Kb නොඉක්මවිය යුතුය. ඊළඟට කුමක් සිදුවේද යන්න තෝරාගත් මූලික කේතනය මත රඳා පවතී. AL32UTF8 කේතනය සඳහා, එක් අක්ෂරයකට උපරිම බයිට් 4ක් ගත හැක, එබැවින් නරකම අවස්ථාවකදී, අකුරු 6ක් පමණ කිලෝබයිට් 1500කට ගැලපේ. එබැවින්, Oracle විසින් N = 400 හිදී දර්ශක නිර්මාණය කිරීම තහනම් කරනු ඇත (නරකම අවස්ථාවෙහි යතුරු දිග අක්ෂර 1600 * බයිට් 4 + පේළි දිග වන විට), N = 200 (හෝ ඊට අඩු) දර්ශකය නිර්මාණය කිරීම ගැටළු නොමැතිව වැඩ කරනු ඇත.

APPEND ඉඟිය සහිත INSERT ක්‍රියාකරු සෘජු ආකාරයෙන් දත්ත පූරණය කිරීමට සැලසුම් කර ඇත. එය ප්‍රේරකය එල්ලා ඇති මේසයට යෙදුවහොත් කුමක් සිදුවේද?

  • දත්ත සෘජු ආකාරයෙන් පටවනු ඇත, ප්‍රේරකය අපේක්ෂා කළ පරිදි ක්‍රියා කරයි
  • දත්ත සෘජු ආකාරයෙන් පටවනු ඇත, නමුත් ප්‍රේරකය ක්‍රියාත්මක නොවේ
  • දත්ත සම්ප්‍රදායික ආකාරයෙන් පටවනු ලැබේ, ප්‍රේරකය අවශ්‍ය පරිදි ක්‍රියා කරයි
  • දත්ත සම්ප්‍රදායික ආකාරයෙන් පටවනු ඇත, නමුත් ප්‍රේරකය ක්‍රියාත්මක නොවේ
  • දත්ත පූරණය නොවනු ඇත, දෝෂයක් සටහන් වනු ඇත

පිළිතුරමූලික වශයෙන්, මෙය තර්කනය පිළිබඳ ප්‍රශ්නයකි. නිවැරදි පිළිතුර සොයා ගැනීම සඳහා, මම පහත තර්ක ආකෘතිය යෝජනා කරමි:

  1. සෘජු මාදිලියේ ඇතුළත් කිරීම සිදු කරනු ලබන්නේ දත්ත බ්ලොක් එකක් සෘජුව සෑදීමෙන්, SQL එන්ජිම මඟ හැරීමෙනි, එය අධික වේගය සහතික කරයි. මේ අනුව, ප්‍රේරකය ක්‍රියාත්මක කිරීම සහතික කිරීම ඉතා අපහසුය, කළ නොහැකි නම්, සහ මෙහි තේරුමක් නැත, මන්ද එය තවමත් ඇතුළත් කිරීම රැඩිකල් ලෙස මන්දගාමී වනු ඇත.
  2. ප්‍රේරකය ක්‍රියාත්මක කිරීමට අපොහොසත් වීම, වගුවේ ඇති දත්ත සමාන නම්, සමස්තයක් ලෙස දත්ත සමුදායේ තත්වය (අනෙකුත් වගු) මෙම දත්ත ඇතුළත් කළ ආකාරය මත රඳා පවතී. මෙය පැහැදිලිවම දත්ත අඛණ්ඩතාව විනාශ කරන අතර නිෂ්පාදනයේ විසඳුමක් ලෙස යෙදිය නොහැක.
  3. ඉල්ලා සිටින මෙහෙයුම සිදු කිරීමට නොහැකි වීම සාමාන්යයෙන් දෝෂයක් ලෙස සලකනු ලැබේ. නමුත් මෙහිදී අප මතක තබාගත යුත්තේ APPEND යනු ඉඟියක් වන අතර, ඉඟි වල සාමාන්‍ය තර්කනය නම්, හැකි නම් ඒවා සැලකිල්ලට ගැනීමයි, නමුත් එසේ නොවේ නම්, ඉඟිය සැලකිල්ලට නොගෙන ක්‍රියාකරු ක්‍රියාත්මක කරයි.

එබැවින් අපේක්ෂිත පිළිතුර වේ දත්ත සාමාන්‍ය (SQL) ආකාරයෙන් පටවනු ලැබේ, ප්‍රේරකය දැල්වෙයි.

Oracle ලියකියවිලි වලට අනුව (8.04 උපුටා දක්වා ඇත):

සීමා කිරීම් උල්ලංඝනය කිරීම් අනතුරු ඇඟවීම් හෝ දෝෂ පණිවිඩ නොමැතිව සම්ප්‍රදායික ඇතුළු කිරීමේ මාර්ගය භාවිතා කරමින් ප්‍රකාශය අනුක්‍රමිකව ක්‍රියාත්මක කිරීමට හේතු වේ. ව්‍යතිරේකයක් යනු ගනුදෙනුවකදී එක් වරකට වඩා එකම වගුවකට ප්‍රවේශ වීමේ ප්‍රකාශ සීමා කිරීම, දෝෂ පණිවිඩ ඇති කළ හැක.
උදාහරණයක් ලෙස, ප්‍රේරක හෝ යොමු අඛණ්ඩතාව මේසය මත තිබේ නම්, ඔබ direct-load INSERT (අනුක්‍රමික හෝ සමාන්තර) මෙන්ම PARALLEL ඉඟියක් හෝ වගන්තියක් භාවිතා කිරීමට උත්සාහ කරන විට APPEND ඉඟිය නොසලකා හරිනු ඇත.

පහත ස්ක්‍රිප්ට් එක ක්‍රියාත්මක කළ විට කුමක් සිදුවේද?

create table t(i integer not null primary key, j integer references t);
 
create trigger t_a_i after insert on t for each row
declare
    pragma autonomous_transaction;
begin
    insert into t values (:new.i + 1, :new.i);
    commit;
end;
/
 
insert into t values (1, null);

  • සාර්ථක ලෙස ක්රියාත්මක කිරීම
  • වාක්‍ය ඛණ්ඩ දෝෂයක් හේතුවෙන් අසාර්ථක වීම
  • දෝෂය: ස්වයංක්‍රීය ගනුදෙනු වලංගු නොවේ
  • උපරිම ඇමතුම් කැදැල්ල ඉක්මවා යාම සම්බන්ධ දෝෂයකි
  • විදේශීය යතුරු උල්ලංඝනය කිරීමේ දෝෂය
  • අගුලු සම්බන්ධ දෝෂයකි

පිළිතුරවගුව සහ ප්‍රේරකය ඉතා නිවැරදිව නිර්මාණය කර ඇති අතර මෙම මෙහෙයුම ගැටළු වලට තුඩු නොදිය යුතුය. ප්‍රේරකයක ස්වයංක්‍රීය ගනුදෙනුවලට ද අවසර ඇත, එසේ නොමැති නම්, උදාහරණයක් ලෙස, ලොග් වීම කළ නොහැකි වනු ඇත.

පළමු පේළිය ඇතුළු කිරීමෙන් පසු, සාර්ථක ප්‍රේරක වෙඩි තැබීමක් දෙවන පේළිය ඇතුළු කිරීමට හේතු වනු ඇත, ප්‍රේරකය නැවත වෙඩි තැබීමට, තුන්වන පේළියක් ඇතුළු කිරීමට සහ යනාදිය ඇමතුම්වල උපරිම කැදැල්ල ඉක්මවා යාම හේතුවෙන් ප්‍රකාශය අසාර්ථක වන තුරු. කෙසේ වෙතත්, තවත් සියුම් කරුණක් ක්රියාත්මක වේ. ප්‍රේරකය ක්‍රියාත්මක වන විට, පළමු ඇතුළත් කළ වාර්තාව සඳහා තවමත් කැපවීම සම්පූර්ණ කර නොමැත. එබැවින්, ස්වයංක්‍රීය ගණුදෙනුවක ක්‍රියාත්මක වන ප්‍රේරකයක් තවමත් සිදු කර නොමැති වාර්තාවකට විදේශීය යතුරක් යොමු කරන පේළියක් වගුවට ඇතුළු කිරීමට උත්සාහ කරයි. මෙහි ප්‍රතිඵලය වන්නේ රැඳී සිටීමයි (ස්වයංක්‍රීය ගණුදෙනුව ප්‍රධාන ගණුදෙනුවට දත්ත ඇතුළු කළ හැකි දැයි බැලීමට කැප වන තෙක් බලා සිටී) සහ ඒ සමඟම ප්‍රේරකයෙන් පසුව ස්වයංක්‍රීය ගනුදෙනුව දිගටම ක්‍රියා කරන තෙක් ප්‍රධාන ගනුදෙනුව බලා සිටී. අවහිරයක් ඇති වන අතර, එහි ප්‍රතිඵලයක් ලෙස, අගුලු සම්බන්ධ හේතු නිසා ස්වයංක්‍රීය ගනුදෙනුව අවලංගු වේ.

සමීක්ෂණයට සහභාගී විය හැක්කේ ලියාපදිංචි පරිශීලකයින්ට පමණි. පුරන්නකරුණාකර.

එය දුෂ්කර විය?

  • ඇඟිලි දෙකක් වගේ, මම වහාම සියල්ල නිවැරදිව තීරණය කළා.

  • ඇත්තටම නැහැ, මම ප්‍රශ්න කිහිපයකදී වැරදියි.

  • මම ඒකෙන් හරි අඩක් විසඳුවා.

  • මම පිළිතුර දෙවරක් අනුමාන කළෙමි!

  • මම අදහස් වල ලියන්නම්

පරිශීලකයින් 14 දෙනෙක් ඡන්දය දුන්හ. පරිශීලකයින් 10 දෙනෙක් ඡන්දය දීමෙන් වැළකී සිටියහ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න