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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.04.2009, 15:43   #1  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Распределение базы по разным дисковым массивам
Ax3.0sp3 vs MS SQL2ksp4
Имеется 2 дисковых массива:
1) RAID 10 (6 дисков)
2) RAID 10 (6 диска)
Сейчас база находится на рейд 1, лог на ред 2. Планирую перенести часть данных с рейда 1 на рейд 2 (filegroups). Функционал:финансы + логистика + торговля (финционал модифицирован но идеология осталась базовая).
"Оперативный" набор данных хранится сиквелом в памяти и дисковая подсистема интенсивно используется во время различно рода отчетов (потому как за частую это просмотр *Trans таблиц).
Существует 3 подхода:
1) разносить данные с индексами
2) разнести стержневые таблицы (например inventTrans - inventDim)
3) комбинировать 1 и 2 подходы.
Имеются ли рекомендации относительно распределения данных для достижения максимальной эффективности использования 2 массивов?
__________________
--- SHiSHok
Старый 09.04.2009, 17:01   #2  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Я бы попробовал просто два файла данных создать на разных массивах (аналог JBOID, но из RAID массивов). И пусть СУБД сама решает что куда писать.
__________________
С уважением,
glibs®
Старый 09.04.2009, 18:12   #3  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от glibs Посмотреть сообщение
Я бы попробовал просто два файла данных создать на разных массивах (аналог JBOID, но из RAID массивов). И пусть СУБД сама решает что куда писать.
мне кажется хаотичное распределение страниц по массивам на увеличении производительности никак не скажется. Хотя это можно рассматривать как вариант объединения 2х массивов (можно даже программный raid 0 сделать из 2х физических массивов)
__________________
--- SHiSHok
Старый 09.04.2009, 22:33   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Про Oracle, но всё-таки...
__________________
Zhirenkov Vitaly
Старый 10.04.2009, 10:44   #5  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от ZVV Посмотреть сообщение
Почерпнул знание о том что разнесение индексов с данными по разным массивам не принципиально для исполнения запроса, так как в транзакции индекс и данные читаются последовательно.
Считаю что разнесение имеет смысл только с целью оптимизации I/O с массива, так как индекс содержит гораздо меньше полей и одна запись индекса имеет гораздо меньший размер чем строка данных. Соответственно чтение одного диапазона индекса и данных породит разный объем I/O, поэтому имеет смысл индекс располагать на массиве с меньшей пропускной способностью (если таковой имеется).

Дальше, думаю, надо рассматривать схему данных акс, для оптимизации исполнения запросов. В первую очередь выносить на другой массив "подключаемые" таблицы, которые чаще участвуют в связках нежели самостоятельно:
1) Для торговли и логистики имеет место быть часто встречающаяся следующая связка: (*trans, *line) -> InventDim -> Invent*. Соответственно InventDim и (*line, *trans , invent*) разносятся по разным массивам.
2) можно разнести DocuRef с DocuValue.

есть еще идеи?
__________________
--- SHiSHok
Старый 10.04.2009, 11:29   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
sysDataBaseLog отдельно вынести.
Старый 10.04.2009, 12:09   #7  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Для Ax3.0 если выносить индексы в файловые группы, отличные от таблиц следует учесть ситуацию, с которой мы столкнулись. При изменении структуры таблицы Акса в момент синхронизации вернет индекс в ту же файловую группу, что и таблица. Поэтому, если приняли такой подход, то после синхронизации нужно опять выносить индексы.
Старый 10.04.2009, 12:40   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
2 Raven Melancholic

Для этого можно воспользоваться формой SysSqlSetup (доступ к ней есть через форму SQL Администрирование, но он включается только для ORACLE, хотя использовать можно и для MS SQL).

Только для работы с SQL2005 надо ее слегка доработать
В метод sqlServerInit() надо добавить
X++:
...
    resultSet = statement.executeQuery('select groupname from sysfilegroups');
    while(resultSet.next())
    {
        segmentName = resultSet.getString(1);
        sqlSegment.add(segmentName);
    }
   sqlSegment.setDropSize();
}
Изменение файловых групп надо делать в этой форме. После этого запускать синхронизацию в AOT

И еще.
Кластерные индексы хранятся вместе с данными, по-этому перенести их в другую файловую группу не получится

PS
В этой форме список таблиц выводится в порядке следования их ID. Для настройки неудобно, по-этому сделал сортировку по наименованию
X++:
void fillTables()
{
    int             tableCounter;
    dictTable       dictTable;
    Set             set = new Set(Types::String);
    SetEnumerator   tableEnum;

    tableList.lock();
    for(tableCounter = dictionary.tableNext(0); tableCounter > 0; tableCounter = dictionary.tableNext(tableCounter))
    {
        dictTable = new DictTable(tableCounter);
        if((!dictTable.isTmp()) && (!dictTable.isMap()))
            set.add(dictTable.name());
//            tableList.add(dictTable.name());
    }
    tableEnum = set.getEnumerator();
    while (tableEnum.moveNext())
    {
        tableList.add(tableEnum.current());
    }
    tableList.unLock(true);
}
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 10.04.2009 в 12:44. Причина: Добавил метод fillTables()
За это сообщение автора поблагодарили: fed (5), Raven Melancholic (2).
Старый 10.04.2009, 13:04   #9  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Для Ax3.0 если выносить индексы в файловые группы, отличные от таблиц следует учесть ситуацию, с которой мы столкнулись. При изменении структуры таблицы Акса в момент синхронизации вернет индекс в ту же файловую группу, что и таблица. Поэтому, если приняли такой подход, то после синхронизации нужно опять выносить индексы.
изменил файл.группу для индексов -> добавил поле -> синхронизировал -> удалил поле -> синхронизировал := файловые группы у индексов остались.
удалось вернуть индексы в прежнюю файловую группу в SQL Администрирование - переиндексация (и то index с типом Primary Key остался в новой группе)
а какие версии Ax и сиквела у Вас?
__________________
--- SHiSHok
Старый 10.04.2009, 13:07   #10  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Еще есть идея "модульно" разделить таблицы, например финансовые таблицы вынести на отдельный массив (можно менее производительный так как бухгалтерии скорость отклика не принципиальна в отличии от торговли)
__________________
--- SHiSHok
Старый 10.04.2009, 14:38   #11  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от AndyD Посмотреть сообщение
Кластерные индексы хранятся вместе с данными ...
Кластерные индексы являются самими данными, только отсортированными.
На мой взгляд некорректно разделять эти два понятия
Старый 10.04.2009, 15:19   #12  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от SHiSHok Посмотреть сообщение
Имеются ли рекомендации относительно распределения данных для достижения максимальной эффективности использования 2 массивов?
Прирост производительности, скорее всего, будет минимальным, т.к. общая производительность дисковой подсистемы не увеличится. Совмещение на одном массиве файлов БД и логов транзакций не желательно, запись в логи производится on-line, а в БД отложенно. Занимался подобным разделением с 4-мя массивами в конечном варианте, но основной целью было увеличения дискового пространства. Единственное удобство - возможность мониторить загрузку дисков по выделенным табличкам в Performance Monitor
Старый 10.04.2009, 16:09   #13  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
про лог согласен, так что будет скорее всего:
канал 1
  • raid 10 (6 disks) : DATA1
канал 2
  • raid 1 (2 disk) : LOG
  • raid 10 (4 disks) : DATA2
и пока склоняюсь к вынесению финансов на DATA2 (у меня сейчас все на DATA1). может фин деятельность в моменты построения отчетов не так сильно будет торговлю напрягать.
__________________
--- SHiSHok

Последний раз редактировалось SHiSHok; 10.04.2009 в 16:28.
Старый 10.04.2009, 21:10   #14  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Для этого можно воспользоваться формой SysSqlSetup (доступ к ней есть через форму SQL Администрирование, но он включается только для ORACLE, хотя использовать можно и для MS SQL).
Спасибо. Видел эту форму, но из-за того, что она у нас в интерфейсе не присутствует, не стал в ней разбираться, подумав, что это какой-то устаревший механизм. При случае поюзаем.
Цитата:
изменил файл.группу для индексов -> добавил поле -> синхронизировал -> удалил поле -> синхронизировал...
Странно. Мы это пробовали на DAX3.0 SP3, MS SQL2ksp5 (кернел Аксы не помню, но еще до появления возможностей работы с MS SQL2005). Синхронизация изменений убивала вынос индексов на отдельные тома.
Старый 10.04.2009, 22:26   #15  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Перед разделением на группы стоит провести анализ, что и как напрягает вашу дисковую подсистему. Потом решить хотите ли вы ускорять какие-то конкретные процессы или "общую температуру по больнице".

Если решите переходить на 2005, то для него рекомендуют tempdb выносить на отдельный диск.
Старый 11.04.2009, 12:43   #16  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от Wamr Посмотреть сообщение
Перед разделением на группы стоит провести анализ, что и как напрягает вашу дисковую подсистему. Потом решить хотите ли вы ускорять какие-то конкретные процессы или "общую температуру по больнице".

Если решите переходить на 2005, то для него рекомендуют tempdb выносить на отдельный диск.
tempDB для любой редакции лучше на отдельном диске делать + количество файлов по количеству процов ( подробнее http://support.microsoft.com/kb/328551 ).
__________________
--- SHiSHok
Старый 11.04.2009, 19:31   #17  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от SHiSHok Посмотреть сообщение
есть еще идеи?
Давайте сначала определимся с целью -
а) "распределение ради распределения". Тут число вариантов стремится к бесконечности
б) "отделить финансы от логистики". Да, можно. Только много ли операций в финансах, сильно напряшающих ХД? Знаю пару типа финансовых отчетов (с использованием корреспонденции), не более. Т.о., если просто "все поделить", половина ХД будет нагружена логистикой, половина - простаивать
в) "разнести ради производительности". Интересная тема. Хочу увидеть реально работающую схему. Хочу увидеть сравнение с цифрами "до и после". Еще больше хочу увидеть методику сравнения. Пока видел только теории

Цитата:
и пока склоняюсь к вынесению финансов на DATA2 (у меня сейчас все на DATA1). может фин деятельность в моменты построения отчетов не так сильно будет торговлю напрягать
Если мы знаем, что логистике нужно много IO, imho не очень логично насильно ее "зажимать"

Сам там, где возможно, стараюсь следовать принципу KISS principle
__________________
-ТСЯ или -ТЬСЯ ?
Старый 12.04.2009, 12:49   #18  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от Vadik Посмотреть сообщение
Давайте сначала определимся с целью -
Все гораздо прозаичнее - дисковый массив на котором данные уперся в потолок (RAID10: 6 дисков, база порядка 200Gb). т.о. часть данных надо перенести на другой массив (для начала будет 4 диска, потом добью до 6).
Т.е. цель: разнести данные. Можно конечно не заморачиваться - разделил и забыл, потери производительности не будет. Но хочется из необходимости разделения данных выжать максимум.
Методику сравнения вижу только в сравнении показательных запросов на холодном кэше.
__________________
--- SHiSHok
Старый 12.04.2009, 13:30   #19  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от SHiSHok Посмотреть сообщение
Можно конечно не заморачиваться - разделил и забыл, потери производительности не будет. Но хочется из необходимости разделения данных выжать максимум
Единственный на мой взгляд способ оптимально утилизировать весь ресурс (все шпиндели) - это как раз "не заморачиваться" и свалить все в одну файловую группу
Если кто-то сможет предложить схему разбиения, которая будет работать шустрее, чем одна файловая группа - welcome, только, по возможности - с цифрами
Если свободное место на сторадже поджимает, можно подумать насчет миграции на raid5. Если ХД относительно новая (выпущена в этом веке) - вполне может справиться, мы на примерно того же размера БД гоняем на CX300 без особых проблем
Цитата:
Методику сравнения вижу только в сравнении показательных запросов на холодном кэше
А транзакции в системе магическим образом возникают - т.е. OLTP нагрузка как таковая отсутствует ?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 12.04.2009, 16:27   #20  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от Vadik Посмотреть сообщение
Единственный на мой взгляд способ оптимально утилизировать весь ресурс (все шпиндели) - это как раз "не заморачиваться" и свалить все в одну файловую группу
в одну не выйдет, как минимум 2 (на 1 массив и на другой). или предлагаешь JBOD-массив сделать виндовыми средствами? как по мне так лучше пусть 2 массива будет.
Цитата:
Сообщение от Vadik Посмотреть сообщение
Если кто-то сможет предложить схему разбиения, которая будет работать шустрее, чем одна файловая группа - welcome, только, по возможности - с цифрами
Если свободное место на сторадже поджимает, можно подумать насчет миграции на raid5. Если ХД относительно новая (выпущена в этом веке) - вполне может справиться, мы на примерно того же размера БД гоняем на CX300 без особых проблем
Боюсь что схема разбиения (имеется в виду потаблично) во многом будет зависеть от специфики работы Ax в конкретном предприятии. А 5-го рейда побаиваюсь на OLTP системе (я не знаю кто такой CX300).
Цитата:
Сообщение от Vadik Посмотреть сообщение
А транзакции в системе магическим образом возникают - т.е. OLTP нагрузка как таковая отсутствует ?
ну это уже тема дипломной работы. KISS priciple!!! можно логически заключить что если "тяжелый" запрос отработает быстрее чем при тех же условиях на другой конфигурации дисковой подсистемы, то это смело можно считать положительным результатом.
__________________
--- SHiSHok
Теги
ax3.0, file group, raid, sql, sql server, база данных, дисковый массив, производительность, файловые группы

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Принципы построения базы данных Гужанов Павел DAX: Администрирование 11 05.09.2008 16:47
Размер базы Sergo DAX: Функционал 13 30.10.2006 12:17
Распределение бюджетов в Аксапте D.Cheprasov DAX: Функционал 2 05.05.2006 07:01
Вопрос по журналу базы данных(лог) Hidden DAX: Функционал 2 21.09.2005 14:00
Создание полной копии Приложения и базы Perc DAX: Администрирование 5 09.03.2005 07:33

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:49.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.