এসকিউএল সার্ভার ২০১২ সালের চেয়ে ধীর


15

আমি একটি পুরানো সার্ভার (উইন্ডোজ ২০০ / / এসকিউএল সার্ভার ২০০৮ / ১ GB গিগাবাইট র‌্যাম / ২ এক্স 2.5 গিগাহার্টজ কোয়াড কোর / এসএএস ডিস্ক) থেকে একটি বৃহত ওয়েবসাইট এবং ডেটাবেস স্থানান্তরিত করেছি আরও উন্নততর সার্ভারে (উইন্ডোজ ২০০ R আর ২ / এসকিউএল সার্ভার ২০১২ এসপি 1 / 64 জিবি র‌্যাম / 2 এক্স 2.1 গিগাহার্টজ 16 কোর প্রসেসর / এসএসডি ডিস্ক)।

আমি পুরানো সার্ভারে ডাটাবেস ফাইলগুলি বিচ্ছিন্ন করেছিলাম, সেগুলি অনুলিপি করে নতুন সার্ভারে সংযুক্ত করেছি। সবকিছু খুব ভাল গিয়েছিল।

এর পরে, আমি সামঞ্জস্যতা স্তরে পরিবর্তিত হয়ে ১১০, আপডেট পরিসংখ্যান, সূচি পুনর্নির্মাণ করেছি।

আমার বিশাল হতাশার জন্য, আমি লক্ষ্য করেছি যে পুরানো এসকিউএল ২০০২ সার্ভারের চেয়ে নতুন এসকিউএল ২০১২ সার্ভারে বেশিরভাগ এসকিএল কোয়েরিগুলি অনেক ধীর (২-৩-৪ গুণ ধীর)।

উদাহরণস্বরূপ, প্রায় 700k রেকর্ড সহ একটি টেবিলে, পুরানো সার্ভারে সূচীতে একটি প্রশ্নের প্রায় 100 মিমি নিয়েছে। নতুন সার্ভারে, একই কোয়েরিটি প্রায় 350 মিশ্র লাগে।

সমস্ত প্রশ্নের জন্য একই ঘটে।

আমি এখানে কিছু সাহায্যের প্রশংসা করব। আমাকে যাচাই / যাচাই করতে হবে তা জানতে দিন। একটি নতুন এসকিউএল সার্ভারের সাথে আরও ভাল সার্ভারে বিশ্বাস করা আমার পক্ষে খুব কঠিন বলে মনে হয়, কার্য সম্পাদন আরও খারাপ।

আরো বিস্তারিত:

মেমরি সর্বাধিক সেট করা হয়েছে।

আমার এই টেবিল এবং সূচক আছে:

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;

ওল্ড সার্ভার - এসকিউএল সার্ভার এক্সিকিউশন টাইমস: সিপিইউ সময় = 419 এমএস, অতিবাহিত সময় = 695 এমএস।

নতুন সার্ভার - এসকিউএল সার্ভার এক্সিকিউশন টাইমস: সিপিইউ সময় = 1340 এমএস, অতিবাহিত সময় = 1636 এমএস।

এক্সিকিউশন পরিকল্পনাগুলি এখানে আপলোড করা হয়েছে: http://we.tl/ARbPuvf9t8

পরে আপডেট:

  • এএমডি ২.১ গিগাহার্জ ওপ্টরন ১ core টি কোর প্রসেসর ইন্টেল 2.5GHz কোয়াড কোর প্রসেসরের চেয়ে অনেক খারাপ দেখায়
  • দুর্দান্ত উন্নতি ব্যালেন্সড থেকে উচ্চ শক্তিতে উইন্ডোজ পাওয়ার বিকল্পগুলি পরিবর্তন করে
  • আরও উন্নতি সমান্তরালতার সর্বাধিক ডিগ্রি 8 এবং মূল্য থ্রেশহোল্ডকে 4 এ পরিবর্তন করছে

এখন, এসকিউএল সার্ভার এক্সিকিউশন টাইমস: সিপিইউ সময় = 550 এমএস, অতিবাহিত সময় = 828 এমএস।

এটি এখনও পুরানো সার্ভারের চেয়ে খারাপ, তবে এটি খারাপ নয়। আপনার কাছে যদি অন্য কোনও পরামর্শ থাকে (স্থানীয় ক্যোয়ারী অপ্টিমাইজেশন ব্যতীত) দয়া করে বিনা দ্বিধায় মন্তব্য করুন।


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
পল হোয়াইট 9

উত্তর:


8

এসকিউএল সার্ভারের সাথে আমার একই রকম সমস্যা রয়েছে, এটি সম্ভবত আপনার সার্ভারটি অনুকূলভাবে কনফিগার করা হয়নি। আরও নতুন সিওনস টার্বোবস্ট, এইচটি ইত্যাদি নিয়ে আসে যা সার্ভারের কার্য সম্পাদনকে উল্লেখযোগ্যভাবে প্রভাবিত করতে পারে।

উদাহরণস্বরূপ, আমরা এর সাথে সাফল্য পেয়েছি; ডেল সার্ভারগুলির জন্য স্বল্প বিলম্বের কনফিগারেশন

সেটিংসটি নন-ডেল সার্ভারগুলিতে প্রযোজ্য হবে, তাদের কেবল আলাদা আলাদা নাম থাকতে পারে।

আমরা ভারসাম্য থেকে উইন্ডোজ পাওয়ার পরিচালনা প্রোফাইলকে উচ্চ কার্যকারিতাতে সেট করে কর্মক্ষমতাও উন্নত করেছি। একটি চূড়ান্ত অংশটি হ'ল x64 সার্ভারে ওএসের জন্য 8 গিগাবাইট পর্যন্ত মেমরি সংরক্ষণ করার প্রস্তাব দেওয়া হয়, ডিফল্ট এসকিউএল ইনস্টল সমস্ত মেমরি নেয়। আপনি আপনার সর্বোচ্চ এসকিউএল সার্ভার মেমরি কনফিগারেশন মোট মেমরির চেয়ে 4/8 জিবি কম সেট করে 4 / 8GB রিজার্ভেশন চেষ্টা করতে চাইতে পারেন।

আমার সুপারিশটি সম্ভব হলে পুরানো সার্ভারে ফিরে যেতে হবে। যদি আপনার কাছে রিগ্রেশন / অটোমেশন / লোড স্ক্রিপ্টগুলি উপলব্ধ না থাকে তবে উচ্চতর ক্রিয়াকলাপের সময় আপনার সিস্টেমের ক্রিয়াকলাপটি 1-4 ঘন্টা আপনার রেকর্ড করা ভাল you তারপরে উত্পাদনের মতো একটি ওয়েব সার্ভার এবং স্ক্রিপ্টটি চালানোর জন্য একটি ক্লায়েন্ট মেশিন সেটআপ করুন। নতুন সার্ভারের বিরুদ্ধে একই ক্রিয়াকলাপটি চালান, কনফিগারেশনটি পরিবর্তন করুন এবং আবার একই ক্রিয়াকলাপটি চালান run সত্যিই আপনি আরও অনেক কিছু করতে চাইবেন তবে এটি কার্যকর হবে এবং এটি এই প্রশ্নের আওতার বাইরে নয় বলে মনে হয় না।


সার্ভারে লোডটি এত বেশি নয়। এসকিউএল সার্ভার সাধারণত 20-35 গিগাবাইট মেমরির মধ্যে বসে। যে কোনও মুহূর্তে আমাদের কাছে 16 গিগাবাইটেরও বেশি ফ্রি মেমরি ছিল। এছাড়াও প্রসেসর 10-15% ব্যবহারকে ব্যবহার করে পাস করে না।
prog_sr08

2
ভারসাম্য থেকে উচ্চ পাওয়ারের জন্য উইন্ডোজ শক্তি পরিচালনা সেট করে এখন পর্যন্ত সর্বাধিক উন্নতি হয়েছে। সুতরাং এটি সত্যিই একটি প্রসেসরের সমস্যার মতো দেখায়। এসকিউএল সার্ভার এক্সিকিউশন টাইমস: সিপিইউ সময় = 892 এমএস, অতিবাহিত সময় = 874 এমএস।
prog_sr08

8

আমাকে যাচাই / যাচাই করতে হবে তা জানতে দিন

আপনার একটি পারফরম্যান্স সমস্যা আছে। বাধাটি সনাক্ত করতে অপেক্ষা এবং কুইজের মতো একটি পারফরম্যান্স ট্রাবলশুটিং পদ্ধতি অনুসরণ করুন । সংযুক্ত পদ্ধতি আপনাকে কী পরিমাপ করতে হবে এবং কীভাবে তা দেখায়। এখানে অনুসন্ধানগুলি পোস্ট করুন এবং আমরা আপনার প্রকৃত পরিমাপের উপর ভিত্তি করে নির্দিষ্ট পরামর্শ দিয়ে সহায়তা করতে পারি। যেহেতু এটি খুব উন্মুক্ত এবং কারও অনুমান। এটিকে একটি নির্দিষ্ট ইস্যুতে সংকীর্ণ করা অনুমানের কাজটি দূর করবে।

আপডেটের পরে

পরিকল্পনাগুলি একেবারেই আলাদা। পুরাতন পরিকল্পনার স্ট্যাকের উপরে একটি স্ট্রিম সমষ্টি কম ছিল যা আসলে খারাপ কার্ডিনালিটির প্রাক্কলন (141 কে বনাম 108 ক) এবং হ্যাশ ম্যাথটি আরও ভুলভাবে চিহ্নিত করে, অন্যভাবে (35 কে বনাম 108 ক)। নতুন পরিকল্পনায় স্ট্রিম সমষ্টি নেই এবং শীর্ষে যাওয়ার সমস্ত দিকের সঠিক অনুমান রয়েছে। অবশ্যই, এটি কেন পুরানো পরিকল্পনাটি দ্রুত কার্যকর করছিল তা ব্যাখ্যা করে না ।

নীচের স্ক্যানগুলির কিছুটা আলাদা সারি সংখ্যা রয়েছে (তাৎপর্যপূর্ণ নয়) তবে বেশ আলাদা ব্যয়: পুরাতন হ'ল 2.49884 (আইও 2.28979 সিপিইউ 0.20905) বনাম নতুন 1.59109 (আইও 1.53868 সিপিই 0.0524084)। আবার একটি ভাল 2012 কার্যকর করার দিকে ইঙ্গিত করবে (সূচী পুনর্নির্মাণ সম্ভবত খণ্ডিত হ্রাস হয়েছে?)।

থ্রেডের সংখ্যাটি যা খুব আলাদা তা হ'ল: 32 টি নতুন (প্রতিটিতে 23k ডলার সারি পাওয়া যাচ্ছে) বনাম 8 পুরানো (প্রতিটি each 95k সারি পাচ্ছে)। টেবিলটি মোটামুটি সংকীর্ণ। এটি হতে পারে যে অনেক বেশি ঘন ঘন ক্যাশে অবৈধতার কারণে থ্রেডগুলির সংখ্যক প্রকৃতপক্ষে কার্য সম্পাদনকে ক্ষতিগ্রস্থ করছে । আমি চেষ্টা করব:

  1. নতুন সার্ভার কনফিগারেশনে হাইপারথ্রেডিং (যদি থাকে) এবং / অথবা
  2. ডিওপি 8 দিয়ে ক্যোরিটি ব্যবহার করে দেখুন।

আপনার মন্তব্য লক্ষ্য করা:

ম্যাক্সডপ 8 এর সাথে এক্সিকিউশন প্ল্যান যুক্ত করা হয়েছে আসলে এইভাবে দ্রুততর কাজ করা faster

এটি সম্ভবত কেবল সিপিইউগুলি একে অপরের পায়ের আঙ্গুলের উপর পা রেখে। এসএসডি সহ স্থানে আইও সম্ভবত কিছু না থাকায় টেবিলটি অবশ্যই 32 স্ক্যানারের ওয়ারেন্ট দেওয়ার পক্ষে খুব ছোট। এই এক্সচেঞ্জের অদলবদল সম্ভবত L1 / L2 অবিরত অকার্যকর করে তুলছে।


1
২০০৮ এর চেয়ে ২০১২-এর চেয়ে সবকিছু ধীরে ধীরে। আমি এখানে প্রশ্নগুলি অনুকূল করার চেষ্টা করছি না। এই নতুন সার্ভারে ঠিক একই ডাটাবেসের সাথে কমপক্ষে একই কার্য সম্পাদন করতে পেরে আমি খুশি হব।
prog_sr08

1
অপেক্ষা এবং সারিগুলি কোয়েরিগুলি অনুকূল করে তোলার নয়। বাধা সনাক্তকরণ সম্পর্কে।
রিমাস রুসানু

আমি নথিটি ডাউনলোড করেছি। দেখতে খুব ইন্টারেস্টিং লাগছে। আমি এখনই এটিতে আছি, তবে দেখে মনে হচ্ছে এটি আমার কিছুটা সময় নেবে। আপনি আগে দেখতে হবে যেখানে পরামর্শ দিতে পারেন?
prog_sr08

1
পরিসংখ্যান অপেক্ষা করুন । এগুলি 2008 এবং 2012 উভয়ই পুনরায় সেট করুন, উভয়কে 5-10 মিনিটের জন্য লোড চালান, তারপরে ২০০৮ এবং ২০১২ এর মধ্যে পার্থক্যগুলি তুলনা করুন
রিমাস রুসানু

আমি আশঙ্কা করছি যে আমি এখন 2 টি সার্ভারের মধ্যে পরিসংখ্যান তুলনা করতে পারি না, কারণ নতুন সার্ভারটি একটি লাইভ সাইট / ডাটাবেস হোস্ট করে। পুরানো সার্ভারে এমন ডেটাবেস রয়ে গেছে যা আর লোডের মধ্যে নেই।
prog_sr08

3

বেশিরভাগ আধুনিক মাল্টি-কোর সিস্টেমগুলির জন্য, এবং বিশেষত মাল্টি-সিপিইউ সিস্টেমগুলির জন্য, হার্ডওয়্যার আর্কিটেকচারটি এমন যে মেমরির কিছু অংশ কিছু নির্দিষ্ট কোর / প্রসেসরের থেকে অনেক দূরে থাকে এবং মেমরির কিছু অংশ কিছু নির্দিষ্ট কোর / প্রসেসরের কাছাকাছি থাকে। এটিকে অ-ইউনিফর্ম মেমরি আর্কিটেকচার বা সংক্ষেপে NUMA হিসাবে উল্লেখ করা হয়। আপনি চাইছেন যে আপনার MAXDOP সেটিংটি NUMA নোডের প্রতি কোর সংখ্যার সাথে মেলে যাতে কোনও নির্দিষ্ট নুমা নোডের জন্য তথ্যের জন্য তার নিজস্ব মেমরির বাইরে যেতে হয় তার সংখ্যা কমাতে পারে।

আপনার নতুন মেশিনের কনফিগারেশনটি পরীক্ষা করতে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন এবং হার্ডওয়্যার অনুযায়ী ম্যাক্সডপকে সেরা সেটিংসে সেট করা আছে তা নিশ্চিত করতে পারেন :

DECLARE @CPUs int;
DECLARE @NumaNodes int;
DECLARE @ServerRAMInMB int;

SET @ServerRAMinMB = (SELECT (i.physical_memory_kb / 1024) AS ServerMemory 
    FROM sys.dm_os_sys_info i);
SET @CPUs = (SELECT i.cpu_count from sys.dm_os_sys_info i);
SET @NumaNodes = (SELECT MAX(c.memory_node_id) + 1 FROM sys.dm_os_memory_clerks c 
    WHERE memory_node_id < 64);

SELECT @ServerRamInMB, @CPUs, @NumaNodes;

IF @CPUs > 4 /* this would be 4 cores, not 4 CPUs */
BEGIN
    DECLARE @MaxDOP int;
    SET @MaxDOP = @CPUs * 0.75;
    IF @MaxDOP > (@CPUs / @NumaNodes) SET @MaxDOP = (@CPUs / @NumaNodes);
    EXEC sp_configure 'max degree of parallelism', @MaxDOP;
    EXEC sp_configure 'cost threshold for parallelism', 4; 
END

আমি অন্তর্ভুক্ত @ServerRamInMBপ্যারামিটার এখানে যেহেতু আমি সেটআপ করার জন্য এটি ব্যবহার Max Server Memoryএবং Min Server Memoryমান প্রদত্ত সার্ভারের জন্য উপযুক্ত কনফিগারেশন অপশন।


1
আমার কাছে 64 জিবি র‌্যাম, 32 প্রসেসরের কোর, 4 টি নুমা নোড রয়েছে। আমি সমান্তরালতার সর্বোচ্চ ডিগ্রি 8 এবং ব্যয় প্রান্তিকের 4 এ সেট করে দিয়েছি this
prog_sr08

সুতরাং যে একটি জয়, তারপর? আপনার জন্য কাজ করে দেখে খুশি!
ম্যাক্স ভার্নন

0

আপনি কোন সংস্করণ এবং লাইসেন্সিং মোডে আছেন? আপনি সম্ভবত সমস্ত কোর ব্যবহার করছেন না। এই পৃষ্ঠায় নোটটি দেখুন - http://msdn.microsoft.com/en-us/library/ms143760.aspx

"সার্ভার + ক্লায়েন্ট অ্যাক্সেস লাইসেন্স (সিএএল) ভিত্তিক লাইসেন্স সহ এন্টারপ্রাইজ সংস্করণ এসকিউএল সার্ভারের ক্ষেত্রে প্রতি 20 কোরের সর্বাধিক সীমাবদ্ধ" "


2
এটি কেবল তখনই প্রযোজ্য যখন তার কাছে সিএল হওয়ার আগে এবং দাদুতে উপস্থিত হয়েছিল। তবুও কেবলমাত্র 20 টি কোরের সাথে পারফরম্যান্সটি প্রাক্তন সিস্টেমের (যা কেবল 8 টি ছিল) উপর নজর দেওয়া উচিত নয়।
অ্যারন বার্ট্র্যান্ড

আমার কাছে ওয়েব সংস্করণ (4 সকেট বা 16 কোরের কম সীমাবদ্ধ)। পুরানো সার্ভারে আমার কাছে যাইহোক 8 টি কোর ছিল।
prog_sr08

0

এই পৃষ্ঠায় বর্ণিত হিসাবে আমারও একই সমস্যা ছিল: "ভারসাম্যপূর্ণ" থেকে "উচ্চ কার্যকারিতা" এ পাওয়ার সেটিংস স্যুইচ করা নাটকীয় পার্থক্য করেছে - প্রতিক্রিয়া বার দ্বিগুণ করার চেয়ে বেশি। এখন যেহেতু আমরা এসএসডি ব্যবহার করছি তা আমি মনে করি না যে জ্বালানি খরচ করাটি এটিই হতে পারে is


-2

আমি একটি ইস্যুটিকে অন্যটির সাথে বিভ্রান্ত করার পরিবর্তে কোনও দৃ resolution় সমাধান ছাড়াই কমপক্ষে 2 সপ্তাহ ধরে এই ইস্যুটির মধ্য দিয়ে চলেছি।

অবশেষে রেজুলেশনটি নিম্নরূপ:

  1. আমি 010 থেকে 011 থেকে সামঞ্জস্যটি পুনরায় সেট করেছি

  2. মাস্টার ডাটাবেসের সুসংগততা পুনরায় সেট করুন। ডিফল্টরূপে এসকিএল পুরানো সামঞ্জস্যতা সেটিংস বজায় রাখবে। আমাদের ম্যানুয়ালি পরিবর্তন করা দরকার।

শুভকামনা

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.