সম্পর্কিত: এসকিউএল সার্ভার এবং হাইপারথ্রেডিং সম্পর্কিত বর্তমান জ্ঞান
সম্প্রতি আমরা একটি থেকে আমাদের উইন্ডোজ 2008 R2 হলো ডাটাবেজ সার্ভারের আপগ্রেড X5470 একটি থেকে X5560 । থিওরিটি হ'ল উভয় সিপিইউতে খুব একই রকম পারফরম্যান্স রয়েছে, যদি এক্স 5560 কিছুটা দ্রুত হয়।
যাইহোক, এসকিউএল সার্ভার ২০০৮ আর 2 এর পারফরম্যান্স গত দিন বা তার চেয়ে বেশ খারাপ হয়েছে এবং সিপিইউর ব্যবহার বেশ বেশি ছিল।
পৃষ্ঠার আয়ু বিশাল, আমরা পৃষ্ঠাগুলির জন্য প্রায় 100% ক্যাশে হিট করছি, তাই স্মৃতিশক্তি কোনও সমস্যা নয়।
আমি যখন দৌড়েছি:
SELECT * FROM sys.dm_os_wait_stats
order by signal_wait_time_ms desc
আমি পেয়েছি:
অপেক্ষা_প্রকার অপেক্ষার_টাস্কস_মাস অপেক্ষা অপেক্ষা_টাইম_ম্যাক্স সর্বোচ্চ_উইট_টাইম_এমএস সিগন্যাল_উইট_টাইম_এমএস -------------------------------------------------- ---------- -------------------- -------------------- -------------------- -------------------- XE_TIMER_EVENT 115166 2799125790 30165 2799125065 REQUEST_FOR_DEADLOCK_SEARCH 559393 2799053973 5180 2799053973 SOS_SCHEDULER_YIELD 152289883 189948844 960 189756877 সিএক্সপ্যাকেট 234638389 2383701040 141334 118796827 SLEEP_TASK 170743505 1525669557 1406 76485386 LATCH_EX 97301008 810738519 1107 55093884 লগজিএমআর_কিউইউ 16525384 2798527632 20751319 4083713 লিখন 16850119 18328365 1193 2367880 67 PAGELATCH_EX 13254618 8524515 11263 1670113 ASYNC_NETWORK_IO 23954146 6981220 7110 1475699 (10 টি সারি প্রভাবিত)
আমিও দৌড়ে গেলাম
-- Isolate top waits for server instance since last restart or statistics clear
WITH Waits AS (
SELECT
wait_type,
wait_time_ms / 1000. AS [wait_time_s],
100. * wait_time_ms / SUM(wait_time_ms) OVER() AS [pct],
ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS [rn]
FROM sys.dm_os_wait_stats
WHERE wait_type NOT IN ('CLR_SEMAPHORE','LAZYWRITER_SLEEP','RESOURCE_QUEUE',
'SLEEP_TASK','SLEEP_SYSTEMTASK','SQLTRACE_BUFFER_FLUSH','WAITFOR','LOGMGR_QUEUE',
'CHECKPOINT_QUEUE','REQUEST_FOR_DEADLOCK_SEARCH','XE_TIMER_EVENT','BROKER_TO_FLUSH',
'BROKER_TASK_STOP','CLR_MANUAL_EVENT','CLR_AUTO_EVENT','DISPATCHER_QUEUE_SEMAPHORE',
'FT_IFTS_SCHEDULER_IDLE_WAIT','XE_DISPATCHER_WAIT', 'XE_DISPATCHER_JOIN'))
SELECT W1.wait_type,
CAST(W1.wait_time_s AS DECIMAL(12, 2)) AS wait_time_s,
CAST(W1.pct AS DECIMAL(12, 2)) AS pct,
CAST(SUM(W2.pct) AS DECIMAL(12, 2)) AS running_pct
FROM Waits AS W1
INNER JOIN Waits AS W2 ON W2.rn <= W1.rn
GROUP BY W1.rn, W1.wait_type, W1.wait_time_s, W1.pct
HAVING SUM(W2.pct) - W1.pct < 95; -- percentage threshold
এবং পেয়েছিলাম
অপেক্ষা_প্রকার অপেক্ষা করুন_কাল_স pct চলমান_pct সিএক্সপ্যাকেট 554821.66 65.82 65.82 LATCH_EX 184123.16 21.84 87.66 SOS_SCHEDULER_YIELD 37541.17 4.45 92.11 পেজআইওএলএটিচএসএইচ 19018.53 2.26 94.37 FT_IFTSHC_MUTEX 14306.05 1.70 96.07
এটি সমান্তরালতা (উচ্চ সিএক্সপ্যাক্যাট) জড়িত বিপুল পরিমাণ সময় সিঙ্ক্রোনাইজিং কোয়েরি দেখায়। অতিরিক্তভাবে, উপাখ্যান্তভাবে এই সমস্যাগুলির অনেকগুলি প্রশ্নের একাধিক কোরগুলিতে মৃত্যুদন্ড কার্যকর করা হচ্ছে (আমাদের কোডে কোথাও আমাদের কোনও MAXDOP ইঙ্গিত নেই)
এক বা একাধিক দিন ধরে সার্ভারটি লোডের মধ্যে নেই। আমরা ক্যোয়ারী মৃত্যুদন্ড কার্যকর করার সাথে প্রচুর পরিমাণে বৈকল্পিকতা অনুভব করছি, সাধারণত অনেকগুলি ক্যোয়ারী ধীর বলে মনে হয় যে তারা আমাদের আগের ডিবি সার্ভারে ছিল এবং সিপিইউ সত্যই উচ্চতর।
হাইপারথ্রেডিং অক্ষম করা কি আমাদের সিপিইউ ব্যবহার হ্রাস করতে এবং থ্রুপুট বাড়িয়ে তুলতে সহায়তা করবে?