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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.08.2009, 13:44   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Zabr Посмотреть сообщение
В нашей базе CustInvoiceTrans - самая большая по занимаемому месту таблица (12.5 Гб, 14 млн.записей). В табличке заполнены текстовые поля:
(1) Name = описание из таблички InventTxt.txt (там или название номенклатуры, или более расширенный текст, в среднем ну пусть будет 50 знаков).
(2) LineHeader = текст вида "Заказ на продажу N такой-то, клиент N такой-то", тоже считаем по 50 знаков.
Дык, ведь... Сам по себе объем не является тормозом для обычных операций. Разве что для полного бэкапа. Или для полной выборки из этих таблиц.

Вот если эти поля входят в индексы. Тогда да, вставка, обновление и удаление могут серьезно затормозиться. Кроме того, увеличивается время на пересчет статистики.

Поэтому: если эти поля не входят в индексы - ну и пусть себе живут. Каши не просят.
__________________
полезное на axForum, github, vk, coub.
Старый 14.08.2009, 13:47   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от mazzy Посмотреть сообщение
Дык, ведь... Сам по себе объем не является тормозом для обычных операций. Разве что для полного бэкапа. Или для полной выборки из этих таблиц.

Вот если эти поля входят в индексы. Тогда да, вставка, обновление и удаление могут серьезно затормозиться. Кроме того, увеличивается время на пересчет статистики.

Поэтому: если эти поля не входят в индексы - ну и пусть себе живут. Каши не просят.
Проблема не в производительности, а в занимаемом месте на диске

Цитата:
Сообщение от Zabr Посмотреть сообщение
...
Вопрос: даст ли реальную экономию места в базе полная очистка этих полей, и как ее можно было бы грубо оценить ?
__________________
Sergey Nefedov
Старый 14.08.2009, 13:53   #3  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от SRF Посмотреть сообщение
Проблема не в производительности, а в занимаемом месте на диске
Да, мой вопрос именно об этом. Я не знаю, как Аксапта выделяет место в базе SQL для текстовых полей. Выдаеляет по фактически занимаемому месту? Тогда имеет смысл почистть. Выделяет по размерности поля, заданной в Daata dictionary? Тогда чистить бесполезно. Произойдет ли освобождение места при чистке уже существующих записей, или это место всё равно останется занятым, и экономия будет достигаться только на новых записях, если эти поля не заполнять? Освободит ли место дефрагментация, если сами записи не удалялись, а только чистились в них эти поля ?
Старый 14.08.2009, 13:59   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Zabr Посмотреть сообщение
Выдаеляет по фактически занимаемому месту?
По фактически занимаемому для строк, выравнянных влево.
http://axapta.mazzy.ru/lib/adjustment/
__________________
полезное на axForum, github, vk, coub.
Старый 16.08.2009, 22:02   #5  
aidsua is offline
aidsua
AX*****
Аватар для aidsua
 
106 / 40 (2) +++
Регистрация: 28.09.2005
Адрес: 2:463/Kyiv
Цитата:
Сообщение от mazzy Посмотреть сообщение
По фактически занимаемому для строк, выравнянных влево.
http://axapta.mazzy.ru/lib/adjustment/
..необходимо добавлять "если не изменено значение на вправо", т.е. уточнить были ли на этих полях подобные модификации.

зы Я не в наезд.. просто программисты разные бывают.
__________________
О, как беден, как груб наш русский язык! [c] А.С.Пушкин
Старый 14.08.2009, 14:04   #6  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от Zabr Посмотреть сообщение
...Выдаеляет по фактически занимаемому месту? Тогда имеет смысл почистть. Выделяет по размерности поля, заданной в Daata dictionary? Тогда чистить бесполезно...
Это зависит от выравнивания, используемого в строковых полях, поскольку на SQL AX создает текстовые поля как varchar, т.е. если выравнивание левое то будет занимать фактически, если правое - то полная размерность поля

Цитата:
Сообщение от Zabr Посмотреть сообщение
...Произойдет ли освобождение места при чистке уже существующих записей, или это место всё равно останется занятым, и экономия будет достигаться только на новых записях, если эти поля не заполнять? Освободит ли место дефрагментация, если сами записи не удалялись, а только чистились в них эти поля ?...
Тут не уверен, но по идее в случае левого выравнивания полей должно произойти освобождение места, кстати попробуйте проверить на какой-нибудь тестовой табличке.

А вообще не проще ли удалить поля физически, в смысле, повесить на какой-нибудь конфигурационный ключ и отключить его, вель я как понял вы не собираетесь дальше пользоваться этим полями.
__________________
Sergey Nefedov

Последний раз редактировалось SRF; 14.08.2009 в 14:05. Причина: P.S. Упс. Опередили.
За это сообщение автора поблагодарили: mazzy (2), Aleksey_M (2).
Старый 14.08.2009, 14:05   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Zabr Посмотреть сообщение
Освободит ли место дефрагментация, если сами записи не удалялись, а только чистились в них эти поля ?
Не то, чтобы освободит.
Фактически занятое место останется прежним. А вот размер базы действительно может уменьшить.

SQL хранит данные в страницах. Причем, SQL сознательно заполняет страницы не полностью (тут длинная теория почему именно так. см. BOL).
А с диска читаются именно страницы (на самом деле наборы из подряд идущих страниц - кластера).

Это значит, что если страницы заполненны не полностью, то диск все равно тратит время и ресурсы на чтение полного кластера. Поэтому чем выше степень заполнения страниц, чем меньше фрагментация, тем меньше дисковых операций будет выполнено для чтения того же набора данных. (Однако высокая степень заполнения может ухудшить время операций вставки и обновления. См. все ту же теорию).

Насколько я помню, у вас была очень высокая степень фрагментированности данных. Дефрагментация вам действительно может помочь.

Однако дефрагментацию индексов и таблиц с кластерными индексами выполняет ребилд индексов. А он у вас периодически проводится, насколько я помню. Т.е. остается дефрагментация неиндексированных данных. В принципе провести можно. Но у вас сильного эффекта от этой операции я бы не ожидал.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Zabr (3).
Старый 14.08.2009, 14:12   #8  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от Zabr Посмотреть сообщение
Да, мой вопрос именно об этом. Я не знаю, как Аксапта выделяет место в базе SQL для текстовых полей...
Вообще вопрос выделения места в БД непростой. С формальной точки зрения все строковые (не MEMO) поля хранятся как тип VARCHAR - т.е. по фактически занимаемому месту, но там тоже не все просто и есть ньюансы, связанные с организацией страниц, экстентов и т.п.
По вашему вопросу - если очистить эти поля, то мгновенного эффекта это не даст - место останеся выделенным. Чтобы его отдать в пользование нужно как минимум провести реорганизацию таблички - перестроить индексы (rebuild)? а лучше и всех остальных. Там тоже есть ньюансы - есть на таблтчке кластерный индекс или нет, установленный fillfactor ну и т.д.
Мое ИМХО - эффекта на 12Г таблице будет ну очень мало, а гемора прилично. Посмотрите индекса - может есть лишние, они много места занимают.
ps Пока писал - уже 2 сообщения похожих ;-)
Теги
ax4.0, custinvoicetrans, база данных, как правильно, полезное, сжатие, сжатие базы, чистка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Метод LineAmountInclTax() на custInvoiceTrans Logger DAX: Программирование 6 05.07.2017 09:31
Создание CustInvoiceJour, CustInvoiceSalesLink, CustInvoiceTrans from X++ DmitrySincerity DAX: Программирование 12 15.12.2008 18:40
Хочу перейти на аксапту, посоветуйте с чего начать? Дедушка DAX: Прочие вопросы 4 04.04.2008 22:34
CustInvoiceTrans кластерный индекс Tarrash DAX: Программирование 25 25.03.2008 10:25
Посоветуйте как мне сделать так чтобы номенклатура в отчете группировалась Hans DAX: Программирование 4 27.12.2005 15:17
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:56.