![]() |
Как уменьшить базу данных?
Имеется файл dd_Current_Data.MDF объёмом в ~500Мбайт, который создавался силами программы "Доктор Ден", которая по сути своей является банальной картотекой для стоматологической клиники (ФИО пациента, его контакты, проведенные работы и т.д.). Где-то последние полгода программа стала долго запускаться - exe'шник программы грузит процессор минут по 10, а также лопает RAM. Я так подозреваю, все дело в излишне большой базе данных. Погуглил. Пишут про команду DBCC SHRINKFILE, но непонятно где ее надо вводить. В трее висит значок SQL-сервера, его можно остановить \ запустить заново, но не более того. Возможно, надо что-то доустановить? Но что именно? До этого никогда дела с базами данных не имел, поэтому без понятия как оно все должно выглядеть.
Краткий конфиг компа: Celeron G540, 2Gb DDR3, SSD 60Gb. |
Avatar-Lion,
Если действительно есть значек управления службой: тогда с вероятностью 99% SQL 2000. А дальше по обстоятельствам - базовая утилита управления "SQL Server Enterprise Manager", но если использован MSDE то этой утилиты нет в комплекте. Отдельно она не поставляется. Мало того, помимо шринка надо еще проверить модель восстановления - если она "Полная" то шринк не поможет - вначале надо выставить модель восстановления простая и только потом шринкать... |
y--, Хм... Да, точно, в списке установленного ПО числится нечто с названием ...Desktop Engine (полностью не помню, а ПК этого под рукой нет). Видимо, это и есть MSDE. И что делать? Искать этот таинственный SQL Server Enterprise Manager на торрентах?
|
Avatar-Lion,
SQL Server Enterprise Manager не поставляется в качестве отдельного продукта... Поэтому официальный путь - скачать любой дистриб полного MSSQL 2000 и ставить его без установки самого сервера - только Client Tools(ну и может еще что-то по зависимости) Неофициальный путь
Без установки чего-либо(как впрочем и без гарантии - на свой страх и риск)
Собрать в одну папку файлы: ISQLW.exe isqlw.rll objmgr.dll objmgr.rll PFCLNT80.dll PFCLNT80.RLL pfutil80.dll pfutil80.rll semsfc.dll semsfc.rll sqlgui.dll sqlgui.rll sqlqry.dll sqlqry.rll sqlresld.dll sqlsvc.DLL sqlsvc.RLL W95SCM.dll из скачанного дистрибутива полного MSSQL 2000 Запускать ISQLW.exe - подключаться к нужному экземпляру СУБД и выполнять необходимые запросы... |
Модель восстановления SQL
Вывести текущее значение модели восстановления:
SP_HELPDB <имя базы> если она не SIMPLE тогда ALTER DATABASE <имя базы> SET RECOVERY SIMPLE |
Avatar-Lion, можно взять более современную консоль управления и подключиться к старому серверу. Впрочем, команду можно послать через любой (поддерживающий MS SQL) клиент (например HeidiSQL) или библиотеку/драйвер языка программирования.
y--, модель восстановления влияет на размер файла логов, а не файла данных, так что одно другому не мешает. SQL Agent есть и в более поздних версиях и выглядит как иконка в трее |
Подключиться к серверу я не могу, т.к. там комп рабочий и эксперименты ставить, мягко говоря, не очень удобно. Скопировал пока что базу на флэшку к себе.
Скачал SQL Server 2000 Standard Edition. На Windows 7 (64-bit) ставиться не желает: http://www.picshare.ru/uploads/180208/5eajlV541K.png На Windows XP говорит следующее: http://www.picshare.ru/uploads/180208/99w7qe3yQ4.png Что ж ему надо-то? Ведь я так полагаю, прежде чем мутить что-то с базой, необходимо установить сервер, подключить к нему базу данных, а потом уже делать с ней что-либо. Или я не в том направлении копаю? |
Busla,
Цитата:
Если у тебя модель FULL то всегда львиная доля размера БД будет сидеть в логе... И сколько БД не шринкай ее объем (существенно) не изменится... А усечение лога это уже несколько другая операция чем шринк. Avatar-Lion, Цитата:
|
y--, Уф... Вроде нашел и поставил. Базу в список добавил. А где команды (SP_HELPDB...) теперь вводить? Если правой кнопкой ткнуть, то можно сделать так и потом так. Но почему всего 3Мб предлагает освободить? Я думал, он ее сожмет до исходного значения в 10-20Мбайт, там же только текст и всё, никаких рисунков и прочего в базе нет.
|
Avatar-Lion,
в свойствах посмотри модель восстановления - она скорей всего полная и основной объем сидит в логе. Там же ее можно сменить... |
y--, Так... Выставил Simple вместо Full: http://www.picshare.ru/uploads/180208/gB44W656M5.png - что дальше?
--- Я нашел пункт назначения заданий. В частности, переиндексация. Но они все откладываются во времени. Как их выполнить "здесь и сейчас"? И где все-таки вводить команды? Все облазил - ничего не нашел. В стандартной командной строке ничего не получается: http://www.picshare.ru/uploads/180208/19mW9B60DK.png |
Исходите из того что расширение MDF это образ а не файл!!! Это как ICO образ.
|
y--, не надо мне объяснять то, что я, очевидно и так, знаю. В исходном сообщении речь была конкретно про большой файл dd_Current_Data.MDF
Цитата:
Цитата:
Цитата:
|
Busla, А, вот оно что. Тьфу ты... Понятно теперь. И какие команды можете порекомендовать для уменьшения размера базы данных и повышения быстродействия на указанной конфигурации?
Меня просто смущает как текст (!!!) может занимать аж 500 мегабайт. Это ж вся библиотека мира туда поместится, наверное... |
Цитата:
|
Нашел в инете команду переиндексации, но не работает почему-то: http://www.picshare.ru/uploads/180208/zyf1FP72P7.png
|
Цитата:
Проблема в том что "Доктор Ден" видит только один файл и только. И будет грузить его в память. |
ziku, Да какая разница-то? Скорость линейного чтения у SSD обычно в рамках 400-500Мбайт\с, т.е. запас по скорости чтения заведомо имеется, он эту базу должен целиком в оперативку пихать за две-три секунды. А вместо этого думает, думает, думает... Причем у него доходит до какого-то определенного лимита в 200-300Мбайт RAM, а потом прибавление занятого объема идет по чуть-чуть, по 10-20Кбайт, если судить по Диспетчеру задач. Словно он натыкается на какой-то огромный пустой кусок в базе и долго-долго проматывает его, прежде чем снова данные начинаются. Ну, я так вижу ситуацию. Не знаю как оно на самом деле. Если бы я знал как понять почему программа долго грузит базу, я бы на форуме не спрашивал.
|
Цитата:
Цитата:
Цитата:
дефрагментацию индексов
Код:
USE <имя нужной БД> |
MDF файл это архивный сжатый файл. Сама программа сидит в ОЗУ, работает, да + 500Мбайт в архиве Нужно разархивировать и вывести на экран, а память видеокарты - пшик, да скорость шины, дай угадаю 800Мгц. Да и программа изначально построена неправильно, она открывает весь архив а не постранично, и тут ничего не сделаешь. И наступит момент невозврата когда файл dd_Current_Data.MDF окажется больше той части памяти которую отвел компьютер под программу, машина зависнет.
Я почему начал с вопросов, а не пояснений, и смотри как бросились все но поняв и никого не осталось тут. На движке "Доктор Ден" ничего не сделаешь. Алгоритм работы "Доктор Ден" не позволит вам что ли бо изменить, менять нужно программу, а базу данных создавать новую из старой базы. Похожая программа мне встречалась Dental Clinic Manager, почитай о ней может ваша фирма перейдет не неё. Встречалась потому что что моя дочь имеет свои клиники. С'est la vie как говорят латинасы в Риа Де Жетомере. |
|
Avatar-Lion,
после переиндексации опять шринк - только чуть по-другому: - шринк базы - шринк файла данных И вот меньше чем после этого уже никак без потери части данных... |
Цитата:
Цитата:
Надо понять, что я не работаю в данной клинике, просто являюсь ее клиентом + ее сотрудники знают, что я занимаюсь компьютерами и время от времени обращаются ко мне со всякой мелочью (Винду переставить, комп собрать и т.п.). Ну и вот недавно обратились с проблемой, что очень долго запускается прога. Плюс в течение дня она лопает все больше и больше памяти, т.к. (по рассказам сотрудников) к концу дня комп начинает жутко тупить. Попросили меня посмотреть. Я посмотрел. Честно сказал: базы данных раньше только на картинках в интернете видел, не мой род деятельности это. Предложил поискать альтернативу. Нашли: 33 000 рублей за 1 копию программы (какой-то "1С Первый Бит" или вроде того), плюс от 50 000 до 150 000 рублей за перенос базы данных и 1 год поддержки. К ним приехал даже мальчик-представитель, начал дуть в уши... Слава богу, позвонили мне. Я когда цены услышал, сам чуть не икнул. Понятно, что медицина дешевой не бывает, но, чёрт подери, платить сто тысяч за программу, которая по сути разновидностью Excel-таблички является... Сказал им мальчика отпустить, за информацию поблагодарить и усиленно искать альтернативы. А я пока попробую с базой помочь. Но судя по вашим словам, Доктор Ден этот конкретную свинью им подложил. Точнее, не Доктор Ден, а ArtIcon. y--, Сделал. Итого 467Мб получилось. Но я считаю, что это всё равно Over-дохрена. Как можно ТЕКСТ раздуть до 467 метров? Я видел Excel-прайсы на десятки тысяч позиций и они весили куда меньше, а открывались куда быстрее. Что за хрень с этим SQL? Он что, по 100500 раз дублирует каждую строчку? Я ради прикола попробовал упаковать dd_Current_Data в RAR-архив. Получился архив со смешным объёмом в 12 (двенадцать!) мегабайт. Такой впечатляющий коэффициент сжатия только у текста может быть, я уже сжимал ранее таблицы и документы, они тоже очень хорошо сжимались. Можно как-то определить что такой объем занимает в базе? |
Цитата:
Насчет фирмы тут вы правы, с не братьями лучше не связываться. Дороже будет. А насчет вашей программы мы не знаем на каком движке он сделан и алгаритм работы тупой - открыть всю базу сразу. Тут ответ таков они начали тестиовать свою программу и получили в текстовом файле размер в три раза больший, тогда применили архивацию и сжатие в MDF, меньше размер, НО, болезнь та же - программа не будет работать пока весь файл не войдет в ОЗУ. И ничего тут не сделаешь. |
Avatar-Lion,
Цитата:
|
Эхе-хе... Как же грустно всё... Ладно. Спасибо вам, товарищи. Информацией и советами поделились, а это главное.
Думаю, тему можно закрывать. Судя по всему, проблема тупиковая и решения не имеет. |
Цитата:
|
Время: 23:00. |
Время: 23:00.
© OSzone.net 2001-