|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Lord Britisharm, к чему этот боян, пиочитайте вверху. а заливку автору показал не чтобы он ораклю себе ставил, а нашел аналог у себе в мсскл, потому, что те пути что он использовал медленные. привел бы название способа со скоростью заливки ~ копирование файла, автору может полегчало бы. 1) я весь топик перечитал. 2) привел названия по ссылке. могу уточнить - Bulk insert. Lord Britishреализация кривая Это всего лишь мнение. Которое может быть как правильным, так и нет. Ведь некривой реализации так и не было приведено. Lord Britishмы оптимальный пути на неск сотнях гб искали транспортной сети. и ниче никакой инмемори не понадобилось Так не спорю. Говорю же, критерии скорости поиска не были указаны. Просто по факту обращение ко всем 50 Гб по любому приведет к неоднократному физическому чтению с диска, что само по себе тормоза. Вот если будет понятно, что несмотря на объемы сами запросы простые и юзаются правильные индексы, то этот минус нивелируется. Lord Britishнагородят реализацию на каждый чих сохраняющую 50гб графа Я не увидел в обсуждении топика того факта, что все 50 Гб каждый раз скидываются в БД. Это лишь ваши предположения. Или я невнимательный, и упустил констатацию этого факта. А насчет математики - я по отрывочному текстовому описанию пока не понял, что именно делать в этом графе. Поэтому какая там математика - не представляю. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 11:47 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Arm79, " ......Просто по факту обращение ко всем 50 Гб по любому приведет к неоднократному физическому чтению с диска, что само по себе тормоза. Вот если будет понятно, что несмотря на объемы сами запросы простые и юзаются правильные индексы, то этот минус нивелируется..... " если бы он разбил на кусочки графа, не понадобилось бы при чтении всего графа, весь граф точно никому не нужен. кроме того у субд есть свой буфферный кеш, физических чтений с течением времени может и не случиться. полкрутить размер только. кроме того, раз уж тема об том, что есть, то упомянутые вами индексы при чтении всего графа или огромных его кусков не нужны, скорее всего не смотря на индексы cbo предпочтет фулскан. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 12:06 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Arm79, ViPRosLord British, есть несколько вариантов записи 1. BulkCopy 2. Пользовательский тип 3. Просто Insert batchsize можно менять как угодно во всех случаях счас самым удачным является 2 ну тут дело в том что эти данные тут же должны быть доступны для обработки это запись-чтение тут же по хорошему воще должна быть запись одиночка (это воще убивает СКЛ сервер) (ну типа заблокировал процессорпроцесса на какой то отрезок и эта инфа сразу должна быть доступна другим потокам - возможо на другом компе запущенным) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 12:14 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
ViPRos, Ну так смысл копировать, я ж не вам это отписал, а указал Lord British на аналогичные механизмы в MS SQL А вам уже вопрос, чтобы понимать: 50 Гб - это постоянно приходящие данные? Ежедневные? Или объем меняющихся данных сильно меньше, а 50 Гб в основном - константные или нечасто обновляемые данные? В общем, интересует объем изменяемых данных и периодичность этих изменений. Lord British, Я в курсе. Но решать, пригоден ли классический СУБД для данной задачи и какая ему нужна для этого структура БД, можно после более подробного описания проблемы и входных/выходных данных ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 12:33 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Arm79, "... , а указал Lord British на аналогичные механизмы в MS SQL..." а мне то зачем? я с мсскл не работаю. и он это пробовал, сказал, что скорость записи не очень. из того, что я почитал по твоей ссылке, ближе к истине утилита bcp, можно потестить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 12:50 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Arm79, сейчас каждая субд далека от классической, в том числе и содержат готовые спец структуры/схемы данных и утилиты по обработки/тюнингу этого всего, классическими остаются только знания программистов о них ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 12:55 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Lord Britishа мне то зачем? я с мсскл не работаю Именно поэтому :-) Вы сказали, что не работаете, я и привел аналог - для инфо, можно сказать. Lord Britishближе к истине утилита bcp Просто для загрузки - да. Но как понял, ему еще и из некой программы на .Net нужен доступ к этим данным. Тогда удобнее своя программная реализация этой загрузки. Например, SqlBulkCopy Если же это частая загрузка данных просто на сервер, то Bulk Insert через джобы ИМХО интереснее. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 12:56 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Arm79ViPRos, Ну так смысл копировать, я ж не вам это отписал, а указал Lord British на аналогичные механизмы в MS SQL А вам уже вопрос, чтобы понимать: 50 Гб - это постоянно приходящие данные? Ежедневные? Или объем меняющихся данных сильно меньше, а 50 Гб в основном - константные или нечасто обновляемые данные? В общем, интересует объем изменяемых данных и периодичность этих изменений. эти данные генерируются алгоритмом расчета расписания за один проход (т.е. по одному набору политик-эвристик), т.е. это просто новое расписание люди хотят считать очень быстро - что если.... и получить расписание и рекомендации по реструктуризации ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 12:57 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
ViPRosэти данные генерируются алгоритмом расчета расписания за один проход За один проход сразу 50 Гб новых данных????????? Э... откуда столько? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 12:59 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Arm79, ну я же написал - это детальное расписание всех ресурсов завода - кооперации (несколько заводов) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:00 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
например - в изделие входит 100 000 составных частей, 3 000 000 техпроцессовна изготовление, куча логистических операций, которых нет в ТП (внутренная и внешная логистика) и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:02 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
ViPRos, и? ведь 100 000 составных частей и 3 млн техпроцессов не каждый же раз новые? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:07 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Arm79, ну и? да ТП не каждый день меняется ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:14 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
у меня во время чтения сложилось мнение, что программа генерирует данные с нуля - модель для расчетов раз в какой-то период, есть другие системы, которые используют потом модель для расчетов. т. е. как вверху спрашивал - 1 есть тупая заливка, которую можно делать почти также как копирование файлов и 2 обработка модели, предварительно разово модель можно побить на куски после заливки, потом работать только с теми кускоми, что необходимо. и если оно используется не на чтение, то там и bulk операций не возникнет, хватит обычных update/insert для маленьких порций данных, подозреваю. arm, все массовые заливки, что оперируют предложениями типа 'INSERT....VALUES()' или используют хоть какую-то часть инфраструктуры БД, а не датафайлы напрямую не смогут работать быстрее того, что я привел в примере выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:26 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Lord Britisharm, все массовые заливки, что оперируют предложениями типа 'INSERT....VALUES()' или используют хоть какую-то часть инфраструктуры БД, а не датафайлы напрямую не смогут работать быстрее того, что я привел в примере выше. предложенные мной варианты не оперируют предложениями типа 'INSERT....VALUES()' ViPRosну и? да ТП не каждый день меняется Тогда я еще раз спрошу, какой именно объем МЕНЯЮЩИХСЯ данных за проход генерируется? Ведь можно эти 50 забить в БД, а потом поверх только апдейты накатывать ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:30 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Lord British а не датафайлы напрямую не смогут работать быстрее того, что я привел в примере выше. ну если какая то спец БД в памяти , и не читает файл , а где то в ней генерятся эти данные ( в частности 1.6Гб) , то на это уйдёт 2 секунды, а то и чуть меньше. но это уже предел. а в вашем случае, этот fixed csv ещё кто то должен создать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:32 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Arm79предложенные мной варианты не оперируют предложениями типа 'INSERT....VALUES()' а используют ли они файлы данных напрямую? автор пробовал, сказал, что не понравилась ему скорость :D кстати, что означает Arm79Просто для загрузки - да. Но как понял, ему еще и из некой программы на .Net нужен доступ к этим данным. Тогда удобнее своя программная реализация этой загрузки. Например, SqlBulkCopy Если же это частая загрузка данных просто на сервер, то Bulk Insert через джобы ИМХО интереснее. Как понимать это? Можно в тело джоба поместить вызов sqlldr/bcp или использовать внешний шедулер. Интереснее тут может быть только скорость заливки. :D ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:36 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
beg-in-erну если какая то спец БД в памяти , и не читает файл , а где то в ней генерятся эти данные ( в частности 1.6Гб) , то на это уйдёт 2 секунды, а то и чуть меньше. но это уже предел. а в вашем случае, этот fixed csv ещё кто то должен создать. не должен, у оракли есть API, которое использует sqlldr в своих кишках для своего быстрого лоада. это api можно пользовать из своего кода. т. е. писать по мере генерации данных. так что там попутно можно избавиться и от конвертации типов которое есть при загрузке из текстового файла. у меня цель была показать, что механизм с минимальными посторонними затратами есть, чтобы облегчить себе путь, я выбрал csv. там на самом деле очень много опций, можно книжку написать. возможно, оно все есть и в субд автора. вот и призываю чтобы искал... ps. на счет инмемори без комментариев, по понятным думаю причинам. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:45 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Arm79Тогда я еще раз спрошу, какой именно объем МЕНЯЮЩИХСЯ данных за проход генерируется? Ведь можно эти 50 забить в БД, а потом поверх только апдейты накатывать Блин, пришел заказ, надо пересчитвывать, изменилиь условия (сломался станок, запил дяд вася, нет денег на оплату, задержался логистический оператор,........... мылен причин пересчета расписания) а расписание новое = 50 гигов ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:46 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Lord BritishМожно в тело джоба поместить вызов sqlldr/bcp Вызов через sqlcmd внешних утилит требует очень хороших прав Lord Britishиспользовать внешний шедулер при наличии встроенного - не айс Lord Britishскорость заливки Не мерил сам, но уверен, что вполне сопоставима. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:48 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Lord Britishps. на счет инмемори без комментариев, по понятным думаю причинам. ну эт понятно , но если очень нужна скорость.... Зы. а скорость выборки из оракля такая же будет шустрая, как и заливка? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 13:53 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
beg-in-erLord Britishps. на счет инмемори без комментариев, по понятным думаю причинам. ну эт понятно , но если очень нужна скорость.... Зы. а скорость выборки из оракля такая же будет шустрая, как и заливка? дело в том, что предложенный вариант загрузки минует все что можно. с таким вариантом в попугаях можно сравнить только варианты массовой выгрузки, бэкапирования или холодного копирования файлов бд. что касается команды SELECT проходит все уровни "бюрократии". в лучшм случае ваши блоки будут в буфферном кеше, и с диска их поднимать не нужно будет, в худшем вы и сами поняли... кроме того, все зависит от того насколько грамотно все учтено при настройке экземпляра и т. п.. но нужны ли автору все данные сразу - вопрос открытый. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 14:07 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Блин, пришел заказ, надо пересчитвывать, изменилиь условия (сломался станок, запил дяд вася, нет денег на оплату, задержался логистический оператор,........... мылен причин пересчета расписания) а расписание новое = 50 гигов[/quote] Я наверное чего то не понимаю. Как, как можно из факта слома станка выдать 50 Гб(!!!) изменений? Скажите, а отложенные вычисления у вас допустимы? Например, нет необходимости высчитывать новое расписание, пока его не запросили? А по первому запросу посчитать и положить в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 14:20 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Lord British что касается команды SELECT проходит все уровни "бюрократии". в лучшм случае ваши блоки будут в буфферном кеше, и с диска их поднимать не нужно будет, в худшем вы и сами поняли... ну это понятно. бюрократия ))) по сабжу, наверно лучшим по скорости работы был бы вариант выделения спецмашины, с огромным количеством ОЗУ ( сколько щас есть 160Гб ) и всё бы хранил бы там. скорость выше наверно не получить. ну эт понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 14:21 |
|
на что хоть нарвался?
|
|||
---|---|---|---|
#18+
Arm79Я наверное чего то не понимаю. Как, как можно из факта слома станка выдать 50 Гб(!!!) изменений? Скажите, а отложенные вычисления у вас допустимы? Например, нет необходимости высчитывать новое расписание, пока его не запросили? А по первому запросу посчитать и положить в БД. поломка станка и есть запрос на новое расписание ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2013, 14:23 |
|
|
start [/forum/topic.php?fid=20&msg=38139732&tid=1404072]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
120ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
others: | 571ms |
total: | 796ms |
0 / 0 |