|
|
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
Начальник написал парсер на Vb смысол разобрать текстовик и закинуть в БД Оракла по разным табличкам SSQL = "INSERT " + SSS(SERVER) + T_N + " " + POL + " VALUES(" + INS Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.LockType = adLockOptimistic rs.ActiveConnection = cn rs.Source = SSQL rs.Open работает в цикле минут 20... при этом производительность БД резко падает, ростет время синхронизации логов, получается, что серверу посылается десятки тысяч insert ...; commit; от этого ему становится реально плохо... Если кто писал такого рода программы для оракла подскажите как грамотно реализовать внесение данных с использованием ВБ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 05:29 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
Вообще если цель просто загрузить текстовый файлик, то лучше смотреть в сторону sqlloader`a – утилита от Oracle для загрузки данных. Там всё будет быстро и Ораклу будет хорошо. Реально быстрее, чем на VB + никаких лишних коммитов. Как работает можно посмотреть в документации или поиском по сайту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 09:29 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
Wasup!Вообще если цель просто загрузить текстовый файлик, то лучше смотреть в сторону sqlloader`a – утилита от Oracle для загрузки данных. Там всё будет быстро и Ораклу будет хорошо. Реально быстрее, чем на VB + никаких лишних коммитов. Как работает можно посмотреть в документации или поиском по сайту. Начальство не хочет переходить на лоадер, хотя я его уже раскурил и попробывал.... очень полезная утилита... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 09:32 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
У начальника получается, что каждый инсерт это отдельная транзакция. Причем каждый отдельный инсерт оракл считает полностью уникальным и каждый раз заново парстит, строит план и т.д. Чтобы было быстрее надо сделать все инсерты в единой транзакции и использовать связываемые переменные. Про это очень рекомендую прочитать у Т.Кайта в книжке Oracle для профессионалов. В общем вот так: Код: plaintext 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. Миллион вставок за 5 мин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 10:19 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
Egor Kovalenko Wasup!Вообще если цель просто загрузить текстовый файлик, то лучше смотреть в сторону sqlloader`a – утилита от Oracle для загрузки данных. Там всё будет быстро и Ораклу будет хорошо. Реально быстрее, чем на VB + никаких лишних коммитов. Как работает можно посмотреть в документации или поиском по сайту. Начальство не хочет переходить на лоадер, хотя я его уже раскурил и попробывал.... очень полезная утилита... Если текстовый файл имеет четкую структуру, по которой можно загрузить в Oracle, то советую пользоваться loader-ом. Вот вчера грузил им (и не только вчера), вот запись из log файла log файлВсего пропущено логических записей: 0 Всего прочитано логических записей: 9264 Всего забраковано логических записей: 0 Всего удалено логических записей: 0 Прогон начался в зђт Эюџ 29 14:23:23 2007 Прогон кончился в зђт Эюџ 29 14:23:24 2007 Общее время: 00:00:00.67 Процессорное время: 00:00:00.05 Это один из самых маленьких файлов, а так бывает по 118124656 (сделал select из одной такой таблицы) и это занимает вроде около часа. Так что смотри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 10:30 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
Wasup!Миллион вставок за 5 мин. spfile с настройками для базы данных можно посмотреть ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 10:37 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
Обычная база на локальном компе, для тестовых целей, никаких специфических настроек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 10:52 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
Egor Kovalenko Wasup!Миллион вставок за 5 мин. spfile с настройками для базы данных можно посмотреть ??? Егор, настраивать Оракл бессмысленно, если приложение написано под него неправильно. Это постулат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 11:06 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
Посмотрите в сторону Bulk update ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2007, 11:07 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
Спасибо за поддержку и за примеры, оптимизировали код, производительность увеличилась в 3 раза... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 07:45 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
Wasup!У начальника получается, что каждый инсерт это отдельная транзакция. Причем каждый отдельный инсерт оракл считает полностью уникальным и каждый раз заново парстит, строит план и т.д. Чтобы было быстрее надо сделать все инсерты в единой транзакции и использовать связываемые переменные. Про это очень рекомендую прочитать у Т.Кайта в книжке Oracle для профессионалов. В общем вот так: Код: plaintext 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. Миллион вставок за 5 мин. Подскажите еще как можно данный пример перевести на такого рода INSERT: (никогда в VB не работал с параметрами) INSERT into S3_0 (DDATE,CELL_ID,BSC_ID,LAID,BTS_ID,ADJC_ID,DIRECTION_ID,ADJC_CELL_ID,UPLINK_QUALITY,DOWNLINK_QUALITY,UPLINK_STRENGTH,DOWNLINK_STRENGTH,DISTANCE_COMPL,BETTER_CELL,DIRECTED_RETRY,FORCED_HO_DUE_TO_OM,TRAFFIC,FAST_UPLINK,FORCED_HO_DUE_TO_PREEMPTION) VALUES(to_date(:"SYS_B_00",:"SYS_B_01"),:"SYS_B_02",:"SYS_B_03",:"SYS_B_04",:"SYS_B_05",:"SYS_B_06",:"SYS_B_07",-:"SYS_B_08", :"SYS_B_09",:"SYS_B_10",:"SYS_B_11",:"SYS_B_12",:"SYS_B_13",:"SYS_B_14",:"SYS_B_15",:"SYS_B_16",:"SYS_B_17",:"SYS_B_18",:"SYS_B_19") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 07:58 |
|
||
|
Парсер на VB под Оракл
|
|||
|---|---|---|---|
|
#18+
:"SYS_B_06" каждый такой параметр надо заменить на ? в запросе, и для каждого вопроса создать объект параметр: Код: plaintext 1. Дальше перед выполнением просто присваивать значение, по номеру параметра. cmd.Parameters(номер параметра по порядку) = значение Лучше потренироваться на тестовой табличке, с каждым непонятным параметром, а потом составить общий запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2007, 22:43 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34977145&tid=2162997]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 393ms |

| 0 / 0 |
