Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
ASE 12.5 Ранее существовала одна база данных, содержащая множество небольших таблиц (до 10000 записей) и две таблицы с более чем 100 млн. записей. Для удобства бэкапирования эти две большие таблицы были перенесены в отдельную БД, а аналогичные таблицы в старой БД удалены. Можно ли "сжать" старую БД, т.е. уменьшить размер выделенного под нее ранее пространства и как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 14:09 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
До недавнего времени такой возможности вообще не было (кроме выгрузки данных с помощью BCP, создания новой БД меньшего размера и загрузки данных туда). В последних версиях 12.5 (это либо .1, либо .2 ) вроде бы что-то такое сделали, чтобы это было возможно, или я путаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 15:00 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
Вариант с созданием новой БД и выгрузкой данных через bcp очень трудоемок, таблиц около 500, есть memo поля, timestamp и прочая фигня. Это разве такая редкая ситуация, что нужно уменьшить размер сегмента? И Sybase не чешется никак? Пора на Ораклу наверно переходить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 15:08 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
Это разве такая редкая ситуация, что нужно уменьшить размер сегмента? И Sybase не чешется никак? Пора на Ораклу наверно переходить... Оффтоп, это так просто, раз и на Оракл, раз и на MSSQL? И еще оффтоп: это все очень напоминает такую вещь: раз у ОС нет нормального дефрагментатора, значит надо ставить другую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 15:39 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
По поводу Оракла это эмоции - такой вариант действительно рассматривается, но конечно по другим причинам. Я понять хочу ситуацию. почему однажды выделив место под базу (перезаложились или админ чего попутал случайно), нельзя это место высвободить? А то имеем сейчас следующее - 80 Гигов болтаются в воздухе, но места свободного на сервере нет, требуется покупка новых дисков.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 16:31 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
Воспользуйся утилитой миграции, в 12.5 она появилась или посторонними продуктами: Embarcadero ChangeManager или MS DTS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 16:54 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
Чайник в SybaseВариант с созданием новой БД и выгрузкой данных через bcp очень трудоемок, таблиц около 500, есть memo поля, timestamp и прочая фигня. Да нет, на самом деле, не так это и сложно. Делается все на полном автомате с использованием (например) dbschema.pl. Чайник в Sybase Это разве такая редкая ситуация, что нужно уменьшить размер сегмента? И Sybase не чешется никак? Ну, как-то так повелось издавна... MS вот сделал, а Sybase как-то не удосужился. На самом деле, это довольно трудная и долгая операция . Для того, чтобы уменьшить БД, надо понять, какие страницы не заняты, если есть незанятые страницы не в конце девайса - их надо наверное как-то перенести в конец, в общем - грубо говоря, перетряхнуть всю базу. MS кстати для того, чтобы реализовать это, пришлось полностью пересмотреть архитектуру хранения данных (они ушли от понятия device). И , поверь мне - не самая это важная функция в СУБД. Хотя и удобная иногда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 20:27 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
Чайник в SybaseЯ понять хочу ситуацию. почему однажды выделив место под базу (перезаложились или админ чего попутал случайно), нельзя это место высвободить? Если бы ты знал, как организуется хранение данных в БД ASE, то это было бы понятно (если знаешь- ну извини, значит я не прав ) Страницы данных - основное понятие при хранении данных в ASE- нумеруются сквозняком по всем девайсам, выстроенным в порядке следования VDEVNO. Идут девайсы друг за другом, внутри девайса N страниц, от адреса K до K + N -1. Далее страницы следующего девайса и т.д. Номера страниц входят в номера записей, которые записаны в индексах и еще кое-где. Номера страниц также записаны в sysindexes как начала цепочек и в Object Allocation Map и в страницах распределения (первые страницы на каждом экстенте) и ... ну ты уже наверное понял, что очень много где. Короче, я даже не прав был в другом посте в топике, тут не одну БД надо перешерстить - а ровно ВСЕ на сервере, ну разве что только master и другие системные БД можно не трогать. Все страницы перенумеровать, все связи переписать. Оччень сложно все это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2004, 20:44 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за ответы, теперь боле-менее понятно. Действительно, я рассматривал ситуацию с позиции MS SQL, с которым знаком лучше, чем с Sybase. Попробуем перенести данные в новую БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2004, 10:09 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
А я вот тут подумал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 00:35 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
так, сорри. ASE 11.9.2.6. (версия) Собственно, мысль: Допустим, есть некая "раздутая" БД (как у меня), в которой полно freepages, лежащая на 2-ух девайсах- 30 и 20 ГБ каждый (ullocated ёмкость). Притом, 20 Гб девайс на половину пуст (или полон, это уже в зависимости от уровня оптимизма;). Что если я сдамплю эту базу и разресторю её в такую же по размеру, но, скажем, на 12 девайсах? dev0-30 GB dev1-2 Gb dev3-2 GB dev4-2 GB dev5-2 GB dev6-2 GB dev7-2 Gb dev8-2 GB dev9-2GB dev10-2 GB dev11-2 GB По идее, должно получиться, что некоторые девайсы (если смотреть в sysusages) будут ПОЛНОСТЬЮ не задействованы (т.е. не содержать заполненных страниц). Вопрос к знатокам: что мне может помешать грохнуть такие девайсы в sysusages и sysdevices? и ещё подвопрос: когда segmap в sysusages =0 - что это значит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 00:44 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
Чайник в SybaseВариант с созданием новой БД и выгрузкой данных через bcp очень трудоемок, таблиц около 500, есть memo поля, timestamp и прочая фигня. Это разве такая редкая ситуация, что нужно уменьшить размер сегмента? И Sybase не чешется никак? Пора на Ораклу наверно переходить... И в чем проблема ? хоть 500 000 таблиц... пишем курсор для генерирования команд bcp out & bcp in для каждой таблицы результат выполнения курсора разделяем на два батника - первый выливает данные в _бинарном_ (native) формате, другой - заливает вопрос только во времени работы на конкретной БД (ну и в свободном дисковом пространстве), больше ни в чём проблемы не вижу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 13:11 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
grinilandтак, сорри. ASE 11.9.2.6. (версия) Вопрос к знатокам: что мне может помешать грохнуть такие девайсы в sysusages и sysdevices? незнание пароля SA ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 13:15 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
Sa- я сам Sa=) А если серьёзно? Кстати, спасибо за линк на англоязычную страничку- я думал почти в правильном направлении. Вот только не догнал, зачем segmap ставить в 0, если мы тут же удалим эту запись (т.е. догнал конечно, что без 0 она может в тот же момент принять данные) Ну и как перемещать таблицы-тоже не совсем понял.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 15:46 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
sybdba[И в чем проблема ? хоть 500 000 таблиц... пишем курсор для генерирования команд bcp out & bcp Да не надо курсоров. DBSchema.pl все отлично делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2005, 22:38 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
MasterZiv sybdba[И в чем проблема ? хоть 500 000 таблиц... пишем курсор для генерирования команд bcp out & bcp Да не надо курсоров. DBSchema.pl все отлично делает. :) .pl - подразумевает наличие perl-обработчика (либо под винды, либо юниксовый)... а BCP -универсальна :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 17:07 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
grinilandSa- я сам Sa=) А если серьёзно? Кстати, спасибо за линк на англоязычную страничку- я думал почти в правильном направлении. Вот только не догнал, зачем segmap ставить в 0, если мы тут же удалим эту запись (т.е. догнал конечно, что без 0 она может в тот же момент принять данные) Ну и как перемещать таблицы-тоже не совсем понял.. в смысле ? "перемещать таблицы" ? если имеется ввиду переливка данных между таблицами, то всё просто : 1) генерим скрипт таблицы 2) выливаем из нее данные (bcp); если будем переносить данные в пределах одной платформы (операционки), то используем native формат, иначе - текстовый 3) убиваем таблицу - опционально, допустим ее надо перенести на другой девайс 4) создаем таблицу из скрипта 5) заливаем данные -- вуаля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 17:17 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
MasterZiv Чайник в SybaseЯ понять хочу ситуацию. почему однажды выделив место под базу (перезаложились или админ чего попутал случайно), нельзя это место высвободить? Если бы ты знал, как организуется хранение данных в БД ASE, то это было бы понятно (если знаешь- ну извини, значит я не прав ) Страницы данных - основное понятие при хранении данных в ASE- нумеруются сквозняком по всем девайсам, выстроенным в порядке следования VDEVNO. Идут девайсы друг за другом, внутри девайса N страниц, от адреса K до K + N -1. Далее страницы следующего девайса и т.д. Номера страниц входят в номера записей, которые записаны в индексах и еще кое-где. Номера страниц также записаны в sysindexes как начала цепочек и в Object Allocation Map и в страницах распределения (первые страницы на каждом экстенте) и ... ну ты уже наверное понял, что очень много где. Короче, я даже не прав был в другом посте в топике, тут не одну БД надо перешерстить - а ровно ВСЕ на сервере, ну разве что только master и другие системные БД можно не трогать. Все страницы перенумеровать, все связи переписать. Оччень сложно все это. если девайс был случайно добавлен, то его можно вручную грохнуть ... если на девайсе уже есть данные, то их надо переложить на другие девайсы и грохнуть запись в master..sysusages об этом девайсе (всё вручную!) этой базы если ненужный девайс был последним, который добавлен к базе, то всё просто, иначе - большие проблемы 2MasterZiv: не так сложно как кажется, правда приходилось делатьэто всего один раз ;) и не помню - на пустой БД (лишний девайс указан в середине скрипта генерения большой БД) или полной... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 17:22 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
grinilandтак, сорри. ASE 11.9.2.6. (версия) Собственно, мысль: Допустим, есть некая "раздутая" БД (как у меня), в которой полно freepages, лежащая на 2-ух девайсах- 30 и 20 ГБ каждый (ullocated ёмкость). Притом, 20 Гб девайс на половину пуст (или полон, это уже в зависимости от уровня оптимизма;). Что если я сдамплю эту базу и разресторю её в такую же по размеру, но, скажем, на 12 девайсах? dev0-30 GB dev1-2 Gb dev3-2 GB dev4-2 GB dev5-2 GB dev6-2 GB dev7-2 Gb dev8-2 GB dev9-2GB dev10-2 GB dev11-2 GB По идее, должно получиться, что некоторые девайсы (если смотреть в sysusages) будут ПОЛНОСТЬЮ не задействованы (т.е. не содержать заполненных страниц). Вопрос к знатокам: что мне может помешать грохнуть такие девайсы в sysusages и sysdevices? да ничего не помешает ... допустим у тебя "освободились" девайсы 10 и 11 тогда сделать следующее: sp_dropsegment 'default',база,'dev10' go sp_dropsegment 'system',база,'dev10' go sp_dropsegment 'default',база,'dev11' go sp_dropsegment 'system',база,'dev11' go в master..sysusages для твоей БД появится значение 0 в segmap теперь девайсы можно вычищать из sysusages и передергивать сервер НО !!! ОБЯЗАТЕЛЬНО!!!! все действия сначала проделать на тестовом сервере, иметь бекап базы (+ проверить что из него база поднимается, и не успокаиваться только на снятии дампа) если после рестарта сервера тестовая база отрекаверилась, проверки по ней не дали ошибок (допустим dbcc checkdb), то можно приступать и к боевой БД grinilandи ещё подвопрос: когда segmap в sysusages =0 - что это значит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 17:35 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
griniland когда segmap в sysusages =0 - что это значит? это значит, что хоть указанный девайс (или фрагмент девайса) и числится за базой, но реально распределение данных на него не идет - ни один сегмент на нём не расположен Забыл сказать: перед манипуляциями с боевой/тестовой базой и БД master погасить сервер и отложить в сторонку файл master.dat - это _ОБЯЗАТЕЛЬНО_, если не хочется по случайности остаться у разбитого корыта (читай : мёртвый сервер) + буржуи советуют держать распечатку sysusages, sysdevices, sysdatabase и т.п. на бумаге - но это на любителя ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2005, 17:43 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
Sybda, огромное спасибо за информацию... Правда, кое-что мне кажется спорным, щаз спрошу;). С удалением девайсов вроде-как разобрался, решил ничего не удалять, 8 лишних гигов- не так много, пущу под transaction log (у меня иногда бывает 2,5 ГБ за 3 часа его генерится, запас не помешает) Теперь вопросы сложнее... 1. sp_dropsegment @segname, @dbname, @devname-- разьве приводит к ФИЗИЧЕСКОМУ освобождению девайса? Т.е. данные реально переписываются с него на оставшиеся выделенные под данный сегмент девайсы или просто делается пометочка в sysusages? (меняется segmap, если на девайсе более никто не размещается- типа 0)-- новые данные более не пишутся на такой девайс, а старые продолжают на нём гнездиться. Вопрос принципиальный...читал текст процедуры sp_dropsegment--там вроде нет никаких "перемещающих" команд. Куча проверок на валидность, transaction isolation level 0, и перебивка segmap'a в sysusages..может, я чего упустил? 2. Ещё до моего вступления в Sa;) у нас произошло "перемешивание" данных и лога..Судя по всему, часть данных "упала" в сегмент лога- забавно смотреть, как после truncate transaction log with no backup в logsegment'е остаётся "висеть" 5Гб непоймешь чего (segmap чистая 4, никаких 7!) Это при том, что через Централ видно, что таблица syslogs занимает порядка 100 кб и никаких других объектов не числится (ни таблиц, ни индексов). С этой ботвой что-нибудь можно поделать? (моё решение- залить дамп с "кривой" разбивкой в тестовую базу данных, размещенную на небольших девайсах (30 гб+ 20 штук по 1 гб), сделать truncate transaction, залезть в syslogs и перебить segmap'ы тем девайсам, выделенным под лог, на которых нет свободного места (т.е. там нифига не лог), в 4-рочки. 3. На закуску: а когда segmap=1- это что? Не нашел в RTFM=) Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2005, 00:26 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
griniland 1. sp_dropsegment @segname, @dbname, @devname-- разьве приводит к ФИЗИЧЕСКОМУ освобождению девайса? Т.е. данные реально переписываются с него на оставшиеся выделенные под данный сегмент девайсы или просто делается пометочка в sysusages? (меняется segmap, если на девайсе более никто не размещается- типа 0)-- новые данные более не пишутся на такой девайс, а старые продолжают на нём гнездиться. Вопрос принципиальный...читал текст процедуры sp_dropsegment--там вроде нет никаких "перемещающих" команд. Куча проверок на валидность, transaction isolation level 0, и перебивка segmap'a в sysusages..может, я чего упустил? не приводит к физическому освобождению (ФО) :) таким способом ты говоришь серверу ничего на девайсе не размещать... ФО делается руками - удаление записей об этом девайсе в master..sysusages а уж потом из гуёв можно удалить и девайс griniland 2. Ещё до моего вступления в Sa;) у нас произошло "перемешивание" данных и лога..Судя по всему, часть данных "упала" в сегмент лога- забавно смотреть, как после truncate transaction log with no backup в logsegment'е остаётся "висеть" 5Гб непоймешь чего (segmap чистая 4, никаких 7!) Это при том, что через Централ видно, что таблица syslogs занимает порядка 100 кб и никаких других объектов не числится (ни таблиц, ни индексов). С этой ботвой что-нибудь можно поделать? (моё решение- залить дамп с "кривой" разбивкой в тестовую базу данных, размещенную на небольших девайсах (30 гб+ 20 штук по 1 гб), сделать truncate transaction, залезть в syslogs и перебить segmap'ы тем девайсам, выделенным под лог, на которых нет свободного места (т.е. там нифига не лог), в 4-рочки. "залезть в syslogs" - наверно имелось ввиду sysusages ? мнээ, я бы просто перелил базу посредством bcp ... заодно и структуру девайсов "причесал" бы :) и данные упорядочил ... хотя у тебя ж все таблицы APL-ные проблемы могут возникнуть с процедурами, если они внутри оперируют временными таблицами. Поэтому придется сначала генерить эти таблицы, а потом проливать процедуры ... griniland 3. На закуску: а когда segmap=1- это что? Не нашел в RTFM=) Заранее спасибо! segmap = 1 - system segmap = 2 - default segmap = 3 - system+default segmap = 4 - logsegment ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2005, 10:36 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
grinilandsp_dropsegment @segname, @dbname, @devname-- разьве приводит к ФИЗИЧЕСКОМУ освобождению девайса? Как уже написали, не приводит. Это признаки, определяющие расположение будущих данных. Если бы приводило, время работы этой команды было бы сравнимо со временем работы reorg rebuild для таблиц с девайса. Соответственно, reorg rebuild без указания индекса гарантировано перенесет все данные на используемый девайс в соответствии с кластерным индексом, если он есть, если с удаляемого уже снята пометка использования через sp_dropsegment. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2005, 20:25 |
|
||
|
Можно ли уменьшить размер БД?
|
|||
|---|---|---|---|
|
#18+
sybdba grinilandтак, сорри. ASE 11.9.2.6. (версия) Собственно, мысль: Допустим, есть некая "раздутая" БД (как у меня), в которой полно freepages, лежащая на 2-ух девайсах- 30 и 20 ГБ каждый (ullocated ёмкость). Притом, 20 Гб девайс на половину пуст (или полон, это уже в зависимости от уровня оптимизма;). Что если я сдамплю эту базу и разресторю её в такую же по размеру, но, скажем, на 12 девайсах? dev0-30 GB dev1-2 Gb dev3-2 GB dev4-2 GB dev5-2 GB dev6-2 GB dev7-2 Gb dev8-2 GB dev9-2GB dev10-2 GB dev11-2 GB По идее, должно получиться, что некоторые девайсы (если смотреть в sysusages) будут ПОЛНОСТЬЮ не задействованы (т.е. не содержать заполненных страниц). Вопрос к знатокам: что мне может помешать грохнуть такие девайсы в sysusages и sysdevices? да ничего не помешает ... допустим у тебя "освободились" девайсы 10 и 11 тогда сделать следующее: sp_dropsegment 'default',база,'dev10' go sp_dropsegment 'system',база,'dev10' go sp_dropsegment 'default',база,'dev11' go sp_dropsegment 'system',база,'dev11' go в master..sysusages для твоей БД появится значение 0 в segmap теперь девайсы можно вычищать из sysusages и передергивать сервер sybdba в master..sysusages для твоей БД появится значение 0 в segmap теперь девайсы можно вычищать из sysusages и передергивать сервер Убил строки из master..sysusages со значением 0 в segmap. Причем девайсы 1 и 3 из всех девайсов этой БД. ... Перезапустил сервер -> теперь БД, для которой убивались девайсы не открывается. Что я не доделал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2005, 13:48 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33326745&tid=2013006]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
76ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 267ms |
| total: | 470ms |

| 0 / 0 |
