AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.04.2011, 02:59   #1  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от mazzy Посмотреть сообщение
как скажете, конечно. забота о целостности полностью на ваших плечах
Да. В детали вдаваться не буду, но о целостности данных в контексте данной задачи (не буду отвлекаться на полное ее описание) волноваться не стоит.

Цитата:
Сообщение от mazzy Посмотреть сообщение
Конечно принципиальная. С точки зрения СУБД.
Так. И все-таки с точки зрения СУБД SQL 2000, не Аксапты, с точки зрения быстродействия есть какая-то разница делать 700 000 мелких транзакций или одну большую?
Старый 06.04.2011, 03:11   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Hyper Посмотреть сообщение
Так. И все-таки с точки зрения СУБД SQL 2000, не Аксапты, с точки зрения быстродействия есть какая-то разница делать 700 000 мелких транзакций или одну большую?
ответ сильно зависит от значения свойства Recovery Model и от числа одновременно работающих пользователей.

вы говорите, что других работающих пользователей не будет.
значит влияние на других можно не учитывать.

Если Recovery Model = Full
то с точки зрения СУБД накладных расходов на обслуживание 700 000 мелких транзакций значительно больше, чем на обслуживание одной большой. (в этом режиме все транзакции хранятся в transaction log). в этом случае 700 000 мелких транзакций - как самоубийство тупым столовым ножом.

Если Recovery Model = Simple
то СУБД выкидывает информацию о выполненных транзакциях.
в этом случае мелкие транзакции гарантировано поместятся даже в маленьких Transaction Log. Из-за отсутствия затрат времени на рост Transaction Log (как правило очень существенных, измеряемых в долях секунды) много мелких транзакций может выполнится гораздо быстрее, чем одна большая транзакция. (накладные расходы на обслуживание транзакции измеряются килобайтами и микросекундами)

================
чтобы гарантировано сделать работу быстрой - избавьтесь от накладных расходов на рост Transaction Log. Сразу поставьте ему вменяемый размер и сразу задайте вменяемые параметры роста.

================
есть и другие различия. но они дадут проценты к производительности. в разы - вряд ли.
__________________
полезное на axForum, github, vk, coub.
Старый 06.04.2011, 11:52   #3  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
1. Массовое обновление для СУБД лучше всего производить запросами update_recordset или если его синтаксиса не хватает, то прямыми на сервер СУБД. В этом случае сервер сможет самостоятельно оптимизировать процесс обновления. Хотя бывают и исключения

2. Если обновление будет выполняться по одной записи и целостность данных не волнует, то лучше обновлять каждую запись в своей транзакции вне зависимости от модели восстановления сервера. Если все выполнять в одной транзакции, то накладные расходы сервера СУБД на блокировки (или версионность) множества записей с лихвой перекроют расходы на обслуживание кучи транзакций.
Старый 06.04.2011, 12:10   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Alexius Посмотреть сообщение
Если все выполнять в одной транзакции, то накладные расходы сервера СУБД на блокировки (или версионность) множества записей с лихвой перекроют расходы на обслуживание кучи транзакций.
Если выполнять в одной транзакции, то очень быстро произойдет эскалация блокировок до уровня страниц и до уровня таблицы.

поэтому спорно.
но мнение имеет право на жизнь.
__________________
полезное на axForum, github, vk, coub.
Старый 06.04.2011, 12:33   #5  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от fed Посмотреть сообщение
for(i=0;i<70;i++)
Нормальный вполне способ. Сам так и делаю частенько.

Цитата:
Сообщение от Hyper Посмотреть сообщение
так что при отсутствии индекса по RecId экспериментировать, пожалуй, не имеет смысла?
Так может вам стоит построить индекс по recid ? Для 700 тыс.записей будет строиться может пару-тройку минут. Будет не нужен - отключите потом.

Цитата:
Сообщение от mazzy Посмотреть сообщение
Какой то полной фигней вы занимаетесь, честное слово.
Это точно. За время обсуждения можно было вручную всё проапдейтить (утрирую конечно, но всё же..)
Старый 06.04.2011, 12:45   #6  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от Zabr Посмотреть сообщение
Нормальный вполне способ. Сам так и делаю частенько.
Зачем же самим так делать, если я фигней занимаюсь?
Теги
axapta

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
вывод количества записей в таблице на web форме и указание текущей страницы таблицы bambuk1960 DAX: Программирование 1 06.07.2006 13:27
Axapta SP4 EE FP1 и Axapta SP4 EE polygris DAX: Администрирование 9 27.01.2006 11:27
Axapta 3.0 SP4 - нет русского языка Grimly DAX: Администрирование 3 06.12.2005 12:53
Установка Axapta 3.0 SP4 Easten Europe Alexander A. DAX: Администрирование 0 23.08.2005 15:24
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:28.