เป€เบ”เบตเบ™เบ•เบฒเบกเบฎเบญเบเบ•เบตเบ™เบ‚เบญเบ‡ Highload++ Siberia 2019 - 8 เบงเบฝเบเปƒเบ™ Oracle

Hello!

เปƒเบ™เบงเบฑเบ™เบ—เบต 24-25 เบกเบดเบ–เบธเบ™เบฒ, เบเบญเบ‡เบ›เบฐเบŠเบธเบก Highload++ Siberia 2019 เป„เบ”เป‰เบˆเบฑเบ”เบ‚เบถเป‰เบ™เบขเบนเปˆ Novosibirsk. เบœเบนเป‰เบŠเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเปเปˆเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบ„เบทเบเบฑเบ™. เบฅเบฒเบเบ‡เบฒเบ™ "เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ Oracle containers (CDB/PDB) เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบง", เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบœเบตเบเปเบœเปˆเบชเบฐเบšเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ•เปเปˆเบกเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบ. เบกเบฑเบ™เป€เบขเบฑเบ™, เบ‚เบญเบšเปƒเบˆ เป‚เบญเป€เบฅเบเบšเบนเบ™เบ™เบดเบ™ เบชเปเบฒเบฅเบฑเบšเบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ—เบธเบเบ„เบปเบ™เบ—เบตเปˆเบกเบฒ.

เป€เบ”เบตเบ™เบ•เบฒเบกเบฎเบญเบเบ•เบตเบ™เบ‚เบญเบ‡ Highload++ Siberia 2019 - 8 เบงเบฝเบเปƒเบ™ Oracle
เปƒเบ™เบšเบปเบ”เบ‚เบฝเบ™เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบขเบฒเบเปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฑเบšเป€เบˆเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบขเบนเปˆเปƒเบ™เบšเบนเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบทเปˆเบญเปƒเบซเป‰เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฒเบกเบฎเบนเป‰ Oracle เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบเบฒเบ™เบ•เบฑเบ”เปเบกเปˆเบ™ 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
  • เบšเปเปˆ, เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”

Replyเบญเบตเบ‡เบ•เบฒเบกเป€เบญเบเบฐเบชเบฒเบ™ 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

Replyเบญเบตเบ‡เบ•เบฒเบกเป€เบญเบเบฐเบชเบฒเบ™ Oracle (เบญเป‰เบฒเบ‡เบญเบตเบ‡เบˆเบฒเบ 11.2):

เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™ SQL เปƒเบ”เป†, Oracle เบซเบกเบฒเบเบˆเบธเบ”เบ›เบฐเบซเบเบฑเบ” implicit (เบšเปเปˆเบกเบตเปƒเบซเป‰เบ—เปˆเบฒเบ™). เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบง, Oracle เบกเป‰เบงเบ™เบกเบฑเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเปƒเบŠเป‰เป„เบ”เป‰เบเบฑเบš SQLCODE เปƒเบ™ SQLCA. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆ 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

Replyเบญเบตเบ‡เบ•เบฒเบกเป€เบญเบเบฐเบชเบฒเบ™ Oracle (เบญเป‰เบฒเบ‡เบญเบตเบ‡เบˆเบฒเบ 11.2):

เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเปเบ•เปˆเบฅเบฐเปเบ–เบงเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ•เป‰เบญเบ‡เบžเปเปƒเบˆ. เป€เบžเบทเปˆเบญเบ•เบญเบšเบชเบฐเปœเบญเบ‡เบ‚เปเป‰เบˆเบณเบเบฑเบ”, เปเบ•เปˆเบฅเบฐเปเบ–เบงเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบˆเบฐเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡ เบซเบผเบทเบšเปเปˆเบฎเบนเป‰ (เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเป€เบ›เบฑเบ™ null). เป€เบกเบทเปˆเบญ Oracle เบ›เบฐเป€เบกเบตเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบเบฒเบ™เบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเปเบฒเบฅเบฑเบšเปเบ–เบงเบชเบฐเป€เบžเบฒเบฐ, เบŠเบทเปˆเบ„เปเบฅเปเบฒเปƒเบ”เป†เปƒเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบซเบกเบฒเบเป€เบ–เบดเบ‡เบ„เปˆเบฒเบ„เปเบฅเปเบฒเปƒเบ™เปเบ–เบงเบ™เบฑเป‰เบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ„เปˆเบฒ null เบˆเบฐเบœเปˆเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบš, เปเบฅเบฐ block เบ—เบตเปˆเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆเบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เบชเปเบฒเป€เบฅเบฑเบ”เบœเบปเบ™เบˆเบปเบ™เบเปˆเบงเบฒเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเปƒเบชเปˆเบ„เปˆเบฒ 3. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰, เบ•เบฑเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบˆเบฐเบฅเบปเบšเบฅเป‰เบฒเบ‡เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™, เบšเปเปˆเบกเบตเบเบฒเบ™ rollback เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เปเบฅเบฐ. เบˆเบฐเบกเบตเบชเบตเปˆเปเบ–เบงเป€เบซเบผเบทเบญเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ เบ”เป‰เบงเบเบ„เปˆเบฒ 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
  • B เปเบฅเบฐ Y
  • C เปเบฅเบฐ K
  • C เปเบฅเบฐ Z
  • K เปเบฅเบฐ Z
  • เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบฅเบฐ J
  • J เปเบฅเบฐ X
  • เบฅเบฒเบเบŠเบทเปˆเบ—เบฑเบ‡ เปเบปเบ”

Replyเบ™เบตเป‰เปเบกเปˆเบ™เบšเบปเบ”เบ„เบฑเบ”เบซเบเปเป‰เบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™ (12.1.0.2) เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†เปƒเบ™ Oracle.

เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™ CHAR
เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™ CHAR เบเปเบฒเบ™เบปเบ”เบชเบฒเบเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบฒเบงเบ„เบปเบ‡เบ—เบตเปˆเปƒเบ™เบŠเบธเบ”เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ—เปˆเบฒเบ™เบเปเบฒเบ™เบปเบ”เบฅเบฑเบเบชเบฐเบ™เบฐเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Oracle เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบ—เบธเบเบ„เปˆเบฒเบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ–เบฑเบ™ CHAR เบกเบตเบ„เบงเบฒเบกเบเบฒเบงเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เป‚เบ”เบเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ™ semantics เบ„เบงเบฒเบกเบเบฒเบงเบ—เบตเปˆเป€เบฅเบทเบญเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบชเปˆเบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเป‰เบ™เบเบงเปˆเบฒเบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เบ–เบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ Oracle blank-pads เบ„เปˆเบฒเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบเบฒเบงเบ–เบฑเบ™.

VARCHAR2 เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™
เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™ VARCHAR2 เบฅเบฐเบšเบธเบ•เบปเบงเปเบ›เบ„เบงเบฒเบกเบเบฒเบงเบ•เบปเบงเปเบ›เปƒเบ™เบŠเบธเบ”เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ—เปˆเบฒเบ™เบเปเบฒเบ™เบปเบ”เบฅเบฑเบเบชเบฐเบ™เบฐเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. Oracle เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ„เปˆเบฒเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เปƒเบ™เบ–เบฑเบ™ VARCHAR2 เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบกเบฑเบ™, เป‚เบ”เบเบšเปเปˆเบกเบตเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เปƒเบ”เป†, เป‚เบ”เบเปƒเบซเป‰เบ„เปˆเบฒเบšเปเปˆเป€เบเบตเบ™เบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เบ–เบฑเบ™.

NUMBER เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™
เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™ NUMBER เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบนเบ™เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ•เบปเบงเป€เบฅเบเบ„เบปเบ‡เบ—เบตเปˆเบ—เบฒเบ‡เบšเบงเบ เปเบฅเบฐเบฅเบปเบš เบ—เบตเปˆเบกเบตเบ„เปˆเบฒเบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบˆเบฒเบ 1.0 x 10-130 เบซเบฒ เปเบ•เปˆเบšเปเปˆเบฅเบงเบกเป€เบญเบปเบฒ 1.0 x 10126. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบฒเบ‡เป€เบฅเบเบ„เบฐเบ™เบดเบ”เบ—เบตเปˆเบกเบตเบ„เปˆเบฒเบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบซเบผเบฒเบเบเบงเปˆเบฒ เบซเบผเบทเป€เบ—เบปเปˆเบฒเบเบฑเบš 1.0 x 10126, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ Oracle เบชเบปเปˆเบ‡เบ„เบทเบ™เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”. เปเบ•เปˆเบฅเบฐเบ„เปˆเบฒ NUMBER เบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเบฒเบ 1 เบซเบฒ 22 bytes. เป‚เบ”เบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ™เบตเป‰, เบ‚เบฐเบซเบ™เบฒเบ”เบ–เบฑเบ™เปƒเบ™ bytes เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ•เบปเบงเป€เบฅเบเบชเบฐเป€เบžเบฒเบฐ NUMBER(p), เป€เบŠเบดเปˆเบ‡ p เปเบกเปˆเบ™เบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™เบ‚เบญเบ‡เบ„เปˆเบฒเบ—เบตเปˆเปƒเบซเป‰, เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเปƒเบŠเป‰เบชเบนเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰: ROUND((เบ„เบงเบฒเบกเบเบฒเบง(p)+s)/2))+1 เบšเปˆเบญเบ™เบ—เบตเปˆ s เป€เบ—เบปเปˆเบฒเบเบฑเบšเบชเบนเบ™เบ–เป‰เบฒเบ•เบปเบงเป€เบฅเบเป€เบ›เบฑเบ™เบšเบงเบ, เปเบฅเบฐ s เป€เบ—เบปเปˆเบฒเบเบฑเบš 1 เบ–เป‰เบฒเบ•เบปเบงเป€เบฅเบเป€เบ›เบฑเบ™เบฅเบปเบš.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบซเป‰เป€เบญเบปเบฒเบšเบปเบ”เบ„เบฑเบ”เบซเบเปเป‰เบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ„เปˆเบฒ Null.

A null เปเบกเปˆเบ™เบšเปเปˆเบกเบตเบ„เปˆเบฒเปƒเบ™เบ–เบฑเบ™. Nulls เบŠเบตเป‰เบšเบญเบเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›, เบšเปเปˆเบฎเบนเป‰, เบซเบผเบทเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰. Nulls เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบ•เบปเบเบฅเบปเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ„เปเบฅเปเบฒเบ—เบตเปˆเบกเบตเบ„เปˆเบฒเบ‚เปเป‰เบกเบนเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ 1 byte เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เบ–เบฑเบ™ (เบชเบนเบ™). เบเบฒเบ™เบ•เปเปˆเบ—เป‰เบฒเบ nulls เปƒเบ™เปเบ–เบงเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเปเปˆเบกเบตเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ เป€เบžเบฒเบฐเบงเปˆเบฒเบชเปˆเบงเบ™เบซเบปเบงเปเบ–เบงเปƒเปเปˆเบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบงเปˆเบฒเบ–เบฑเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบขเบนเปˆเปƒเบ™เปเบ–เบงเบเปˆเบญเบ™เปœเป‰เบฒเบ™เบฑเป‰เบ™เป€เบ›เบฑเบ™ null. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบชเบฒเบกเบ–เบฑเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบกเปˆเบ™ null, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เบชเปเบฒเบฅเบฑเบšเบ–เบฑเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เบญเบตเบ‡เบ•เบฒเบกเบ‚เปเป‰เบกเบนเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เป€เบซเบ”เบœเบปเบ™. เบžเบงเบเป€เบฎเบปเบฒเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” AL32UTF8. เปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ™เบตเป‰, เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบžเบฒเบชเบฒเบฅเบฑเบ”เป€เบŠเบเบˆเบฐเบ„เบญเบšเบ„เบญเบ‡ 2 bytes.

1) A เปเบฅเบฐ X, เบ„เปˆเบฒเบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™ a 'Y' เปƒเบŠเป‰ 1 byte, เบ„เปˆเบฒเบ‚เบญเบ‡ field x 'D' เปƒเบŠเป‰ 2 bytes.
2) B เปเบฅเบฐ Y, 'Vasya' เปƒเบ™ b เบกเบนเบ™เบ„เปˆเบฒเบˆเบฐเบ–เบทเบ padded เบกเบตเบŠเปˆเบญเบ‡เบซเบงเปˆเบฒเบ‡เป€เบ–เบดเบ‡ 10 เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เปเบฅเบฐเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒ 14 bytes, 'Vasya' เปƒเบ™ d เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒ 8 bytes.
3) C เปเบฅเบฐ K. เบ—เบฑเบ‡เบชเบญเบ‡เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบกเบตเบกเบนเบ™เบ„เปˆเบฒ NULL, เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบ‚เบปเบฒเบ„เบญเบšเบ„เบญเบ‡ 1 byte.
4) C เปเบฅเบฐ Z. เบ—เบฑเบ‡เบชเบญเบ‡เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบกเบตเบกเบนเบ™เบ„เปˆเบฒ NULL, เปเบ•เปˆเบžเบฒเบเบชเบฐเบซเบ™เบฒเบก Z เปเบกเปˆเบ™เบชเบธเบ”เบ—เป‰เบฒเบเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเป€เบ–เบดเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆ (0 bytes). Field C เบ„เบญเบšเบ„เบญเบ‡ 1 byte.
5) K เปเบฅเบฐ Z. เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบ„เปˆเบฒเปƒเบ™เบŠเปˆเบญเบ‡ K เบ„เบญเบšเบ„เบญเบ‡ 1 byte, เปƒเบ™ Z โ€“ 0.
6) I เปเบฅเบฐ J. เบญเบตเบ‡เบ•เบฒเบกเป€เบญเบเบฐเบชเบฒเบ™, เบ—เบฑเบ‡เบชเบญเบ‡เบ„เปˆเบฒเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒ 2 bytes. เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆเบ„เบงเบฒเบกเบเบฒเบงเป‚เบ”เบเปƒเบŠเป‰เบชเบนเบ”เบ—เบตเปˆเป„เบ”เป‰เบกเบฒเบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™: เบฎเบญเบš((1+0)/2) +1=1+1=2.
7) J เปเบฅเบฐ X. เบ„เปˆเบฒเปƒเบ™เบŠเปˆเบญเบ‡ J เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒ 2 bytes, เบ„เปˆเบฒเปƒเบ™เบŠเปˆเบญเบ‡ X เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒ 2 bytes.

เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปเบกเปˆเบ™: 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);

  • เบ›เบฐเบกเบฒเบ™เบชเบดเบš
  • เบ›เบฐเบกเบฒเบ™เบฎเป‰เบญเบ
  • เบ›เบฐเบกเบฒเบ™เบซเบฅเบฒเบเบžเบฑเบ™เบ„เบปเบ™
  • เบ›เบฐเบกเบฒเบ™เบซเบผเบฒเบเบชเบดเบšเบžเบฑเบ™เบ„เบปเบ™

Replyเบญเบตเบ‡เบ•เบฒเบกเป€เบญเบเบฐเบชเบฒเบ™ Oracle (เบญเป‰เบฒเบ‡เบญเบตเบ‡เบˆเบฒเบ 12.1):

เบชเปเบฒเบฅเบฑเบšเบ”เบฑเบ”เบŠเบฐเบ™เบต B-tree, เบ›เบฑเบ”เป„เบˆเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบ”เบฑเบ”เบŠเบฐเบ™เบตเบงเบฑเบ”เปเบ—เบเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบ—เบฒเบ‡เบเบฒเบเบฐเบžเบฒเบšเบ‚เบญเบ‡เปเบ–เบงเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบกเบนเบ™เบ„เปˆเบฒเบ”เบฑเบ”เบŠเบฐเบ™เบต.

เบ›เบฑเบ”เป„เบˆเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบ”เบฑเบ”เบชเบฐเบ™เบตเบŠเปˆเบงเบเปƒเบซเป‰เบœเบนเป‰เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบชเบฐเปเบเบ™เบ”เบฑเบ”เบชเบฐเบ™เบตเบซเบผเบทเบเบฒเบ™เบชเบฐเปเบเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบ•เบฑเบกเปเบกเปˆเบ™เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบšเบฒเบ‡เบขเปˆเบฒเบ‡). เบ›เบฑเบ”เป„เบˆเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบ•เปเปˆเบฒเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เบชเบฐเปเบเบ™เบ”เบฑเบ”เบŠเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.

เบ›เบฑเบ”เป„เบˆเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบ—เบตเปˆเบขเบนเปˆเปƒเบเป‰เบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบšเบฅเบฑเบญเบเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเปเบ–เบงเบ–เบทเบเบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบขเบนเปˆเปƒเบ™เบšเบฅเบฑเบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป‚เบ”เบเบ›เบธเปˆเบกเบ”เบฑเบ”เบชเบฐเบ™เบต. เบ–เป‰เบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเปเบเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบ•เบฑเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบกเบฑเบเบˆเบฐเบ”เบถเบ‡เปเบ–เบงเบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เปเบœเปˆเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เป‚เบ”เบเบฅเบฐเบซเบฑเบ”เบ”เบฑเบ”เบชเบฐเบ™เบต. เบ›เบฑเบ”เป„เบˆเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบ—เบตเปˆเบขเบนเปˆเปƒเบเป‰เบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เปเบ–เบงเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเปเบ–เบงเบ–เบทเบเบเบฐเปเบˆเบเบเบฐเบˆเบฒเบเปเบšเบšเบชเบธเปˆเบกเปƒเบ™เบ—เบปเปˆเบงเบšเบฅเบฑเบญเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ”เบฑเบ”เบชเบฐเบ™เบต. เบ–เป‰เบฒเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเปเบเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบ•เบฑเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบšเปเปˆเบ”เบถเบ‡เปเบ–เบงเปƒเบ™เบฅเปเบฒเบ”เบฑเบšเปƒเบ”เป†เบ—เบตเปˆเบˆเบฑเบ”เบฎเบฝเบ‡เป‚เบ”เบเบฅเบฐเบซเบฑเบ”เบ”เบฑเบ”เบชเบฐเบ™เบตเบ™เบตเป‰.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบˆเบฑเบ”เบฎเบฝเบ‡เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบซเบกเบฒเบฐเบชเบปเบก, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ›เบฑเบ”เป„เบˆเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบˆเบฐเป€เบ—เบปเปˆเบฒเบเบฑเบšเบซเบผเบทเปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ•เบฑเบ™เบ—เบตเปˆเบ„เบญเบšเบ„เบญเบ‡เบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เบชเปเบฒเบฅเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡ 8 เบเบดเป‚เบฅเป„เบš, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒเบ›เบฐเบกเบฒเบ™เบซเบ™เบถเปˆเบ‡เบžเบฑเบ™เบ„เปˆเบฒเบ•เบปเบงเป€เบฅเบเปเบ„เบšเบˆเบฐเป€เบซเบกเบฒเบฐเบเบฑเบšเบซเบ™เบถเปˆเบ‡เบ•เบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ•เบฑเบ™, เปเบฅเบฐเป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบ, เบ›เบฑเบ”เป„เบˆเบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบˆเบฐเป€เบ›เบฑเบ™. เบ›เบฐเบกเบฒเบ™เบชเบดเบš.

เปƒเบ™เบ„เปˆเบฒเปƒเบ”เบ‚เบญเบ‡ N script เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เบชเปเบฒเป€เบฅเบฑเบ”เบœเบปเบ™เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™?

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

Replyเบญเบตเบ‡เบ•เบฒเบกเป€เบญเบเบฐเบชเบฒเบ™ Oracle (เบญเป‰เบฒเบ‡เบญเบตเบ‡เบˆเบฒเบ 11.2):

เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ•เบฒเบกเป€เบซเบ”เบœเบปเบ™

เบฅเบฒเบเบเบฒเบ™
เบ›เบฐเป€เบžเบ”เบˆเปเบฒเบเบฑเบ”
เบˆเบณเบเบฑเบ”เบกเบนเบ™เบ„เปˆเบฒ

เบ”เบฑเบ”เบชเบฐเบ™เบต
เบ‚เบฐเปœเบฒเบ”เบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบ–เบฑเบ™เบ—เบตเปˆเบ–เบทเบเบ”เบฑเบ”เบชเบฐเบ™เบต
75% เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบšเบฅเบฑเบญเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเบปเบšเบšเบฒเบ‡เบชเปˆเบงเบ™ overhead

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เบฐเปœเบฒเบ”เบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบ–เบฑเบ™เบ—เบตเปˆเบ–เบทเบเบ”เบฑเบ”เบชเบฐเบ™เบตเบšเปเปˆเบ„เบงเบ™เป€เบเบตเบ™ 6Kb. เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเป€เบฅเบทเบญเบ. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” AL32UTF8, เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบซเบ™เบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ„เบญเบšเบ„เบญเบ‡เบชเบนเบ‡เบชเบธเบ” 4 เป„เบšเบ•เปŒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบฎเป‰เบฒเบเปเบฎเบ‡เบ—เบตเปˆเบชเบธเบ”, เบ›เบฐเบกเบฒเบ™ 6 เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบˆเบฐเบžเปเบ”เบตเบเบฑเบš 1500 เบเบดเป‚เบฅเป„เบšเบ•เปŒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, Oracle เบˆเบฐเบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเป‰เบฒเบ‡เบ”เบฑเบ”เบŠเบฐเบ™เบตเบขเบนเปˆเบ—เบตเปˆ N = 400 (เป€เบกเบทเปˆเบญเบ„เบงเบฒเบกเบเบฒเบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™ 1600 เบ•เบปเบงเบญเบฑเบเบชเบญเบ™ * 4 bytes + เบ„เบงเบฒเบกเบเบฒเบงเปเบ–เบง), เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ เบขเบนเปˆเบ—เบตเปˆ N = 200 (เบซเบผเบทเบ™เป‰เบญเบเบเบงเปˆเบฒ) เบเบฒเบ™เบชเป‰เบฒเบ‡เบ”เบฑเบ”เบชเบฐเบ™เบตเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒ.

เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ INSERT เบ—เบตเปˆเบกเบตเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ APPEND เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเป‚เบซเบฅเบ”เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป‚เบซเบกเบ”เป‚เบ”เบเบเบปเบ‡. เบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เบ–เป‰เบฒเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆ trigger hangs?

  • เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เป‚เบ”เบโ€‹เบเบปเบ‡โ€‹, เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบšโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบ•เบฒเบกโ€‹เบ—เบตเปˆโ€‹เบ„เบฒเบ”โ€‹เบซเบงเบฑเบ‡โ€‹
  • เบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบ–เบทเบเป‚เบซเบฅเบ”เปƒเบ™เป‚เบซเบกเบ”เป‚เบ”เบเบเบปเบ‡, เปเบ•เปˆ trigger เบˆเบฐเบšเปเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”
  • เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ—เปเบฒโ€‹เบกเบฐโ€‹เบ”เบฒโ€‹, เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบšโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบ•เบฒเบกโ€‹เบ—เบตเปˆโ€‹เบกเบฑเบ™โ€‹เบ„เบงเบ™โ€‹เบˆเบฐโ€‹
  • เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ—เปเบฒโ€‹เบกเบฐโ€‹เบ”เบฒโ€‹, เปเบ•เปˆ trigger เบˆเบฐโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹
  • เบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบšเปเปˆเบ–เบทเบเป‚เบซเบฅเบ”, เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบˆเบฐเบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰

Replyเป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบ–เบฒเบกเบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™เบซเบผเบฒเบเบเบงเปˆเบฒ. เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เบ‚เป‰เบญเบเบˆเบฐเปเบ™เบฐเบ™เปเบฒเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เบเบฒเบ™เปƒเบชเปˆเปƒเบ™เป‚เบซเบกเบ”เป‚เบ”เบเบเบปเบ‡เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเบเบปเบ‡, เบ‚เป‰เบฒเบกเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ SQL, เป€เบŠเบดเปˆเบ‡เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเป„เบงเบชเบนเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบ, เบ–เป‰เบฒเป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰, เปเบฅเบฐเบšเปเปˆเบกเบตเบˆเบธเบ”เปƒเบ”เปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบเบฑเบ‡เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เปเบŠเบเบŠเบถเบกเบŠเป‰เบฒเบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ.
  2. เบเบฒเบ™เบšเปเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบเบฐเบ•เบธเป‰เบ™เบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ, เบ–เป‰เบฒเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™, เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” (เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบญเบทเปˆเบ™เป†) เบˆเบฐเบ‚เบถเป‰เบ™เบเบฑเบšเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบ–เบทเบเปƒเบชเปˆ. เบ™เบตเป‰เปเบ™เปˆเบ™เบญเบ™เบˆเบฐเบ—เปเบฒเบฅเบฒเบเบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เปƒเบ™เบเบฒเบ™เบœเบฐเบฅเบดเบ”.
  3. เบ„เบงเบฒเบกเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป„เบ”เป‰เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบ–เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. เปเบ•เปˆเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒ APPEND เปเบกเปˆเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ, เปเบฅเบฐเป€เบซเบ”เบœเบปเบ™เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปเบกเปˆเบ™เบงเปˆเบฒเบžเบงเบเบกเบฑเบ™เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ–เป‰เบฒเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เปเบ•เปˆเบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™, เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบ„เบฒเบ”เบซเบงเบฑเบ‡เปเบกเปˆเบ™ เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฐโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เป‚เบซเบผเบ”โ€‹เปƒเบ™โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบด (SQLโ€‹)โ€‹, เบœเบปเบ™โ€‹เบเบฐโ€‹เบ—เบปเบšโ€‹เบˆเบฐโ€‹เป„เบŸโ€‹.

เบญเบตเบ‡เบ•เบฒเบกเป€เบญเบเบฐเบชเบฒเบ™ Oracle (เบญเป‰เบฒเบ‡เบญเบตเบ‡เบˆเบฒเบ 8.04):

เบเบฒเบ™เบฅเบฐเป€เบกเบตเบ”เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ›เบฑเบ™เบฅเปเบฒเบ”เบฑเบš, เป‚เบ”เบเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปเบŠเบเปเบšเบšเบ—เปเบฒเบกเบฐเบ”เบฒ, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบ•เบทเบญเบ™เบซเบผเบทเบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”. เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เปเบกเปˆเบ™เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เปƒเบ™เบ—เบธเบฅเบฐเบเปเบฒ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป„เบ”เป‰.
เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒ triggers เบซเบผเบทเบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบกเบตเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ APPEND เบˆเบฐเบ–เบทเบเบฅเบฐเป€เบฅเบตเบเป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰ INSERT direct-load (serial เบซเบผเบท parallel), เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบซเบผเบทเบ‚เปเป‰ PARALLEL, เบ–เป‰เบฒเบกเบต.

เบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญ script เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”?

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);

  • เบชเบณเป€เบฅเบฑเบ”เบœเบปเบ™
  • เบฅเบปเป‰เบกเป€เบซเบฅเบงเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบ syntax เบœเบดเบ”เบžเบฒเบ”
  • เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”: เบ—เบธเบฅเบฐเบเปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡
  • เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป‚เบ—เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบชเบนเบ‡เบชเบธเบ”
  • เบเบฒเบ™เบฅเบฐเป€เบกเบตเบ”เบฅเบฐเบซเบฑเบ”เบ•เปˆเบฒเบ‡เบ›เบฐเป€เบ—เบ”เบœเบดเบ”เบžเบฒเบ”
  • เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบฅเบฑเบญเบ

Replyเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบฅเบฐ trigger เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ™เบตเป‰เบšเปเปˆเบ„เบงเบ™เบ™เปเบฒเป„เบ›เบชเบนเปˆเบšเบฑเบ™เบซเบฒ. เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เบ—เบฃเบดเบเป€เบเบตเปเบกเปˆเบ™เบเบฑเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบˆเบฐเบšเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบ•เบปเบงเบขเปˆเบฒเบ‡.

เบซเบผเบฑเบ‡เบˆเบฒเบเปƒเบชเปˆเปเบ–เบงเบ—เบต XNUMX, เบเบฒเบ™เบเบดเบ‡เบฅเบนเบเบ›เบทเบ™เบ—เบตเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เปเบ–เบงเบ—เบตเบชเบญเบ‡เบ–เบทเบเปƒเบชเปˆ, เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบนเบเบ›เบทเบ™เปƒเบชเปˆเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เปƒเบชเปˆเปเบ–เบงเบ—เบตเบชเบฒเบก, เปเบฅเบฐเบญเบทเปˆเบ™เป†เบˆเบปเบ™เบเปˆเบงเบฒเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบงเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เป‚เบ—เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบชเบนเบ‡เบชเบธเบ”. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบˆเบธเบ”เบญเปˆเบญเบ™เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบกเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบซเบผเบดเป‰เบ™. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ trigger เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, commit เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เบชเปเบฒเป€เบฅเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เปƒเบชเปˆเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ•เบปเบงเบเบฐเบ•เบธเป‰เบ™เบ—เบตเปˆเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเปเบšเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบžเบฐเบเบฒเบเบฒเบกเปƒเบชเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบ–เบงเบ—เบตเปˆเบญเป‰เบฒเบ‡เบญเบตเบ‡เปƒเบชเปˆเบเบฐเปเบˆเบ•เปˆเบฒเบ‡เบ›เบฐเป€เบ—เบ”เป„เบ›เบซเบฒเบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป„เบ”เป‰เป€เบฎเบฑเบ”. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบฅเปเบ–เป‰เบฒ (เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบฅเปเบ–เป‰เบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ•เบปเป‰เบ™เบ•เปเป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เปƒเบชเปˆเบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰) เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบ•เบปเป‰เบ™เบ•เปเบฅเปเบ–เป‰เบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ—เบตเปˆเบˆเบฐเบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฑเบ‡เบˆเบฒเบเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆ. Deadlock เป€เบเบตเบ”เบ‚เบทเป‰เบ™เปเบฅเบฐ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ–เบทเบเบเบปเบเป€เบฅเบตเบเบเป‰เบญเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบฅเบฑเบญเบ..

เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเปเบฒเบซเบผเบงเบ”. เป€เบ‚เบปเป‰เบฒโ€‹เบชเบนเปˆโ€‹เบฅเบฐโ€‹เบšเบปเบšเบเบฐเบฅเบธเบ™เบฒ.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐ?

  • เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบชเบญเบ‡เบ™เบดเป‰เบงเบกเบท, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”เบ—เบธเบเบขเปˆเบฒเบ‡เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

  • เบšเปเปˆเปเบกเปˆเบ™เปเบ—เป‰เป†, เบ‚เป‰เบญเบเบœเบดเบ”เปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบ„เบณเบ–เบฒเบก.

  • เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เปเบเป‰เป„เบ‚เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

  • เบ‚เป‰เบญเบเป€เบ”เบปเบฒเบ„เบณเบ•เบญเบšเบชเบญเบ‡เป€เบ—เบทเปˆเบญเปเบฅเป‰เบง!

  • เบ‚เป‰เบญเบเบˆเบฐเบ‚เบฝเบ™เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™

14 เบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡. 10 เบœเบนเป‰เปƒเบŠเป‰เบ‡เบปเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™