|
06.04.2011, 02:20 | #1 |
Участник
|
Цитата:
Правда, прямое использование SQL я не пробовал. Почему-то считал, что с точки зрения SQL сервера это будет тоже самое, что и doupdate из Аксапты - вид сбоку. Это не так? Не понял, почему не будет? В каждой записи поля заполняются разными значениями, каким же образом я буду определять какую запись я сейчас буду модифицировать? Последний раз редактировалось Hyper; 06.04.2011 в 03:04. Причина: исправил на doupdate |
|
06.04.2011, 02:39 | #2 |
Участник
|
Цитата:
Вы ж насилуете Аксапточку почем зря. Она сама отдаст и все сделает. помните только одно: 700тыс - не самый большой объем. работали же. ищите причину тормозов. с огромной вероятностью, они где-то на стороне SQL. (пишу "с огромной вероятностью", поскольку от людей, которые используют UserConnection для разбивки на блоки, можно ожидать чего угодно). |
|
06.04.2011, 02:40 | #3 |
Участник
|
Кстати, насчет "ждать чего угодно".
Скажите, метод update на вашей обновляемой таблице переопределен? Если переопределен, то он ничего не запоминает во внутренние структуры в пределах одной транзакции? Цитата:
кроме того, аксапта может перейти в другой режим обновления если таблица отслеживается в SysDatabaseLog. Но главное - посмотрите в метод update. |
|
06.04.2011, 02:49 | #4 |
Участник
|
|
|
06.04.2011, 02:52 | #5 |
Участник
|
ой... как скажете, конечно. забота о целостности полностью на ваших плечах
но в рамках данной темы это значит, что побочных эффектов не должно - doupdate аксапты эквивалентен update одной (!) записи с SQL-сервера. |
|
06.04.2011, 02:59 | #6 |
Участник
|
Да. В детали вдаваться не буду, но о целостности данных в контексте данной задачи (не буду отвлекаться на полное ее описание) волноваться не стоит.
Так. И все-таки с точки зрения СУБД SQL 2000, не Аксапты, с точки зрения быстродействия есть какая-то разница делать 700 000 мелких транзакций или одну большую? |
|
06.04.2011, 03:11 | #7 |
Участник
|
Цитата:
вы говорите, что других работающих пользователей не будет. значит влияние на других можно не учитывать. Если Recovery Model = Full то с точки зрения СУБД накладных расходов на обслуживание 700 000 мелких транзакций значительно больше, чем на обслуживание одной большой. (в этом режиме все транзакции хранятся в transaction log). в этом случае 700 000 мелких транзакций - как самоубийство тупым столовым ножом. Если Recovery Model = Simple то СУБД выкидывает информацию о выполненных транзакциях. в этом случае мелкие транзакции гарантировано поместятся даже в маленьких Transaction Log. Из-за отсутствия затрат времени на рост Transaction Log (как правило очень существенных, измеряемых в долях секунды) много мелких транзакций может выполнится гораздо быстрее, чем одна большая транзакция. (накладные расходы на обслуживание транзакции измеряются килобайтами и микросекундами) ================ чтобы гарантировано сделать работу быстрой - избавьтесь от накладных расходов на рост Transaction Log. Сразу поставьте ему вменяемый размер и сразу задайте вменяемые параметры роста. ================ есть и другие различия. но они дадут проценты к производительности. в разы - вряд ли. |
|
Теги |
axapta |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|