වැඩිපුරම ඡන්දය ප්රකාශ කළ යෝජනාව ඇතුළුව, ස්ටැක් පිටාර ගැලීම පිළිබඳ කිසිදු පිළිතුරක් ගැන මම සෑහීමකට පත් නොවන නිසාත්, මයික්ගේ පිළිතුරට පිළිතුරු නොදෙන කාරණා කිහිපයක් ඇති නිසාත්, මම සිතුවෙමි මගේ ආදානය ද මෙහි ඇත. මම මෙම පිළිතුරේ පිටපතක් ද එහි තැබුවෙමි.
ලොග් ගොනුවක් කුඩා කිරීම සැබවින්ම ඔබ නැවත සිදුවනු ඇතැයි අපේක්ෂා නොකරන අනපේක්ෂිත වර්ධනයක් ඇති වූ අවස්ථා සඳහා වෙන් කළ යුතුය. ලොග් ගොනුව නැවත එකම ප්රමාණයට වර්ධනය වේ නම්, එය තාවකාලිකව හැකිලීමෙන් බොහෝ දේ ඉටු නොවේ. දැන්, ඔබේ දත්ත ගබඩාවේ ප්රතිසාධන අරමුණු මත පදනම්ව, ඔබ ගත යුතු ක්රියාමාර්ග මේවාය.
පළමුව, සම්පූර්ණ උපස්ථයක් ගන්න
යමක් වැරදුනහොත් එය යථා තත්වයට පත් කළ හැකි බවට සහතික නොකර ඔබේ දත්ත ගබඩාවේ කිසිඳු වෙනසක් නොකරන්න.
ඔබ නියමිත වේලාවට යථා තත්ත්වයට පත්වීම ගැන සැලකිලිමත් වන්නේ නම්
(සහ නියමිත වේලාවට යථා තත්ත්වයට පත්වීමෙන්, මම අදහස් කරන්නේ පූර්ණ හෝ අවකල්ය උපස්ථයක් හැර වෙනත් ඕනෑම දෙයකට නැවත පැමිණීමට හැකිවීම ගැන ඔබ සැලකිලිමත් වන බවයි.)
ඔබගේ දත්ත සමුදාය FULL
ප්රතිසාධන ප්රකාරයේදී විය හැක. එසේ නොවේ නම්, එය එසේ බවට වග බලා ගන්න:
ALTER DATABASE yourdb SET RECOVERY FULL;
ඔබ නිතිපතා සම්පූර්ණ උපස්ථ ලබා ගත්තද, ඔබ ලොග් උපස්ථයක් සිදු කරන තුරු ලොග් ගොනුව වර්ධනය වී වර්ධනය වේ - මෙය ඔබේ ආරක්ෂාව සඳහා මිස අනවශ්ය ලෙස ඔබේ තැටියේ ආහාරයට නොගැනීමට. ඔබගේ ප්රතිසාධන අරමුණු අනුව ඔබ නිතරම මෙම ලොග් උපස්ථ සිදු කළ යුතුය. නිදසුනක් වශයෙන්, ව්යසනයකදී ඔබට විනාඩි 15 කට නොඅඩු දත්ත අහිමි කර ගත හැකි යැයි පවසන ව්යාපාර රීතියක් ඔබට තිබේ නම්, සෑම විනාඩි 15 කට වරක්ම ලොගය උපස්ථ කරන රැකියාවක් ඔබට තිබිය යුතුය. වර්තමාන වේලාව මත පදනම්ව කාලරාමුගත ගොනු නාම ජනනය කරන ස්ක්රිප්ටයක් මෙන්න (නමුත් නඩත්තු සැලසුම් ආදියෙන් ඔබට මෙය කළ හැකිය. නඩත්තු සැලසුම් වල හැකිලීමේ විකල්ප කිසිවක් තෝරා නොගන්න, ඒවා භයානක ය).
DECLARE @path NVARCHAR(255) = N'\\backup_share\log\yourdb_'
+ CONVERT(CHAR(8), GETDATE(), 112) + '_'
+ REPLACE(CONVERT(CHAR(8), GETDATE(), 108),':','')
+ '.trn';
BACKUP LOG foo TO DISK = @path WITH INIT, COMPRESSION;
\\backup_share\
වෙනස් යටි ගබඩා උපාංගයක් නියෝජනය කරන වෙනත් යන්ත්රයක තිබිය යුතු බව සලකන්න . මේවා එකම යන්ත්රයකට (හෝ එකම යටි තැටි භාවිතා කරන වෙනත් යන්ත්රයකට හෝ එකම භෞතික ධාරකයේ ඇති වෙනත් වීඑම් එකකට) උපස්ථ කිරීම සැබවින්ම ඔබට උදව් නොකරයි, මන්ද යන්ත්රය පුපුරා ගියහොත් ඔබට ඔබේ දත්ත ගබඩාව අහිමි වී ඇත සහ එහි උපස්ථ. ඔබගේ ජාල යටිතල ව්යුහය මත පදනම්ව, එය දේශීයව උපස්ථ කිරීමට වැඩි තේරුමක් ඇති අතර පසුව ඒවා තිරය පිටුපස වෙනත් ස්ථානයකට මාරු කරයි; කෙසේ වෙතත්, ඔබට හැකි ඉක්මනින් ඒවා ප්රාථමික දත්ත සමුදා යන්ත්රයෙන් ඉවත් කිරීමට අවශ්යය.
දැන්, ඔබ නිතිපතා ලොග් උපස්ථ ධාවනය කළ පසු, ලොග් ගොනුව මේ වන විට පුපුරවා හරින ඕනෑම දෙයකට වඩා සාධාරණ දෙයකට හැකිලීම සාධාරණ විය යුතුය. ලොග් ගොනුව 1 MB වන තෙක් නැවත නැවතත් ධාවනය වීම මෙයින් අදහස් නොකෙරේ SHRINKFILE
- ඔබ නිතරම ලොගය උපස්ථ කරගත්තද, සිදුවිය හැකි සමගාමී ගනුදෙනු වල එකතුවට එය තවමත් ඉඩ දිය යුතුය. SQL සේවාදායකයට ලිපිගොනු ශුන්ය කළ යුතු බැවින් (ක්ෂණික ගොනු ආරම්භ කිරීම සක්රිය කර ඇති විට දත්ත ගොනු මෙන් නොව), සහ මෙය සිදු වන විට පරිශීලක ගනුදෙනු බලා සිටිය යුතුය. ඔබට මෙම වර්ධනය-හැකිලීම-වැඩීම-හැකිලීමේ පුරුද්ද හැකිතාක් අඩු කිරීමට අවශ්ය වන අතර, ඔබේ පරිශීලකයින් ඒ සඳහා මුදල් ගෙවීමට ඔබට අවශ්ය නැත.
හැකිලීමට පෙර ඔබට ලොගය දෙවරක් උපස්ථ කිරීමට අවශ්ය විය හැකි බව සලකන්න (ස්තූතියි රොබට්).
එබැවින්, ඔබේ ලොග් ගොනුව සඳහා ප්රායෝගික ප්රමාණයක් ඉදිරිපත් කළ යුතුය. ඔබේ පද්ධතිය ගැන වැඩි යමක් නොදැන මෙහි ඇති කිසිවෙකුට ඔබට එය පැවසිය නොහැක, නමුත් ඔබ නිතරම ලොග් ගොනුව හැකිලෙමින් එය නැවත වර්ධනය වෙමින් තිබේ නම්, හොඳ දිය සලකුණක් එය තිබූ විශාලතම ප්රමාණයට වඩා 10-50% වැඩි විය හැකිය. . එය 200 MB දක්වා වන බව කියමු, පසුව ඔබට අවශ්ය ඕනෑම ස්වයංක්රීය වර්ධන සිදුවීම් 50 MB විය යුතුය, එවිට ඔබට ලොග් ගොනු ප්රමාණය මේ ආකාරයෙන් සකස් කළ හැකිය:
USE [master];
GO
ALTER DATABASE Test1
MODIFY FILE
(NAME = yourdb_log, SIZE = 200MB, FILEGROWTH = 50MB);
GO
ලොග් ගොනුව දැනට> 200 MB නම්, ඔබට මෙය පළමුව ධාවනය කිරීමට අවශ්ය විය හැකි බව සලකන්න:
USE yourdb;
GO
DBCC SHRINKFILE(yourdb_log, 200);
GO
නියමිත වේලාවට යථා තත්ත්වයට පත්වීම ගැන ඔබ තැකීමක් නොකරන්නේ නම්
මෙය පරීක්ෂණ දත්ත ගබඩාවක් නම්, සහ නියමිත වේලාවට යථා තත්ත්වයට පත්වීම ගැන ඔබ තැකීමක් නොකරන්නේ නම්, ඔබේ දත්ත සමුදාය SIMPLE
ප්රතිසාධන ප්රකාරයේ ඇති බවට ඔබ සහතික විය යුතුය .
ALTER DATABASE yourdb SET RECOVERY SIMPLE;
දත්ත සමුදාය SIMPLE
ප්රතිසාධන මාදිලියේ තැබීමෙන් සියලු ගනුදෙනු පිළිබඳ වාර්තාවක් තබා ගැනීම සඳහා වර්ධනය වීම වෙනුවට SQL සේවාදායකය ලොග් ගොනුවේ කොටස් නැවත භාවිතා කිරීමට වග බලා ගනී (අත්යවශ්යයෙන්ම අක්රීය ගනුදෙනු ඉවත් කිරීම) ( FULL
ඔබ ලොගය උපස්ථ කරන තෙක් ප්රතිසාධනය වැනි ). CHECKPOINT
සිදුවීම් ලොගය පාලනය කිරීමට උපකාරී වන අතර ඔබ CHECKPOINT
s අතර ටී-ලොග් ක්රියාකාරකම් විශාල ප්රමාණයක් ජනනය නොකරන්නේ නම් එය වර්ධනය වීමට අවශ්ය නොවන බවට වග බලා ගන්න .
ඊළඟට, මෙම ලොග් වර්ධනය සැබවින්ම සිදුවී ඇත්තේ අසාමාන්ය සිදුවීමක් නිසා යැයි කියන්න (එනම්, වාර්ෂික වසන්තය පිරිසිදු කිරීම හෝ ඔබේ විශාලතම දර්ශක නැවත ගොඩනැඟීම), සාමාන්ය එදිනෙදා භාවිතය නිසා නොවේ. ඔබ ලොග් ගොනුව හාස්යජනක ලෙස කුඩා ප්රමාණයකට හැකිලී ඇත්නම් සහ ඔබේ සාමාන්ය ක්රියාකාරකම් වලට සරිලන සේ SQL සේවාදායකයට එය නැවත වර්ධනය කළ යුතු නම්, ඔබ ලබාගත්තේ කුමක්ද? ඔබ නිදහස් කළ තැටි අවකාශය තාවකාලිකව පමණක් භාවිතා කිරීමට ඔබට හැකි වූවාද? ඔබට ක්ෂණික විසඳුමක් අවශ්ය නම්, ඔබට පහත සඳහන් දෑ ක්රියාත්මක කළ හැකිය:
USE yourdb;
GO
CHECKPOINT;
GO
CHECKPOINT; -- run twice to ensure file wrap-around
GO
-- 200 MB
DBCC SHRINKFILE(yourdb_log, 200);
GO
එසේ නොමැතිනම් සුදුසු ප්රමාණයක් සහ වර්ධන වේගයක් නියම කරන්න. ලක්ෂ්ය කාල ප්රතිසාධන නඩුවේ උදාහරණයට අනුව, ඔබට එකම කේතය සහ තර්කනය භාවිතා කර ගොනු විශාලත්වය සුදුසු දැයි තීරණය කර සාධාරණ ස්වයංක්රීය වර්ධන පරාමිතීන් සැකසිය හැකිය.
ඔබට කිරීමට අවශ්ය නැති සමහර දේවල්
TRUNCATE_ONLY
විකල්පය සමඟ ලොගය උපස්ථ කර ඉන්පසුSHRINKFILE
. එකක් සඳහා, මෙම TRUNCATE_ONLY
විකල්පය අවලංගු කර ඇති අතර එය SQL සේවාදායකයේ වත්මන් අනුවාද වල තවදුරටත් නොපවතී. දෙවනුව, ඔබ FULL
ප්රතිසාධන ආකෘතියේ සිටී නම්, මෙය ඔබගේ ලොග් දාමය විනාශ කරන අතර නව පූර්ණ උපස්ථයක් අවශ්ය වේ.
දත්ත සමුදාය වෙන් කරන්න, ලොග් ගොනුව මකා දමා නැවත අමුණන්න . මෙය කෙතරම් භයානක විය හැකිදැයි මට අවධාරණය කළ නොහැක. ඔබේ දත්ත ගබඩාව නැවත ඉහළට නොඑනු ඇත, එය සැකකරුවෙකු ලෙස මතු විය හැකිය, ඔබට උපස්ථයකට ආපසු යාමට සිදු විය හැකිය (ඔබට එකක් තිබේ නම්) යනාදිය.
"හැකිලෙන දත්ත සමුදාය" විකල්පය භාවිතා කරන්න . DBCC SHRINKDATABASE
ඒ සඳහා නඩත්තු සැලසුම් විකල්පය නරක අදහස් වේ, විශේෂයෙන් ඔබට අවශ්ය වන්නේ ලොග් ගැටළුවක් විසඳීමට පමණි. ඔබට අවශ්ය පරිදි සකස් කිරීමට අවශ්ය ගොනුව ඉලක්ක කර ස්වාධීනව සකස් කරන්න, භාවිතා කරමින් DBCC SHRINKFILE
හෝ ALTER DATABASE ... MODIFY FILE
(ඉහත උදාහරණ).
ලොග් ගොනුව 1 MB දක්වා හැකිලෙන්න . මෙය සිත් ඇදගන්නා සුළු පෙනුමක් ඇති හෙයින්, ඒයි, SQL සේවාදායකය මට එය යම් යම් අවස්ථා වලදී කිරීමට ඉඩ දෙන අතර, එය නිදහස් කරන සියලු අවකාශය දෙස බලයි! ඔබගේ දත්ත සමුදාය කියවීමට පමණක් නොව (එය ඔබ භාවිතා කරන ලෙස සලකුණු කළ යුතුය ALTER DATABASE
), මෙය නියත වශයෙන්ම බොහෝ අනවශ්ය වර්ධන සිදුවීම් වලට තුඩු දෙනු ඇත, මන්ද ප්රතිසාධන ආකෘතිය නොසලකා ලොග් වත්මන් ගනුදෙනු සඳහා ඉඩ ලබා දිය යුතු බැවිනි. තාවකාලිකව එම අවකාශය නිදහස් කිරීමේ තේරුම කුමක්ද, SQL සේවාදායකයට එය සෙමින් හා වේදනාකාරී ලෙස ආපසු ලබා ගත හැකිය.
දෙවන ලොග් ගොනුවක් සාදන්න . මෙය ඔබගේ තැටිය පුරවා ඇති ධාවකය සඳහා තාවකාලිකව සහනයක් ලබා දෙනු ඇත, නමුත් මෙය හරියට සිදුරු සහිත පෙනහළු පටි ආධාරයෙන් සවි කිරීමට උත්සාහ කිරීමක් වැනිය. තවත් විභව ගැටළුවක් එකතු කරනවා වෙනුවට ඔබ ගැටළු සහිත ලොග් ගොනුව සමඟ කෙලින්ම කටයුතු කළ යුතුය. සමහර ගනුදෙනු ලොග් ක්රියාකාරකම් වෙනත් ධාවකයකට හරවා යැවීම හැරුණු විට, දෙවන ලොග් ගොනුවක් ඇත්ත වශයෙන්ම ඔබ වෙනුවෙන් කිසිවක් නොකරයි (දෙවන දත්ත ගොනුවක් මෙන් නොව), මන්දයත් වරකට එක් ගොනුවක් පමණක් භාවිතා කළ හැකි බැවිනි. පෝල් රැන්ඩල් විසින් පසුකාලීනව බහු ලොග් ලිපිගොනු ඔබට දෂ්ට කළ හැක්කේ මන්දැයි පැහැදිලි කරයි .
ක්රියාශීලී වන්න
ඔබගේ ලොග් ගොනුව කුඩා ප්රමාණයකට හැකිලී එය තනිවම කුඩා අනුපාතයකට ස්වයංක්රීයව වැඩීමට ඉඩ දෙනවා වෙනුවට, එය තරමක් විශාල ප්රමාණයකට සකසන්න (ඔබේ විශාලතම සමගාමී ගනුදෙනු සමූහයේ එකතුවට සරිලන පරිදි) සහ සාධාරණ ස්වයංක්රීය වර්ධනයක් සකසන්න පසුබෑමක් ලෙස සැකසීම, එමඟින් තනි ගනුදෙනු තෘප්තිමත් කිරීම සඳහා කිහිප වතාවක් වර්ධනය වීමට අවශ්ය නොවන අතර සාමාන්ය ව්යාපාර මෙහෙයුම් වලදී එය වර්ධනය වීමට සාපේක්ෂව දුර්ලභ වනු ඇත.
මෙහි ඇති නරකම සැකසුම් වන්නේ 1 MB වර්ධනයක් හෝ 10% ක වර්ධනයකි. විනෝදජනකයි, මේවා SQL සේවාදායකයේ පෙරනිමි වේ (මම පැමිණිලි කර ඇති අතර කිසිදු ප්රයෝජනයක් නැති ලෙස ඉල්ලා සිටිමි ) - දත්ත ගොනු සඳහා 1 MB, සහ ලොග් ගොනු සඳහා 10%. මෙම දිනය හා වයස තුළ කලින් තිබූ දේ ඉතා කුඩා වන අතර දෙවැන්න සෑම විටම දිගු හා දිගු සිදුවීම් වලට මග පාදයි (කියන්න, ඔබේ ලොග් ගොනුව 500 MB වේ, පළමු වර්ධනය 50 MB වේ, ඊළඟ වර්ධනය 55 MB වේ, ඊළඟ වර්ධනය 60 MB වේ , ආදිය. - සහ මන්දගාමී I / O මත, මාව විශ්වාස කරන්න, ඔබ මෙම වක්රය සැබවින්ම දකිනු ඇත).
වැඩිදුර කීයවීම
කරුණාකර මෙහි නවත්වන්න එපා; ලොග් ලිපිගොනු හැකිලීම පිළිබඳව ඔබ දකින බොහෝ උපදෙස් සහජයෙන්ම නරක සහ විනාශකාරී විය හැකි අතර, තැටි අවකාශය නිදහස් කිරීමට වඩා දත්ත අඛණ්ඩතාව ගැන වැඩි සැලකිල්ලක් දක්වන සමහර අය සිටිති.