Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
Коллеги, в ближайшее время я планирую на ряде таблиц урезать избыточные типы данных (например, с year to fraction(5) до date) и удалить часть столбцов. Данная операция планируется как: Код: plaintext В связи с этим встают вопросы физической организацией обновлённых таблиц: 1. Для обновлённой таблицы потребуется меньше места - изменится ли количество выделенных под неё страниц автоматически? 2. Как я понимаю, будет определённая фрагментация данных, ведь заполнение страниц будет меньше филлфактора - нужно ли от этого избавляться или фрагментированные данные будут автоматически добиваться до филлфактора? Если есть какая-то стандартная методика урезания избыточных данных, не связанная с пересозданием таблиц целиком - поделитесь, пожалуйста! Заранее большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 11:53 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
Ок, пока ссуть да дело, кое-какие мысли пришли в голову: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 18:06 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
Почитайте performance Guide, раздел Altering a Table Definition Altering a Table Definition The database server uses one of several algorithms to process an ALTER TABLE statement in SQL: n Slow alter n In-place alter n Fast alter В зависимости от изменений, у вас будет либо slow alter ( с созданием копии таблицы), либо in-place alter (данные будут модифицироваться сервером по мере надобности, для полной модицикации надо запустить что-то типа update table where a=a ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 20:42 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
fill-factor относится к индексу, а не к даннным. Данные заполняют страницу "до упора". При slow alter число занятых страниц, скорей всего, изменится. При alter in-place - нет. В таком вот аксепте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 20:44 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
Выбегалло При slow alter число занятых страниц, скорей всего, изменится. При alter in-place - нет. В таком вот аксепте Спасибо большое! По факту тестирования вариантов постараюсь отписать, как всё происходило. Кстати, возник ещё вопрос - в некоторых случаях есть проблемы конвертации: Код: plaintext Код: plaintext Может, подскажете, как решить такую проблему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 21:24 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
> с fraction(5) до date > удалить часть столбцов. > изменится ли автоматически? Если я что-то понимаю в этом деле, такие внутренние вещи совершенно не докуметированы, поэтому поможет только эксперимент (наверное, к сожалению). Например, не очень давно я менял паре десяков таблиц тип первичного ключа (INT не хватило), а с ним и все REFERENCES на DEC( 12, 0 ), так знаешь, результат превзошёл все ожидания (я тоже использовал ALTER MODIFY) - на миллионных таблицах всё произошло практически мнгновенно! Но и размеры таблиц никак не изменились. А вот, помню, приходилось менять CHAR на VARCHAR (или наоборот, уже не помню), так это просто кирдык - до трёх суток один ALTER работал - зато фрагментация идеальная! :-) Так что... > филлфактор Это не в тему. Тут про индексы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 22:10 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
Leonid VorontsovЕсли я что-то понимаю в этом деле, такие внутренние вещи совершенно не докуметированы, поэтому поможет только эксперимент (наверное, к сожалению). Например, не очень давно я менял паре десяков таблиц тип первичного ключа (INT не хватило), а с ним и все REFERENCES на DEC( 12, 0 ), так знаешь, результат превзошёл все ожидания (я тоже использовал ALTER MODIFY) - на миллионных таблицах всё произошло практически мнгновенно! Но и размеры таблиц никак не изменились. А вот, помню, приходилось менять CHAR на VARCHAR (или наоборот, уже не помню), так это просто кирдык - до трёх суток один ALTER работал - зато фрагментация идеальная! :-) Так что... Как раз достаточно неплохо документировано. Как минимум читай все то же приведенное Выбегалло ВыбегаллоПочитайте performance Guide, раздел Altering a Table Definition Altering a Table Definition The database server uses one of several algorithms to process an ALTER TABLE statement in SQL: n Slow alter n In-place alter n Fast alter Поэтому и твои результаты конвертации сильно отличались по времени, так как в одном случае все изменения происходили только в описании таблицы и физически ее страницы не перезаписывались (это перезаписывание просто отложено во времени и будет происходить по мере обычной модификации страниц и т.о. одновременно будут существовать разные версии страниц одной таблицы), а в другом случае требовалась полная перезапись всех страниц таблицы. Если в первом случае (In-place alter) есть время и желание привести все страницы к одной структуре то: Выбегалло... для полной модицикации надо запустить что-то типа update table where a=a ). Хотя я обычно предпочитаю init fragment в тот же самый dbspace. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2006, 18:08 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
ага init fragment рулит, но на не очень больших объемах. а еще есть хорошее правило, прежде чем делать такие вещи на продуктивной БД ВСЕГДА надо проводить адекватный эксперимент вне зависимости от полноты документации по предполагаемым действиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2006, 20:57 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
cprага init fragment рулит, но на не очень больших объемах. А что такое "не очень больших объемах" ? И почему ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 13:29 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
vasilis cprага init fragment рулит, но на не очень больших объемах. А что такое "не очень больших объемах" ? И почему ? В своей практике я обычно таблицы до 4 Гигов именно Альтер фрагментом перебрасываю. А вот скажем те, которые десятки Гиг занимают - предпочитаю через выгрузку-удаление-загрузку. Дело в том, что альтер фрагмент по видимому полностью перестраивает индексы (или перепроверяет). Во всяком случае наблюдение за поведением сервера наводит именно на эти мысли т.к. сначала идет чтение из чанков старого дбспэйса в новое, а затем ситывание уже перенесенных данных и сортировки. Суммарно выигрыша в производительности никакого (есть подозрение что медленнее), при том что процесс переноса не разделим на этапы. Например в случае перевыгрузки допустим по какой то причине отключается питание во всем здании и мне нужно тушить сервер, тогда я к примеру не успеваю достроить один индекс, а в случае с альтерфрагментом прерывание процесса отбрасывает ДБА к началу процесса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 14:25 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
cprДело в том, что альтер фрагмент по видимому полностью перестраивает индексы (или перепроверяет).конечно альтер фрагмент изменяет индексы, ведь rowid'ы меняются cprага init fragment рулит, но на не очень больших объемах.ага, на больших еще может длинная транзакция случиться при перекладывании ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 14:52 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
cpr[Дело в том, что альтер фрагмент по видимому полностью перестраивает индексы (или перепроверяет). Во всяком случае наблюдение за поведением сервера наводит именно на эти мысли т.к. сначала идет чтение из чанков старого дбспэйса в новое, а затем ситывание уже перенесенных данных и сортировки. Конечно же, индексы перестраиваются, ведь данные физически изменяют свое местоположение. Но зачем же перестраивать индексы все время ? Значительно проще выключить индексы на период перезаписи и затем включить, для однократной перестройки. Будет значительно быстрее. Конечно же, онлайновый режим работы (системы в целом) страдает, но то же самое получится и при выгрузке-загрузке. К сожалению, уже упомянутая проблема длинной транзакции значительно более тяжелая и о ней я успел забыть (спасибо Тане за напоминание). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 16:41 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
vasilis cpr[Дело в том, что альтер фрагмент по видимому полностью перестраивает индексы (или перепроверяет). Во всяком случае наблюдение за поведением сервера наводит именно на эти мысли т.к. сначала идет чтение из чанков старого дбспэйса в новое, а затем ситывание уже перенесенных данных и сортировки. Конечно же, индексы перестраиваются, ведь данные физически изменяют свое местоположение. Но зачем же перестраивать индексы все время ? Значительно проще выключить индексы на период перезаписи и затем включить, для однократной перестройки. Будет значительно быстрее. Конечно же, онлайновый режим работы (системы в целом) страдает, но то же самое получится и при выгрузке-загрузке. К сожалению, уже упомянутая проблема длинной транзакции значительно более тяжелая и о ней я успел забыть (спасибо Тане за напоминание). Выключить, это значит сделать drop index ? Т.е. сначала дропнуть индексы, затем сделать альтер фрагмент и создать их? Вообще альтер фрагмент меня привлек именно тем, что не надо следить за индексами и ссылками на переносимую таблицу. ИМНО если убивать индексы, а затем их создавать (плюс ссылки) не сильно от перевыгрузки отличается. Выгрузка загрузка отнимает процентов 20-25 от всего процесса, можно конечно сэкономить еще 10-12. Плюс еще то что на файловой системе не надо место разыскивать. Надо будет попробовать. Про отключение журнала само-собой, у меня еще и HADR надо отключать, а потом заново его синхронизировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2006, 18:17 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
cpr vasilis Значительно проще выключить индексы на период перезаписи и затем включить, для однократной перестройки. Будет значительно быстрее. Выключить, это значит сделать drop index ? Т.е. сначала дропнуть индексы, затем сделать альтер фрагмент и создать их? Нет, конечно. Я же написал "выключить", т.е. сделать Код: plaintext А дропнуть в переводе на русский звучит как "удалить". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 14:54 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
vasilis cpr vasilis Значительно проще выключить индексы на период перезаписи и затем включить, для однократной перестройки. Будет значительно быстрее. Выключить, это значит сделать drop index ? Т.е. сначала дропнуть индексы, затем сделать альтер фрагмент и создать их? Нет, конечно. Я же написал "выключить", т.е. сделать Код: plaintext А дропнуть в переводе на русский звучит как "удалить". Подозреваю, что такое чудо на моей 7.31 недоступно, а здесь версия сервера тоже не звучала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 19:53 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
cpr Подозреваю, что такое чудо на моей 7.31 недоступно, а здесь версия сервера тоже не звучала. доступно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2006, 00:06 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
Документация рулит! И правда доступно. пошел пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2006, 17:02 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
vasilis cpr vasilis Значительно проще выключить индексы на период перезаписи и затем включить, для однократной перестройки. Будет значительно быстрее. Выключить, это значит сделать drop index ? Т.е. сначала дропнуть индексы, затем сделать альтер фрагмент и создать их? Нет, конечно. Я же написал "выключить", т.е. сделать Код: plaintext А дропнуть в переводе на русский звучит как "удалить". Попробовал отключить индексы и включить - получилось. Но вот беда - альтер фрагмент с отключенными индексами работать не хочет. =========================================================== -949 Unable to alter fragmentation scheme when indexes disabled. An attempt has been made to alter the fragmentation scheme on a table that has disabled indexes. This is not allowed. The action is aborted. =========================================================== ODS 7.31 FD6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2006, 18:26 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
кстати в 4367.pdf ничего не прописано про то, как будет реагировать HADR на отключение индексов. Кто нибудь пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2006, 09:21 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
Это легко проверить на практике, неужели так сложно поднять тестовую систему с HADR ? Я бы проверил, но пока что в отпуске. Всегда надо проверять то что написано или сказано... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2006, 19:19 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
cprкстати в 4367.pdf ничего не прописано про то, как будет реагировать HADR на отключение индексов. Кто нибудь пробовал? а что тут особенно реагировать? При включении индексов обратно они будут перестроены и соответственно отосланы на вторичный севрер. Не проверяла :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 09:34 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
К сожалению при наличии ошибки 949 на попытку альтерфрагмента с выключенными индексами интерес к реакции HADR на отключение индексов переходит в плоскость сугубо теоретическую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 10:10 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
Тан cprкстати в 4367.pdf ничего не прописано про то, как будет реагировать HADR на отключение индексов. Кто нибудь пробовал? а что тут особенно реагировать? При включении индексов обратно они будут перестроены и соответственно отосланы на вторичный севрер. Не проверяла :-) дааа... а вы попробуйте взять табличку строк на миллионов 30-40 и попробуйте. Я и без хадра обязательно провожу эксперименты, прежде чем приступать, а с ним часто проявляются неожиданные особенности при больших объемах данных. Так например без хадра удаление индекса происходит всегда быстро для больших и малых таблиц, а вот с хадром на больших таблицах все иначе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 13:19 |
|
||
|
дефрагментация данных
|
|||
|---|---|---|---|
|
#18+
cpr Тан cprкстати в 4367.pdf ничего не прописано про то, как будет реагировать HADR на отключение индексов. Кто нибудь пробовал? а что тут особенно реагировать? При включении индексов обратно они будут перестроены и соответственно отосланы на вторичный севрер. Не проверяла :-) дааа... а вы попробуйте взять табличку строк на миллионов 30-40 и попробуйте. Я и без хадра обязательно провожу эксперименты, прежде чем приступать, а с ним часто проявляются неожиданные особенности при больших объемах данных. Так например без хадра удаление индекса происходит всегда быстро для больших и малых таблиц, а вот с хадром на больших таблицах все иначе. Я не говорила, что создание индексов с HADR происходит так же, как и без HADR . Я говорю - он не будет реагировать на отключение-включение по особенному . Отключит, а потом пересоздаст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 17:01 |
|
||
|
|

start [/forum/topic.php?fid=44&fpage=48&tid=1608593]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 378ms |

| 0 / 0 |
