Разное

Как сжать базу данных sql: Сжатие базы данных и журнала транзакций в Microsoft SQL Server | Info-Comp.ru

Содержание

Сжатие и дефрагментация базы данных в MySQL и MariaDB

В данной статье мы рассмотрим методики сжатия и дефрагментации таблиц и баз данных в MySQL/MariaDB, которые позволят вам сэкономить место на диске с БД.

В крупных проектах со временем базы данных разрастаются до огромных размеров и всегда возникает вопрос, как же с этим бороться. Есть несколько вариантов для решения подобной проблемы. Вы можете уменьшить количество данных в самой базе, путем удаления старой информации, разделить базу на несколько, увеличить объем дискового пространства на сервере или сжать таблицы.

Другой важный аспект функционирование БД – необходимость периодической дефрагментации таблиц и баз данных, что позволяет существенно ускорить их работу.

Сжатие и оптимизация БД с типом таблиц InnoDB

Файлы ibdata1 и ib_log

На многих проектах с таблицами InnoDB встречается проблема с огромными размерами файлов ibdata1 и ib_log. Причина в большинвсте случае связан с неправильными настройками сервера MySQL/MariaDB или архитектурой БД. Вся информация из таблиц InnoDB хранится в файле ibdata1, пространство которого не высвобождается само по себе. Я предпочитаю хранить данные таблиц в отдельных файлах ibd*. Для этого нужно в конфигурационном файле my.cnf добавить строку:

innodb_file_per_table

или

innodb_file_per_table=1

Если же ваш сервер уже настроен и у вас есть несколько рабочих БД с таблицами InnoDB, нужно выполнить следующее:

  1. Сделайте бэкап всех БД на своем сервере (кроме mysql и performance_schema). Дамп баз можно снять следующей командой: # mysqldump -u [username] –p[password] [database_name] > [dump_file.sql]
  2. После создания резервной копии БД остановите сервер mysql/mariadb;
  3. Измените настройки в файле my.cfg;
  4. Удалите файлы ibdata1 и ib_log файлы;
  5. Запустите сервер mysql/mariadb;
  6. Восстановите из бэкапа все БД:# mysql -u [username] –p[password] [database_name] < [dump_file.sql]

После выполнения этой процедуры, все таблицы InnoDB будут хранится в отдельных файлах и файл ibdata1 не будет расти в геометрической прогрессии.

Сжатие таблиц InnoDB

Вы можете сжимать таблицы с данными типа text/BLOB. Если у вас есть подобные таблицы, вы можете сэкономить довольном много дискового пространства.

У меня имеется БД innodb_test с таблицами, которые потенциально можно сжать и высвободить дисковое пространство. Перед всеми работами я настоятельно рекомендую выполнить резервное копирование всех ваших БД. Подключаемся к серверу mysql:

# mysql -u root -p

В консоли mysql авторизуемся в нужной БД:

# use innodb_test;

Чтобы вывести список таблиц и их размер, используйте запрос:

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size in (MB)"
FROM information_schema.TABLES
WHERE table_schema = "innodb_test"
ORDER BY (data_length + index_length) DESC;

Где innodb_test — это имя вашей БД.

Есть вероятность, что некоторые таблицы можно сжать. Возьмём для примера таблицу b_crm_event_relations. Выполните запрос:

mysql> ALTER TABLE b_crm_event_relations ROW_FORMAT=COMPRESSED;

Query OK, 0 rows affected (3.27 sec)
Records: 0 Duplicates: 0 Warnings: 0

После выполнения, можно увидеть что за счет сжатия размер таблицы уменьшился с 26 до 11 Мб.

Благодаря сжатию таблиц вы можете сэкономить много дискового пространства на сервере. Но при работе со сжатыми таблицами вырастет нагрузка на процессор. Сжатие в таблицах нужно использовать, если у вас нет проблем с процессорными ресурсами, но есть проблема с местом на диске.

Сжатие таблиц MyISAM в MySQL

Для сжатия таблиц формата Myisam, нужно использовать специальный запрос с консоли сервера, а не в консоли mysql. Чтобы сжать нужную таблицу выполните:

# myisampack -b /var/lib/mysql/test/modx_session

Где /var/lib/mysql/test/modx_session — путь до вашей таблицы. К сожалению, у меня не было раздутой БД и пришлось выполнять сжатие на небольших таблицах, но результат все равно виден (файл сжался с 25 до 18 Мб):

# du -sh modx_session.MYD

25M modx_session.MYD

# myisampack -b /var/lib/mysql/test/modx_session

Compressing /var/lib/mysql/test/modx_session.MYD: (4933 records)
- Calculating statistics
- Compressing file
29.84%
Remember to run myisamchk -rq on compressed tables

# du -sh modx_session.MYD

18M modx_session.MYD

В запросе, мы указали ключ -b, при его добавлении, перед сжатием создается бэкап таблицы и помечается как OLD:

# ls -la modx_session.OLD

-rw-r----- 1 mysql mysql 25550000 Dec 17 15:20 modx_session.OLD

# du -sh modx_session.OLD

25M modx_session.OLD

Оптимизация таблиц и баз данных в MySQL/MariaDB

Для отптимизации таблиц и базы данных рекомендуется выполнять дефрагментацию. Проверим, есть ли в базе данных таблицы, которые требуют дефрагментации.

Войдем в консоль MySQL, выберем нужную БД и выполним запрос:

select table_name, round(data_length/1024/1024) as data_length_mb, round(data_free/1024/1024) as data_free_mb from information_schema.tables where round(data_free/1024/1024) > 50 order by data_free_mb;

Таким образом мы выведем все таблицы, которые имеют минимум 50 Мб неиспользуемого пространства:

+-------------------------------+----------------+--------------+
| TABLE_NAME | data_length_mb | data_free_mb |
+-------------------------------+----------------+--------------+
| b_disk_deleted_log_v2 | 402 | 64 |
| b_crm_timeline_bind | 827 | 150 |
| b_disk_object_path | 980 | 72 |

data_length_mb — общий размер таблицы

data_free_mb — неиспользуемое пространство таблицы

Эти таблицы мы можем дефрагментировать. Проверим занимаемое место на диске до:

# ls -lh /var/lib/mysql/innodb_test/ | grep b_

-rw-r----- 1 mysql mysql 402M Dec 17 15:43 b_disk_deleted_log_v2.MYD
-rw-r----- 1 mysql mysql 828M Dec 17 14:52 b_crm_timeline_bind.MYD
-rw-r----- 1 mysql mysql 981M Dec 17 15:45 b_disk_object_path.MYD

Чтобы оптимизировать эти таблицы, используйте следующую команду в консоли mysql:

# OPTIMIZE TABLE b_disk_deleted_log_v2, b_disk_object_path, b_crm_timeline_bind;

После успешной дефрагментации, у вас должен быть примерно такой вывод результата:

+-------------------------------+----------------+--------------+
| TABLE_NAME | data_length_mb | data_free_mb |
+-------------------------------+----------------+--------------+
| b_disk_deleted_log_v2 | 74 | 0 |
| b_crm_timeline_bind | 115 | 0 |
| b_disk_object_path | 201 | 0 |

Как видите, data_free_mb теперь равен 0 и в целом размеры таблицы значительно уменьшились (в 3-4 раза).

Также можно выполнить дефрагментацию с помощью утилиты mysqlcheck из консоли сервера:

# mysqlcheck -o innodb_test b_workflow_file -u root -p innodb_test.b_workflow_file

Где innodb_test — это ваша БД

А b_workflow_file — имя нужной таблицы

Чтобы оптимизировать все таблицы нужной вам БД, запустите команду в консоли сервера:

# mysqlcheck -o innodb_test -u root -p

Где innodb_test — имя желаемой БД.

Или запустите оптимизацию всех БД на сервере:

# mysqlcheck -o --all-databases -u root -p

Если проверить размеры базы до и после оптимизации, то размер в целом уменьшился:

# du -sh

2.5G

# mysqlcheck -o innodb_test -u root -p

Enter password:
innodb_test.b_admin_notify
note : Table does not support optimize, doing recreate + analyze instead
status : OK
innodb_test.b_admin_notify_lang
note : Table does not support optimize, doing recreate + analyze instead
status : OK
innodb_test.b_adv_banner
note : Table does not support optimize, doing recreate + analyze instead
status : OK
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# du -sh

1.7G

Таким образом для экономии места на сервере, вы можете периодически оптимизировать и сжимать ваши таблицы и БД. Повторюсь, перед проведением любых работ по оптимизации, создавайте резервную копию БД.

Сжатие и дефрагментация базы данных в MySQL и MariaDB | Windows для системных администраторов

В данной статье мы рассмотрим методики сжатия и дефрагментации таблиц и баз данных в MySQL/MariaDB, которые позволят вам сэкономить место на диске с БД.

В крупных проектах со временем базы данных разрастаются до огромных размеров и всегда возникает вопрос, как же с этим бороться. Есть несколько вариантов для решения подобной проблемы. Вы можете уменьшить количество данных в самой базе, путем удаления старой информации, разделить базу на несколько, увеличить объем дискового пространства на сервере или сжать таблицы.

Другой важный аспект функционирование БД – необходимость периодической дефрагментации таблиц и баз данных, что позволяет существенно ускорить их работу.

Сжатие и оптимизация БД с типом таблиц InnoDB

Файлы ibdata1 и ib_log

На многих проектах с таблицами InnoDB встречается проблема с огромными размерами файлов ibdata1 и ib_log. Причина в большинвсте случае связан с неправильными настройками сервера MySQL/MariaDB или архитектурой БД. Вся информация из таблиц InnoDB хранится в файле ibdata1, пространство которого не высвобождается само по себе. Я предпочитаю хранить данные таблиц в отдельных файлах ibd*. Для этого нужно в конфигурационном файле my.cnf добавить строку:

innodb_file_per_table

или

innodb_file_per_table=1

Если же ваш сервер уже настроен и у вас есть несколько рабочих БД с таблицами InnoDB, нужно выполнить следующее:

  1. Сделайте бэкап всех БД на своем сервере (кроме mysql и performance_schema). Дамп баз можно снять следующей командой: # mysqldump -u [username] –p[password] [database_name] > [dump_file.sql]
  2. После создания резервной копии БД остановите сервер mysql/mariadb;
  3. Измените настройки в файле my.cfg;
  4. Удалите файлы ibdata1 и ib_log файлы;
  5. Запустите сервер mysql/mariadb;
  6. Восстановите из бэкапа все БД:# mysql -u [username] –p[password] [database_name] < [dump_file.sql]

После выполнения этой процедуры, все таблицы InnoDB будут хранится в отдельных файлах и файл ibdata1 не будет расти в геометрической прогрессии.

Сжатие таблиц InnoDB

Вы можете сжимать таблицы с данными типа text/BLOB. Если у вас есть подобные таблицы, вы можете сэкономить довольном много дискового пространства.

У меня имеется БД innodb_test с таблицами, которые потенциально можно сжать и высвободить дисковое пространство. Перед всеми работами я настоятельно рекомендую выполнить резервное копирование всех ваших БД. Подключаемся к серверу mysql:

# mysql -u root -p

В консоли mysql авторизуемся в нужной БД:

# use innodb_test;

Чтобы вывести список таблиц и их размер, используйте запрос:

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size in (MB)"
FROM information_schema.TABLES
WHERE table_schema = "innodb_test"
ORDER BY (data_length + index_length) DESC;

Где innodb_test — это имя вашей БД.

Есть вероятность, что некоторые таблицы можно сжать. Возьмём для примера таблицу b_crm_event_relations. Выполните запрос:

mysql> ALTER TABLE b_crm_event_relations ROW_FORMAT=COMPRESSED;

Query OK, 0 rows affected (3.27 sec)
Records: 0 Duplicates: 0 Warnings: 0

После выполнения, можно увидеть что за счет сжатия размер таблицы уменьшился с 26 до 11 Мб.

Благодаря сжатию таблиц вы можете сэкономить много дискового пространства на сервере. Но при работе со сжатыми таблицами вырастет нагрузка на процессор. Сжатие в таблицах нужно использовать, если у вас нет проблем с процессорными ресурсами, но есть проблема с местом на диске.

Сжатие таблиц MyISAM в MySQL

Для сжатия таблиц формата Myisam, нужно использовать специальный запрос с консоли сервера, а не в консоли mysql. Чтобы сжать нужную таблицу выполните:

# myisampack -b /var/lib/mysql/test/modx_session

Где /var/lib/mysql/test/modx_session — путь до вашей таблицы. К сожалению, у меня не было раздутой БД и пришлось выполнять сжатие на небольших таблицах, но результат все равно виден (файл сжался с 25 до 18 Мб):

# du -sh modx_session.MYD

25M modx_session.MYD

# myisampack -b /var/lib/mysql/test/modx_session

Compressing /var/lib/mysql/test/modx_session.MYD: (4933 records)
- Calculating statistics
- Compressing file
29.84%
Remember to run myisamchk -rq on compressed tables

# du -sh modx_session.MYD

18M modx_session.MYD

В запросе, мы указали ключ -b, при его добавлении, перед сжатием создается бэкап таблицы и помечается как OLD:

# ls -la modx_session.OLD

-rw-r----- 1 mysql mysql 25550000 Dec 17 15:20 modx_session.OLD

# du -sh modx_session.OLD

25M modx_session.OLD

Оптимизация таблиц и баз данных в MySQL/MariaDB

Для отптимизации таблиц и базы данных рекомендуется выполнять дефрагментацию. Проверим, есть ли в базе данных таблицы, которые требуют дефрагментации.

Войдем в консоль MySQL, выберем нужную БД и выполним запрос:

select table_name, round(data_length/1024/1024) as data_length_mb, round(data_free/1024/1024) as data_free_mb from information_schema.tables where round(data_free/1024/1024) > 50 order by data_free_mb;

Таким образом мы выведем все таблицы, которые имеют минимум 50 Мб неиспользуемого пространства:

+-------------------------------+----------------+--------------+
| TABLE_NAME | data_length_mb | data_free_mb |
+-------------------------------+----------------+--------------+
| b_disk_deleted_log_v2 | 402 | 64 |
| b_crm_timeline_bind | 827 | 150 |
| b_disk_object_path | 980 | 72 |

data_length_mb — общий размер таблицы

data_free_mb — неиспользуемое пространство таблицы

Эти таблицы мы можем дефрагментировать. Проверим занимаемое место на диске до:

# ls -lh /var/lib/mysql/innodb_test/ | grep b_

-rw-r----- 1 mysql mysql 402M Dec 17 15:43 b_disk_deleted_log_v2.MYD
-rw-r----- 1 mysql mysql 828M Dec 17 14:52 b_crm_timeline_bind.MYD
-rw-r----- 1 mysql mysql 981M Dec 17 15:45 b_disk_object_path.MYD

Чтобы оптимизировать эти таблицы, используйте следующую команду в консоли mysql:

# OPTIMIZE TABLE b_disk_deleted_log_v2, b_disk_object_path, b_crm_timeline_bind;

После успешной дефрагментации, у вас должен быть примерно такой вывод результата:

+-------------------------------+----------------+--------------+
| TABLE_NAME | data_length_mb | data_free_mb |
+-------------------------------+----------------+--------------+
| b_disk_deleted_log_v2 | 74 | 0 |
| b_crm_timeline_bind | 115 | 0 |
| b_disk_object_path | 201 | 0 |

Как видите, data_free_mb теперь равен 0 и в целом размеры таблицы значительно уменьшились (в 3-4 раза).

Также можно выполнить дефрагментацию с помощью утилиты mysqlcheck из консоли сервера:

# mysqlcheck -o innodb_test b_workflow_file -u root -p innodb_test.b_workflow_file

Где innodb_test — это ваша БД

А b_workflow_file — имя нужной таблицы

Чтобы оптимизировать все таблицы нужной вам БД, запустите команду в консоли сервера:

# mysqlcheck -o innodb_test -u root -p

Где innodb_test — имя желаемой БД.

Или запустите оптимизацию всех БД на сервере:

# mysqlcheck -o --all-databases -u root -p

Если проверить размеры базы до и после оптимизации, то размер в целом уменьшился:

# du -sh

2.5G

# mysqlcheck -o innodb_test -u root -p

Enter password:
innodb_test.b_admin_notify
note : Table does not support optimize, doing recreate + analyze instead
status : OK
innodb_test.b_admin_notify_lang
note : Table does not support optimize, doing recreate + analyze instead
status : OK
innodb_test.b_adv_banner
note : Table does not support optimize, doing recreate + analyze instead
status : OK
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# du -sh

1.7G

Таким образом для экономии места на сервере, вы можете периодически оптимизировать и сжимать ваши таблицы и БД. Повторюсь, перед проведением любых работ по оптимизации, создавайте резервную копию БД.

Создание и хранение резервных копий баз данных в MS SQL. Практические советы / Хабр

По роду деятельности я немного администратор баз данных. Так или иначе мне приходится обслуживать несколько десятков БД.
Наткнувшись на статью, опубликованную недавно, посчитал нужным дополнить ее некоторыми практическими рекомендациями. То что затрагивалось в прошлой статье, в этой опускалось.

1. Размер резервной копии

Оценить размер резервной копии можно с помощью хранимой процедуры sp_spaceused

К примеру вот такой запрос:

USE your_database;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO

выполняется намного быстрей резервного копирования, и позволяет более-менее точно оценить будущий размер бэкапа без сжатия.

Если вы используете MS SQL 2008 или выше, рекомендую вам использовать сжатие резервных копий средствами SQL. Следующий код включит сжатие по умолчанию:

USE master;
GO
EXEC sp_configure ‘backup compression default’, '1';
RECONFIGURE WITH OVERRIDE;

Это позволит уменьшить время создания бэкапов. К примеру, на одной из наших БД размером около 290 ГБ, создание полной резервной копии с включенным сжатием происходит ровно в 2 раза быстрей. А размер конечного файла выходит в 2 раза больше, чем размер архива 7z (максимальное сжатие) резервной копии без изначального сжатия. Ох уж эта магическая цифра 2. Если учесть что процесс архивации занимал 10 часов — выгода огромна.

2. Удаляем старые резервные копии

Еще один плюс использования сжатия SQL, заключается в том, что SQL помнит историю создания резервных копий. А следовательно можно задавать время жизни резервной копии. А старые резервные копии можно удалять, написав *.bat скрипт и вызывать его непосредственно в плане обслуживания:

EXEC master..xp_cmdshell 'path for bat script

Но что бы эта штука работала, необходимо единожды выполнить запрос:


-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO

3. Оповещать администратора по почте

Очень удобно получать электронное письмо после создания бэкапа. Для добавления электронной почты оператора делаем так:

USE [msdb]
GO
EXEC msdb.dbo.sp_add_operator @name=N'Operator name', 
            @enabled=1, 
            @pager_days=0, 
            @email_address=N'Operator e-mail', 
            @pager_address=N'', 
            @netsend_address=N''
GO

Помимо этого необходимо настроить компонент Database Mail. Сделать это проще всего через среду Management Studio и одноимённого компонента Database Mail

Там всё достаточно просто. Далее в плане обслуживания добавляем соответствующий компонент.

4. Если не усекается журнал транзакций после контрольной точки

При больших операциях вставки в БД, есть смысл переключить режим восстановления на простую, а после вставки данных снова в полную.
У меня, иногда, такие финты проявляются тем, что журнал транзакций перестаёт усекаться. В большинстве случает достаточно сделать 2 раза бэкап журнала транзакций. Но для того что бы не гадать на кофейной гуще, рекомендую выполнить такой запрос:

select log_reuse_wait_desc
from sys.databases
where name = 'your_database'

В ответ получим ответ, о том каких действий SQL ожидает. Если в ответ получим LOG_backup, значит делаем бэкап журнала еще раз.

5. Что можно делать одновременно?

Если БД большая, тяжело так составить расписание, что бы соседние операции не пересекались. А если вдруг пересекаются, чем это чревато?

Вот такая шпаргалка вам поможет. Жирная точка указывает на операции которые нельзя выполнять одновременно.

А еще не забывайте делать бэкапы системных БД. В частности master и msdb.

Литература

В комментариях предлагаю делится своими практическими наработками.

P. S. Я новенький, если не в тот хаб запостил — поправьте.

sql-server — Как сжать мою базу данных SQL Server?

Это старый вопрос, но я только что произошло на ней.

Очень короткий и правильный ответ уже дан , и имеет наибольшее количество голосов. То есть , как вы сжать журнал транзакций, и это было , вероятно , проблема ФОС. И когда журнал транзакций вырос из — под контроля, он часто должен быть сжат назад, но следует соблюдать осторожность , чтобы предотвратить будущие ситуации бревне , растущий из — под контроля. Этот вопрос на dba.se объясняет , что. В основном — Не позволяйте ей , что большой , в первую очередь за счет правильной модели восстановления, поддержания журнала транзакций, управление транзакциями и т.д.

Но более важный вопрос в моей голове при чтении этого вопроса о усадке файла данных (или даже лог — файл) является , почему? и то , что плохие вещи случаются , когда вы пытаетесь? Похоже, что были сделаны в термоусадочных операциях. Теперь в этом случае имеет смысл в некотором смысле — потому что издания MSDE / Экспресс увенчаны в размере не более DB. Но правильный ответ может быть , чтобы смотреть на правую версию для ваших нужд. И если вы наткнетесь на этот вопрос , глядя уменьшить вашу производственную базу данных , и это не причина , почему, вы должны спросить себя , почему? вопрос.

Я не хочу кого-то поиск в Интернете для «как сжать базу данных» приходя через это и думает, что это круто или приемлемая вещь, чтобы сделать.

Сжатие файлов данных является специальной задачей, которая должна быть зарезервирована для особых случаев. Учтите, что при уменьшении базы данных, вы эффективны фрагментацией своих индексов. Учтите, что при уменьшении базы данных вы забирая свободное пространство, что база данных может когда-нибудь расти обратно в — эффективно тратить свое время и нести хит производительности операции термоусадочной только увидеть DB снова расти.

Я писал об этой концепции в нескольких блог о сокращающихся базах данных. Это одна называется « Не трогайте кнопку сжиматься » приходит на ум первым. Я говорю об этих понятиях , изложенных здесь , — но и понятие «право-Калибровке» вашей базы данных. Это гораздо лучше , чтобы решить , какой размер вашей базы данных должен быть план для будущего роста и передать его на эту сумму. С Instant инициализация файла , доступного в SQL Server 2005 и за ее пределами для файлов данных, стоимость наростов ниже — но я все равно предпочитаю иметь надлежащее начальное приложение — и я гораздо меньше боятся пустого пространства в базе данных , чем я из сокращение вообще без мысли в первую очередь. 🙂

Свойство базы данных автоматического сжатия SQL Server

В этой статье мы обсудим свойство базы данных SQL Server Auto Shrink, которое позволяет SQL Server автоматически сжимать файлы базы данных, если для параметра базы данных задано значение True. Операция автоматического сжатия выполняется функцией автоматического сжатия базы данных сервера , которая является основным курсом этой статьи.

Чтобы избежать сжатия файлов данных / журналов всякий раз, когда размер файла превышает свободное пространство в файле данных, администратор базы данных (Database Administrator) должен выполнять резервное копирование файлов журнала через регулярные интервалы.Резервное копирование всей базы данных — не лучшая идея; нужно также построить или настроить журнал транзакций. Журналы транзакций будут увеличиваться в количестве до тех пор, пока они не займут все доступное дисковое пространство, если вы не будете их резервировать. Если вы создаете резервную копию базы данных, она освобождает свободное пространство для повторного использования. Администратор базы данных должен запланировать резервное копирование журнала транзакций, чтобы уменьшить размер файлов журнала до приемлемого размера.

Функция автоматического сжатия SQL Server отключена по умолчанию в базах данных экземпляра SQL Server.В сценарии, когда у вас есть несколько относительно небольших баз данных, которые вырастают до большего размера за счет вставки новых кортежей или большого количества пустых пространств, созданных удалением нескольких кортежей, автоматическое сжатие SQL Server становится очень удобным в этой ситуации. Более того, вам не нужно беспокоиться о фрагментации файлов базы данных по размеру.

Уменьшая размер базы данных, вы должны учитывать сокращение операций как для критических, так и для относительно больших баз данных в рамках обслуживания.Кроме того, следует избегать использования функции ручной усадки; последствия этого заключаются в том, что никто никогда не узнает о проблемах, связанных с новым или существующим запросом. Однако сжатие файлов транзакций лучше, чем сжатие файлов данных.

Как активировать и деактивировать автоматическое сжатие SQL Server для базы данных?

Пользователи могут включать и отключать опцию автоматического сжатия базы данных, используя SSMS и T-SQL в обоих направлениях.

Активация автоматического сжатия базы данных с помощью SSMS:

Пользователи могут включить или отключить этот параметр в свойствах базы данных с тегом Auto Shrink .Здесь True в раскрывающемся списке активирует эту опцию для вашей базы данных.

Включить автоматическое сжатие базы данных с помощью T-SQL:

Пользователи могут выполнять указанные ниже операторы T-SQL для включения или отключения сжатия базы данных. Мы использовали базу данных AdventureWorks для вышеуказанного оператора T-SQL.

— включить автоматическое сжатие для базы данных AdventureWorks

ALTER DATABASE AdventureWorks SET AUTO_SHRINK ON

GO

— отключить автоматическое сжатие для базы данных AdventureWorks

ALTER DATABASE AdventureWorks

000 9_SHRINK 9_SHRINK SET AUTO 9_SHRINK

Влияние сжатия базы данных на производительность запросов

Плохие эффекты могут возникнуть на стороне производительности запросов, если вы включите для базы данных параметр автоматического сжатия базы данных и параметры автоматического увеличения.Мы можем оставить место для роста файлов данных, а также избежать некоторых частых событий автоматического роста, установив размер базы данных на оптимальное значение, или в большинстве случаев каждая база данных имеет некоторые параметры с включенными функциями автоматического роста.

Для таких баз данных функции автоматического сжатия должны быть активированы нами, когда база данных меньше, одна и больше операций CRUD, чтобы можно было сжать файлы данных и получить свободное пространство, которое мы специально предоставили, чтобы наши базы данных не работали автоматически. -события роста.Свободное пространство будет автоматически освобождаться в файлах данных и файлах журналов с периодическим циклическим последовательным приоритетом с помощью функции автоматического сжатия, если эта функция включена в нескольких базах данных.

Для баз данных большого размера будет выполняться автоматический рост, а затем автоматическое сжатие, что приведет к проблемам с производительностью, вызванным фрагментацией на уровне системы. Подводя итог всему этому, для любой базы данных автоматическое сжатие не должно быть активировано по следующим причинам:

  • Выполнение алгоритмов автоматического сжатия SQL Server без какой-либо цели определенно приведет к разбазариванию ресурсов в огромном количестве.
  • Независимо от того, выполняете ли вы автоматическое сжатие SQL Server или ручное сжатие, это, очевидно, приведет к фрагментации индекса, и это в конечном итоге приведет к сжатию файлов данных.
  • Если сервер также форсирует границы подсистемы ввода-вывода, выполнение сжатия может вытолкнуть его, что приведет к увеличению длины дисковой очереди и, возможно, тайм-ауту ввода-вывода, это приведет к чрезмерному использованию ресурсов ввода-вывода сервера и ЦП
  • Производительность системы будет снижена из-за фрагментации файловой системы на уровне диска, что опять же является прямым следствием частого сжатия и увеличения файлов данных.

Чтобы узнать больше о событиях роста и сжатия в SQL Server, прочтите эту статью Получите подробную информацию о событиях роста и сжатия базы данных SQL Server.

Для критически важной базы данных эксперт может запустить операцию сжатия вручную на уровне файла базы данных. Операция с файлом сжатия вручную может быть выполнена при выполнении операции удаления, после чего пространство было освобождено. Мы должны перестроить фрагментированные индексы после выполнения операции сжатия, так как операция сжатия может привести к фрагментации индекса. Процент фрагментации индекса может быть проверен пользователем с помощью операторов T-SQL DMV. Однако сжатие файла журнала должно выполняться вручную по мере необходимости и не должно являться частью регулярного технического обслуживания.

Чтобы отслеживать использование диска на регулярной основе, отчет об использовании диска может быть проанализирован пользователем перед выполнением операции сжатия вручную с использованием SSMS, что дает вам представление о данных и информации о пространстве журнала для базы данных на дисплее. Если пользователь хочет получить панель мониторинга для расчета зарезервированного пространства и свободного пространства для файлов базы данных, то отчет о дисках станет очень полезным. Однако отчет о диске содержит информацию с использованием DMV SQL Server. Отчет о диске доступен в указанном ниже каталоге с помощью SSMS.

База данных >> Отчеты >> Стандартные отчеты >> Использование диска

Здесь у нас есть дисковый отчет для базы данных [AdventureWorks]. Пользователь мог видеть статистику в реальном времени для файлов данных и файлов журнала. Этот отчет включает основную информацию об общем зарезервированном пространстве, зарезервированном пространстве файлов данных, зарезервированном пространстве журнала транзакций и зарезервированном пространстве OLTP в памяти.

База данных сжатия автоматически использует задания SQL Server

Такие сценарии могут выполняться путем планирования пользователем задания на выполнение операции сжатия базы данных с помощью планировщика.В качестве первого шага в сценарии найдите свободное пространство в файле базы данных, а затем сожмите этот файл, если соблюдаются определенные критерии для свободного пространства. Свободное пространство следует рассчитывать с помощью DMV SQL Server.

Как правило, мониторинг файлов базы данных выполняется администратором базы данных, который, в свою очередь, воздействует на базу данных, чтобы контролировать размер файла базы данных. Если предопределенную границу пересекает какой-либо файл, им необходимо выполнить такие действия. Таким образом, эту деятельность можно автоматизировать с помощью задания SQL Server для ежедневного, еженедельного или ежемесячного выполнения в заранее определенное время.

Лучше всего запланировать это задание только для файла журнала базы данных и вручную отслеживать свободное пространство файла данных. Потому что это также может повлиять на производительность запроса. SQL Server DMV вернет файл данных и файл журнала в одном наборе результатов, поэтому тип файла должен быть раздвоен в инструкции T-SQL в SQL Server DMV. Перед сжатием файла пользователь может применить логику запроса к общему и свободному пространству файла журнала. Если критерии расчета совпадают со свойством файла, то файл сжимается до целевого размера.

Проверить свободное место для файлов базы данных:

SELECT DB_NAME () AS DbName,

имя AS FileName,

размер / 128.0 AS CurrentSizeMB,

size / 128.0 — CAST (FILEPROPERTY (name, ‘SpaceUsed’) AS INT) / 128.0 AS FreeSpaceMB

FROM sys .database_files;

Если такие критерии соответствуют файлам базы данных, например, если свободное пространство больше, чем (n) МБ / ГБ, если n (%) свободного пространства по сравнению с общим пространством, и многое другое.Если для файла журнала нет свободного места, а размер файла близок к значению параметра максимального размера файла, администратору базы данных необходимо выполнить поиск в журнале транзакций.

Сжать файл базы данных:

DBCC SHRINKFILE (имя_файла, 5120);

Здесь 5120 — это размер целевого файла в МБ. Итак, файл станет размером 5120 МБ.Настройте запрос T-SQL с необходимыми критериями на этапе задания SQL Server и запланируйте его в нерабочие часы.

Параметр автоматического сжатия SQL Server не может быть включен для всех баз данных. В частности, это помогает для меньшей базы данных, которая сравнительно выполняет меньше операций CRUD.

Заключение

В этой статье мы обсудили свойство базы данных Auto Shrink в SQL Server для сжатия файлов данных и журналов и удаления неиспользуемого пространства. Сжатие базы данных — дорогостоящая операция, и ее следует использовать с осторожностью.

Джигнеш имеет хороший опыт работы с решениями и архитектурой баз данных, работая с несколькими заказчиками по вопросам проектирования и архитектуры баз данных, разработки SQL, администрирования, оптимизации запросов, настройки производительности, высокой доступности и аварийного восстановления.

Посмотреть все сообщения от Jignesh Raiyani

Последние сообщения от Jignesh Raiyani (посмотреть все)

.

Сокращение базы данных SQL Server — как и когда планировать и выполнять сжатие файлов базы данных

Время от времени администраторы баз данных оказываются в ситуации, когда база данных SQL Server становится слишком большой для их производственной среды и ее необходимо уменьшить в размере, чтобы освободить место и выделить его обратно в систему.

Перед сжатием базы данных SQL Server или файлов базы данных очень важно понять, как работает этот процесс, и каковы непосредственные последствия процесса сжатия.

Сжатие базы данных SQL Server — это процесс, в котором неиспользуемое пространство, которое ранее использовалось в какой-то момент, удаляется из базы данных. SQL Server выполняет этот процесс, перемещая страницы данных из конца файла базы данных в начало (как в книге), заполняя свободное место на первых страницах и освобождая страницы ближе к концу файла данных. При этом страницы данных в конце файла данных (которые сейчас не используются) могут быть перераспределены обратно в систему, в результате чего освободится ранее зарезервированное пространство.Процесс сжатия всегда идет в определенном направлении от конца файла к началу.

Когда выполнять сжатие базы данных SQL Server

Многие эксперты по SQL Server не рекомендуют сокращать базу данных SQL Server, особенно в качестве частого и заранее запланированного действия по обслуживанию. Тем не менее, есть некоторые критические ситуации, когда это считается единственно допустимым или применимым решением:

  • После большого архивирования
  • После сброса большого количества таблиц
  • После существенных изменений в типах данных таблицы

В общем, сжатие базы данных SQL Server наиболее эффективно используется для уменьшения размера файла базы данных после операций, которые привели к очень большому количеству неиспользуемого пространства; это операции с таблицами DROP и TRUNCATE.

Как проверить текущий размер файлов базы данных

Чтобы отобразить информацию о файлах данных и журналов для базы данных SQL Server и проверить информацию о дисковом пространстве:

  • Создать стандартный отчет для базы данных в SQL Server Management Studio или
  • Выполнить хранимую процедуру sp_spaceused из запроса
  • Выполнить операцию SELECT над sys.database_files
  • Чтобы проверить данные и информацию о пространстве журнала для базы данных из SSMS, выполните следующие действия:

    1. Запустите SSMS и подключитесь к ядру базы данных SQL Server
    2. В панели Object Explorer найдите нужную базу данных и щелкните правой кнопкой мыши, чтобы вызвать контекстное меню
    3. Выберите Отчеты / Стандартные d Отчеты / Использование диска

  • В качестве альтернативы получению информации о размере данных из SSMS, информация может быть получена путем выполнения хранимой процедуры sp_spaceused для базы данных

    Запуск хранимой процедуры — более удобный вариант, поскольку он позволяет запускать проверку только по определенной таблице.

     ИСПОЛЬЗОВАТЬ ApexSQL_Backup_Shrink;
    ИДТИ
    
    EXEC sp_spaceused N'Table_1 ';
    ИДТИ
     

    Вот пример результатов после выполнения указанной хранимой процедуры

  • Третий вариант, как указывалось ранее, заключается в выполнении операции SELECT для sys.database_files

     ИСПОЛЬЗОВАТЬ ApexSQL_Backup_Shrink;
    ИДТИ
    
    ВЫБЕРИТЕ file_id
    ,ИМЯ
    , type_desc
    , физическое_имя
    ,размер
    , max_size
    ОТ sys.database_files;
    ИДТИ
     

    Вот пример результатов при выполнении указанного оператора SELECT

Что следует учитывать перед выполнением сжатия базы данных SQL Server?

Прежде чем принять решение об уменьшении базы данных, важно знать обо всех ограничениях и ограничениях процесса сжатия базы данных, а также о возможном негативном влиянии на базу данных и производительность SQL Server.

Ограничения:

  • Невозможно выполнить сжатие базы данных SQL Server во время выполнения процесса резервного копирования базы данных, и наоборот.
  • База данных не может быть сокращена до бесконечности. При первоначальном создании базы данных был указан минимальный размер базы данных, и сжатие базы данных не может сделать его меньше этого значения. Даже полностью пустая база данных не может быть уменьшена ниже 1 ГБ, если начальный минимальный размер был установлен на 1 ГБ

Минусы:

  • При сжатии базы данных SQL Server полностью игнорируется логическая фрагментация индексов, что приводит к массовой фрагментации всех индексов.Это может отрицательно повлиять на производительность запроса, так как «обнаружение» фрагментированных индексов займет больше времени. Выполнение немедленного перестроения индекса может решить эту проблему, но не полностью, поскольку это частично сведет на нет процесс сжатия и снова создаст некоторое «неиспользуемое» пространство для правильной дефрагментации индексов, что в некоторой степени сводит на нет результаты сжатия базы данных
  • Уменьшенные файлы неизбежно снова будут расти, поскольку в большинстве производственных баз данных есть хотя бы «некоторая» активность. Это означает, что файл базы данных будет увеличиваться в размере, а этот процесс занимает время и использует не столь незначительное количество ресурсов, что может оказывать влияние на производительность в средах с высокой производительностью.
  • Выполнение сжатия нескольких баз данных в нескольких случаях может привести к фрагментации диска (фрагментации файловой системы), что может вызвать проблемы с производительностью
  • Процесс выделения страниц будет записан как действие в файле журнала транзакций, что может привести к значительному росту файла журнала транзакций, особенно в базах данных в модели полного восстановления.
  • Последующее сжатие и рост файлов журнала транзакций замедлит запуск, восстановление и время репликации базы данных

Как сжать базу данных с помощью T-SQL

  1. Подключитесь к ядру базы данных через SSMS или другой инструмент управления.
  2. Выполнить DBCC SHRINKDATABASE для рассматриваемой базы данных

    Примечание: чтобы определить процент максимального оставшегося свободного места в файлах после завершения процесса сжатия, необходимо указать значение%.

например Сжатие базы данных ApexSQL_Backup_Shrink с максимальным оставшимся свободным пространством в файлах 25%

 DBCC SHRINKDATABASE (
ApexSQL_Backup_Shrink
, 25
);
 

Как сжать базу данных SQL Server с помощью SQL Server Management Studio

  1. Запустите SSMS и подключитесь к ядру базы данных SQL Server
  2. В панели Object Explorer найдите нужную базу данных и щелкните правой кнопкой мыши, чтобы вызвать контекстное меню
  3. Перейти к Задачи / Сжать / База данных
  4. В диалоговом окне Сжать базу данных будут предоставлены сведения о размере базы данных и возможность выбрать, будут ли файлы реорганизованы до освобождения неиспользуемого пространства

    Примечание: если Реорганизовать файлы перед освобождением неиспользуемого пространства отмечена опция , можно будет выбрать процент максимального оставшегося свободного места в файлах после завершения процесса сжатия.Когда выбран этот параметр, результат будет таким же, как при выполнении DBCC SHRINKDATABASE и указании параметра целевого процента. Если этот параметр не выбран, результат будет таким же, как при выполнении DBCC SHRINKDATABASE с параметром TRUNCATEONLY.

  5. Нажмите кнопку OK , чтобы завершить процесс усадки

4 января 2016 г.

Обзор базы данных Shrink TempDB в SQL Server

В этой статье рассматривается использование TempDB и различные способы сжатия базы данных TempDB в SQL Server.

Каждый экземпляр Microsoft SQL Server имеет системную базу данных TempDB . Это основа для SQL
Экземпляр сервера. Давайте рассмотрим базу данных TempDB и ее использование, а также способы уменьшения базы данных TempDB в
следующие разделы этой статьи.

Несколько важных моментов о TempDB

  • TempDB — это глобальная ресурсная (доступная для всех подключенных пользователей) системная база данных
  • SQL Server воссоздает базу данных TempDB при каждом перезапуске службы SQL. При перезапуске требуется копия MDF
    и LDF из базы данных моделей. Размер и количество файлов MDF и LDF сброшены до предварительно заданного размера.
  • SQL Server не выполняет восстановление на TempDB, и предыдущие данные теряются
  • База данных TempDB всегда находится в простой модели восстановления, и мы не можем сделать резервную копию базы данных для нее.
  • Мы не можем откатить транзакции в TempDB, потому что он минимально регистрирует транзакции

Обзор использования TempDB

  • Обычно мы создаем локальные временные таблицы (## соглашения об именах) и глобальные временные таблицы (## именование
    условных обозначений) для подготовки промежуточных таблиц.SQL Server создает эти временные таблицы в базе данных TempDB.
  • Мы можем создать или перестроить индекс в TempDB с помощью предложения SORT_IN_TEMPDB = ON. SQL Server выполняет всю сортировку
    вычисления в TempDB вместо базы данных, к которой принадлежит объект
  • SQL Server использует TempDB для уровня изоляции Read COMMITTED SNAPSHOT. SQL Server использует управление версиями строк
    для каждой записи.Старая версия также получает дополнительные 14 байтов в TempDB для отслеживания управления версиями строк.
  • Внутренние объекты, такие как рабочие таблицы курсора, операции спула, операции промежуточной сортировки, такие как GROUP BY,
    ORDER BY, UNION, DBCC CHECKDB, временное хранилище больших объектов, уведомление о событии сервисного брокера
  • В множестве активных наборов результатов (с использованием MultipleActiveResultSets = True) SQL Server использует управление версиями и
    хранит это в TempDB

Вы можете просмотреть эти статьи, Конфигурация,
операции и ограничения системной базы данных TempDB SQL Server и как контролировать SQL Server TempDB
database, чтобы получить более подробную информацию о базе данных TempDB.

Обзор деятельности Shrink TempDB

Начиная с SQL Server 2016, мастер установки автоматически определяет ядра ЦП и создает необходимые
количество файлов базы данных для TempDB. Также он устанавливает максимальный рост отдельных файлов до 64 МБ.

На следующем снимке экрана вы можете увидеть конфигурацию TempDB для моего демонстрационного экземпляра SQL.

Для этой демонстрации я отключу автоматический рост для базы данных TempDB.

  • Примечание: Никогда не делайте этого на производственном экземпляре; Я делаю это на своем тестовом экземпляре
    только для демонстрационных целей

Выполните следующий запрос, чтобы создать локальную временную таблицу и вставить в нее данные.

CREATE TABLE #TempTable (col1 char (1000), col2 char (1000))

SET NOCOUNT ON;

DECLARE @i INT = 1

BEGIN TRAN

WHILE @i <= 150000

BEGIN

INSERT INTO #TempTable values ​​(‘A’, ‘B’)

SET @i + = 1

END

COMMIT TRAN

DROP TABLE #TempTable

Выдает следующее сообщение об ошибке.SQL Server не может увеличить размер файла журнала TempDB и не может
выполнить транзакцию. Вы можете подумать, что мы отключили автоматический рост, и если мы включим автоматический рост,
вопрос. Рассмотрим эту ситуацию, когда файл журнала TempDB вырос до размера диска, а у вас нет
достаточно свободного места на диске для увеличения файла журнала.

Давайте включим автоматический рост файлов данных с максимальным размером 20 МБ для каждого файла данных.Мы видим этот файл журнала
рост для TempDB включен, и у него нет максимального размера файла.

Давайте еще раз выполним запрос, чтобы заполнить TempDB и увидеть сообщение об ошибке. В первичной файловой группе SQL Server нет свободных
пространство.

На этом этапе, если вы также попытаетесь обновить экземпляр SQL, вы получите аналогичное сообщение об ошибке.

Различные способы сжатия базы данных TempDB

Вы можете посмотреть использование диска в отчете о верхних таблицах, чтобы проверить, какие объекты занимают место в TempDB.Щелкните правой кнопкой мыши TempDB-> перейдите в Отчеты-> Стандартные отчеты-> Использование диска по верхним таблицам.

На этом снимке экрана мы видим, что #TempTable занимает место в TempDB.

Вы можете удалить существующий объект в TempDB, и он освободит для вас место. Не каждый
время отбрасывать объекты, особенно в производственном экземпляре. Из-за этого мы могли потерять всю предыдущую работу.

Сжать TEMPDB с помощью DBCC SHRINKFILE

Мы можем использовать команду DBCC SHRINKFILE для сжатия файла данных или журнала для TempDB. Нам не нужен перезапуск
Служба SQL в этом случае.

DBCC SHRINKFILE (логическое_имя_файла, размер_в_ МБ)

Выполните следующий запрос, чтобы получить размер отдельного файла в TempDB.

ВЫБРАТЬ имя,

file_id,

type_desc,

Размер

* 8/1024 [TempdbSizeInMB]

FROM tempdb.sys.database_files

ЗАКАЗАТЬ type_desc DESC,

file_id;

Давайте попробуем сжать файл данных TempDev с помощью команды DBCC SHRINKFILE.

DBCC SHRINKFILE (tempdev, 10)

Он выполняет сжатие, и вы получаете следующий результат.

Вы можете еще попробовать сжать файл.

DBCC SHRINKFILE (tempdev, 0)

Таким образом, нам нужно сжать отдельные файлы данных или журналов.

Сжать TEMPDB с помощью команды DBCC SHRINKDATABASE

Мы также можем сжать базу данных TempDB с помощью команды DBCC SHRINKDATABASE. Синтаксис команды следующий:
следует.

DBCC SHRINKDATABASE (TempDB, «target_percentage_of_free_space»);

Давайте воспользуемся этой командой, чтобы сжать TempDB и оставить 10 процентов свободного места.

DBCC SHRINKDATABASE (tempdb, 10);

Он выполняет сжатие на уровне базы данных, и вы получаете следующий результат.

Вы можете проверить размер файлов данных и журналов для базы данных с помощью tempdb.sys.database_files.

Измените размер TempDB с помощью команды ALTER DATABASE

Мы можем использовать команду Alter, чтобы изменить размер файлов tempdb.Предположим, что начальный размер данных и журнала составляет 1 ГБ, мы
можно использовать эту команду, чтобы установить его на более низкий уровень.

Следующая команда изменяет исходный размер файлов TempDEV и TempLog до 100 МБ.

Мастер USE;

GO

ALTER DATABASE tempdb

MODIFY FILE (NAME = tempdev, SIZE = 100Mb);

GO

ALTER DATABASE tempdb

ИЗМЕНИТЬ ФАЙЛ (ИМЯ = templog, РАЗМЕР = 100 МБ);

ГО

Нам нужно перезапустить службы SQL, чтобы этот параметр вступил в силу.

Сжать TempDB с помощью SSMS

Мы также можем использовать метод графического интерфейса SSMS для сжатия TempDB. Щелкните правой кнопкой мыши TempDB и перейдите в раздел «Задачи». В задачах
в списке нажмите «Сжать» и выберите «База данных или файлы».

Параметры базы данных и файлов аналогичны командам DBCC SHRINKDATABASE и DBCC SHRINKFILE, которые мы объяснили.
ранее.

Перезапустите службы SQL для сжатия базы данных TempDB

Это должен быть последний вариант перезапуска базы данных TempDB и решения проблем, связанных с дисковым пространством из-за
Данные TempDB или пространство файла журнала.В производственном экземпляре сложно найти время простоя для перезапуска SQL
Обслуживание. Таким образом, вы должны сначала рассмотреть другие варианты и сделать это в последнюю очередь.

Что если вы попытаетесь сжать базу данных Tempdb, но она не освободит место?

Иногда вы пытаетесь сжать базу данных TempDB, и команда показывает успешную, но вы не видите свободного места
в базе данных. Это может быть связано с активными транзакциями, управлением версиями или объектами, необходимыми для SQL Server в
TempDB в соответствии с текущей рабочей нагрузкой.

Ссылаясь на статью Microsoft, мы должны сжимать TempDB, когда SQL Server находится в режиме ожидания или
однопользовательский режим.

Мы все еще можем попытаться сжать TempDB, используя следующий метод.

Теперь попробуйте сжать базу данных, используя предыдущие методы. Вы должны отдать предпочтение DBCC SHRINKFILE вместо
команда DBCC SHRINKDATABASE.

Сжать TempDB в однопользовательском режиме

Иногда вы не можете запустить службы SQL из-за размера TempDB, и вам необходимо сбросить начальный размер с помощью
изменить команду базы данных.Предположим, вы выполнили команду alter database для изменения размера файла данных tempdb, но
случайно вы указали начальный размер файла, который не соответствует вашему свободному месту на диске. Ты пытался
для перезапуска службы SQL, но она не может запуститься, потому что на диске недостаточно свободного места для создания
Файлы TempDB.

Вам необходимо запустить SQL Services в режиме минимальной конфигурации и изменить размер файлов TempDB.

Службы SQL должны быть в остановленном состоянии, чтобы использовать режим минимальной конфигурации.

  • Откройте командную строку с правами администратора
  • Перейдите в двоичную папку SQL Server. В моем экземпляре SQL путь к папке BINN следующий

    C: \ Program Files \ Microsoft SQL Server \ MSSQL15.SQL2019CTP \ MSSQL \ Binn

    Если вы не уверены в пути, щелкните правой кнопкой мыши службу SQL в диспетчере конфигурации SQL Server и
    страницу свойств, вы можете посмотреть двоичный путь

  • Выполните следующую команду в административной строке (для моего экземпляра SQL2019CTP)

    sqlservr.exe -s SQL2019CTP -c -f

    Он запускает службы SQL в режиме минимальной конфигурации, и вы также можете видеть это как предупреждающее сообщение.

  • Откройте другую командную строку и подключитесь к серверу SQL с помощью SQLCMD

    Теперь мы можем запустить команду alter database, чтобы изменить размер TempDB. Вам нужно запустить команду alter database
    для каждого файла Tempdb

    Мастер USE;

    GO

    ALTER DATABASE tempdb

    MODIFY FILE (NAME = tempdev, SIZE = 100Mb);

    GO

    ALTER DATABASE tempdb

    ИЗМЕНИТЬ ФАЙЛ (ИМЯ = templog, РАЗМЕР = 100 МБ);

    ГО

  • Вернуть административную командную строку, в которой мы запустили службу SQL в режиме минимальной конфигурации и
    Нажмите
    CTRL + C для выхода из

  • Запустите службы SQL с помощью диспетчера конфигурации SQL Server и проверьте изменения, используя следующие
    запрос

    SELECT

    имя, file_id, type_desc, размер * 8/1024 [TempdbSizeInMB]

    FROM sys.master_files

    WHERE DB_NAME (database_id) = ‘tempdb’

    ORDER BY type_desc DESC, file_id

    GO

    На скриншоте видно, что начальный размер файлов TempDev и TempLog составляет 100 МБ

Заключение

В этой статье мы исследовали важность базы данных TempDB в SQL Server и различные методы сокращения
База данных TempDB.Вы должны знать обо всех этих методах и при необходимости предпринимать соответствующие действия.

Раджендра имеет более 8 лет опыта в администрировании баз данных, он увлечен оптимизацией производительности баз данных, мониторингом, технологиями высокой доступности и аварийного восстановления, изучением новых вещей, новыми функциями.

Работая старшим консультантом администратора баз данных для крупных заказчиков и получив сертификат MCSA SQL 2012, он любит делиться знаниями в различных блогах.
С ним можно связаться по адресу [email protected]

Посмотреть все сообщения Rajendra Gupta

Последние сообщения Rajendra Gupta (посмотреть все)

.

Java — как уменьшить базу данных sqlite?

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *