Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Авг 03, 2015 14:18   |
|
Полезность: Нет оценки
|
timochev пишет: | yaffil пишет: | За неделю на тесте может и загрузит |
Именно так.
Мы сделали в БД свою таблицу, грузим в нее с помощью sqlldr в режиме direct load, а затем уже сравниваем (и корректируем) ЦФТ-шный справочник со свежими загруженными данными. Ежедневное обновление занимает 25-30 минут на рабочей базе.
Но такое решение несколько нарушает регламент разработки... |
А сколько лоадером у вас грузит по времени? Операцией ИБСО достаточно долго 92 миллиона записей подгружает. Может лоадер быстрее. |
|
|
e.kha Участник со стажем
Вступление в Клуб: 26.04.2012
|
Пн Авг 03, 2015 14:20   |
|
Полезность: Нет оценки
|
у меня в среднем где то 70-80 сек... По сетке если где то 2 минуты...
Но уточню, это не дистрибутивную таблицу... |
|
|
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Пн Авг 03, 2015 14:38   |
|
Полезность: Нет оценки
|
Gobur пишет: | А сколько лоадером у вас грузит по времени? Операцией ИБСО достаточно долго 92 миллиона записей подгружает. Может лоадер быстрее. |
Ежедневное обновление:
SQL-Loader - около 8 минут
пересбор статистики - 13 мин.
Пометка удаленных записей в справочнике ЦФТ-Банк - 4 минуты
Добавление новых записей - 7 минут. |
|
|
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Авг 03, 2015 14:46   |
|
Полезность: Нет оценки
|
timochev пишет: | Gobur пишет: | А сколько лоадером у вас грузит по времени? Операцией ИБСО достаточно долго 92 миллиона записей подгружает. Может лоадер быстрее. |
Ежедневное обновление:
SQL-Loader - около 8 минут
пересбор статистики - 13 мин.
Пометка удаленных записей в справочнике ЦФТ-Банк - 4 минуты
Добавление новых записей - 7 минут. |
неплохо - надо попробовать. |
|
|
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Пн Авг 03, 2015 14:57   |
|
Полезность: 1
|
Gobur пишет: | неплохо - надо попробовать. |
От пересбора статистики, наверное, можно отказаться, если прописать хинты. У меня сначала были планы запросов плохие - вот и вставил.
А вообще скоро ФМС начнет через СМЭВ подключать.
http://cftclub.ru/viewtopic.php?t=4090 |
|
|
e.kha Участник со стажем
Вступление в Клуб: 26.04.2012
|
Пн Авг 03, 2015 14:59   |
|
Полезность: Нет оценки
|
Имея опыт как работает ФМС, мне кажется, сей метод будет еще актуальным.... |
|
|
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Авг 03, 2015 15:25   |
|
Полезность: Нет оценки
|
timochev пишет: | Gobur пишет: | неплохо - надо попробовать. |
От пересбора статистики, наверное, можно отказаться, если прописать хинты. У меня сначала были планы запросов плохие - вот и вставил.
А вообще скоро ФМС начнет через СМЭВ подключать.
http://cftclub.ru/viewtopic.php?t=4090 |
через СМЭФ дороговато получается.
еще такой вопросик - но первоначальная загрузка из временной таблицы в основную все равно долго идет?
Лоадером у меня даже на тормозную тестовую 25 миллионов уже за пару минут грузануло о временную табличку. |
|
|
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Пн Авг 03, 2015 15:52   |
|
Полезность: Нет оценки
|
Gobur пишет: | еще такой вопросик - но первоначальная загрузка из временной таблицы в основную все равно долго идет?
Лоадером у меня даже на тормозную тестовую 25 миллионов уже за пару минут грузануло о временную табличку. |
первоначальный перенос занял 40 минут (77 млн записей)
Либо у нас рабочая база такая же тормознутая, либо параметры можно подкрутить. Но скорость меня устраивает.
Код: |
92791525 Rows successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
Bind array size not used in direct path.
Column array rows : 50000
Stream buffer bytes: 1000000
Read buffer bytes: 1000000
Total logical records skipped: 0
Total logical records read: 92791525
Total logical records rejected: 0
Total logical records discarded: 0
Total stream buffers loaded by SQL*Loader main thread: 4083
Total stream buffers loaded by SQL*Loader load thread: 743
Run began on Mon Aug 03 10:37:07 2015
Run ended on Mon Aug 03 10:45:15 2015
Elapsed time was: 00:08:08.68
CPU time was: 00:00:50.57 |
|
|
|
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Авг 03, 2015 16:03   |
|
Полезность: Нет оценки
|
timochev пишет: |
первоначальный перенос занял 40 минут (77 млн записей)
|
а вот эти 40 минут уже операцией ИБСОШной делали? К своей временной получается обращались через pl/sql вставку? |
|
|
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Пн Авг 03, 2015 16:32   |
|
Полезность: 2
|
ЦФТ-шная операция запускается каждые 15 минут в джобе:
1) проверяет наличие файла *.BZ2 в каталоге импорта на fio
2) запускает разархивацию через внешнюю команду
3) через внешнюю команду в файле формируется индексированная колонка Серия+Номер
4) очищается временная таблица через execute_sql
5) через внешнюю команду запуск SQL-Loader
6) сбор статистики через execute_sql
7) собственно удаление и добавление записей
обращение к таблице в п.7 сделано через общесистемную вьюху (Словарь -> Системные справочники -> Представления) |
|
|
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Авг 03, 2015 16:42   |
|
Полезность: Нет оценки
|
timochev пишет: | ЦФТ-шная операция запускается каждые 15 минут в джобе:
1) проверяет наличие файла *.BZ2 в каталоге импорта на fio
2) запускает разархивацию через внешнюю команду
3) через внешнюю команду в файле формируется индексированная колонка Серия+Номер
4) очищается временная таблица через execute_sql
5) через внешнюю команду запуск SQL-Loader
6) сбор статистики через execute_sql
7) собственно удаление и добавление записей
обращение к таблице в п.7 сделано через общесистемную вьюху (Словарь -> Системные справочники -> Представления) |
спасибо за идею, лоадер прям спасение в этой ситуации, а то уже как то грустно было.. |
|
|
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Пн Авг 03, 2015 18:23   |
|
Полезность: Нет оценки
|
А вот еще вопросик в тему. Если у временной таблицы есть есть индекс, нужно ли его потом пересоздавать при использовании DIRECT=TRUE (во всяком случае при налии индекса скорость падает). |
|
|
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Вт Авг 04, 2015 08:51   |
|
Полезность: Нет оценки
|
Не надо, при загрузке пишет:
Цитата: | The following index(es) on table XXX.CERT_INV_IMP were processed:
index XXX.IDX_CERT_INV_IMP_SER_NUM loaded successfully with 92791525 keys |
|
|
|
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Вт Авг 04, 2015 11:17   |
|
Полезность: Нет оценки
|
Просто странно - на тест за 9 минут грузит с индексом. На рабочую - 1 час 20.
Все отличие - на тестовой нет архивлогов (при этом тестовая очень тормозная). Надо еще опцию UNRECOVERABLE попробовать. |
|
|
timochev Эксперт
Вступление в Клуб: 02.07.2007
|
Вт Авг 04, 2015 11:25   |
|
Полезность: 1
|
В каком режиме работает SQL-Loder? direct?
Если так, то данные пишутся напрямую в файл БД, никакие архивлоги не формируются.
Код: | create table XXX.CERT_INV_IMP
(
c_ser VARCHAR2(50),
c_num VARCHAR2(50),
c_ser_num VARCHAR2(100)
)
tablespace T_USR
pctfree 5
initrans 1
maxtrans 255
storage
(
initial 500M
next 50M
minextents 1
maxextents unlimited
pctincrease 0
);
-- Create/Recreate indexes
create index XXX.IDX_CERT_INV_IMP_SER_NUM on XXX.CERT_INV_IMP (C_SER_NUM)
tablespace I_USR
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 500M
next 50M
minextents 1
maxextents unlimited
pctincrease 0
);
grant select,update,insert,delete on XXX.CERT_INV_IMP to IBS with grant option;
create or replace procedure XXX.TRUNC_CERT_INV_IMP is
begin
execute immediate('truncate table XXX.CERT_INV_IMP');
end;
/
grant execute on XXX.TRUNC_CERT_INV_IMP to IBS; |
Код: | LOAD DATA
INFILE 'in/data.csv'
BADFILE 'log/cert.bad'
DISCARDFILE 'log/cert.dsc'
TRUNCATE
INTO TABLE XXX.CERT_INV_IMP
FIELDS
(C_SER CHAR TERMINATED BY ',',
C_NUM CHAR TERMINATED BY ',',
C_SER_NUM TERMINATED BY ','
)
|
|
|
|
|