|
09.04.2009, 15:43 | #1 |
Участник
|
Распределение базы по разным дисковым массивам
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 |
Member
|
Я бы попробовал просто два файла данных создать на разных массивах (аналог JBOID, но из RAID массивов). И пусть СУБД сама решает что куда писать.
__________________
С уважением, glibs® |
|
09.04.2009, 18:12 | #3 |
Участник
|
мне кажется хаотичное распределение страниц по массивам на увеличении производительности никак не скажется. Хотя это можно рассматривать как вариант объединения 2х массивов (можно даже программный raid 0 сделать из 2х физических массивов)
__________________
--- SHiSHok |
|
09.04.2009, 22:33 | #4 |
MCITP
|
__________________
Zhirenkov Vitaly |
|
10.04.2009, 10:44 | #5 |
Участник
|
Почерпнул знание о том что разнесение индексов с данными по разным массивам не принципиально для исполнения запроса, так как в транзакции индекс и данные читаются последовательно.
Считаю что разнесение имеет смысл только с целью оптимизации I/O с массива, так как индекс содержит гораздо меньше полей и одна запись индекса имеет гораздо меньший размер чем строка данных. Соответственно чтение одного диапазона индекса и данных породит разный объем I/O, поэтому имеет смысл индекс располагать на массиве с меньшей пропускной способностью (если таковой имеется). Дальше, думаю, надо рассматривать схему данных акс, для оптимизации исполнения запросов. В первую очередь выносить на другой массив "подключаемые" таблицы, которые чаще участвуют в связках нежели самостоятельно: 1) Для торговли и логистики имеет место быть часто встречающаяся следующая связка: (*trans, *line) -> InventDim -> Invent*. Соответственно InventDim и (*line, *trans , invent*) разносятся по разным массивам. 2) можно разнести DocuRef с DocuValue. есть еще идеи?
__________________
--- SHiSHok |
|
11.04.2009, 19:31 | #6 |
Модератор
|
Давайте сначала определимся с целью -
а) "распределение ради распределения". Тут число вариантов стремится к бесконечности б) "отделить финансы от логистики". Да, можно. Только много ли операций в финансах, сильно напряшающих ХД? Знаю пару типа финансовых отчетов (с использованием корреспонденции), не более. Т.о., если просто "все поделить", половина ХД будет нагружена логистикой, половина - простаивать в) "разнести ради производительности". Интересная тема. Хочу увидеть реально работающую схему. Хочу увидеть сравнение с цифрами "до и после". Еще больше хочу увидеть методику сравнения. Пока видел только теории Цитата:
и пока склоняюсь к вынесению финансов на DATA2 (у меня сейчас все на DATA1). может фин деятельность в моменты построения отчетов не так сильно будет торговлю напрягать
Сам там, где возможно, стараюсь следовать принципу KISS principle
__________________
-ТСЯ или -ТЬСЯ ? |
|
10.04.2009, 11:29 | #7 |
Участник
|
sysDataBaseLog отдельно вынести.
|
|
10.04.2009, 12:09 | #8 |
Участник
|
Для Ax3.0 если выносить индексы в файловые группы, отличные от таблиц следует учесть ситуацию, с которой мы столкнулись. При изменении структуры таблицы Акса в момент синхронизации вернет индекс в ту же файловую группу, что и таблица. Поэтому, если приняли такой подход, то после синхронизации нужно опять выносить индексы.
|
|
10.04.2009, 13:04 | #9 |
Участник
|
Цитата:
Сообщение от Raven Melancholic
Для Ax3.0 если выносить индексы в файловые группы, отличные от таблиц следует учесть ситуацию, с которой мы столкнулись. При изменении структуры таблицы Акса в момент синхронизации вернет индекс в ту же файловую группу, что и таблица. Поэтому, если приняли такой подход, то после синхронизации нужно опять выносить индексы.
удалось вернуть индексы в прежнюю файловую группу в SQL Администрирование - переиндексация (и то index с типом Primary Key остался в новой группе) а какие версии Ax и сиквела у Вас?
__________________
--- SHiSHok |
|
10.04.2009, 12:40 | #10 |
Участник
|
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(); } И еще. Кластерные индексы хранятся вместе с данными, по-этому перенести их в другую файловую группу не получится 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, 14:38 | #11 |
Участник
|
|
|
10.04.2009, 13:07 | #12 |
Участник
|
Еще есть идея "модульно" разделить таблицы, например финансовые таблицы вынести на отдельный массив (можно менее производительный так как бухгалтерии скорость отклика не принципиальна в отличии от торговли)
__________________
--- SHiSHok |
|
10.04.2009, 15:19 | #13 |
Участник
|
Прирост производительности, скорее всего, будет минимальным, т.к. общая производительность дисковой подсистемы не увеличится. Совмещение на одном массиве файлов БД и логов транзакций не желательно, запись в логи производится on-line, а в БД отложенно. Занимался подобным разделением с 4-мя массивами в конечном варианте, но основной целью было увеличения дискового пространства. Единственное удобство - возможность мониторить загрузку дисков по выделенным табличкам в Performance Monitor
|
|
10.04.2009, 16:09 | #14 |
Участник
|
про лог согласен, так что будет скорее всего:
канал 1
__________________
--- SHiSHok Последний раз редактировалось SHiSHok; 10.04.2009 в 16:28. |
|
10.04.2009, 21:10 | #15 |
Участник
|
Цитата:
Для этого можно воспользоваться формой SysSqlSetup (доступ к ней есть через форму SQL Администрирование, но он включается только для ORACLE, хотя использовать можно и для MS SQL).
Цитата:
изменил файл.группу для индексов -> добавил поле -> синхронизировал -> удалил поле -> синхронизировал...
|
|
10.04.2009, 22:26 | #16 |
----------------
|
Перед разделением на группы стоит провести анализ, что и как напрягает вашу дисковую подсистему. Потом решить хотите ли вы ускорять какие-то конкретные процессы или "общую температуру по больнице".
Если решите переходить на 2005, то для него рекомендуют tempdb выносить на отдельный диск. |
|
11.04.2009, 12:43 | #17 |
Участник
|
Цитата:
Сообщение от Wamr
Перед разделением на группы стоит провести анализ, что и как напрягает вашу дисковую подсистему. Потом решить хотите ли вы ускорять какие-то конкретные процессы или "общую температуру по больнице".
Если решите переходить на 2005, то для него рекомендуют tempdb выносить на отдельный диск.
__________________
--- SHiSHok |
|
Теги |
ax3.0, file group, raid, sql, sql server, база данных, дисковый массив, производительность, файловые группы |
|
Похожие темы | ||||
Тема | Ответов | |||
Принципы построения базы данных | 11 | |||
Размер базы | 13 | |||
Распределение бюджетов в Аксапте | 2 | |||
Вопрос по журналу базы данных(лог) | 2 | |||
Создание полной копии Приложения и базы | 5 |
|