|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Как уменьшить базу данных? |
|
MSFT SQL Server - Как уменьшить базу данных?
|
Support L1+ Сообщения: 5030 |
Профиль | Отправить PM | Цитировать Имеется файл dd_Current_Data.MDF объёмом в ~500Мбайт, который создавался силами программы "Доктор Ден", которая по сути своей является банальной картотекой для стоматологической клиники (ФИО пациента, его контакты, проведенные работы и т.д.). Где-то последние полгода программа стала долго запускаться - exe'шник программы грузит процессор минут по 10, а также лопает RAM. Я так подозреваю, все дело в излишне большой базе данных. Погуглил. Пишут про команду DBCC SHRINKFILE, но непонятно где ее надо вводить. В трее висит значок SQL-сервера, его можно остановить \ запустить заново, но не более того. Возможно, надо что-то доустановить? Но что именно? До этого никогда дела с базами данных не имел, поэтому без понятия как оно все должно выглядеть.
Краткий конфиг компа: Celeron G540, 2Gb DDR3, SSD 60Gb. |
|
Отправлено: 17:25, 07-02-2018 |
Support L1+ Сообщения: 5030
|
Профиль | Отправить PM | Цитировать y--, Так... Выставил Simple вместо Full: http://www.picshare.ru/uploads/180208/gB44W656M5.png - что дальше?
--- Я нашел пункт назначения заданий. В частности, переиндексация. Но они все откладываются во времени. Как их выполнить "здесь и сейчас"? И где все-таки вводить команды? Все облазил - ничего не нашел. В стандартной командной строке ничего не получается: http://www.picshare.ru/uploads/180208/19mW9B60DK.png |
Последний раз редактировалось Avatar-Lion, 08-02-2018 в 17:42. Отправлено: 16:39, 08-02-2018 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать Исходите из того что расширение MDF это образ а не файл!!! Это как ICO образ.
|
------- Отправлено: 18:00, 08-02-2018 | #12 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать y--, не надо мне объяснять то, что я, очевидно и так, знаю. В исходном сообщении речь была конкретно про большой файл dd_Current_Data.MDF
Цитата Avatar-Lion:
Цитата Avatar-Lion:
Цитата ziku:
|
|||
Отправлено: 18:20, 08-02-2018 | #13 |
Support L1+ Сообщения: 5030
|
Профиль | Отправить PM | Цитировать Busla, А, вот оно что. Тьфу ты... Понятно теперь. И какие команды можете порекомендовать для уменьшения размера базы данных и повышения быстродействия на указанной конфигурации?
Меня просто смущает как текст (!!!) может занимать аж 500 мегабайт. Это ж вся библиотека мира туда поместится, наверное... |
Отправлено: 18:30, 08-02-2018 | #14 |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать Цитата Busla:
|
|
------- Отправлено: 18:30, 08-02-2018 | #15 |
Support L1+ Сообщения: 5030
|
Профиль | Отправить PM | Цитировать Нашел в инете команду переиндексации, но не работает почему-то: http://www.picshare.ru/uploads/180208/zyf1FP72P7.png
|
Отправлено: 18:35, 08-02-2018 | #16 |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать Цитата Avatar-Lion:
Проблема в том что "Доктор Ден" видит только один файл и только. И будет грузить его в память. |
|
------- Отправлено: 18:35, 08-02-2018 | #17 |
Support L1+ Сообщения: 5030
|
Профиль | Отправить PM | Цитировать ziku, Да какая разница-то? Скорость линейного чтения у SSD обычно в рамках 400-500Мбайт\с, т.е. запас по скорости чтения заведомо имеется, он эту базу должен целиком в оперативку пихать за две-три секунды. А вместо этого думает, думает, думает... Причем у него доходит до какого-то определенного лимита в 200-300Мбайт RAM, а потом прибавление занятого объема идет по чуть-чуть, по 10-20Кбайт, если судить по Диспетчеру задач. Словно он натыкается на какой-то огромный пустой кусок в базе и долго-долго проматывает его, прежде чем снова данные начинаются. Ну, я так вижу ситуацию. Не знаю как оно на самом деле. Если бы я знал как понять почему программа долго грузит базу, я бы на форуме не спрашивал.
|
Отправлено: 18:48, 08-02-2018 | #18 |
Старожил Сообщения: 231
|
Профиль | Отправить PM | Цитировать Цитата Avatar-Lion:
Цитата Busla:
Цитата Avatar-Lion:
дефрагментацию индексов
USE <имя нужной БД> -- Declare variables SET NOCOUNT ON DECLARE @tablename VARCHAR (128) DECLARE @execstr VARCHAR (255) DECLARE @objectid INT DECLARE @indexid INT DECLARE @frag DECIMAL DECLARE @maxfrag DECIMAL -- Decide on the maximum fragmentation to allow SELECT @maxfrag = 30.0 -- Declare cursor DECLARE tables CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' -- Create the table CREATE TABLE #fraglist ( ObjectName CHAR (255), ObjectId INT, IndexName CHAR (255), IndexId INT, Lvl INT, CountPages INT, CountRows INT, MinRecSize INT, MaxRecSize INT, AvgRecSize INT, ForRecCount INT, Extents INT, ExtentSwitches INT, AvgFreeBytes INT, AvgPageDensity INT, ScanDensity DECIMAL, BestCount INT, ActualCount INT, LogicalFrag DECIMAL, ExtentFrag DECIMAL) -- Open the cursor OPEN tables -- Loop through all the tables in the database FETCH NEXT FROM tables INTO @tablename WHILE @@FETCH_STATUS = 0 BEGIN -- Do the showcontig of all indexes of the table INSERT INTO #fraglist EXEC ('DBCC SHOWCONTIG (''' + @tablename + ''') WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS') FETCH NEXT FROM tables INTO @tablename END -- Close and deallocate the cursor CLOSE tables DEALLOCATE tables -- Declare cursor for list of indexes to be defragged DECLARE indexes CURSOR FOR SELECT ObjectName, ObjectId, IndexId, LogicalFrag FROM #fraglist WHERE LogicalFrag >= @maxfrag AND INDEXPROPERTY (ObjectId, IndexName, 'IndexDepth') > 0 -- Open the cursor OPEN indexes -- loop through the indexes FETCH NEXT FROM indexes INTO @tablename, @objectid, @indexid, @frag WHILE @@FETCH_STATUS = 0 BEGIN PRINT 'Executing DBCC INDEXDEFRAG (0, ' + RTRIM(@tablename) + ', ' + RTRIM(@indexid) + ') - fragmentation currently ' + RTRIM(CONVERT(varchar(15),@frag)) + '%' SELECT @execstr = 'DBCC INDEXDEFRAG (0, ' + RTRIM(@objectid) + ', ' + RTRIM(@indexid) + ')' EXEC (@execstr) FETCH NEXT FROM indexes INTO @tablename, @objectid, @indexid, @frag END -- Close and deallocate the cursor CLOSE indexes DEALLOCATE indexes -- Delete the temporary table DROP TABLE #fraglist GO |
|||
------- Отправлено: 20:14, 08-02-2018 | #19 |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать MDF файл это архивный сжатый файл. Сама программа сидит в ОЗУ, работает, да + 500Мбайт в архиве Нужно разархивировать и вывести на экран, а память видеокарты - пшик, да скорость шины, дай угадаю 800Мгц. Да и программа изначально построена неправильно, она открывает весь архив а не постранично, и тут ничего не сделаешь. И наступит момент невозврата когда файл dd_Current_Data.MDF окажется больше той части памяти которую отвел компьютер под программу, машина зависнет.
Я почему начал с вопросов, а не пояснений, и смотри как бросились все но поняв и никого не осталось тут. На движке "Доктор Ден" ничего не сделаешь. Алгоритм работы "Доктор Ден" не позволит вам что ли бо изменить, менять нужно программу, а базу данных создавать новую из старой базы. Похожая программа мне встречалась Dental Clinic Manager, почитай о ней может ваша фирма перейдет не неё. Встречалась потому что что моя дочь имеет свои клиники. С'est la vie как говорят латинасы в Риа Де Жетомере. |
------- Отправлено: 20:27, 08-02-2018 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
.NET - Как изменить базу данных Access при изменении данных в таблице на форме | tumanovalex | Программирование и базы данных | 2 | 15-04-2016 16:40 | |
MSFT SQL Server - Как создать базу данных SQL Server Compact? | Alsou93 | Программирование и базы данных | 0 | 23-12-2013 22:32 | |
Разное - Как правильно построить базу данных? | Aleksandr84 | Microsoft Office (Word, Excel, Outlook и т.д.) | 3 | 08-07-2013 18:43 | |
C/C++ - Как записать DBGrid в базу данных MS Acess? | S1stem | Программирование и базы данных | 1 | 25-01-2008 13:10 | |
Как защитить базу данных на серваке? | BatutMAN | Защита компьютерных систем | 15 | 17-01-2003 13:11 |
|