สองสิ่งที่ฉันอยากรู้
- คุณจะย้าย tempdb อย่างปลอดภัยได้อย่างไรด้วยการหยุดทำงานน้อยที่สุด
- คุณต้องการไฟล์ tempdb กี่ไฟล์
มันคือ 1 ไฟล์ต่อคอร์? ดังนั้นควอดคอร์ไฟล์ 4 tempdb สร้างไฟล์ใหม่สามไฟล์?
สองสิ่งที่ฉันอยากรู้
มันคือ 1 ไฟล์ต่อคอร์? ดังนั้นควอดคอร์ไฟล์ 4 tempdb สร้างไฟล์ใหม่สามไฟล์?
คำตอบ:
ในการย้าย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 Server ใหม่ ดังนั้นเท่าที่หยุดทำงานที่ลดไปคุณมีข้อ จำกัด จำนวนของเวลาที่จะใช้สำหรับการเริ่มบริการ คุณไม่ต้องกังวลกับการย้ายtempdb
ไฟล์ฐานข้อมูลที่มีอยู่ล่วงหน้าเนื่องจาก SQL Server จะสร้างไฟล์ใหม่เสมอและตำแหน่ง / ไฟล์ใหม่จะถูกสร้างขึ้นเมื่อเริ่มบริการ
สำหรับไฟล์ข้อมูล "1 tempdb ต่อคอร์" นั้นส่วนใหญ่จะเป็นตำนาน วิธีที่ถูกต้องคือการตรวจสอบtempdb
ความขัดแย้งของไฟล์สำหรับหน้าพื้นที่ว่าง (PFS), แผนที่การจัดสรรทั่วโลก (GAM) และหน้าแผนที่การจัดสรรทั่วโลกที่ใช้ร่วมกัน (SGAM) โปรดอ้างอิงบทความนี้เพื่อรับแบบสอบถาม (ลิงค์สำรอง)ที่มองผ่านsys.dm_os_waiting_tasks
DMV เพื่อดูว่ามีtempdb
ข้อขัดแย้งของไฟล์เท่าใด จากนั้นคุณต้องออกไปข้างนอกแทนที่จะทำแค่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 Server ของคุณ (MSSQLServer)
จำนวนไฟล์ใน tempdb - ดูบทความของ Paul Randall: ตำนาน SQL Server DBA ต่อวัน: (12/30) tempdb ควรมีไฟล์ข้อมูลหนึ่งไฟล์ต่อตัวประมวลผลหลัก
จากคำแนะนำของ Microsoft :
ตามกฎทั่วไปหากจำนวนตัวประมวลผลเชิงตรรกะน้อยกว่าหรือเท่ากับ 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 Serverใหม่