powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / truncate vs delete small table
13 сообщений из 13, страница 1 из 1
truncate vs delete small table
    #39343306
tdt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tdt
Гость
Подскажите?
Есть маленькая таблица, ~300 строк, на таблице один PK.
В процедуре требуется очистка таблицы.
Почему truncate table xxx может работать дольше, чем delete from xxx ?
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343316
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdt,

В частности, может работать дольше, когда много партиций.
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343321
tdt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tdt
Гость
SeaGate,

На таблице кроме PK (по одному столбцу) больше ничего нет.
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343345
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дольше - это насколько в часах?
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343371
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdtSeaGate,

На таблице кроме PK (по одному столбцу) больше ничего нет.
Индекс PK имеет много партиций? Так то много, что можно придумать. Это квест или sql_trace/ASH/иное будет?
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343398
tdt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tdt
Гость
andreymxдольше - это насколько в часах?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
declare 
    s number := dbms_utility.get_time;
begin
delete from test_tdt;
commit; 
dbms_output.put_line('delete:'||(dbms_utility.get_time-s)/100);
end;
/
delete:0
declare 
    s number := dbms_utility.get_time;
begin
execute immediate 'truncate table test_tdt'; 
dbms_output.put_line('trunc:'||(dbms_utility.get_time-s)/100);
end;
/
trunc:,02
declare 
    s number := dbms_utility.get_time;
begin
execute immediate 'truncate table test_tdt'; 
dbms_output.put_line('trunc:'||(dbms_utility.get_time-s)/100);
end;
/
trunc:,02
declare 
    s number := dbms_utility.get_time;
begin
delete from test_tdt;
commit; 
dbms_output.put_line('delete:'||(dbms_utility.get_time-s)/100);
end;
/
delete:0
declare 
    s number := dbms_utility.get_time;
begin
delete from test_tdt;
commit; 
dbms_output.put_line('delete:'||(dbms_utility.get_time-s)/100);
end;
/
delete:0
declare 
    s number := dbms_utility.get_time;
begin
execute immediate 'truncate table test_tdt'; 
dbms_output.put_line('trunc:'||(dbms_utility.get_time-s)/100);
end;
/
trunc:,01


SeaGate Индекс PK имеет много партиций?
Таблица, как и PK не имеет партиций.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
-- DDL Script for Table ow.test_tdt
CREATE TABLE test_tdt
    (id_tdt                VARCHAR2(15 BYTE) NOT NULL,
    v1                   VARCHAR2(200 BYTE),
    v2                   VARCHAR2(100 BYTE),
    v3                   VARCHAR2(100 BYTE),
    v4                   VARCHAR2(100 BYTE),
    v5                   VARCHAR2(3 BYTE),
    v6                   VARCHAR2(3 BYTE),
    n1                   NUMBER(1,0),
    n2                   NUMBER(1,0),
    n3                   NUMBER(4,0),
    n4                   NUMBER(2,0),
    n5                   NUMBER(1,0),
    d1                      DATE,
    d2                      DATE)
  SEGMENT CREATION IMMEDIATE
  PCTFREE     10
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  tbs_table
  STORAGE   (
    INITIAL     262144
    NEXT        262144
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
  NOCACHE
  MONITORING
  NOPARALLEL
  LOGGING
/
ALTER TABLE test_tdt
ADD CONSTRAINT pk_id_tdt PRIMARY KEY (id_tdt)
USING INDEX
  PCTFREE     10
  INITRANS    2
  MAXTRANS    255
  TABLESPACE  tbs_table
  STORAGE   (
    INITIAL     262144
    NEXT        262144
    MINEXTENTS  1
    MAXEXTENTS  2147483645
  )
/
-- End of DDL Script for Table ow.test_tdt


БД Oracle 11.2.0.3
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343435
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ддл триггер есть?
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343440
tdt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tdt
Гость
andreymxддл триггер есть?
Нет. DDL скрипт на таблицу приведен выше.
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343443
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdt,

Какой смысл мерить попугаев на пустой таблице?
Реализовать ситуацию с "truncate медленнее delete" абсолютно не сложно, причем делать пример нужно на таблице с большим количеством записей, там эффект будет более явный.

Возьми листок, раздели на две половинки, в одной запиши, что происходит при delete, в другой - при truncate.
После чего манипулируешь данными так, что время первых операций было как можно больше, а вторых как можно меньше )
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343449
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdtandreymxддл триггер есть?
Нет. DDL скрипт на таблицу приведен выше.ддл триггер - он на базе, не на таблице
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343457
tdt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tdt
Гость
andreymxtdtпропущено...

Нет. DDL скрипт на таблицу приведен выше.ддл триггер - он на базе, не на таблице

Да, есть такой, понятно. Спасибо!
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343462
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdt,

а можно на его ддл взглянуть?
...
Рейтинг: 0 / 0
truncate vs delete small table
    #39343674
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdtБД Oracle 11.2.0.3Периодически проявляются баги с долгим транкейтом из-за нововвдений в управление сегментами, табличными пространствами, с появлением editions, с оптимизацией управления шаред пулом и еще хрен знает какой фигни.
В зависимости от конкурентных действий может занимать неограниченное время.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / truncate vs delete small table
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]