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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.04.2010, 14:57   #1  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
Сообщение от mazzy Посмотреть сообщение
А почему вы в студии удаляете данные изо всех компаний?
Если вам компании неважны, то почему вы включили свойство SavePerCompany = Yes?
В этой таблице нет данных по другим компаниям (и не должно быть), зачем св-во SavePerCompany установлено в Yes сказать не могу (ставил не я, а спросить уже не у кого)

Цитата:
Сообщение от mazzy Посмотреть сообщение
Вы используете при запуске аксапты параметр, который позволяет изменить место dataareaid в индексе?
(подозреваю, что нет)
Нет

Цитата:
Сообщение от mazzy Посмотреть сообщение
Похоже, что вы удаляете почти все записи в таблице. 80%-90%-100% записей. так?
Нет, всего в таблице на данный момент около 11000000 записей, я же за один заход удаляю примерно 500000 - 600000

Цитата:
Сообщение от mazzy Посмотреть сообщение
Стесняюсь попросить... Вы планы обоих запросов показать сможете?
Или тоже объяснять нужно?
Если можно, объясните, пожалуйста

Цитата:
Сообщение от mazzy Посмотреть сообщение
Рекомендация - вообще уберите индекс по month
Этого индекса изначально не было. Его я добавил уже в процессе оптимизации, с ним стало значительно быстрее
Старый 28.04.2010, 15:17   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Shirmin Oleg Посмотреть сообщение
В этой таблице нет данных по другим компаниям (и не должно быть), зачем св-во SavePerCompany установлено в Yes сказать не могу (ставил не я, а спросить уже не у кого)
так уберите, если не нужно.
(для начала измените настройку не в рабочей, а в тестовой базе)

Цитата:
Сообщение от Shirmin Oleg Посмотреть сообщение
Нет, всего в таблице на данный момент около 11000000 записей, я же за один заход удаляю примерно 500000 - 600000
Ок. Будем смотреть планы запросов.

Цитата:
Сообщение от Shirmin Oleg Посмотреть сообщение
Этого индекса изначально не было. Его я добавил уже в процессе оптимизации, с ним стало значительно быстрее
А что стало быстрее? Аксаптовский запрос или запрос из студии?
__________________
полезное на axForum, github, vk, coub.
Старый 28.04.2010, 15:31   #3  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
Сообщение от mazzy Посмотреть сообщение
А что стало быстрее? Аксаптовский запрос или запрос из студии?
Быстрее стал Аксаптовский запрос. Без индекса по month полный цикл (удаление старых данных и заливка новых) занимал 4-5 часов. После добавления индекса - 1,5 - 2, из них примерно 1 час - удаление.

Запрос из студии на "ускорение" не проверял, запустил один раз (уже после добавления индекса) - 16 минут.
Старый 28.04.2010, 15:22   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Shirmin Oleg Посмотреть сообщение
зачем св-во SavePerCompany установлено в Yes сказать не могу (ставил не я, а спросить уже не у кого)
Это значение по умолчанию.
Как только измените значение этого свойства на No, из запроса сразу уйдут условия по DataAreaId.

Я ещё хотел сказать, что для тестирования временно стоит отказаться от удаления по частям. И добится сначала чтобы на пустой базе (без блокировки пользователей) delete_from из аксапты показывал бы тот-же самый результат, что и прямой delete from. Т.е. если и строить план запроса, то именно delete_from, а не вспомогательных select'ов, организующих цикл.
Старый 28.04.2010, 15:36   #5  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Это значение по умолчанию.
Так вот и не знаю, почему было оставлено это значение по умолчанию, не нужно оно там

Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Я ещё хотел сказать, что для тестирования временно стоит отказаться от удаления по частям. И добится сначала чтобы на пустой базе (без блокировки пользователей) delete_from из аксапты показывал бы тот-же самый результат, что и прямой delete from. Т.е. если и строить план запроса, то именно delete_from, а не вспомогательных select'ов, организующих цикл.
Что Вы имеете в виду под "пустой базой без блокировки пользователей"?
Старый 28.04.2010, 16:17   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,449 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Shirmin Oleg Посмотреть сообщение
Что Вы имеете в виду под "пустой базой без блокировки пользователи"?
Коряво выразился. Я имел в виду тестовую базу с которой можете работать только вы но, не другие пользователей. Что бы не они вам не вы им не создавали блокировок. Дабы не загрязнять результаты эксперимента
Старый 28.04.2010, 16:35   #7  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Я имел в виду тестовую базу с которой можете работать только вы но, не другие пользователей.
Да, все эксперименты в такой базе и делаю.
Старый 29.04.2010, 17:37   #8  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Убрал мультикомпанию, добавил Recid в индекс Month (индекс делать уникалным не стал), убрал кэширование.

Удаление 100000 записей из Аксапты через delete_from без ограничения по RecId - 12 мин.

Сделал индекс Month уникальным, выбрал его в PrimaryIndex на самой таблице.


Удаление 100000 записей из Аксапты без огр. по RecId - 7мин. 49с.
Удаление 100000 записей из Студии без огр. по Recid - 6мин. 47с.

Удаление 450000 записей из Аксапты без огр. по RecId - 9мин. 39 с.
Удаление 450000 записей из Студии без огр. по Recid - 9 мин. 36 с.

Удаление 600000 записей из Аксапты без огр. по RecId - 9мин. 45 с.
Удаление 600000 записей из Студии без огр. по Recid - 9 мин. 40 с.

Удаление 450000 записей из Аксапты с разделением по RecId на блоки (1000 записей в блоке) - 11 мин. 55 с.
Удаление 450000 записей из Студии Аксапты с разделением по RecId на блоки (10000 записей в блоке) - 10 мин. 24 с.



Планы запросов:
Миниатюры
Нажмите на изображение для увеличения
Название: Без_огр_по_recid.JPG
Просмотров: 397
Размер:	199.3 Кб
ID:	5792   Нажмите на изображение для увеличения
Название: С_огр_по_recid.JPG
Просмотров: 475
Размер:	151.4 Кб
ID:	5794  

Вложения
Тип файла: xlsx Без_огр_по recid.xlsx (10.3 Кб, 135 просмотров)
Тип файла: xlsx С_огр_по recid.xlsx (9.8 Кб, 173 просмотров)
Старый 30.04.2010, 21:22   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
ну, вот! я же говорил, что планы разные.
и оба неоптимальны.

Цитата:
Сообщение от Shirmin Oleg Посмотреть сообщение
Убрал мультикомпанию, добавил Recid в индекс Month (индекс делать уникалным не стал), убрал кэширование.

Удаление 100000 записей из Аксапты через delete_from без ограничения по RecId - 12 мин.
а с ограничением по RecID?
__________________
полезное на axForum, github, vk, coub.
Старый 28.04.2010, 15:36   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Shirmin Oleg Посмотреть сообщение
Если можно, объясните, пожалуйста
Мдя... *про себя* Назвался груздем - полезай в кузов

1. Заходите в Management Studio.
2. Коннектитесь и позиционируетесь на нужную базу данных
3. Создаете запрос
X++:
delete from SALESTABLE_TELECOMPHONTRA40478 where SALESTABLE_TELECOMPHONTRA40478.month = '2010-03-01'
4. включете опцию Include Actual Execution Plan
примерно так:
Нажмите на изображение для увеличения
Название: 1.PNG
Просмотров: 379
Размер:	47.2 Кб
ID:	5779

5. выполняете запрос
6. видите результаты и в закладке план исполнения
7. переключаетесь в закладку
8. скриншотите план исполнения так, чтобы он попал на скриншот полностью
9. повторяете действия для второго запроса

X++:
delete from SALESTABLE_TELECOMPHONTRA40478 where dataareaid = 'tz' AND month = '2010-03-01' AND RecID >= 5644252551  AND RecID <= 5644252561
Должно получится что-то вроде
Название: 2.PNG
Просмотров: 3252

Размер: 15.9 Кб

если ваш план запроса не помещается на экран, тогда сделайте следующий запросы:
X++:
set showplan_all on;
go
delete from SALESTABLE_TELECOMPHONTRA40478 where SALESTABLE_TELECOMPHONTRA40478.month = '2010-03-01'
X++:
set showplan_all on;
go
delete from SALESTABLE_TELECOMPHONTRA40478 where dataareaid = 'tz' AND month = '2010-03-01' AND RecID >= 5644252551  AND RecID <= 5644252561
в этом случае вместо результатов вы получите текстовый вариант плана запроса.
Нажмите на изображение для увеличения
Название: 3.PNG
Просмотров: 407
Размер:	15.7 Кб
ID:	5781

либо скриншоты, либо текст выкладывайте сюда.
__________________
полезное на axForum, github, vk, coub.
Теги
ax2009, ccadoconnection, delete_from, оптимизация, удаление

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Задвоение RecId при вставке записей через COM коннектор db DAX: Программирование 1 23.04.2009 15:12
Класс OfficialsServ_RU - удаление записей из OfficialsTrans_RU Logger DAX: Программирование 3 14.09.2006 15:58
Запуск программы из Аксапты через 2-хзвенку Migel_84 DAX: Программирование 25 27.04.2006 09:41
Проблема с запуском business connector'a через удал доступ yooshi DAX: Программирование 1 07.11.2005 08:56
Удаление записей из InventDim и SalesTable DreamCreator DAX: Программирование 4 08.12.2004 17:23
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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