![]() |
#10 |
Участник
|
Похоже больше нет тем.
Тогда попробую начать обосновывать свое мнение. Цитирую: Тогда еще некоторые темы для обсуждения. Пока кратко, без обоснования и ссылок (в надежде, что большинство понимает о чем идет речь): 1. Query В платформе 1С нет объекта, который позволяет ПРОГРАММИСТУ строить query программно. Аксаповеды, вы не поверите, но программисты 1С до сих пор парсят и правят тексты строк запросов. Т.е. если пользователь хочет добавить условия и фильтры, то программист должен позаботиться об этом и вставить куски кода с этими условиями в текствоый запрос. Для этого программисту нужно парсить строку запроса и вставлять туда условия со скобками, кавырками и прочей чешуей... Да, в 1С есть Построитель запросов - это некий конструктор, который позволяет мышкой создать и вставить текст запроса в код. Но с этим Построителем запросов нельзя работать программно в run-time. Только в design-time. Да, в 1С есть возможность задавать запросы в отчетах. И такие запросы пользователь может менять. Но в такие запросы нельзя влезть программно. И кроме того, такая возможность существует только в отчетах. Очень много Бла-бла-бла... на эту тему. Но надеюсь, что большинство участников, понимает о чем идет речь. 2. Кэширование таблиц В Аксапте очень большое значение уделяется кэшированию таблиц. См. книжку Dynamics Inside. Кэширование конечно же не поможет при работе с большими таблицами типа InventTrans, InventSettlement и прочее. Но кэширование заметно помогает при работе с настроечными таблицами (профили разноски, параметры компании, параметры валют, вевозможные группы, статусы и другие настройки) В результате треть запросов (и больше) Аксапта просто не отправляется на SQL-сервер. На кэшировании таблиц в Аксапте завязано очень многое. Так код может выполняться быстрее X++: while select custtrans where ... { custtable = custtable::find(custtrans.accountnum) } X++: while select custtrans where ... join custtable where custtable.accountnum == custtrans.accountnum { ... } X++: while select custgroup where custgroup.CustGroup == 'myGroup' { if( custgroup.paymtermid == 'myTerm' ) { ... } } X++: while select custgroup where custgroup.CustGroup == 'myGroup' && custgroup.paymtermid == 'myTerm' { ... } Те, кто говорят о том, что Аксапта не поддерживает T-SQL в полном объеме, просто не понимают о чем идет речь. Аксапта очень большое число "правильно написанных" запросов просто не посылает на SQL-сервер. И для разработчиков самой Аксапты, и для разработчиков приложений на этой самой Аксапты предельно важно, чтобы макисмально распределить нагрузку между AOS и SQL. Принцип простой - в многопользовательской среде - несколько простых и кэшируемых запросов намного лучше (с точки зрения производительности), нежели один сложный запрос. Выражаясь языком поговорок - лучше сорок раз по разу, чем один раз, но сорок раз. 3. Listerals vs Placeholders http://axapta.mazzy.ru/lib/literals_vs_placeholders/ В 1С просто нет такой штуки. Разработчики платформы 1С об этом не думали. Они вообще не думали, как SQL будет выполнять такие запросы. Комментарий: ниже Alexius и Vezunchik настойчиво попросили меня подтвердить мое высказывание про прекращение оптимизации. Я покопался и не смог найти подтверждение. О чем написал здесь. Поэтому свое высказывание про оптимизацию зачеркиваю. Спасибо вам за настойчивость. Однако, на мой взгляд это никак не влияет на исходный тезис, поскольку 1С с легкостью генерирует complex SELECT statements, для которых оптимизатор выбирает не самый оптимальный план. Мое мнение осталось прежним - разработчики платформы 1С не думали как будут выполняться такие сложные запросы.Ну и так далее. В общем, разработчики 1С повышают скорость работы единственного пользователя в монопольном режиме. А разработчики Аксапты прежде всего повышают скорость работы в многопользовательском режиме. (Где-то была статья про отличия в этих подходах. Вроде у Еременко. Не помню... Буду благодарен, если подскажете ссылки) Платформа еще не скоро приблизится ![]() Если и приближается, то к старым версиям Аксапты 2.1, 2.5, которые существовали лет 8-10 назад. Чтобы там ни провозглашали 1Сники. И как бы не пытались промыть мозги маркетингом. Последний раз редактировалось mazzy; 13.12.2009 в 21:41. Причина: про прекращение оптимизации запроса с 8ю таблицами. |
|
|
За это сообщение автора поблагодарили: sukhanchik (4), FE (1), alex55 (1). |
Теги |
1c, платформа, сравнение систем |
|
|