Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Падает скорость вставки в партицию со временем / 13 сообщений из 13, страница 1 из 1
16.05.2017, 16:35
    #39453970
Chukis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Падает скорость вставки в партицию со временем
Имеется партиционная таблица (разбита по полугодиям на партиции). БД на Oracle 10g.
В "чистую партицию" записи вставляются быстро, но со временем, по мере заполнения данными, скорость вставки падает в 5-7 раз.
Вставка записей происходит через конструкцию
insert /*+APPEND*/ into Table_Name values ...

С чем может быть связана потеря скорости записи и как с этим бороться? Плодить много мелких партиций не хочется.
...
Рейтинг: 0 / 0
16.05.2017, 17:09
    #39453989
ora601
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Падает скорость вставки в партицию со временем
Chukis,

Индексы мержаться долго? Ну и ожидания/рантайм статистики по планам конечно помогут.
...
Рейтинг: 0 / 0
16.05.2017, 17:12
    #39453990
Chukis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Падает скорость вставки в партицию со временем
ora601,
А это нормальная ситуация, когда падает скорость вставки в партицию по мере её заполнения?
...
Рейтинг: 0 / 0
16.05.2017, 17:28
    #39454010
Падает скорость вставки в партицию со временем
Chukis,

0) ты уж определись - или у тебя APPEND, или VALUES
1) какие и сколько индексов есть на таблице?
2) какие и сколько ограничений целостности есть на таблице?
...
Рейтинг: 0 / 0
16.05.2017, 17:30
    #39454011
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Падает скорость вставки в партицию со временем
Chukis,

ddl таблицы и индексов покажите.

А так вообще, можно по ожиданиям посмотреть чем "замедленная" вставка занимается.
...
Рейтинг: 0 / 0
16.05.2017, 18:02
    #39454045
ora601
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Падает скорость вставки в партицию со временем
Chukis,

Если еще + APPEND, то это не очень нормально,
А вот если APPEND + VALUES на 10g то это просто может быть фрагментация.
...
Рейтинг: 0 / 0
16.05.2017, 18:31
    #39454069
Падает скорость вставки в партицию со временем
ora601Chukis,

Если еще + APPEND, то это не очень нормально,
А вот если APPEND + VALUES на 10g то это просто может быть фрагментация.с каких это пор append стал работать с values?

З. Ы.
Глюк в 11.1, который тут же пофиксили - не в счёт...
...
Рейтинг: 0 / 0
16.05.2017, 18:37
    #39454074
Падает скорость вставки в партицию со временем
ora601,

Ну и это - append вставляет данные в "чистые" сегменты выше HWM и никогда не использует уже выделенные под таблицу "грязные", ему пофиг на фрагментацию ...
...
Рейтинг: 0 / 0
16.05.2017, 21:14
    #39454172
Nobody1111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Падает скорость вставки в партицию со временем
Добрый Э - Эхora601Chukis,

Если еще + APPEND, то это не очень нормально,
А вот если APPEND + VALUES на 10g то это просто может быть фрагментация.с каких это пор append стал работать с values?
Может, с 9i? (я не утверждаю, я предполагаю, сейчас проверить не могу)

Код: plsql
1.
2.
3.
4.
5.
INSERT /*+APPEND */ ALL
INTO cities values (1, 'Москва', sysdate + 1)
INTO cities values (2, 'Питер', sysdate + 2)
INTO cities values (3, 'Гадюкино', sysdate + 3)
SELECT * FROM dual;
...
Рейтинг: 0 / 0
17.05.2017, 03:50
    #39454242
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Падает скорость вставки в партицию со временем
INSERT ALL это не тот VALUES, поскольку все равно есть SUBQUERY
А обычный INSERT ... VALUES работает только с APPEND_VALUES
Код: 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.
tst> create table cities(a number, b varchar2(30), c date);

Table created.

tst> INSERT /*+APPEND_VALUES */ INTO cities values (1, 'Москва', sysdate + 1);

1 row created.

tst> /
INSERT /*+APPEND_VALUES */ INTO cities values (1, 'Москва', sysdate + 1)
                                *
ERROR at line 1:
ORA-12838: cannot read/modify an object after modifying it in parallel


tst> rollback;

Rollback complete.

tst> INSERT /*+APPEND */ ALL
  2  INTO cities values (1, 'Москва', sysdate + 1)
  3  INTO cities values (2, 'Питер', sysdate + 2)
  4  INTO cities values (3, 'Гадюкино', sysdate + 3)
  5  SELECT * FROM dual;

3 rows created.

tst> /
INTO cities values (1, 'Москва', sysdate + 1)
     *
ERROR at line 2:
ORA-12838: cannot read/modify an object after modifying it in parallel

tst> rollback;

Rollback complete.

tst> INSERT /*+APPEND */ INTO cities values (1, 'Москва', sysdate + 1);

1 row created.

tst> /

1 row created.

tst> insert into cities values (1, 'Москва', sysdate + 1);

1 row created.

Про аномалию в 11.1 уже сказали
...
Рейтинг: 0 / 0
17.05.2017, 16:11
    #39454812
Chukis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Падает скорость вставки в партицию со временем
С insert я ошибся малость, конечно без values используется)
INSERT /*+APPEND*/ INTO MYTABLE SELECT .....


ddl для таблица вот такой:


Код: 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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
CREATE TABLE MYTable
    (
	dpk                            DATE,
    roi                            VARCHAR2(8),
    daot                            DATE,
    pul                            VARCHAR2(6),
    mes                            VARCHAR2(32),
    lic                            VARCHAR2(20),
    rolr                            VARCHAR2(20),
    otr                            VARCHAR2(20),
    ser                            VARCHAR2(20),
    ots                            VARCHAR2(2),
    avk                            VARCHAR2(2),
    po1                            VARCHAR2(3),
    po2                            VARCHAR2(3),
    sig                           VARCHAR2(10),
    crc                            NUMBER(12,0),
    vot                            VARCHAR2(5)
     )
  PCTFREE     0
  INITRANS    1
  MAXTRANS    255
  TABLESPACE  parts
  STORAGE   (
    INITIAL     524288000
    NEXT        524288000
    PCTINCREASE 0
    MINEXTENTS  1
    BUFFER_POOL DEFAULT
  )
  PARTITION BY RANGE (DPK)
  (
  PARTITION parts27 VALUES LESS THAN (TO_DATE(' 2017-06-30 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  PCTFREE     0
  INITRANS    1
  MAXTRANS    255,
  PARTITION parts271 VALUES LESS THAN (TO_DATE(' 2017-12-31 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
  PCTFREE     0
  INITRANS    1
  MAXTRANS    255,
  PARTITION parts30 VALUES LESS THAN (MAXVALUE)
  PCTFREE     0
  INITRANS    1
  MAXTRANS    255
  )
/

-- Indexes for MYTable

CREATE INDEX na_crc ON MYTable
  (
    crc                             ASC
  )
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255
  TABLESPACE  idparts
  STORAGE   (
    INITIAL     104857600
    NEXT        104857600
    PCTINCREASE 0
    MINEXTENTS  1
    MAXEXTENTS  2147483645
    BUFFER_POOL DEFAULT
  )
  LOCAL (
  PARTITION parts27
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255,
  PARTITION parts271
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255,
  PARTITION parts30
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255
  )
/

CREATE INDEX na_lic ON MYTable
  (
    sig                            ASC,
    lic                             ASC
  )
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255
  TABLESPACE  idparts
  STORAGE   (
    INITIAL     104857600
    NEXT        104857600
    PCTINCREASE 0
    MINEXTENTS  1
    MAXEXTENTS  2147483645
    BUFFER_POOL DEFAULT
  )
  PARTITION parts27
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255,
  PARTITION parts271
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255,
  PARTITION parts30
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255
  )
/

CREATE INDEX na_roi ON MYTable
  (
    daot                             ASC,
    roi                             ASC,
    avk                             ASC
  )
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255
  TABLESPACE  idparts
  STORAGE   (
    INITIAL     104857600
    NEXT        104857600
    PCTINCREASE 0
    MINEXTENTS  1
    MAXEXTENTS  2147483645
    BUFFER_POOL DEFAULT
  )
  LOCAL (
  PARTITION parts27
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255,
  PARTITION parts271
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255,
  PARTITION parts30
  PCTFREE     0
  INITRANS    2
  MAXTRANS    255
  )
/



Статистика на таблицу собиралась 3 дня назад.
...
Рейтинг: 0 / 0
17.05.2017, 16:11
    #39454814
Chukis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Падает скорость вставки в партицию со временем
Chukis,
Удаление строк из таблицы не производится, она накопительная. Только операции вставка и селект
...
Рейтинг: 0 / 0
17.05.2017, 16:39
    #39454841
ora601
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Падает скорость вставки в партицию со временем
Добрый Э - Эхora601Chukis,

Если еще + APPEND, то это не очень нормально,
А вот если APPEND + VALUES на 10g то это просто может быть фрагментация.
с каких это пор append стал работать с values?


А я и не утвержадал это :)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Падает скорость вставки в партицию со временем / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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