मैंने एक बड़े सर्वर और पुराने सर्वर (Windows 2008 / SQL Server 2008/16 GB RAM / 2 x 2.5 GHz क्वाड कोर / SAS डिस्क) से एक नए, बहुत बेहतर सर्वर (Windows 2008 R2 / SQL सर्वर 2012 SP1 /) पर माइग्रेट किया 64 जीबी रैम / 2 x 2.1 गीगाहर्ट्ज़ 16 कोर प्रोसेसर / एसएसडी डिस्क)।
मैंने पुराने सर्वर पर डेटाबेस फ़ाइलों को अलग किया, उन्हें नए सर्वर पर कॉपी और संलग्न किया। सब कुछ बहुत अच्छा हुआ।
उसके बाद, मैंने संगतता स्तर को 110 में बदल दिया, अपडेट किए गए आंकड़े, अनुक्रमित का पुनर्निर्माण किया।
मेरी भारी निराशा के लिए, मैंने देखा कि अधिकांश SQL क्वेरी पुराने SQL 2008 सर्वर की तुलना में नए SQL 2012 सर्वर पर बहुत धीमी (2-3-4 गुना धीमी) हैं।
उदाहरण के लिए, लगभग 700k रिकॉर्ड वाली एक मेज पर, पुराने सर्वर पर सूचकांक पर एक क्वेरी लगभग 100ms पर ले गई। नए सर्वर पर, एक ही क्वेरी लगभग 350 एमएस लेता है।
सभी प्रश्नों के लिए एक ही होता है।
मैं यहां कुछ मदद की सराहना करूंगा। मुझे पता है कि क्या जाँच / सत्यापन करना है। क्योंकि मुझे यह विश्वास करना बहुत कठिन है कि नए SQL सर्वर के साथ बेहतर सर्वर पर, प्रदर्शन बदतर है।
अधिक जानकारी:
मेमोरी अधिकतम पर सेट है।
मेरे पास यह तालिका और सूचकांक है:
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;
पुराने सर्वर - SQL सर्वर निष्पादन समय: सीपीयू समय = 419 एमएस, बीता समय = 695 एमएस।
नई सर्वर - SQL सर्वर निष्पादन टाइम्स: सीपीयू समय = 1340 एमएस, बीता हुआ समय = 1636 एमएस।
EXECUTION PLANS यहां अपलोड किए गए हैं: http://we.tl/ARbPuvf9t8
बाद में अपडेट करें:
- AMD 2.1GHz ओपर्टन 16 कोर प्रोसेसर इंटेल 2.5GHz क्वाड कोर प्रोसेसर की तुलना में बहुत खराब लगते हैं
- उच्च शक्ति को बैलेंस्ड से उच्च शक्ति में विंडोज बिजली के विकल्प बदलने के महान सुधार
- इसके अतिरिक्त सुधार 8 के समानांतर डिग्री की अधिकतम डिग्री और लागत सीमा को 4 में बदल रहा है
अब, SQL सर्वर निष्पादन समय: सीपीयू समय = 550 एमएस, बीता हुआ समय = Server२ Server एमएस।
यह पुराने सर्वर से अभी भी बदतर है, लेकिन यह बुरा नहीं है। यदि आपके पास कोई अन्य सुझाव (स्थानीय क्वेरी ऑप्टिमाइज़ेशन के अलावा) है तो कृपया बेझिझक टिप्पणी करें।