ہائی لوڈ++ سائبیریا 2019 کے نقش قدم پر چلتے ہوئے - اوریکل پر 8 کام

ہیلو!

24-25 جون کو Novosibirsk میں Highload++ سائبیریا 2019 کانفرنس منعقد ہوئی۔ ہمارے لوگ بھی وہاں تھے۔ رپورٹ "اوریکل کنٹینر ڈیٹا بیس (CDB/PDB) اور سافٹ ویئر ڈویلپمنٹ کے لیے ان کا عملی استعمال"، ہم تھوڑی دیر بعد ٹیکسٹ ورژن شائع کریں گے۔ یہ ٹھنڈا تھا، شکریہ olegbunin تنظیم کے ساتھ ساتھ ہر آنے والے کے لیے۔

ہائی لوڈ++ سائبیریا 2019 کے نقش قدم پر چلتے ہوئے - اوریکل پر 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
  • نہیں، غلطی ہو جائے گی۔

جواباوریکل دستاویزات کے مطابق (8.1.6 سے حوالہ دیا گیا):
ایک واحد SQL بیان کے اندر، اوریکل ہر قطار میں صرف ایک بار ترتیب کو بڑھا دے گا۔ اگر کسی بیان میں ایک ترتیب کے لیے 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

جواباوریکل دستاویزات کے مطابق (11.2 سے حوالہ دیا گیا):

کسی بھی ایس کیو ایل اسٹیٹمنٹ پر عمل کرنے سے پہلے، اوریکل ایک مضمر سیو پوائنٹ (آپ کے لیے دستیاب نہیں) کو نشان زد کرتا ہے۔ پھر، اگر بیان ناکام ہو جاتا ہے، تو اوریکل اسے خود بخود واپس کر دیتا ہے اور قابل اطلاق ایرر کوڈ کو 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

جواباوریکل دستاویزات کے مطابق (11.2 سے حوالہ دیا گیا):

چیک کی رکاوٹ آپ کو ایک شرط بتانے دیتی ہے جسے ٹیبل کی ہر قطار کو پورا کرنا ضروری ہے۔ رکاوٹ کو پورا کرنے کے لیے، ٹیبل میں ہر قطار کو شرط کو درست یا نامعلوم (نال کی وجہ سے) بنانا چاہیے۔ جب اوریکل کسی خاص قطار کے لیے چیک کنسٹرائنٹ کنڈیشن کا جائزہ لیتا ہے، تو حالت میں موجود کالم کے نام اس قطار میں موجود کالم کی قدروں کا حوالہ دیتے ہیں۔

اس طرح، ویلیو نل چیک کو پاس کر دے گی، اور گمنام بلاک کو کامیابی کے ساتھ اس وقت تک عمل میں لایا جائے گا جب تک کہ ویلیو 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, 'Д', 'Вася');

  • اے اور ایکس
  • بی اور وائی
  • سی اور کے
  • سی اور زیڈ
  • K اور Z
  • میں اور جے
  • جے اور ایکس
  • سب درج ہے

جوابیہاں اوریکل میں مختلف قسم کے ڈیٹا کو ذخیرہ کرنے کے بارے میں دستاویزات (12.1.0.2) سے اقتباسات ہیں۔

CHAR ڈیٹا کی قسم
CHAR ڈیٹا کی قسم ڈیٹا بیس کیریکٹر سیٹ میں ایک فکسڈ لینتھ کریکٹر سٹرنگ کی وضاحت کرتی ہے۔ جب آپ اپنا ڈیٹا بیس بناتے ہیں تو آپ ڈیٹا بیس کیریکٹر سیٹ کی وضاحت کرتے ہیں۔ اوریکل اس بات کو یقینی بناتا ہے کہ CHAR کالم میں ذخیرہ کردہ تمام اقدار کی لمبائی منتخب کردہ لمبے سیمنٹکس میں سائز کے لحاظ سے بیان کی گئی ہے۔ اگر آپ ایک ایسی قدر ڈالتے ہیں جو کالم کی لمبائی سے چھوٹی ہو، تو اوریکل خالی پیڈ کی قدر کو کالم کی لمبائی میں ڈال دیتا ہے۔

VARCHAR2 ڈیٹا کی قسم
VARCHAR2 ڈیٹا کی قسم ڈیٹابیس کیریکٹر سیٹ میں متغیر کی لمبائی والی کریکٹر سٹرنگ کی وضاحت کرتی ہے۔ جب آپ اپنا ڈیٹا بیس بناتے ہیں تو آپ ڈیٹا بیس کیریکٹر سیٹ کی وضاحت کرتے ہیں۔ اوریکل VARCHAR2 کالم میں کریکٹر ویلیو کو بالکل اسی طرح اسٹور کرتا ہے جیسا کہ آپ اس کی وضاحت کرتے ہیں، بغیر کسی خالی پیڈنگ کے، بشرطیکہ قدر کالم کی لمبائی سے زیادہ نہ ہو۔

NUMBER ڈیٹا کی قسم
NUMBER ڈیٹا کی قسم صفر کے ساتھ ساتھ مثبت اور منفی فکسڈ نمبرز کو 1.0 x 10-130 سے ​​لے کر مطلق قدروں کے ساتھ ذخیرہ کرتی ہے لیکن 1.0 x 10126 کو شامل نہیں کرتی ہے۔ اگر آپ ایک ریاضی کا اظہار بتاتے ہیں جس کی قدر مطلق قدر سے زیادہ یا اس کے برابر ہوتی ہے۔ 1.0 x 10126، پھر اوریکل ایک غلطی لوٹاتا ہے۔ ہر NUMBER قدر کے لیے 1 سے 22 بائٹس کی ضرورت ہوتی ہے۔ اس کو مدنظر رکھتے ہوئے، ایک مخصوص عددی ڈیٹا ویلیو NUMBER(p) کے لیے بائٹس میں کالم کا سائز، جہاں p ایک دی گئی قدر کی درستگی ہے، درج ذیل فارمولے کا استعمال کرتے ہوئے شمار کیا جا سکتا ہے: راؤنڈ((لمبائی(p)+s)/2))+1 جہاں نمبر مثبت ہونے پر s صفر کے برابر ہے، اور اگر نمبر منفی ہے تو s 1 کے برابر ہے۔

اس کے علاوہ، آئیے Null اقدار کو ذخیرہ کرنے کے بارے میں دستاویزات سے ایک اقتباس لیتے ہیں۔

null ایک کالم میں قدر کی عدم موجودگی ہے۔ Nulls لاپتہ، نامعلوم، یا غیر قابل اطلاق ڈیٹا کی نشاندہی کرتے ہیں۔ اگر وہ ڈیٹا ویلیو والے کالموں کے درمیان آتے ہیں تو null ڈیٹا بیس میں محفوظ ہوتے ہیں۔ ان صورتوں میں، انہیں کالم کی لمبائی (صفر) کو ذخیرہ کرنے کے لیے 1 بائٹ کی ضرورت ہوتی ہے۔ ایک قطار میں پیچھے آنے والے nulls کو کسی اسٹوریج کی ضرورت نہیں ہے کیونکہ ایک نئی قطار کا ہیڈر اشارہ کرتا ہے کہ پچھلی قطار کے باقی کالم null ہیں۔ مثال کے طور پر، اگر کسی ٹیبل کے آخری تین کالم خالی ہیں، تو ان کالموں کے لیے کوئی ڈیٹا محفوظ نہیں کیا جاتا ہے۔

ان اعداد و شمار کی بنیاد پر، ہم استدلال تیار کرتے ہیں۔ ہم فرض کرتے ہیں کہ ڈیٹا بیس AL32UTF8 انکوڈنگ کا استعمال کرتا ہے۔ اس انکوڈنگ میں، روسی حروف 2 بائٹس پر قابض ہوں گے۔

1) A اور X، فیلڈ a '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 بائٹس لیں گی۔ ہم دستاویز سے لیے گئے فارمولے کا استعمال کرتے ہوئے لمبائی کا حساب لگاتے ہیں: round((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);

  • دسیوں کے بارے میں
  • سینکڑوں کے قریب
  • ہزاروں کے قریب
  • تقریباً دسیوں ہزار

جواباوریکل دستاویزات کے مطابق (12.1 سے حوالہ دیا گیا):

بی ٹری انڈیکس کے لیے، انڈیکس کلسٹرنگ فیکٹر انڈیکس ویلیو کے سلسلے میں قطاروں کی فزیکل گروپنگ کی پیمائش کرتا ہے۔

انڈیکس کلسٹرنگ فیکٹر آپٹمائزر کو یہ فیصلہ کرنے میں مدد کرتا ہے کہ آیا انڈیکس اسکین یا فل ٹیبل اسکین کچھ سوالات کے لیے زیادہ موثر ہے)۔ کم کلسٹرنگ عنصر ایک موثر انڈیکس اسکین کی نشاندہی کرتا ہے۔

ایک کلسٹرنگ عنصر جو ٹیبل میں بلاکس کی تعداد کے قریب ہوتا ہے اس بات کی نشاندہی کرتا ہے کہ قطاریں انڈیکس کلید کے ذریعہ ٹیبل بلاکس میں جسمانی طور پر ترتیب دی گئی ہیں۔ اگر ڈیٹا بیس مکمل ٹیبل اسکین کرتا ہے، تو ڈیٹا بیس قطاروں کو بازیافت کرتا ہے کیونکہ وہ انڈیکس کلید کے ذریعہ ترتیب کردہ ڈسک پر محفوظ ہوتی ہیں۔ ایک کلسٹرنگ عنصر جو قطاروں کی تعداد کے قریب ہے اس بات کی نشاندہی کرتا ہے کہ قطاریں انڈیکس کلید کے سلسلے میں ڈیٹا بیس بلاکس میں تصادفی طور پر بکھری ہوئی ہیں۔ اگر ڈیٹا بیس مکمل ٹیبل اسکین کرتا ہے، تو ڈیٹا بیس اس انڈیکس کلید کے ذریعہ کسی بھی ترتیب شدہ ترتیب میں قطاروں کو بازیافت نہیں کرے گا۔

اس صورت میں، ڈیٹا کو مثالی طور پر ترتیب دیا گیا ہے، لہذا کلسٹرنگ فیکٹر ٹیبل میں موجود بلاکس کی تعداد کے برابر یا اس کے قریب ہوگا۔ 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

جواباوریکل دستاویزات کے مطابق (11.2 سے حوالہ دیا گیا):

منطقی ڈیٹا بیس کی حدود

آئٹم
حد کی قسم
قدر کی حد

اشاریہ جات
انڈیکس کردہ کالم کا کل سائز
ڈیٹا بیس بلاک سائز کا 75٪ مائنس کچھ اوور ہیڈ

اس طرح، انڈیکس شدہ کالموں کا کل سائز 6Kb سے زیادہ نہیں ہونا چاہیے۔ آگے کیا ہوتا ہے اس کا انحصار منتخب بیس انکوڈنگ پر ہوتا ہے۔ AL32UTF8 انکوڈنگ کے لیے، ایک کریکٹر زیادہ سے زیادہ 4 بائٹس پر قبضہ کر سکتا ہے، اس لیے بدترین صورت حال میں، تقریباً 6 حروف 1500 کلو بائٹس میں فٹ ہو جائیں گے۔ لہذا، اوریکل N = 400 پر انڈیکس بنانے کی اجازت نہیں دے گا (جب بدترین کیس کلید کی لمبائی 1600 حروف * 4 بائٹس + رووڈ لمبائی ہے)، جبکہ N = 200 پر (یا اس سے کم) انڈیکس بنانا بغیر کسی پریشانی کے کام کرے گا۔

APPEND اشارے کے ساتھ INSERT آپریٹر ڈیٹا کو ڈائریکٹ موڈ میں لوڈ کرنے کے لیے ڈیزائن کیا گیا ہے۔ کیا ہوتا ہے اگر اسے اس ٹیبل پر لگایا جائے جس پر ٹرگر لٹکا ہوا ہے؟

  • ڈیٹا کو ڈائریکٹ موڈ میں لوڈ کیا جائے گا، ٹرگر توقع کے مطابق کام کرے گا۔
  • ڈیٹا کو ڈائریکٹ موڈ میں لوڈ کیا جائے گا، لیکن ٹرگر پر عمل نہیں کیا جائے گا۔
  • ڈیٹا کو روایتی موڈ میں لوڈ کیا جائے گا، ٹرگر کام کرے گا جیسا کہ اسے کرنا چاہیے۔
  • ڈیٹا کو روایتی موڈ میں لوڈ کیا جائے گا، لیکن ٹرگر پر عمل نہیں کیا جائے گا۔
  • ڈیٹا لوڈ نہیں کیا جائے گا، ایک غلطی ریکارڈ کی جائے گی۔

جواببنیادی طور پر، یہ منطق کا زیادہ سوال ہے۔ درست جواب تلاش کرنے کے لیے، میں مندرجہ ذیل استدلال کا نمونہ تجویز کروں گا:

  1. براہ راست موڈ میں داخل کرنا ایس کیو ایل انجن کو نظرانداز کرتے ہوئے ڈیٹا بلاک کی براہ راست تشکیل کے ذریعے انجام دیا جاتا ہے، جو تیز رفتار کو یقینی بناتا ہے۔ اس طرح، ٹرگر کے نفاذ کو یقینی بنانا بہت مشکل ہے، اگر ناممکن نہیں ہے، اور اس کا کوئی فائدہ نہیں ہے، کیونکہ یہ اب بھی اندراج کو یکسر سست کر دے گا۔
  2. ٹرگر کو عمل میں لانے میں ناکامی اس حقیقت کی طرف لے جائے گی کہ، اگر ٹیبل میں موجود ڈیٹا ایک جیسا ہے، تو ڈیٹا بیس کی حالت مجموعی طور پر (دیگر ٹیبلز) اس موڈ پر منحصر ہوگی جس میں یہ ڈیٹا ڈالا گیا تھا۔ یہ واضح طور پر ڈیٹا کی سالمیت کو تباہ کر دے گا اور اسے پیداوار میں حل کے طور پر لاگو نہیں کیا جا سکتا۔
  3. درخواست کردہ آپریشن کو انجام دینے میں ناکامی کو عام طور پر ایک غلطی سمجھا جاتا ہے۔ لیکن یہاں ہمیں یاد رکھنا چاہیے کہ APPEND ایک اشارہ ہے، اور اشارے کی عمومی منطق یہ ہے کہ اگر ممکن ہو تو ان کو مدنظر رکھا جاتا ہے، لیکن اگر نہیں، تو آپریٹر کو اشارہ کو خاطر میں لائے بغیر عمل میں لایا جاتا ہے۔

تو متوقع جواب ہے۔ ڈیٹا کو نارمل (SQL) موڈ میں لوڈ کیا جائے گا، ٹرگر فائر ہو جائے گا۔

اوریکل دستاویزات کے مطابق (8.04 سے حوالہ دیا گیا):

پابندیوں کی خلاف ورزیوں کی وجہ سے بیان کو انتباہ یا غلطی کے پیغامات کے بغیر، روایتی داخل کرنے کے راستے کا استعمال کرتے ہوئے، سلسلہ وار عمل میں لایا جائے گا۔ ایک استثناء ایک لین دین میں ایک سے زیادہ بار ایک ہی ٹیبل تک رسائی کے بیانات پر پابندی ہے، جو غلطی کے پیغامات کا سبب بن سکتا ہے۔
مثال کے طور پر، اگر ٹیبل پر محرکات یا حوالہ جاتی سالمیت موجود ہے، تو APPEND کے اشارے کو نظر انداز کر دیا جائے گا جب آپ ڈائریکٹ-لوڈ INSERT (سیریل یا متوازی)، نیز PARALLEL اشارہ یا شق، اگر کوئی ہو تو استعمال کرنے کی کوشش کریں گے۔

جب درج ذیل اسکرپٹ پر عمل کیا جائے گا تو کیا ہوگا؟

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

نیا تبصرہ شامل کریں