27.12.2011, 10:49 | #41 |
Участник
|
Цитата:
Если смотреть "шире", то приложение, "заточенное" на оптимизацию процедур модификации данных не может с равным успехом (в смысле оптимизации скорости выполнения) использоваться для формирования отчетности. Либо оптимизируем одно, либо оптимизируем другое. Одновременно - не получается. Отсюда, собственно, и возникли идеи хранилищь данных, например, для кубов OLAP. Нужна специфическая структура данных для быстрой генерации отчетов. Приципиально отличающаяся от структуры данных, использующихся для модификации данных.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Aleks_K (1). |
27.12.2011, 11:20 | #42 |
Участник
|
Цитата:
Цитата:
Для начала отвечу на ваш вопрос: в отсортированной таблице можно использовать метод поиска делением пополам. НО с точки зрения нашей задачи это не важно. Я не уточнял вопрос по задаче, в надежде, что вы догадаетесь. Уточняю задачу: требуется написать алгоритм для того чтобы определить какие индексы вы сможете использовать не перестраивая их в процессе выборки. Инструменты: вместо таблиц я предложил использовать контейнеры, и не использовать conFind(). Для простоты будем считать что по контейнеру в котором у нас храниться индекс conFind() можно использовать. Ответ на задачу пока не даю - попробуйте решить самостоятельно. |
|
27.12.2011, 12:26 | #43 |
Участник
|
А можно я о своем, о мелком?
Поиск делением пополам на биллионах записей - это вы предлагаете, как альтернатива B-Tree?
__________________
Axapta v.3.0 sp5 kr2 |
|
27.12.2011, 12:46 | #44 |
Участник
|
Цитата:
Чтобы не мучиться скажу вам сразу - разницы почти не будет..., точнее она будет не в ползу B-Tree. Это по тому, что мы смотрим на максимум элементарных операций, а B-Tree подразумевает большую рыхлость данных. Эта рыхлость эффективна при апдейтах а вот при поиске она дает лишние циклы... |
|
27.12.2011, 13:01 | #45 |
Участник
|
Цитата:
Сообщение от Мартынов Дмитрий
Чтобы не мучиться скажу вам сразу - разницы почти не будет..., точнее она будет не в ползу B-Tree. Это по тому, что мы смотрим на максимум элементарных операций, а B-Tree подразумевает большую рыхлость данных. Эта рыхлость эффективна при апдейтах а вот при поиске она дает лишние циклы...
|
|
27.12.2011, 13:26 | #46 |
Участник
|
Речь идет об идеальной ситуации или мы как-то привязаны к тому, что имеем сейчас?
__________________
Axapta v.3.0 sp5 kr2 |
|
27.12.2011, 14:04 | #47 |
Участник
|
|
|
27.12.2011, 15:19 | #48 |
Модератор
|
Цитата:
Сообщение от Мартынов Дмитрий
Если мы не имеем аппаратных средств копирования блоков памяти, то при качественном проектировании БД В-дерево проиграет классическому индексу. Кстати и в обратную сторону - если у нас есть аппаратные средства сортировки то опять же сортировка выиграет
.. Зависит конечно, но по сути не зависит
__________________
-ТСЯ или -ТЬСЯ ? |
|
28.12.2011, 20:55 | #49 |
Участник
|
Коллеги, добрый вечер.
Был занят, поэтому не мог принимать участие в дискуссии..Многие моменты, о чем здесь говорилось, заинтересовали. Началось все с того, что на протяжении многих лет, оборотка(и другие отчеты, написанные в 2003-4 году) стали немного напрягать по времени выполнения. Да они выполняются 3-6 минут, но это все равно как-то долговато. Особенно, если тебе звонит бухгалтер и говорит, что у него не идет что-то с обороткой ( ждать немного раздражает ). Сразу скажу, что у нас построение оборотки основаано на inventSum. Естественно, все оборотки чаще всего смотрятся в разрезе склада. Тест происходил следующим образом : Запустил оборотку c InventDim, замерил время выполнения всех запросов в алгоритме (время вывода на экран не в счет) - 3 мин. Далее перенес склад в InventTrans, как указал выше. Единственное, что забыл сказать - я проиндексировал склад. Запустил. Время выполнения 20 сек.На этом мое тестирование закончилось. Я вынес предввыводы для себя и захотел услышать мнение других людей. После того, как я полностью прочитал ветку, засомневался, и сегодня протестировал это более тщательно.А именно, после запуска оборотки, которая использует inventLocationid в inventtrans, я снова запустил оборотку старого образца. Увидел, что она стала выполняться за 32 секунды. Т.е. первый раз за 3 мин. - второй(с перенесенным складом) за 20 секунд - и третий раз(снова по первому варианту) за 32 секунды. Тут у меня возник интерес к фразе fed-а об оптимизации запросов. Честно признаюсь, что я представляю, что такое оптимизация и статистика запросов, но лично с этим не дружил . Сравнивать с рабочей базой думаю смысла нет. Там совершенно другие параметры SQL и AOS-а.Переносить склад в inventTrans пока не планируем (боимся) Да, добавлю, что для тестирования использовал не очень "частый" склад.
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. Последний раз редактировалось Pustik; 28.12.2011 в 21:12. |
|
28.12.2011, 23:06 | #50 |
Участник
|
Это еще отчасти может об'ясняться тем, что после первого прогона оборотки СУБД закэшировала все необходимые данные и перестала начитывать их с диска.
|
|
|
За это сообщение автора поблагодарили: Pustik (1). |
29.12.2011, 09:02 | #51 |
Участник
|
Для решения подобных задач в свое время использовал индексированные вьюхи. Способ несколько "варварский", зато не предполагает уродования штатного функционала, пусть и далеко не идеального
|
|
29.12.2011, 12:31 | #52 |
Moderator
|
К предположению gl00mie могу только добавить совет перед каждым прогоном теста, сбрасывать дисковый кэш сиквела с помощью комманды DBCC DROPCLEANBUFFERS
Кроме того, если считать что тесты 2 и 3 из сообщения участника pustik выполнялись в равноправных условиях (в смысле все данные уже были закэшированы), то разница в полотора раза - это нормально. Нет смысла копаться в планах запросов, скорее всего все и так хорошо... Последний раз редактировалось fed; 29.12.2011 в 12:36. |
|
29.12.2011, 16:31 | #53 |
Участник
|
Цитата:
Сообщение от Vadik
Дмитрий, есть предложение вернуться к решению задачи поставленной в начале ветки (напомню - ускорение оборотки по складу за счет добавления InventLocationId в InventTrans) на основе коммерчески доступных в данное время в данной галактике технологий (AX, X++, SQL Server \ Oracle). Если по существу добавить нечего - пожалуйста, воздержитесь от увода ветки в оффтопик
Вынужден оставить без ответа... Не вижу здесь офтопика (даже берусь доказать обратное) но не смею спорить с модератором... |
|
29.12.2011, 17:01 | #54 |
Участник
|
Как говорит mazzy - открывайте отдельную тему, там и расскажите
__________________
Axapta v.3.0 sp5 kr2 |
|
03.01.2012, 17:33 | #55 |
Участник
|
Не думаю, что у Майкрософт в планах делать такого рода денормализацию.
Было бы, наоборот, логичнее работать над более универсальным механизмом, который бы позволял с легкостью добавлять новые аналитики в зависимости от специфики учета в компании. Поэтому, если конкретно в вашей компании есть проблемы, и де-нормализация помогает, вывод очевиден - сделайте это сами для себя... |
|
04.01.2012, 08:47 | #56 |
Участник
|
Цитата:
Как Вы считаете, это сильно трудоемко?
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
04.01.2012, 12:31 | #57 |
Участник
|
Цитата:
Но, для этого мы и существуем, чтобы делать трудоемкие задачи. Вопрос только - в какой версии это будет сделано. |
|
04.01.2012, 13:59 | #58 |
Участник
|
пожалуй создам новую ветку
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
04.01.2012, 17:46 | #59 |
Модератор
|
Собеседники чуть выше поступили очень мудро, создав отдельные ветки
Пожалуйста, создавайте отдельные ветки для обсуждения отдельных тем
__________________
-ТСЯ или -ТЬСЯ ? |
|
06.01.2012, 00:21 | #60 |
Administrator
|
Обсуждение с запросом к InventSum выделено в отдельную ветку Запрос к InventSum с InventLocationId
__________________
Возможно сделать все. Вопрос времени |
|