если файл данных огромен и занимает много места, мне нужно больше
пространство для вставки и обновления некоторых новых данных, сокращение, очевидно, уменьшит
размер файла на диске, который я предположил, что я мог бы использовать
свободное место для вставки новых данных.
Если ваш файл данных занимает много места, это не значит, что это пространство пусто .
Вы должны использовать sp_spaceused
, чтобы определить, есть ли неиспользуемое пространство в файле данных.
Если есть неиспользуемое пространство , оно будет уже использовано "для вставки и обновления некоторых новых данных", а если не будет делать shrink
ничего не изменит: shrink
не удаляет ваши данные, все, что он делает, это перемещает данные в начале файла, чтобы освободить место в конце, чтобы вернуть их в OS
.
Сокращение файла данных может быть полезно, если у вас был файл данных объемом 2 ТБ и 1 ТБ данных были удалены, и вы не планируете вставлять еще одну ТБ данных в следующие 10 лет.
Вы можете представить свой data file
как коробку 1м х 1м х 1м. Если у вас есть только половина коробки с игрушками, даже если вы не используете shrink
, вы можете положить другие игрушки в эту коробку (сделать insert
/ update
). Вместо этого shrink
собирает все игрушки в одном углу, а затем разрезает вашу коробку, чтобы сделать ее размером 50 см х 50 см х 50 см. Таким образом, ваша комната (ОС) теперь имеет больше свободного места, потому что ваш ящик для игрушек занимает только половину пространства, которое он занимал до сжатия.
... И если ваша коробка уже была заполнена, вы не можете добавить больше игрушек, даже если попытаетесь сделать shrink
.
если журнал заполнен, сжатие журнала не должно быть проблемой, верно?
Shrinkig log
- это другой процесс, внутри него ничего нельзя перемещать log file
, в этом смысле, конечно, shrink
не может принести много вреда, как в случае data file
: он не требует ресурсов сервера, он не вызвать любую фрагментацию и т. д.
Но если это удастся или нет, это зависит от причины, по которой ваш «журнал заполнен».
Если ваш журнал заполнен из-за full model
, сжатие файла журнала ничего не изменит: журнал сохраняется, чтобы дать вам возможность иметь log backup chain
(или сделать возможным mirroring
, или log shipping
и т. д.).
Если вместо этого ваша база данных recovery model
равна simple
, и возникла некоторая проблема с transaction
, который был открыт в течение длительного периода времени, или был огромный data loading
(возможно, с полной регистрацией, такой как insert into
без tablock
) и ваш log file
стал больше data file
, и вы нашли и исправили проблему, и вам не нужен такой огромный log file
, да, вы можете уменьшить его до разумного размера, и это не вредно.