ฉันย้ายเว็บไซต์ขนาดใหญ่และฐานข้อมูลจากเซิร์ฟเวอร์เก่า (Windows 2008 / SQL Server 2008/16 GB RAM / 2 x 2.5 GHz Quad Core / ดิสก์ SAS) ไปยังเซิร์ฟเวอร์รุ่นใหม่ที่ดีกว่ามาก (Windows 2008 R2 / SQL Server 2012 SP1 / 64 GB RAM / 2 x 2.1 GHz 16 คอร์โปรเซสเซอร์ / ดิสก์ SSD)
ฉันแยกไฟล์ฐานข้อมูลบนเซิร์ฟเวอร์เก่าคัดลอกและแนบไฟล์บนเซิร์ฟเวอร์ใหม่ ทุกอย่างเป็นไปด้วยดี
หลังจากนั้นฉันเปลี่ยนเป็นระดับความเข้ากันได้เป็น 110 สถิติที่อัปเดตสร้างดัชนีใหม่
สำหรับความผิดหวังครั้งใหญ่ของฉันฉันสังเกตว่าการสืบค้น sql ส่วนใหญ่นั้นช้ากว่ามาก (ช้ากว่า 2-3-4 เท่า) ในเซิร์ฟเวอร์ SQL 2012 ใหม่กว่าบนเซิร์ฟเวอร์ SQL 2008 เก่า
ตัวอย่างเช่นบนตารางที่มีระเบียนประมาณ 700k บนเซิร์ฟเวอร์เก่าแบบสอบถามบนดัชนีใช้เวลาประมาณ 100ms บนเซิร์ฟเวอร์ใหม่แบบสอบถามเดียวกันใช้เวลาประมาณ 350 ms
เกิดขึ้นเหมือนกันสำหรับแบบสอบถามทั้งหมด
ฉันขอขอบคุณความช่วยเหลือที่นี่ แจ้งให้เราทราบว่าจะตรวจสอบ / ยืนยันอะไร เพราะฉันพบว่ามันยากมากที่จะเชื่อว่าบนเซิร์ฟเวอร์ที่ดีกว่าด้วย SQL Server รุ่นใหม่ประสิทธิภาพที่แย่ลง
รายละเอียดเพิ่มเติม:
หน่วยความจำถูกตั้งค่าไว้ที่ max
ฉันมีตารางและดัชนีนี้:
CREATE TABLE [dbo].[Answer_Details_23](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [int] NOT NULL,
[SurveyID] [int] NOT NULL,
[CustomerID] [int] NOT NULL default 0,
[SummaryID] [int] NOT NULL,
[QuestionID] [int] NOT NULL,
[RowID] [int] NOT NULL default 0,
[OptionID] [int] NOT NULL default 0,
[EnteredText] [ntext] NULL,
CONSTRAINT [Answer_Details_23_PK] PRIMARY KEY NONCLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE NONCLUSTERED INDEX [IDX_Answer_Details_23_SummaryID_QuestionID] ON [dbo].[Answer_Details_23]
(
[SummaryID] ASC,
[QuestionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
ฉันดำเนินการค้นหานี้:
set statistics time on;
select summaryid, count(summaryid) from Answer_Details_23 group by summaryid order by count(summaryid) desc;
set statistics time off;
OLD SERVER - เวลาดำเนินการ SQL Server: เวลา CPU = 419 ms, เวลาที่ผ่านไป = 695 มิลลิวินาที
เซิร์ฟเวอร์ใหม่ - เวลาดำเนินการของเซิร์ฟเวอร์ SQL: เวลา CPU = 1340 ms, เวลาที่ผ่านไป = 1636 มิลลิวินาที
แผนการดำเนินการอัปโหลดที่นี่: http://we.tl/ARbPuvf9t8
อัปเดตภายหลัง:
- โปรเซสเซอร์ AMD 2.1GHz Opteron 16 ดูแย่กว่าโปรเซสเซอร์ Quad core ของ Intel 2.5GHz
- การปรับปรุงที่ยอดเยี่ยมในการเปลี่ยนตัวเลือกการใช้พลังงาน windows จาก ballanced เป็น high
- การปรับปรุงเพิ่มเติมเปลี่ยนแปลงระดับสูงสุดของความขนานเป็น 8 และขีด จำกัด ต้นทุนเป็น 4
ตอนนี้เวลาดำเนินการของ SQL Server: เวลา CPU = 550 ms, เวลาที่ผ่านไป = 828 ms
มันยังคงแย่กว่าเซิร์ฟเวอร์เก่า แต่ก็ไม่ได้แย่ขนาดนั้น หากคุณมีข้อเสนอแนะอื่น ๆ (นอกเหนือจากการเพิ่มประสิทธิภาพการค้นหาในท้องถิ่น) โปรดแสดงความคิดเห็น