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

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

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

На таблице кроме PK (по одному столбцу) больше ничего нет.
Индекс PK имеет много партиций? Так то много, что можно придумать. Это квест или sql_trace/ASH/иное будет?
...
Рейтинг: 0 / 0
08.11.2016, 13:04
    #39343398
tdt
tdt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
truncate vs delete small table
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
08.11.2016, 13:29
    #39343435
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
truncate vs delete small table
ддл триггер есть?
...
Рейтинг: 0 / 0
08.11.2016, 13:31
    #39343440
tdt
tdt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
truncate vs delete small table
andreymxддл триггер есть?
Нет. DDL скрипт на таблицу приведен выше.
...
Рейтинг: 0 / 0
08.11.2016, 13:31
    #39343443
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
truncate vs delete small table
tdt,

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

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

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

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

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


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