Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrush> На момент написания поста из 2,4млн записей akrush> за 18 минут обработано только 600тыс. Ну, 600тыс за 18 минут это, конечно, жутко медленно, но это значит, что твои 10 лямов зальются за 5 часов. Всяко быстрее, чем ты будешь что-то своё пытаться наварганить. Если цель "побыстрее", а не "научиться", конечно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 14:28 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
hvlad, Возможно, если сгенерить execute block с тысячей-другой инсертов внутри, было бы быстрее. Хотя не факт и надо пробовать, если хочется ускорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 14:34 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, цели 2: 1. ОСНОВНАЯ - побыстрее, т.к. у меня уже 20 баз на такую операцию и ждать даже 3 часа - долго 2. В чем-то научиться обрабатывать большие массивы данных, чтобы на будущее уже не играться "как лучше и быстрее", а делать быстро и качественно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 14:38 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
YuRockВозможно, если сгенерить execute block с тысячей-другой инсертов внутриОграничение на 255 контекстов на запрос никто не отменял. В любом случае, препарированный инсерт не может быть медленнее скрипта с инсертами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 15:48 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrush> 1. ОСНОВНАЯ - побыстрее, т.к. у меня уже 20 баз на такую операцию Тогда вариантов нет, только Query с параметрами, Prepare, в цикле заполнение параметров + Execute, и коммит через каждые условные "100 тыс." Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 16:03 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
hvladYuRockВозможно, если сгенерить execute block с тысячей-другой инсертов внутриОграничение на 255 контекстов на запрос никто не отменял. В любом случае, препарированный инсерт не может быть медленнее скрипта с инсертами. Да, но так сетевых запросов больше в N раз. На локальном соединении, бесспорно, препарированный инсерт должен быть быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 16:10 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
YuRock, это ты сейчас меня агитируешь за EXEC BLOCK с пачкой инсертов ? Давай вспомним - откуда он вообще взялся и что было одной из причин его появления :) PS А кто мешает EXEC BLOCK с параметрами делать ? PPS ТС-у это явно не по силам в данный момент, не стоит его путать ещё больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 16:15 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
hvlad, Да никого я не собирался агитировать, тем более тебя) EB нужен не для этого, понятно, а для "одноразового" psql без создания процедуры. ТСу в данной задаче он не нужен, конечно. Всё, лучше б я не начинал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 17:42 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, влад, если я правильно его понял, так и советовал. Закончу со скриптом и обязательно проверю с квериком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 18:44 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
о скорости вставки обязательно сообщу. Если работой отвлекать не будут - в понедельник уже скажу результат, а может и раньше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 18:47 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
YuRockEB нужен не для этого, понятно, а для "одноразового" psql без создания процедуры. ТСу в данной задаче он не нужен, конечно.Почему же - не для "этого" ? И для "этого" тоже ! Надеюсь, мы одно и то же "это" имеем в виду :) YuRockВсё, лучше б я не начинал)Всяко лучше Дилиных вывертов, как по мне ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 20:00 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
hvladВсяко лучше Дилиных вывертов, как по мне ;) Давно бы сваял онлайн транслятор с русского на SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 20:10 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Di_LInehvladВсяко лучше Дилиных вывертов, как по мне ;) Давно бы сваял онлайн транслятор с русского на SQL. Механизировать искусство ? Нет уж :-) PS Но меру знать всё равно надо. PPS Посему - завязываем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 21:39 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
YuRockДа, но так сетевых запросов больше в N раз. Влад сказал про контексты, а не про коннекты. А если отвлечься в сторону параллельной вставки в одну таблицу, то она всегда медленнее, чем вставка в одну таблицу одним коннектом. Разве что суперсервер в ФБ 3.0 показывает масштабирование, с некоторым просадом относительно "монопольной вставки". Не помню, публиковал я статью на эту тему или нет, на выходных найду, выложу сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 22:23 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Если кому-то все еще интересно. Результаты теста на скорость вставки. Имеем: Есть старые данные по отчетам (которые формировались ежемесячно) и новые данные по отчетам (были сформированы заново после исправления в программе ошибки). Ноутбук Lenovo G50-80, i7 2.4-3.0Gh, RAM 4Gb, SSD 512Gb, HDD 1Tb Windows 10 Pro, Firebird 3.0 (default config) База данных: размер страницы 16384 База данных находится на разделе HDD у которого размер блока тоже 16384 Среда разработки: Delphi XE2 + FIBPlus 7.4 Исходные файлы DBF находят на SSD: старая информация - объем файлов 1 244 796 733 байт, 927 файлов, Количество записей - 2 442 537 новая информация - 1 245 382 545 байт, 923 файла, Количество записей - 2 443 703 Так как обработку провожу программно принял решение не терять время на объединение всех DBF в один файл (как для Эксперта), а загрузка ведется сразу из каждого DBF. Загрузка идет в 2 таблицы в БД. Таблицы по структуре одинаковые, индекс не отключался. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Тест № 1. Использование FIBScripter. Формируется скрипт на вставку значений вида insert into RJ_NEW(fields...) values (значения); каждые 50тыс. в скрипт добавляется команда commit и скрипт запускается на выполнение. После выполнения очистка и так далее. Результат: -----===== Начинаем обработку (8:35:49) =====----- -----===== Закончили обработку (8:53:51) =====----- Итого: 00:18:02 Тест № 2. Использование FIBQuery. Внутри запрос с параметрами на вставку вида insert into RJ_NEW(fields...) values (параметры); После присвоения значений параметров выполнялся Prepare; каждые 50тыс. - CommitRetaining; -----===== Начинаем обработку (9:58:39) =====----- -----===== Закончили обработку (10:08:48) =====----- итого: 00:10:09 Тест № 3. Тоже самое что и "Тест № 2", но без Prepare после присвоения значений параметров. -----===== Начинаем обработку (10:09:41) =====----- -----===== Закончили обработку (10:19:55) =====----- 00:10:14 Единственная погрешность которая может быть: Тест 1 выполнялся при активном приложении, а тест 2 и 3 - выполнялись в фоне (я работал в других приложениях), но думаю погрешность будет не большая. Большое спасибо всем за подсказки. По сравнению с IBExpert в любом тесте прирост скорости очевиден. Думаю что можно попробовать еще чуть-чуть ускорить если отключить индекс. Отдельное спасибо Владу за подсказку про FIBQuery, забыл совсем про него. Результат очевиден: Если вставка делается более 2-3 раз, и есть возможность, лучше написать программку на вставку, если разово - однозначно IBExpert. Как говорится - "лучше день потерять, потом за пять минут долететь." (Союзмультфильм, Крылья, ноги и хвосты) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2017, 11:56 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Забыл написать - конект к БД локальный, только путь к файлу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2017, 12:02 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushПосле присвоения значений параметров выполнялся Prepare; То есть ты совершенно не понимаешь что именно делает Prepare и для чего он нужен. akrushкаждые 50тыс. - CommitRetaining; То есть ты совершенно не понимаешь что делает CommitRetaining и тупо делаешь как сказал кто-то на форуме. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2017, 13:26 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Подскажите, буду знать и учту на будущее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2017, 13:35 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
API Reference читай. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2017, 13:58 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrush> Тест № 2. > Использование FIBQuery. Внутри запрос с параметрами на вставку вида > После присвоения значений параметров выполнялся Prepare; > каждые 50тыс. - CommitRetaining; Ну то есть ты понял довольно мало, хотя тебе два человека пошагово рассказали. Мог бы хоть статьи или предыдущие обсуждения почитать. Ну и код свой привести, чтобы тебе его исправили. Код: pascal 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. C двумя таблицами аналогично - либо добавится второй Query рядом, либо делай процедуру, в которую будешь передавать всё одним запросом, а она будет рассовывать. Хотя, судя по цифрам, не думаю, что прирост скорости будет сколько-нибудь значительным. Ну и если заливка - процесс монопольный, в пустую таблицу и каждый раз по 10 лямов - да, можно все индексы отключать/включать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2017, 15:18 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, Свой код - как-то не подумал. Пока писал пост с результатами - начали отвлекать работой. Вот код процедуры на втягивание старой информации. Советы принимаются с ОГРОМНОЙ РАДОСТЬЮ Код: sql 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. Код уже не исправлял по замечаниям Dimitry Sibiryakov, но как я понял вместо fbQOld.Transaction.CommitRetaining; нужно begin fbQOld.Transaction.Commit; fbQOld.Transaction.StartTransaction; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2017, 15:33 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrush, Проверки полей sm1-sm8, summa выглядит смешно, но пришлось сделать так как народ, не понятно каким редактором, вносил изменения и теперь в этих полях может быть или пусто или пробел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2017, 15:35 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrush, 1. Убери скрипт) выполни delete тоже через ExecQuery. И коммит не через скрипт) 2. Убери ProcessMessages или хотябы перенеси его под if mod 50000 = 0. Станет быстрее. 3. Для полей sum* сделай фцию DBFStrToFloat, передавай в нее имя поля, а внутни нее уже этот страшный иф. Невозможно ж смотреть на это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2017, 21:48 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
YuRock, 1 и 2 сделаю спасибо. 3 - можно, конечно будет легче смотреть. Просто делал на скорую руку, и проверки писались по мере того как нарывался на "грабли". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2017, 00:18 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=39409874&tid=1561695]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 442ms |

| 0 / 0 |
