Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Проблема с автоувеличением размера базы (http://forum.oszone.net/showthread.php?t=96967)

Limon1983 28-12-2007 13:48 705665

Проблема с автоувеличением размера базы
 
Суть в том, что я пришел работать на предприятие, где уже стояла база, поэтому не в курсе предыстории.
В свойствах базы указано автоувеличение на 10%, но когда она заканчивается, ничерта не происходит, и запись данных в нее останавливается.
Шеф отымел мне весь мозг, но сколько не бьюсь ничего не могу сделать.
Что меня смущает в базе, так это то что на информационном таскбаре базы почему-то указывается, что мол размер базы такой-то, а вот под этой надписью, что свободного места нет.
Лог транзакций растет и автоувеличивается без вопросов, а сам файл базы ни в какую, а у меня безостановочное производство и показания датчиков должны записываться в базу раз в 10 секунд.
Помогите советом? У меня уже голова пухнет.

Забыл добавить, что в других базах и в новосозданных этот параметр свободного места не равен нулю.
Добавлю, что размер базы сейчас 40Гб, свободного места на диске где-то 50Гб

DoublE_zone 28-12-2007 14:54 705699

Limon1983, а если попробовать увеличить исходный размер базы? Сколько тогда будет отображаться свободного места? Вообще, гарантированно узнать, сколько свободного места осталось в файле базы, либо в файле логов отдельно можно так... Свойства выбранной базы - Задачи - Сжать - Файлы. И там выбрать нужный файл (сжимать совсем не обязательно :)). Если попробовать затем поставить добавление на фиксированную величину в мегабайтах или просто расширять файл вручную, по мере необходимости, если хорошо прогнозируется рост.

Limon1983 28-12-2007 16:14 705743

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

DoublE_zone 28-12-2007 17:51 705790

Цитата:

Цитата Limon1983
Мысль возникла, что это некая патология, возникшая в процессе администрирования. »

да уж, ситуация явно не типичная.... :)
Ну, хорошо, а что мешает тогда просто фиксированно увеличить файл базы с запасом, скажем, на 10GB сразу, это должно спасти от забивания файла внезапно ночью. А об истинном размере базы судить, например, по размеру полного бэкапа файла базы. Насколько я понял, несмотря на то, что отображается полная занятость файла при увеличении его размера, запись некоторое время производится, то есть реально место там есть.
Вариант 2 - что если создать дополнительный (второй) файл базы, чтобы все новые данные писались туда?

Busla 28-12-2007 18:26 705811

DoublE_zone, ты б после своих вопросов, постыдился давать советы... Тем более, не уточнив версию продукта!

Limon1983, так о каком SQL речь идёт? ;)

DoublE_zone 28-12-2007 18:36 705820

Busla, всю объективную информацию по своему вопросу (не считая абсолютно разношерстных мнений...) я получил из книжек (еще помог Kim-aa на форуме, подтолкнул к сути проблемы и позволил ее сформулировать более корректно, за что ему РЕСПЕКТ), вопрос по SQL решился благодаря литературе. На основной же мой вопрос: связка sql и 1C при моей проблеме, ВЫ НЕ ОТВЕТИЛИ!
А даю я не советы, а просто размышляю о возможных путях решения (как бы поступил я и на что обратил внимание), именно так, как правило, и находится истинный путь.
Так что ваша реплика более, чем не уместна!!! Лучше б помогли в решении проблемы, если есть достаточный опыт.

Limon1983 28-12-2007 23:05 705942

Версия 2000.
Я думаю, что DoublE_zone немного меня не понял.
Когда в Enterprice Manager нажимаешь на базе левой кнопкой, по умолчанию открывается то ли таскпад, то ли таскбар, никогда не заострял внимания, в котором выведена краткая инфа по базе, разделенная на три части, жаль я седня на работе не был, я б скрин припер.
Так вот, в первой (верхней) части указывается размер базы в-общем и кол-во свободного места (у меня показывает 0.00)
а в нижней размеры файла базы со свободным местом (показывает правильно) и размер лога (тож никаких проблем).
Вот меня смущает этот ноль, хотя по идее он должен показывать сумму свободного места для всех файлов базы.
А фиксированно увеличивать тоже не выход, база забиваеться со скоростью (кстати неодинаковой) примерно 300-400 Мб в сутки. Остановка на час, мне выговор. Жуткая история!!!
Кстати я уже не добавляю место, а тру старые данные скриптами (300 таблиц, где-то по 200000 строк) и это происходит раз в неделю.

kim-aa 29-12-2007 12:13 706138

1) Давайте подитожим информацию:

- Размер базы = 40 ГБ
- Размер логфайла = ?
- Среднесуточный прирост данных=400 МБ
- Среднесуточный прирост лога=?
- Максимальный размер таблицы=?

Осталось места = 50 Гб
На 100 дней в лучшем случае, так выходит?

2) Что касаемо автоматического увеличения размера базы.
(Еще раз повторюсь, я очень давно работал с MS SQL 6.x и мои замечания больше теоретические).
- Практически во всех RDBMS размер базы и размер файлов базы это разные вещи.
Связанные, но разные.
- В терминологии MS SQL 6.x файл базы данных это устройство.
Устройств для одной базы может быть несколько (обычно их и рекомендуют делать несколько).
- Т. е., ситуация как у вас, когда в устройстве/файле место есть, но база данных (сегмент данных) не увеличивается - вполне нормальная, при соответствующей конфигурации базы данных.

3) Хотелось бы получить следующие данные:
- Если есть ошибки - приведите их.
- У вас OLTP приложение, следовательно индексы должны расти интенсивнее данных.
Вполне имеет смысл регулярно перестраивать индексы, используя DBCC DBREINDEX,
(особенно при интенсивном использовании кластерных индексов).
- Приведите список всех регулярных задач/скриптов которые должны отрабатывать на вашем MS SQL сервере.
Посмотрите логи выполнения задач. Вполне может быть какие-то задачи у вас не выполняются.
- Раньше информацию о сегментах данных можно было получить выполнив процедуру sp_helpsegment
информацию о используемом пространстве можно было получить при помощи sp_spaceused
- В MS SQL 6.x стандартными сегментами для любой вновьсозданной базы были:
-- logsegment
-- default
-- system

kim-aa 29-12-2007 23:29 706387

Кстати, а книжки умной нет под рукой, ээ?
Благо они и в электронном виде есть, вот например
http://www.proklondike.com/contentview.php?content=194

Limon1983 30-12-2007 10:35 706497

Ребят, я щас в коматозном состоянии, вчера собирал друзей дома.
Поэтому расскажу позже как мы пофиксили проблему, выложу скрипт, который помог.
Интернета на работе нет и я пишу с дома, тяжелая голова.


Время: 19:36.

Время: 19:36.
© OSzone.net 2001-