|
|
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Если база для тебя - нечто "промежуточное", можно отключить "forced writes". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 15:01 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Ну и используй параметры. Код: 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. 28. 29. 30. 31. PS: может и не заработать: с IBX я давно не работал.Но идея, надеюсь, понятна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 15:11 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Да, и вместо TIBQuery используй TIBSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 15:12 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
wadmanАндрей Игоревич1. Банальный вопрос: как очистить файл БД? Удаляй файл, пересоздавай базу. А если не пересоздавать базу, а очищать значения, база так и будет неконтролируемо расти или остановится на некотором объеме? чччДВынеси transaction.starttransaction и transaction.commit за пределы циклов. Помогло, время заполнения уменьшилось до 90 секунд. чччДЕсли база для тебя - нечто "промежуточное", можно отключить "forced writes". А что это поменяет? В плане что это параметр регулирует? чччДНу и используй параметры. Код: 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. 28. 29. 30. 31. Подправил на код Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. чччДДа, и вместо TIBQuery используй TIBSQL. А вот это особо не помогло, время почти не изменилось (с 31 до 30 сек, в порядке погрешности). В общем уже намного лучше в 20 раз, но всё равно многовато... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 16:29 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Используй под файл базы быстрый накопитель SSD. Можно вообще на виртуальном (который в оперативной памяти) диске базу разместить. Спросить совета у товарищей здесь: http://www.sql.ru/forum/interbase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 16:34 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Возможно, тебе просто типизированный файл подойдет. Непонятна твоя задача ибо. Когда абстрактно "нужно много и быстро" - так чаще всего не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 16:37 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич, от ахулиарда ParamByName тоже хорошо бы избавиться вынеся выдергивание параметров за цикл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 16:38 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
да и батчами по уму надо вставлять а не по одной записи, но это не каждый дак пожалуй сумеет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 16:40 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
vavanАндрей Игоревич, от ахулиарда ParamByName тоже хорошо бы избавиться вынеся выдергивание параметров за цикл +1 Создай объекты - параметры заранее: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. А потом перед каждым выполнением ExecSQL обращайся к ним: Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 16:46 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
vavanда и батчами по уму надо вставлять а не по одной записи, но это не каждый дак пожалуй сумеет IBX вряд ли такое может. :) FIB+ так делает, используя ExecuteBlock... ну, можно руками. ........ Тут непонятно, что в итоге ТС хочет получить. Залить данные он может и зальет, но вот обратно - как получать думает? Эмулятор многомерного массива? Будет ли структура пригодной для быстрого доступа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 16:49 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичА если не пересоздавать базу, а очищать значения, база так и будет неконтролируемо расти или остановится на некотором объеме? База расти не будет. Более того, ходят слухи, что повторная запись в уже созданный ранее (о "очищенный") файл будет быстрее, чем в новый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 16:55 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
06.02.2018 14:51, Андрей Игоревич пишет: > 1. Какие вообще БД можно использовать без поднятия сервера для указанных > выше задач (массивы с 10кккк значений)? Никакие. Любая серьёзная СУБД - это сервер. > одним фалом типа .ддл? Просто на основном рабочем компьютере абсолютный > минимум прав, а дергать админа ради установки сервера., ну такое. Ничего, пусть потрудится или даст тебе админские права. > 1. Банальный вопрос: как очистить файл БД? Это не "банальный вопрос", а до тошноты затрахавший баян. В общем случае - выгрузкой/загрузкой. Но этого делать не нужно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 17:04 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
чччДИспользуй под файл базы быстрый накопитель SSD. Можно вообще на виртуальном (который в оперативной памяти) диске базу разместить. Спросить совета у товарищей здесь: http://www.sql.ru/forum/interbase На данный момент и так на весьма быстром SSD (M2) всё крутится, варианты с оперативной памятью можно и без БД сделать :), для отдельных задач так и делаю. чччД Возможно, тебе просто типизированный файл подойдет. Непонятна твоя задача ибо. Когда абстрактно "нужно много и быстро" - так чаще всего не получится. Как раз типизированными файлами сейчас и реализовано. Но стандартные "File of record" больше двух гигов (NTFS, если что) тоже вылетают с ошибкой (вне зависимости от числа записей,надо разбираться, отложил на "после освоения варианта с БД"), либо делать кучу файлов. vavanАндрей Игоревич, от ахулиарда ParamByName тоже хорошо бы избавиться вынеся выдергивание параметров за цикл А как? Что-то не соображу. понял, спасибо. vavanда и батчами по уму надо вставлять а не по одной записи, но это не каждый дак пожалуй сумеет Я так понимаю, тут что-то на тему пакетной записи/транзакций? Где в одно действие добавляется много строк? чччДvavanАндрей Игоревич, от ахулиарда ParamByName тоже хорошо бы избавиться вынеся выдергивание параметров за цикл +1 Создай объекты - параметры заранее: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. А потом перед каждым выполнением ExecSQL обращайся к ним: Код: pascal 1. 2. 3. Ни на что не повлияло, время даже возросло, но незначительно, около 35 секунд. чччДТут непонятно, что в итоге ТС хочет получить. Залить данные он может и зальет, но вот обратно - как получать думает? Эмулятор многомерного массива? Будет ли структура пригодной для быстрого доступа? Проблемы надо решать по мере поступления :), для начала надо хоть БД заполнить :). А вообще, если запрос к одиночной строке будет достаточно быстрым (измерятся в миллисекундах, а не в секундах), то меня уже устроит, в программе заранее будет производится нужная математика, а с БД нудно будет выцеплять значения по индексам, при том не слишком много за раз, до 100к. Задачи сразу над всем массивом данных я сейчас реализую в процессе считывания (результаты проще сохранить, нежели исходные данные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 17:05 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Dim200006.02.2018 14:51, Андрей Игоревич пишет: > 1. Какие вообще БД можно использовать без поднятия сервера для указанных > выше задач (массивы с 10кккк значений)? Никакие. Любая серьёзная СУБД - это сервер. > одним фалом типа .ддл? Просто на основном рабочем компьютере абсолютный > минимум прав, а дергать админа ради установки сервера., ну такое. Ничего, пусть потрудится или даст тебе админские права. > 1. Банальный вопрос: как очистить файл БД? Это не "банальный вопрос", а до тошноты затрахавший баян. В общем случае - выгрузкой/загрузкой. Но этого делать не нужно. У меня сейчас на компе стоят конечноэлементные расчетные комплексы, которые работают даже с 100кккк значений, и как я понимаю там тоже реализовано по средством БД, хоть и собственной. Ну про удаление уже почитал в других темах, и "горение" некоторых по этому вопросу тоже уже увидел. :). Если не будет расти, пусть живет. Вариант с админом для моего компа не критичен, просто тогда на любом другом компе, где надо запустить программу нужно запускать сервер, либо организовывать связь с моим компом. Можно, конечно, но как-то слишком много действий ненужных для задачи. Проще уж типизированные файлы использовать в большом количестве, или вообще самому написать код для сохранения, поиска и извлечения данных из файла (начинаю подумывать о таком варианте, но пугают возможные трудности). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 17:13 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичЯ так понимаю, тут что-то на тему пакетной записи/транзакций? Где в одно действие добавляется много строк?все верно. это способно дико ускорить вставку Андрей ИгоревичНи на что не повлияло, время даже возрослоа как уж щаз код выглядит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 17:35 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
vavanАндрей ИгоревичЯ так понимаю, тут что-то на тему пакетной записи/транзакций? Где в одно действие добавляется много строк?все верно. это способно дико ускорить вставку Андрей ИгоревичНи на что не повлияло, время даже возрослоа как уж щаз код выглядит? Код: 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Правда сейчас я уже дома, тут firebirdа нету, да и ссылки на БД надо править, так что правки смогу сделать только завтра (лень дома всё настраивать, хотя...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 18:11 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичВариант с админом для моего компа не критичен, просто тогда на любом другом компе, где надо запустить программу нужно запускать сервер, либо организовывать связь с моим компом. Можно, конечно, но как-то слишком много действий ненужных для задачи. В этом месте вас ввели в заблуждение, - FB прекрасно работает в однопользовательском локальном встраиваемом режиме, правда для использования данной возможности необходима патченная IBX либо что-то из более современно-функциональных компонентов доступа. Тот же FireDAC, например, если выбирать из штатной поставки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 20:24 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
VDSoft777... необходима патченная IBX... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 20:28 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
чччД, Для того чтобы указать ей нужную VendorLibrary. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 20:32 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
VDSoft777Андрей ИгоревичВариант с админом для моего компа не критичен, просто тогда на любом другом компе, где надо запустить программу нужно запускать сервер, либо организовывать связь с моим компом. Можно, конечно, но как-то слишком много действий ненужных для задачи. В этом месте вас ввели в заблуждение, - FB прекрасно работает в однопользовательском локальном встраиваемом режиме, правда для использования данной возможности необходима патченная IBX либо что-то из более современно-функциональных компонентов доступа. Тот же FireDAC, например, если выбирать из штатной поставки. Не суть, важно то, что к каждому компу придется просить админку или просить админа ставить то, что мне нужно, а я работаю в очень бюрократизированной организации, как бы ещё служебки не заставили писать с разъяснением что я хочу установить, зачем, имею ли я на это лицензию, точно ли это опенсорс (а это точно он?). Нафиг весь это геморой, с учётом того, что данное решение уже выглядит как костыль. На данный момент я программирую всё на своем компе, чтоб избежать всего этого ада, а потом просто копирую экзешник (благо хоть на них права не порезали) на рабочий комп. П.С. Не стоит забывать, что лицензии на Делфи у меня тоже нет :). П.С. В теории можно даже Делфи запросить и купить и много чего можно, но никто в здравом уме никогда не тронет бюрократического монстра без веской причине, он просто "съест" такого инициативного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 20:34 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
VDSoftчччД, Для того чтобы указать ей нужную VendorLibrary. Что есть "VendorLibrary" и для чего нужно патчить IBX при работе FB в однопользовательском локальном встраиваемом режиме,и отчего это "встраиваемый режим" должен быть "однопользовательским"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 20:37 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич, Я же об этом вам и толкую. Копируете экзешник, а с ним ещё вложенный каталог со "встраиваемым" FB. И все, если вас устраивает изолированный локальный режим типа чисто для расчетов. По крайней мере запомните, что есть такая удобная штатная возможность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 20:41 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
чччД, Патамучта в состоянии искаропки эта окаменелость с FB в режиме Embedded Server работать почему-то не желает. Вы погодите забрасывать новыми вопросами, поищите.по форуму, - буквально в прошлом году этот вопрос снова всплывал и один из участников приводил свой вариант возможного патча. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 20:48 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
а че, ParamByIndex в IBX нема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2018, 20:53 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39597586&tid=2041256]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 522ms |

| 0 / 0 |
