Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Подскажите. Нужно в базу вставить около 10млн. строк из нескольких ДБФ. (58 столбцов с типами numeric, integer, varchar (максимум 30)) Что быстрее отработает: 1. Написать маленькую программу с Фибами на вставку, с комитом каждые 5-10 тыс. 2. Воспользоваться IBExpert. -------------------------- Firebird 3.0.1.32609; IBExpert 2017.2.7.1; Windows 10 32-bit; 4Gb RAM; SSD 512Mb + HDD 1 Tb; Настройки по умолчанию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 12:06 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
пользуйся экспертом. не занимайся программизмом. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 12:08 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий> пользуйся экспертом. > не занимайся программизмом. +1 При чём не сразу миллион, а "отладь" все настройки для 100 строк, а потом уже запускай молотить и пей чай. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 13:16 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Где-то читал, что самый быстрый способ перелить данные из дбф в фб - откусить заголовок от дбф и подключить его как внешнюю таблицу. Тут нужно знать точную структуру дбф и создать соответствующую внешнюю таблицу в базе. Затем подсунуть в нужное место дбф без заголовка. И дальше можно переливать данные читая из одной таблицы и инсертя в другую. Сразу говорю - сам так не пробовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 13:22 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Hello, Stelvic! You wrote on 21 февраля 2017 г. 13:28:13: Stelvic> откусить заголовок от дбф и подключить его как внешнюю таблицу. > Тут нужно знать точную структуру...тут нужно знать ТС! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 13:28 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
stelvic, Это когда больше одного раза требуется. Временные затраты на подготовку такой заливки (без опыта такой заливки и заготовок) требуются значительно большие, чем разобраться в IBExpert + собственно залить эти десяток миллионов записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 13:57 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
WildSery, Согласен. Имело смысл уточнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 14:17 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Как сказать разово-неразово. Вроде как разово, но сижу занимаюсь этим уже 2 недели. Каждый день по несколько файлов вливаю. 10млн. это самые большие, есть и по 100тыс. Ладно, я понял. Всем спасибо что откликнулись. Подскажите еще, на последок: Есть SQL скрипт с execute ibeblock на импорт. Можно ли в скрипте задать названия таблиц, файлов, и некоторых текстовых данных как переменные, чтобы потом использовать в блоке импорта и подставлять как значение-константа в селекте. Если да - то как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 17:23 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushскрипт с execute ibeblock на импорт. ibeblock это ibescript, в его доке и смотри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2017, 17:44 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Если кому-то интересно сегодня обрезал импорт ДБФ до минимума, 16 полей (исходный дбф так и остался с 58 полями). На делфи хе2 + фибы написал програмку которая создает скрипт и каждые 50тыс. строк записывает в базу. 4 888 089 строк импортировались за 18мин.42сек. причем это импорт из белее 1800файлов. Завтра объеденю их в один дбф и попробую тоже самое экспертом. результат напишу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2017, 23:45 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Попробовал урезанный импорт средствами Эксперта. На момент написания поста из 2,4млн записей за 18 минут обработано только 600тыс. Так что прирост очевиден. Небольшое пояснение в предыдущему посту про формирование скрипта: Формировался скрипт на вставку записей insert into ...() values () и каждые 50тыс. выполнялся скрипт, комитился, очищался и по новой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 09:46 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrush, все понимаю кроме одного зачем скрипт формировать тогда уж сразу в базу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 09:48 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
m7m, Пробовал. Дольше раза в 3. Как в эксперте. А через скрипт в разы быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 11:33 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushПробовал. Дольше раза в 3Что ты пробовал ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 11:37 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
hvlad, Пробовал через Dataset сразу писать в таблицу. Автокомит отключен. Получается дольше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 11:39 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushm7m, Пробовал. Дольше раза в 3. Как в эксперте. А через скрипт в разы быстрее Так не бывает Вернее бывает, но тогда что-то не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 11:40 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
m7m, Согласен. Когда закончу, просто уже на голове сидят, перепроверю заново. О результатах отпишусь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 11:42 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushhvlad, Пробовал через Dataset сразу писать в таблицу. Автокомит отключен. Получается дольше. Попробуй без Dataset'а ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 11:43 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrush, http://www.ibase.ru/impexp/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 11:44 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushПробовал через Dataset сразу писать в таблицу.Учи SQL, не датасеты. // Их тоже учи, но потом. Сначала - SQL. Потом найди компонент, который его выполняет (не датасет). Найди в нём параметры и метод prepare. Используй их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 11:57 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
hvlad, Фибы так и делают. на вставку используют insert into ...() values () с параметрами. Но даже передача параметром идет дольше чем сформировать скрипт с инсертами и его выполнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 12:00 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrush, сказки не нужно рассказывать. PS Могу предположить, что датасет перечитывает данные после вставок. Или что там отдельная тр-ция для вставок с автокоммитом. Или ещё какая-нибудь причина по которой не "фибы так и делают" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 12:19 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
hvlad, Влад, извините сразу недошло Попробую без датасета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 13:06 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushВлад, извините сразу недошло Попробую без датасетаТут не за что извиняться :) Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2017, 13:21 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrush будет легче смотреть. Просто делал на скорую руку, и проверки писались по мере того как нарывался на "грабли".Не только смотреть. Копипаст - это еще одни грабли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2017, 01:01 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Это Код: pascal 1. 2. 3. 4. 5. можно поменять на Код: pascal 1. Еще полям и параметрам можно обращаться не по имени, а по индексу. Будет немного быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2017, 08:50 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Exteris, если знаешь тип параметра, никогда не пиши .Value:=... если непонятно, почему этого не надо делать - почитай source\rtl\variants.pas и varutils.pas. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2017, 22:42 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
kdvесли знаешь тип параметра, никогда не пиши .Value:=... если непонятно, почему этого не надо делать - почитай source\rtl\variants.pas и varutils.pas. Не актуально это уже давно :) Сколь-нибудь существенную разницу можно увидеть только в очень примитивных синтетических тестах типа "присваиваем варианту значение переменной типа integer 100.000.000 раз". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 12:09 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, кто откликнулся. Сделал как советовали: избавился от скриптов полностью. Вместо них использую Query. Так как обработку веду сам, можно сказать монопольно, и по совету kdv, удаляю индекс, чищу таблицу, вставляю записи, создаю индекс. Удалось достичь скорости 7мин.34сек. Можно еще на несколько секунд ускориться если в промежуточных таблицах тоже играться с индексами, но думаю прирост будет не существенный. Там записей 70 000 максимум. Еще раз всем спасибо. Кое-что почерпнул для себя на будущее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 12:18 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushпо совету kdv, удаляю индекс я про индексы ничего не говорил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 13:34 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
kdvakrushпо совету kdv, удаляю индекс я про индексы ничего не говорил. говорил-говорил. http://www.ibase.ru/idxmgm/ написано: Примечание КД. Увы, это не так – alter index inactive существенно медленнее, чем drop index. В этом можно убедиться, прочитав статью по проблемам удаления большого количества записей). если КД - это не Кузьменко Дмитрий, тогда не говорил. Правда статью не читал, оставил в закладках для прочтания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 16:30 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushПравда статью не читал, оставил в закладках для прочтания. Статью надо читать и вникать, и не только эту. А закладки делать на мозге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 16:34 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Di_LIneakrushПравда статью не читал, оставил в закладках для прочтания. Статью надо читать и вникать, и не только эту. А закладки делать на мозге. я имел ввиду статью про удаление ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 17:07 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushя имел ввиду статью про удаление А я про то, что с начала надо учить теорию и матчасть. То есть весь IBASE от корки до корки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 17:27 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
> Примечание КД. Увы, это не так – alter index inactive существенно > медленнее, чем drop index. В этом можно убедиться Интересно, это ещё актуально? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 22:55 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам> Примечание КД. Увы, это не так – alter index inactive существенно > медленнее, чем drop index. В этом можно убедиться Интересно, это ещё актуально?Я вообще не понимаю, о чём речь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 00:03 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
akrushПримечание КД. Увы, это не так – alter index inactive существенно медленнее, чем drop index. В этом можно убедиться, прочитав статью по проблемам удаления большого количества записей). я х.з. откуда взялось это примечание. технически alter index inactive и drop index в отношении содержимого индекса ничем не отличается - содержимое тупо удаляется. Сколько там ключей было в индексе - должно быть абсолютно по барабану. У парня когда-то на InterBase 5.6 alter index inactive шло 6 минут, на базе в 1.5 гиг. Прямо сейчас я сделал alter index inactive на базе в 30 гиг, на таблице с 3 млн записей (600 мб данных), и индекс размером 14мб деактивировался за 0.5 секунды на ФБ 3.0. Активировался обратно этот индекс за 7 секунд. Так что коммент тот я из статьи удалил нахрен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 00:27 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
hvlad> Я вообще не понимаю, о чём речь. Ну что "alter index inactive существенно медленнее, чем drop index" или что inactive + active существенно медленнее, чем drop + create. Как-то не верится... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 02:25 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
Можно еще попробовать ускориться отказавшись от .FieldByName и .ParamByName заменив их на соответственно .Fields[i] и .Params[i]. На миллионах записей это может дать ощутимый эффект. Сейчас может что изменилось, но когда-то давно *ByName искало тупо перебором. Даже если оно ищет по индексу то все равно прямое указание номера поля будет быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 04:46 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
fraks, В fib+ хоть раз использованные имена кэшируются в отсортированных TStringList, соответственно, при повторном обращении ищутся шустро. Но и при последовательном переборе (в ibx, например) даже для миллионов записей сколько-нибудь заметный выигрыш получишь лишь при определенных условиях. В данном случае (при последовательной записи данных) - не получишь, совсем. Тем более, учитывая озвученные ТС условия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 06:19 |
|
||
|
Что быстрее?
|
|||
|---|---|---|---|
|
#18+
fraksНа миллионах записей это может дать ощутимый эффект. Он многократно перекроется тормозами от ProcessMessages, вызов которого, как утверждает мой ХШ, аффтар так и не выкинул. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 12:44 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1561695]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 276ms |
| total: | 477ms |

| 0 / 0 |
