दो बातें जो मैं जानना चाहता हूं:
- आप न्यूनतम डाउनटाइम के साथ टेम्पर्डब को सुरक्षित रूप से कैसे स्थानांतरित करेंगे?
- आपको कितने tempdb फ़ाइलों की आवश्यकता है?
क्या यह 1 फाइल प्रति कोर है? तो क्वाड-कोर = 4 टेम्पर्ड फाइलें, तीन नए बना रही हैं?
दो बातें जो मैं जानना चाहता हूं:
क्या यह 1 फाइल प्रति कोर है? तो क्वाड-कोर = 4 टेम्पर्ड फाइलें, तीन नए बना रही हैं?
जवाबों:
tempdb
फ़ाइलों को स्थानांतरित करने के लिए , आपको बस निम्नलिखित करने की आवश्यकता है:
alter database tempdb
modify file
(
name = tempdev,
filename = 'C:\YourNewTempdbDir\tempdb.mdf'
)
go
alter database tempdb
modify file
(
name = templog,
filename = 'C:\YourNewTempdbDir\templog.ldf'
)
go
यदि आप एक नई फ़ाइल जोड़ना चाहते हैं tempdb
, तो आपको बस निम्नलिखित करने की आवश्यकता है (बशर्ते आप इसे फ़ाइल समूह में जोड़ना चाहते हैं PRIMARY
, या अपनी खुद की बनाएं):
alter database tempdb
add file
(
name = tempdb2,
filename = 'C:\YourNewTempdbDir\Tempdb2.ndf'
)
go
इन परिवर्तनों को प्रभावी होने के लिए, आपको SQL सर्वर सेवा को पुनरारंभ करना होगा। तो जहाँ तक डाउनटाइम कम से कम हो जाता है, आप राशि समय की यह सेवा पुन: प्रारंभ करने के लिए ले जाएगा करने के लिए विवश कर रहे हैं । आपको पहले से मौजूद tempdb
डेटाबेस फ़ाइलों को स्थानांतरित करने के बारे में चिंता करने की ज़रूरत नहीं है , क्योंकि SQL सर्वर हमेशा फ़ाइलों को फिर से बनाता है और सेवा स्टार्टअप पर नए स्थान / फाइलें बनाई जाएंगी।
"1 टेम्पर्ड डेटा फाइल प्रति कोर" के लिए, यह काफी हद तक एक मिथक है। सही दृष्टिकोण tempdb
पेज फ्री स्पेस (पीएफएस), ग्लोबल एलोकेशन मैप (जीएएम) और साझा ग्लोबल आवंटन मैप (एसजीएएम) पेजों के लिए फ़ाइल विवाद की निगरानी करना है। कृपया क्वेरी (वैकल्पिक लिंक) पाने के लिए इस लेख का संदर्भ लें जो sys.dm_os_waiting_tasks
डीएमवी के माध्यम से देखता है कि यह देखने के लिए कि कितना tempdb
फ़ाइल विवाद है। फिर आपको इसे बंद करने की आवश्यकता है, केवल tempdb
फ़ाइलों की एक ही राशि के साथ कंबल करने के बजाय जैसे कि कोर हैं। यह अधिक उचित दृष्टिकोण है।
टेम्पर्डब को स्थानांतरित करने के लिए, निष्पादित करें:
ALTER DATABASE tempdb
MODIFY FILE ( name=tempdev, filename='D:\Newpath\tempdb.mdf')
GO
ALTER DATABASE tempdb
MODIFY FILE ( name=templog, filename='D:\Newpath\templog.ldf')
GO
फिर अपनी SQL सर्वर सेवा (MSSQLServer) को पुनरारंभ करें।
Tempdb में फ़ाइलों की संख्या - पॉल रान्डेल का लेख देखें: एक SQL सर्वर DBA एक दिन मिथक: (12/30) tempdb में हमेशा प्रति प्रोसेसर कोर में एक डेटा फ़ाइल होनी चाहिए
से माइक्रोसॉफ्ट के सलाह :
एक सामान्य नियम के रूप में, यदि तार्किक प्रोसेसर की संख्या 8 से कम या उसके बराबर है, तो तार्किक प्रोसेसर के समान डेटा फ़ाइलों का उपयोग करें।
यदि तार्किक प्रोसेसर की संख्या 8 से अधिक है, तो 8 डेटा फ़ाइलों का उपयोग करें और फिर यदि विवाद जारी रहता है, तो डेटा फ़ाइलों की संख्या को 4 तक बढ़ाएँ (तार्किक प्रोसेसर की संख्या तक) जब तक कि विवाद स्वीकार्य स्तर तक कम न हो जाए या बना न दे वर्कलोड / कोड में परिवर्तन।
TempDB फ़ाइलों को ले जाना एक 2-चरण प्रक्रिया है:
SQL Server
परिवर्तन को प्रभावी करने के लिए सेवा को पुनरारंभ करें (यह आपके लिए आवश्यक न्यूनतम डाउनटाइम है)SQL को यह बताने के लिए कि नई TempDB फ़ाइलें कहाँ बनाएँ, आप इसका उपयोग कर सकते हैं:
DECLARE @newDriveAndFolder VARCHAR(8000);
SET @newDriveAndFolder = 'Z:\YourTempDBfolder';
SELECT [name] AS [Logical Name]
,physical_name AS [Current Location]
,state_desc AS [Status]
,size / 128 AS [Size(MB)] --Number of 8KB pages / 128 = MB
,'ALTER DATABASE tempdb MODIFY FILE (NAME = ' + QUOTENAME(f.[name])
+ CHAR(9) /* Tab */
+ ',FILENAME = ''' + @newDriveAndFolder + CHAR(92) /* Backslash */ + f.[name]
+ CASE WHEN f.[type] = 1 /* Log */ THEN '.ldf' ELSE '.mdf' END + ''''
+ ');'
AS [Create new TempDB files]
FROM sys.master_files f
WHERE f.database_id = DB_ID(N'tempdb')
ORDER BY f.[type];
यह उन T-SQL स्टेटमेंट्स को जनरेट करेगा, जिन्हें आप फ़ाइलों को अपने drive:\folder
इच्छित नए में ले जाने के लिए चलाना चाहते हैं। (बड़ा बनाने के लिए छवि पर क्लिक करें)
जब आप अपने चलते बयानों को चला चुके हैं, तो आप उपरोक्त क्वेरी फिर से चला सकते हैं, यह जांचने के लिए कि Current Location
कॉलम अब आपका नया दिखा रहा है drive:\folder
।
एक बार जब आप अपने परिवर्तनों से खुश हो जाते हैं, तो SQL सर्वर सेवा को पुनरारंभ करें ।