04.08.2011, 14:40 | #1 |
Сам.AX
|
Поддержание быстродействия растущей БД
AX 4.0, MSSQL 2008
В условиях постоянно растущей базы возникает вопрос: как сделать так, чтобы общая скорость работы системы и отдельных операций не увеличивалась? Каждый год удалять "лишние" документы (различные заказы, проводки..)? Средствами MSSQL дробить данные БД горизонтально на файлы и старые (с реже используемыми данными) файлы кидать на отдельный диск? Каждый год покупать новый сервак? Что делаете вы?
__________________
ѣ |
|
04.08.2011, 15:21 | #2 |
Участник
|
|
|
04.08.2011, 15:57 | #3 |
Участник
|
Цитата:
Во-вторых, четко различать документы/проводки и черновики. Документы/проводки влияют на итоги. Черновики на итоги не влияют (или влияют только на прогнозные итоги). Заказы и журналы - суть черновики. Черновики можно удалять в любой момент. Никогда не храните данные в заказах и в журналах - их могут удалить в любой момент. Всегда переносите данные в документы и проводки. В-третьих, Четко следите за проводками, которые можно безболезненно удалить. Например, InventSettlement (where InventSettlement.Cancelled==NoYes::Yes) В-четвертых, обратите внимание на стандартные отчеты, которые работают от конца или от промежуточных итогов. Постарайтесь делать и свои отчеты таким образом, чтобы они не работали от начала времен. В-пятых, если все-таки у вас будет отчет "от начала времен" (как стандартный по клиентам/поставщикам) сделайте так, чтобы в выборку не попадала огромная куча данных. Так отчет по клиентам/поставщикам строится по каждому клиенту/поставщику отдельно. А в такую выборку почти никогда не попадает много-тыщ записей. Насчет сегментирования. В целом, штука хорошая. И я часто пропагандировал этот способ. Однако вынужден признать, что и русская функциональность, и на большинстве кастомизаций умудряются сделать отчеты "от начала времен". В этом случае сегментирование мало помогает. Насчет архивирования. Дело в том, что перенос данных в архив и свертка данных неизбежно приводит к тому, что потребуется два набора отчетов - один для нормальных данных, другой для архивных. Затраты на создание таких отчетов с лихвой перекроют всю выгоду от архивирования. Поэтому не думаю, что архивирование поможет. Другое дело - свертка данных. Такая штука есть в Навике. Штука забавная. Но очень плохо дружит с локализацией. В Аксапте свертка есть в одном месте - операция свертки InventSum в периодических операциях \ Очистка \ Очистка складских сопоставлений. Нужно проверять как эта свертка дружит с последними "расширениями" складской аналитики в русском функционале. В целом, свертка данных - очень тягомотное занятие. ============= Резюме: Если вы смотрите на брутто-рост вашей базы в enterprise manager, то не пугайтесь. быстрый рост дают как правило логи. Просто регулярно чистите их. В старых версиях аксапты реальный рост базы происходил в таблице InventSettlement при списании по среднему. Это да. Но допиленная очистка складских сопоставлений вполне помогала. В последних версиях эту фичу победили. |
|
|
За это сообщение автора поблагодарили: Electrician (1). |
08.08.2011, 16:17 | #4 |
Сам.AX
|
Цитата:
А вообще вопрос актуальный у клиентов? Или все кластеры закупили с запасом на лет 10?
__________________
ѣ |
|
08.08.2011, 16:22 | #5 |
Moderator
|
Цитата:
Ну а 5 лет продержаться тупо апгрейдя железо - вполне реально... На крайняк - можно без перевнедрения с нового года поставить новую БД и перенести туда одни остатки... P.S. Замечу что аксапта изначально не разрабатывалась и не проектировалась под архивацию и свертку. И разработка подобного механизма с ноля может оказаться дороже перевнедрения с вводом одних остатков... Последний раз редактировалось fed; 08.08.2011 в 16:29. |
|
08.08.2011, 17:04 | #6 |
Участник
|
Если же используется ОЛАП, то зачастую настраивается два источника данных - старая система для старых данных и новая для новых. Хотя готов согласится, что это тот еще гемор...
|
|
08.08.2011, 18:15 | #7 |
Модератор
|
У Вас интерес чисто академический (обо всем и ни о чем конкретно) или практический ? Задачу \ проблему можете сформулировать ?
__________________
-ТСЯ или -ТЬСЯ ? |
|
09.08.2011, 10:25 | #8 |
Сам.AX
|
4 года жили на железе, которое не справлялось с объемом данных за полгода, поэтому каждый год почти под нуль чистили базу. Недавно купили хорошее железо, работает удовлетворительно, но кто его знает, как оно себя поведет через с большими данными...
__________________
ѣ |
|
09.08.2011, 13:34 | #9 |
Сам.AX
|
Мы так и делаем)) И это еще хорошо, что у нас одна валюта
__________________
ѣ |
|
09.08.2011, 16:22 | #10 |
Участник
|
Цитата:
Опять же, зависит от того, что Вы вкладываете в понятие "не справлялось". Может, Вам всего-лишь тюнинг индексов надо было провести... |
|
10.08.2011, 07:04 | #11 |
Сам.AX
|
Цитата:
Цитата:
Опять же, зависит от того, что Вы вкладываете в понятие "не справлялось". Может, Вам всего-лишь тюнинг индексов надо было провести...
__________________
ѣ |
|
10.08.2011, 14:09 | #12 |
Участник
|
ИМХО - все как-то неконкретно! Есть счетчики производительности - они четко (ну в большинстве случаев) показывают где есть затык! Если у Вас дисковые очереди зашкаливают, то тут хоть заиндексируйся - нужно менять систему хранения ну и т.д. - т.е. что хочу сказать - нужно локализовать причину и дальше смотреть как ее решить!
__________________
Axapta 3.0 sp - хз какой, kr2 |
|
10.08.2011, 14:17 | #13 |
Участник
|
Параметры серверов в студию! :-))
|
|
10.08.2011, 14:52 | #14 |
Сам.AX
|
Цитата:
Сообщение от egorych
ИМХО - все как-то неконкретно! Есть счетчики производительности - они четко (ну в большинстве случаев) показывают где есть затык! Если у Вас дисковые очереди зашкаливают, то тут хоть заиндексируйся - нужно менять систему хранения ну и т.д. - т.е. что хочу сказать - нужно локализовать причину и дальше смотреть как ее решить!
Сейчас-то все гут И чувствую, если начнутся тормоза, то опять же выяснить особо ничего не удастся (если только внешнюю организацию не пригласить для анализа), поэтому и задал вопрос так как я его задал...
__________________
ѣ |
|
10.08.2011, 15:59 | #15 |
Участник
|
Цитата:
Почитайте тут - http://www.sql.ru/articles/mssql/031...COUNTERs.shtml
__________________
Axapta 3.0 sp - хз какой, kr2 |
|
10.08.2011, 17:40 | #16 |
Участник
|
Цитата:
Ну, не то, чтобы определяющая... Просто по размеру базы можно прикинуть размер самых больших таблиц. Если речь идет об оперативной работе, то, вероятно, где-то под 20..30ГБ. При таких размерах критически важным становится размер кеша MS SQL сервера, который напрямую зависит от объема оперативной памяти. Если оперативки недостаточно, то это может стать причиной тормозов. Впрочем, тут лучше счетчики посмотреть. Для анализа индексов в MS SQL есть специальная утилита: Database Engine Tuning Advisor. Ее идея в том, что она записывает trace (лог команд, но не всех, а отобранных по спец.критериям) и далее по этому trace анализирует частоту выполнения тех или иных команд и какие индексы могли бы их ускорить. После этого выдает свои рекомендации. |
|
11.08.2011, 13:47 | #17 |
Сам.AX
|
Цитата:
Сообщение от egorych
Ошибочка - не профайлер нужен, а счетчики производительности! Не путайте горячее с мягким!
Почитайте тут - http://www.sql.ru/articles/mssql/031...COUNTERs.shtml
__________________
ѣ |
|
11.08.2011, 14:04 | #18 |
Сам.AX
|
Цитата:
Цитата:
Для анализа индексов в MS SQL есть специальная утилита: Database Engine Tuning Advisor. Ее идея в том, что она записывает trace (лог команд, но не всех, а отобранных по спец.критериям) и далее по этому trace анализирует частоту выполнения тех или иных команд и какие индексы могли бы их ускорить. После этого выдает свои рекомендации.
__________________
ѣ |
|
12.08.2011, 12:44 | #19 |
Участник
|
Цитата:
На мой взгляд в профайлере в первую очередь стоит смотреть не на Duration, а на Reads, если в топовых запросах с помощью индексов удастся уменьшить этот показатель, то с большой вероятностью полегчает и остальным. Если индексы не помогают, значит нужно "править в консерватории", т.е. искать код АХ и оптимизировать. PS. Война с производительностью вечна |
|
Теги |
бд, быстродействие |
|
Похожие темы | ||||
Тема | Ответов | |||
Установка текущего SID-а в БД | 0 | |||
Получить параметры соединения с БД | 5 | |||
Подключение АОС к новой БД | 4 | |||
2 AOS + 2 БД = 1 сервер | 2 | |||
Создание точной копии БД для анализа ошибок | 1 |
|