|
|
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
чччД, 1) в уровне подготовки, вплоть до того, что ТС настоячиво спрашивает азы по FB в форуме по Delphi 2) в требованиях к надежности и скорости управления ядерными реакторами ( привет внезапной сборке мусора в FB например) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 14:54 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
AriochчччД, 1) в уровне подготовки, вплоть до того, что ТС настоячиво спрашивает азы по FB в форуме по Delphi 2) в требованиях к надежности и скорости управления ядерными реакторами ( привет внезапной сборке мусора в FB например) Помимо управления ректором, есть ещё просто колоссальное количество этапов разработки и конструирования. Значительная часть которых связана с расчетами. Даже так - разработка тех проекта куда более сложный и долгий процесс (про цену точно не скажу, но, сопоставимо), чем само строительство реактора. И управление реактором разрабатывают уже профессиональные программисты (коим я ни разу не являюсь) и совсем иначе, по другим принципам. В общем это совершенно разные люди с разным образованием (хотя возможны пересечения). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 15:06 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
1. При необходимости хранить и обрабатывать гигабайты данных таки желателен программист Хотя бы потому что незамеченное случайнео искажение данных может привести к некорректному результату, о чем никто не узнает, пока новый продвинутый план кампании на практике не окажется хуже старых дубовых, например. 2. Я сильно сомневаюсь, что для хранение гигабайтов однородных данных, без необходимости автоматически отслеживать сложную "ссылочную целостность / referential integrity", SQL вообще правильный инструмент. 2а. Часто SQL используют для удобства, не глядя на ухудшение скорости. Например хранение настроек программы в SQLite и аналогично. Это удобно. А потери в скорости и дисковом пространстве незаметны и их справедливо игнорируют. 2б. Хранение однородных данных в SQL с "обвязкой" в виде дополнительной информацией вполне вероятно увеличит общий размер файлов. 2в. Может казаться соблазнительным использовать SQL дял расчетных задач. Вместо ручного написания циклов, бегающих по миллионам записей - пишем один UPDATE и он все "делает сам". Я так экспериментировал с Firebird, и решил такого не повторять. Как тоьлко начинаются какие-то ошибки, типа слишком малое значение округляется в ноль, лезут ошибки вычисления и понять где именно на каких конкретно данных я чего=-то не учёл и словил "деление на ноль" становится очень сложно. Удобство "одного UPDATE'а" мгновенно компенсируется ужасом поиска и исправления ошибок, если что-то идёт не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 15:39 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Arioch1. При необходимости хранить и обрабатывать гигабайты данных таки желателен программист Хотя бы потому что незамеченное случайнео искажение данных может привести к некорректному результату, о чем никто не узнает, пока новый продвинутый план кампании на практике не окажется хуже старых дубовых, например. 2. Я сильно сомневаюсь, что для хранение гигабайтов однородных данных, без необходимости автоматически отслеживать сложную "ссылочную целостность / referential integrity", SQL вообще правильный инструмент. 2а. Часто SQL используют для удобства, не глядя на ухудшение скорости. Например хранение настроек программы в SQLite и аналогично. Это удобно. А потери в скорости и дисковом пространстве незаметны и их справедливо игнорируют. 2б. Хранение однородных данных в SQL с "обвязкой" в виде дополнительной информацией вполне вероятно увеличит общий размер файлов. 2в. Может казаться соблазнительным использовать SQL дял расчетных задач. Вместо ручного написания циклов, бегающих по миллионам записей - пишем один UPDATE и он все "делает сам". Я так экспериментировал с Firebird, и решил такого не повторять. Как тоьлко начинаются какие-то ошибки, типа слишком малое значение округляется в ноль, лезут ошибки вычисления и понять где именно на каких конкретно данных я чего=-то не учёл и словил "деление на ноль" становится очень сложно. Удобство "одного UPDATE'а" мгновенно компенсируется ужасом поиска и исправления ошибок, если что-то идёт не так. Желателен, знаешь сколько будет стоить профессиональный программист с фундаментальными знаниями в прочности, нейтронной физике, конструкции РУ? Да и ещё и только на время решения конкретной задачи. SQL мне тут насоветовали в огромных количествах, на данный момент я уже и сам разочаровался в этом методе, просто пытаюсь уж до конца реализовать, что был как вариант. Данные(значение полей) я планировал в БД хранить как строку типа "2.08406E+13", а в дальнейшем работать просто с данными через запросы по индексам, не думаю, что это может привести к каким-то ошибкам. Как тут уже писалось, БД начал использовать из-за очень большого объема значений (до 10кккк), для которого не хватало оперативной памяти и возникли проблемы при прокручивании такого объема массивов (при том мне для большей части задач весь массив нужен не был). Были варианты через типизированные файлы, на данный момент через них и сделал. Но не всё меня устраивало, решил попробовать БД. Сейчас добью и опять вернусь к типизированным файлам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 15:52 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
чччДТы в IBEpert сей EB испытывал? Начни с него, с одного insert, потом добавляй. Может, в ibx глюк. А может, в FB. А может, в твоём коде. Искать надо. В общем в IB работает, почему не работает через Делфи - разбираться что-то не хочется. Фиг с ним,с этим способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 16:08 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
AriochКак тоьлко начинаются какие-то ошибки, типа слишком малое значение округляется в ноль, лезут ошибки вычисления и понять где именно на каких конкретно данных я чего=-то не учёл и словил "деление на ноль" становится очень сложно. Удобство "одного UPDATE'а" мгновенно компенсируется ужасом поиска и исправления ошибок, если что-то идёт не так Объясни, чем дельфёвое "division by zero" удобнее, чем ошибка с кодом на тему "division by zero" от SQL-сервера (касательно FB - это isc_exception_float_divide_by_zero)? Как раз наоборот - чтобы найти проблемную запись, достаточно сделать простейший запрос с фильтром по полю, на которое происходит деление. А чтобы обеспечить себе отсутствие такой проблемы - достаточно добавить в исходный UPDATE элементарное дополнительное условие в WHERE или, что обычно лучше, значение для обновляемого поля при нулевом делителе через CASE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 16:11 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич... В общем в IB работает, почему не работает через Делфи - разбираться что-то не хочется. Фиг с ним,с этим способом. Возможно, дело в старых IBX. Ну, как хочешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 16:11 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
YuRockпри нулевом делителе через CASE или при "близком к нулю", как ты написал в примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 16:14 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
чччД, Иии при достижении размера базы в 2.133.901.312 байт начались проблемы (примерно на таком же размере, кстати, начинались проблемы с типизированными файлами). Добавляет некоторое количество данных и выпадает с ошибкой добавления нового значения (база перед добавлением значений была очищена), создал рядом новую базу и тем же кодом спокойно ей заполнил. Может это виндовские заморочки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 16:57 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
YuRockОбъясни, чем дельфёвое "division by zero" удобнее, чем ошибка с кодом на тему "division by zero" от SQL-сервера Когда на сотне тысяч строк с разными столбцами такое встречается в Delphi - я попадаю внутрь среды в середину цикла, где вижу все промежуточные посчитанные значения. Как минимум вижу значение счётчика цикла. Даже если такое происходит у клиента и удалённая отладка не возможна - я могу туда вставить логирование. В случае Firebird я получаю rollback с потерей ВСЕХ промежуточных вычислений. Остаются только исходные данные. На которых ГДЕ-ТО одна из вычислительных формул выдает ошибку. Можно, конечно, написать EXECUTE BLOCK с циклом по всем строкам и UPDATE ... WHERE CURRENT OF и перехватом ошибок.... В общем, проимитировать цикл Delphi средствами PSQL И все равно остаться без отладочной среды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 17:04 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич, файловая система какая на диске, где лежат файлы с данными ? не FAT32 случайно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 17:04 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
AriochАндрей Игоревич, файловая система какая на диске, где лежат файлы с данными ? не FAT32 случайно ? Нет - NTFS. В общем завтра поковыряюсь, сегодня рабочий день катится к концу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 17:11 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичДанные(значение полей) я планировал в БД хранить как строку типа "2.08406E+13" зачем, если в SQL есть "родной" тип DOUBLE PRECISION ? конечно, если точности стандартных типов не хватает и нужны гораздо более длинные числа с плавающей запятой, чем поддерживает стандартный процессор (и стандартная Delphi), тогда только текстом и имитировать "вычисления в столбик" (библиотеки типа big number). но если вычислительная часть у вас сделана на стандартном типе double, то это лишнее ------------- Андрей Игоревичпрофессиональный программист с фундаментальными знаниями в прочности, нейтронной физике, конструкции РУ А что, работа командой уже не в моде, всё должен один единственный Левша-многостаночник сделать? В принципе, конечно, компьютеры не обязательны, при расчете РБМК от численного моделирования отказались принципиально, но и результат не самый лучший. Андрей ИгоревичБыли варианты через типизированные файлы, на данный момент через них и сделал. 1) Тут могут быть проблемы в скорости, поскольку писались эти типизированные файлы оооочень давно, когда памяти в компьютерах было мало. Буферизация там крохотная. Лучше бы найти что-нибуд ьс буферизующим чтением-записью. Например тут один товарищ выложил свою библиотеку CachedBuffers, но насколько она надежна и крута не знаю, не пользовался. 2) В любом случае на таких объёмах возможны случайные повреждения данных. Пролетела частица, переключила пару бит, число поменялось, никто не заметил. В типизированых файлах желательно кроме самих данных добавлять информацию для детектирования и, по возможности, исправления повреждённых данных. Можете, конечно, сказать что у вас настолько много сырых данных, что случайные изменения в паре десятков чисел ни на что не повлияют, может быть так и есть. 3) для потоковой обработки больших объямов данных возможно стоит купить два отдельных жёстких диска. С первого файлы читаем, выполняем вычисления, на второй диск пишем. Если вычисления идут в несколько этапов, и каждый этап кладется в файл, то делаем по очереди ,с 1-го диска на 2-1, потом со 2-го на первый и так далее. Цель - перевести аппаратуру дисков из режима случайного доступа в режим потоковой работы, который быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 17:17 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
TFileStream в современных Delphi работаетс 64-битными размерами файлов. А вот старые паскалевского типа типизированные файлы скорее всего никто не обновлял, и там действительно реализация сделана через 32-битные числа, с учётом знакопеременности - надежная работа только до 2^31 - примерно на 2 миллиарда байтов и выходите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 17:23 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
AriochАндрей ИгоревичДанные(значение полей) я планировал в БД хранить как строку типа "2.08406E+13" зачем, если в SQL есть "родной" тип DOUBLE PRECISION ? конечно, если точности стандартных типов не хватает и нужны гораздо более длинные числа с плавающей запятой, чем поддерживает стандартный процессор (и стандартная Delphi), тогда только текстом и имитировать "вычисления в столбик" (библиотеки типа big number). но если вычислительная часть у вас сделана на стандартном типе double, то это лишнее ------------- Андрей Игоревичпрофессиональный программист с фундаментальными знаниями в прочности, нейтронной физике, конструкции РУ А что, работа командой уже не в моде, всё должен один единственный Левша-многостаночник сделать? В принципе, конечно, компьютеры не обязательны, при расчете РБМК от численного моделирования отказались принципиально, но и результат не самый лучший. Андрей ИгоревичБыли варианты через типизированные файлы, на данный момент через них и сделал. 1) Тут могут быть проблемы в скорости, поскольку писались эти типизированные файлы оооочень давно, когда памяти в компьютерах было мало. Буферизация там крохотная. Лучше бы найти что-нибуд ьс буферизующим чтением-записью. Например тут один товарищ выложил свою библиотеку CachedBuffers, но насколько она надежна и крута не знаю, не пользовался. 2) В любом случае на таких объёмах возможны случайные повреждения данных. Пролетела частица, переключила пару бит, число поменялось, никто не заметил. В типизированых файлах желательно кроме самих данных добавлять информацию для детектирования и, по возможности, исправления повреждённых данных. Можете, конечно, сказать что у вас настолько много сырых данных, что случайные изменения в паре десятков чисел ни на что не повлияют, может быть так и есть. 3) для потоковой обработки больших объямов данных возможно стоит купить два отдельных жёстких диска. С первого файлы читаем, выполняем вычисления, на второй диск пишем. Если вычисления идут в несколько этапов, и каждый этап кладется в файл, то делаем по очереди ,с 1-го диска на 2-1, потом со 2-го на первый и так далее. Цель - перевести аппаратуру дисков из режима случайного доступа в режим потоковой работы, который быстрее. Можно и в Double, сейчас глянув как распухает файл БД, может лучше и Double, всё таки строка в 11 символов - 22 байта, против 8. Работа в команде это хорошо, но по факту вместо одного человека нужно уже два. Скажем так, пока я делаю программы "для себя", для визуализации и обработки исходных данных и результатов расчетов аттестованных программ (которые, данным"бонусами" в большинстве своем не обладают). Но это пока, а там посмотрим. 1. Найти - это хорошо, но сложно :). 2. По поводу повреждения данных, я в условиях нейтронного облучения не работаю :), повреждение данных в обычных условиях кажется мне маловероятным, да и современные носители информации, думаю, имеют всякие там суммы и прочие данные для восстановления битых секторов. 3. В таком случае проще купить больше оперативной памяти и гонять вообще всё в ней, но это "фантастика" для бюрократизированной организации. Есть ВоркСтешен - на ней и работайте. Даже суперкомпьютер есть, просто мороки для его использования слишком много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 17:35 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
AriochВ случае Firebird я получаю rollback с потерей ВСЕХ промежуточных вычислений. Остаются только исходные данные. А когда в цикле на клиенте - что, кусочки какие-то коммитятся, что ли? И это ты считаешь правильным? И, кстати, отменятся только изменения, которые внесены текущим UPDATE-ом, который упал. Принимать решение commit или rollback предыдущих успешных изменений, сделанных в этой транзакции, всё равно придется клиенту. AriochНа которых ГДЕ-ТО одна из вычислительных формул выдает ошибку. не ГДЕ-ТО, а YuRockчтобы найти проблемную запись, достаточно сделать простейший запрос с фильтром по полю, на которое происходит деление ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 17:44 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей Игоревич1. Найти - это хорошо, но сложно :). Это легко. http://www.sql.ru/forum/afsearch.aspx?s=cachedbuffers&submit=?????&bid=20 Сложно - оценить надежность и выигрыш в скорости в вашем случае. Стоит ли овчинка выделки и не будет ли с ней хуже ,чем без нее. Андрей Игоревичповреждение данных в обычных условиях кажется мне маловероятным Да, каждой конкретное повреждение маловероятно. Но у вас 2 миллиарда байтов только в одоном файле. Закон больших чисел может вас догнать. Впрочем, если вы не занимаетесь расчётными функциями, а просто визуализируете посчитанное и данное вам другими - то "случайные изменения в паре десятков чисел ни на что не повлияют" Однако вот отслеживать повреждления данных в процессе передачи оттуда, где их считали, к вам - весьма рекомендую. Повреждения файлов при перекачке в сети у меня встречались. Андрей Игоревичсовременные носители информации, думаю, имеют всякие там суммы и прочие данные .....крайне дешевы, на грани самоокупаемости. Со всеми вытекающими для запасов прочности - их мало. а кроме самих дисков - есть ещё межкомпьютерная сеть, есть оперативная память в компьютерах (и у бытовых комьпютеров там никаких ECC близко нет). Хотя если Workstation, то может и быть в принципе. Андрей ИгоревичВ таком случае проще купить больше оперативной памяти и гонять вообще всё в ней Нет. Скорость винчестеров - чистых, не фрагментированных, подготовленных для потоковой работы - порядка 100 МБ/с Пусть у вас очень быстрый и очень новый винчестер и там 150 МБ/с Если же потоковой работы добиться не удастся, то скорость может упасть на порядок. Скорость оперативной памяти - на 2-3 порядка больше. Лень исктаь цифры, кроме того не знаю какая память в вашей рабочей станции. Есть крайне сложные вычислительные задачи, где процессор просто не успевает обработать все данные, которые ему даёт винчестер. Типа сжатия видео в высоком качестве. Но это редко. Обычно всё упрется либо в неумение программы использовать оперативную память для ускорения (привет старым паскалевским типизированным файлам), либо в скорость диска. Если винчестер может передать в секунду в оперативную память например 110 МБ, то больше там "не вырастет", даже есливы купите самую большую и самую быструю память - она просто простаивать будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 17:49 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
YuRockА когда в цикле на клиенте - что, кусочки какие-то коммитятся, что ли? а если иногда читать ? AriochКогда на сотне тысяч строк с разными столбцами такое встречается в Delphi - я попадаю внутрь среды в середину цикла, где вижу все промежуточные посчитанные значения. Как минимум вижу значение счётчика цикла. Даже если такое происходит у клиента и удалённая отладка не возможна - я могу туда вставить логирование. Расскажи мне, как в случае ошибки в середине многострочного UPDATE я могу в Firebird'e посмотреть какую конкретную строку он сейчас читает и какие конкретные значения у всех выражений в этом UPDATE. Как мне попасть внутрь частично выполненного UPDATE? YuRockдостаточно сделать простейший запрос с фильтром по полю, на которое происходит деление 1) такого поля нет, есть тригонометрические расчёты по данных из нескольких полей. Делится одна тригонометрическая формула на другую. 2) значения ровно ноль нет нигде, вообще нет. А деление на ноль есть. Ввиду конечности разрядности чисел с плавающей точкой. Underflow происходит и число ненудевое превращается в ноль. 3) всего этого, что я тебя растолковываю, ты не знаешь. Ты только видишь, что где-то при UPDATE множества строк и множества столбцов выпало деление на ноль. При том, что нолей в таблице нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 17:56 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревичВ таком случае проще купить больше оперативной памяти и гонять вообще всё в ней Кстати, если у вас отдельная (не интегрированная) видеокарта, то промежуточные данные можно хранить в ней, хотя и не очень удобно. Правда у вас объёмы большие, типовая видеокарта-затычка это один, иногда два гигабайта памяти, из которых к тому же пару сотен МБ заберет себе операционка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 18:00 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
AriochРасскажи мне, как в случае ошибки в середине многострочного UPDATE я могу в Firebird'e посмотреть какую конкретную строку он сейчас читает и какие конкретные значения у всех выражений в этом UPDATE. Как мне попасть внутрь частично выполненного UPDATE? Никак. В дебаггере логику править смешно, потому нужны логи. К тому же, на компьютерах клиентов и не бывает отладки. Только логи. В логи можно записать параметры запроса, а затем Ariochзначения ровно ноль нет нигде, вообще нет. А деление на ноль есть сделать запрос с фильтром, когда "тригонометрическая формула" возвращает значение, близкое к нулю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 18:20 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
AriochчччД, 1) в уровне подготовки, вплоть до того, что ТС настоячиво спрашивает азы по FB в форуме по Delphi 2) в требованиях к надежности и скорости управления ядерными реакторами ( привет внезапной сборке мусора в FB например) Сам ли всегда носом в блюдечко с молочком с первого раза попадаешь? Человек работает, учится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 18:25 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
Андрей ИгоревиччччД, Иии при достижении размера базы в 2.133.901.312 байт начались проблемы (примерно на таком же размере, кстати, начинались проблемы с типизированными файлами). Добавляет некоторое количество данных и выпадает с ошибкой добавления нового значения (база перед добавлением значений была очищена), создал рядом новую базу и тем же кодом спокойно ей заполнил. Может это виндовские заморочки? Ну ты бы код показал. Может, и решили бы эти проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 18:26 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
YuRockсделать запрос с фильтром, когда "тригонометрическая формула" возвращает значение, близкое к нулю. И вообще, если такое возможно и штатно - то значит логика построена неверно - необходимо, я уже писал, устанавливать значение при значении делителя, близком к нулю, и при всех остальных, с помощью CASE, например. Типа такого: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 18:28 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
чччДАндрей ИгоревиччччД, Иии при достижении размера базы в 2.133.901.312 байт начались проблемы (примерно на таком же размере, кстати, начинались проблемы с типизированными файлами). Добавляет некоторое количество данных и выпадает с ошибкой добавления нового значения (база перед добавлением значений была очищена), создал рядом новую базу и тем же кодом спокойно ей заполнил. Может это виндовские заморочки? Ну ты бы код показал. Может, и решили бы эти проблемы. Ну в конце рабочего дня вторая БД, которую решил протестировать на возможность с работой уже бОльших массивов разрасталась до 4GB, так что не знаю, что было с первой базой, хотя надо и новую будет попробовать записать уже разросшуюся, но это уже завтра. В принципе 50ккк значений было записано минут за 15-20, что не так уж и плохо. А, стоп, я же сразу по 2 значения записывал в одну строку, значит формально я записал 100ккк значений. И стоп в 2 раз. А сколько можно столбцов в БД сделать? 350 можно? Никаких подводных камней не будет? Это, как мне кажется, очень так ускорит заполнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 18:37 |
|
||
|
Как работать с очень большими масивами
|
|||
|---|---|---|---|
|
#18+
YuRockAriochРасскажи мне, как в случае ошибки в середине многострочного UPDATE я могу в Firebird'e посмотреть какую конкретную строку он сейчас читает и какие конкретные значения у всех выражений в этом UPDATE. Как мне попасть внутрь частично выполненного UPDATE? Никак. В дебаггере логику править смешно, потому нужны логи. К тому же, на компьютерах клиентов и не бывает отладки. Только логи. В логи можно записать параметры запроса, а затем Ariochзначения ровно ноль нет нигде, вообще нет. А деление на ноль есть сделать запрос с фильтром, когда "тригонометрическая формула" возвращает значение, близкое к нулю. Никто не говорил, про "править логику". Говорилось про просмотр значений всех и любых переменных В МОМЕНТ ОШИБКИ. Про клиентские компы не будем, бывает там отладка или нет. Допустим мне данные прислали и на рабочей машине воспроизводится. Ещё раз, как мне внутри многострочного UPDATE сделать просмотр всех его столбцов ровно на той строке, где возникло исключение. В Delphi это называется Debug Windows | Evaluate и Debug Windows |Local Variables YuRockкогда "тригонометрическая формула" возвращает значение, близкое к нулю. Они такого не возвращают. Есть несколько формул. Какая-то из них выдает не значение, а ошибку "деление на ноль" на какой-то строке запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 18:50 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39598317&tid=2041256]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 561ms |

| 0 / 0 |
