|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от Zabr
![]() В нашей базе CustInvoiceTrans - самая большая по занимаемому месту таблица (12.5 Гб, 14 млн.записей). В табличке заполнены текстовые поля:
(1) Name = описание из таблички InventTxt.txt (там или название номенклатуры, или более расширенный текст, в среднем ну пусть будет 50 знаков). (2) LineHeader = текст вида "Заказ на продажу N такой-то, клиент N такой-то", тоже считаем по 50 знаков. Вот если эти поля входят в индексы. Тогда да, вставка, обновление и удаление могут серьезно затормозиться. Кроме того, увеличивается время на пересчет статистики. Поэтому: если эти поля не входят в индексы - ну и пусть себе живут. Каши не просят. |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от mazzy
![]() Дык, ведь... Сам по себе объем не является тормозом для обычных операций. Разве что для полного бэкапа. Или для полной выборки из этих таблиц.
Вот если эти поля входят в индексы. Тогда да, вставка, обновление и удаление могут серьезно затормозиться. Кроме того, увеличивается время на пересчет статистики. Поэтому: если эти поля не входят в индексы - ну и пусть себе живут. Каши не просят. ![]()
__________________
Sergey Nefedov |
|
![]() |
#3 |
Участник
|
Да, мой вопрос именно об этом. Я не знаю, как Аксапта выделяет место в базе SQL для текстовых полей. Выдаеляет по фактически занимаемому месту? Тогда имеет смысл почистть. Выделяет по размерности поля, заданной в Daata dictionary? Тогда чистить бесполезно. Произойдет ли освобождение места при чистке уже существующих записей, или это место всё равно останется занятым, и экономия будет достигаться только на новых записях, если эти поля не заполнять? Освободит ли место дефрагментация, если сами записи не удалялись, а только чистились в них эти поля ?
|
|
![]() |
#4 |
Участник
|
По фактически занимаемому для строк, выравнянных влево.
http://axapta.mazzy.ru/lib/adjustment/ |
|
![]() |
#5 |
AX*****
|
Цитата:
Сообщение от mazzy
![]() По фактически занимаемому для строк, выравнянных влево.
http://axapta.mazzy.ru/lib/adjustment/ зы Я не в наезд.. просто программисты разные бывают. ![]()
__________________
О, как беден, как груб наш русский язык! [c] А.С.Пушкин |
|
![]() |
#6 |
Участник
|
Цитата:
Цитата:
Сообщение от Zabr
![]() ...Произойдет ли освобождение места при чистке уже существующих записей, или это место всё равно останется занятым, и экономия будет достигаться только на новых записях, если эти поля не заполнять? Освободит ли место дефрагментация, если сами записи не удалялись, а только чистились в них эти поля ?...
А вообще не проще ли удалить поля физически, в смысле, повесить на какой-нибудь конфигурационный ключ и отключить его, вель я как понял вы не собираетесь дальше пользоваться этим полями.
__________________
Sergey Nefedov Последний раз редактировалось SRF; 14.08.2009 в 14:05. Причина: P.S. Упс. Опередили. |
|
|
За это сообщение автора поблагодарили: mazzy (2), Aleksey_M (2). |
![]() |
#7 |
Участник
|
Цитата:
Фактически занятое место останется прежним. А вот размер базы действительно может уменьшить. SQL хранит данные в страницах. Причем, SQL сознательно заполняет страницы не полностью (тут длинная теория почему именно так. см. BOL). А с диска читаются именно страницы (на самом деле наборы из подряд идущих страниц - кластера). Это значит, что если страницы заполненны не полностью, то диск все равно тратит время и ресурсы на чтение полного кластера. Поэтому чем выше степень заполнения страниц, чем меньше фрагментация, тем меньше дисковых операций будет выполнено для чтения того же набора данных. (Однако высокая степень заполнения может ухудшить время операций вставки и обновления. См. все ту же теорию). Насколько я помню, у вас была очень высокая степень фрагментированности данных. Дефрагментация вам действительно может помочь. Однако дефрагментацию индексов и таблиц с кластерными индексами выполняет ребилд индексов. А он у вас периодически проводится, насколько я помню. Т.е. остается дефрагментация неиндексированных данных. В принципе провести можно. Но у вас сильного эффекта от этой операции я бы не ожидал. |
|
|
За это сообщение автора поблагодарили: Zabr (3). |
![]() |
#8 |
Участник
|
Цитата:
По вашему вопросу - если очистить эти поля, то мгновенного эффекта это не даст - место останеся выделенным. Чтобы его отдать в пользование нужно как минимум провести реорганизацию таблички - перестроить индексы (rebuild)? а лучше и всех остальных. Там тоже есть ньюансы - есть на таблтчке кластерный индекс или нет, установленный fillfactor ну и т.д. Мое ИМХО - эффекта на 12Г таблице будет ну очень мало, а гемора прилично. Посмотрите индекса - может есть лишние, они много места занимают. ps Пока писал - уже 2 сообщения похожих ;-) |
|
Теги |
ax4.0, custinvoicetrans, база данных, как правильно, полезное, сжатие, сжатие базы, чистка |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|