sp_cursoropen এবং সমান্তরালতা


15

আমি এমন একটি ক্যোয়ারী নিয়ে পারফরম্যান্স সমস্যায় পড়ছি যা আমার মাথা ঘুরে দেখা যায় না।

আমি একটি কার্সার সংজ্ঞা থেকে ক্যোয়ারিকে টেনে আনলাম।

এই ক্যোয়ারীটি কার্যকর করতে কয়েক সেকেন্ড সময় নেয়

SELECT A.JOBTYPE
FROM PRODROUTEJOB A
WHERE ((A.DATAAREAID=N'IW')
AND ((A.CALCTIMEHOURS<>0)
AND (A.JOBTYPE<>3)))
AND EXISTS (SELECT 'X'
FROM PRODROUTE B
WHERE ((B.DATAAREAID=N'IW')
AND (((((B.PRODID=A.PRODID)
AND ((B.PROPERTYID=N'PR1526157') OR (B.PRODID=N'PR1526157')))
AND (B.OPRNUM=A.OPRNUM))
AND (B.OPRPRIORITY=A.OPRPRIORITY))
AND (B.OPRID=N'GRIJZEN')))
AND NOT EXISTS (SELECT 'X'
FROM ADUSHOPFLOORROUTE C
WHERE ((C.DATAAREAID=N'IW')
AND ((((((C.WRKCTRID=A.WRKCTRID)
AND (C.PRODID=B.PRODID))
AND (C.OPRID=B.OPRID))
AND (C.JOBTYPE=A.JOBTYPE))
AND (C.FROMDATE>{TS '1900-01-01 00:00:00.000'}))
AND ((C.TODATE={TS '1900-01-01 00:00:00.000'}))))))
GROUP BY A.JOBTYPE
ORDER BY A.JOBTYPE

আসল বাস্তবায়ন পরিকল্পনাটি এর মতো দেখাচ্ছে।

এখানে চিত্র বর্ণনা লিখুন

সার্ভারের প্রশস্ত সেটিংটি লক্ষ্য করে ম্যাক্সডোপ 1 এ সেট করা হয়েছে আমি ম্যাক্সডপ সেটিংসের সাথে চারপাশে খেলার চেষ্টা করেছি।

যোগ করার পদ্ধতি OPTION (MAXDOP 0)ক্যোয়ারী, অথবা অনেক ভালো পারফরম্যান্স এবং এই প্রশ্নের সাথে পরিকল্পনার সার্ভার সেটিংস ফলাফল পরিবর্তন।

এখানে চিত্র বর্ণনা লিখুন

তবে, প্রশ্নযুক্ত অ্যাপ্লিকেশন (ডায়নামিক্স এএক্স) এর মতো প্রশ্নগুলি কার্যকর করে না, এটি কার্সার ব্যবহার করে।

প্রকৃত কোডটি হ'ল এটি।

declare @p1 int
set @p1=189527589
declare @p3 int
set @p3=16
declare @p4 int
set @p4=1
declare @p5 int
set @p5=2
exec sp_cursoropen @p1 output,N'SELECT A.JOBTYPE FROM PRODROUTEJOB A WHERE ((A.DATAAREAID=N''IW'') AND ((A.CALCTIMEHOURS<>0) AND (A.JOBTYPE<>3))) AND EXISTS (SELECT ''X'' FROM PRODROUTE B WHERE ((B.DATAAREAID=N''IW'') AND (((((B.PRODID=A.PRODID) AND ((B.PROPERTYID=N''PR1526157'') OR (B.PRODID=N''PR1526157''))) AND (B.OPRNUM=A.OPRNUM)) AND (B.OPRPRIORITY=A.OPRPRIORITY)) AND (B.OPRID=N''GRIJZEN''))) AND NOT EXISTS (SELECT ''X'' FROM ADUSHOPFLOORROUTE C WHERE ((C.DATAAREAID=N''IW'') AND ((((((C.WRKCTRID=A.WRKCTRID) AND (C.PRODID=B.PRODID)) AND (C.OPRID=B.OPRID)) AND (C.JOBTYPE=A.JOBTYPE)) AND (C.FROMDATE>{TS ''1900-01-01 00:00:00.000''})) AND ((C.TODATE={TS ''1900-01-01 00:00:00.000''})))))) GROUP BY A.JOBTYPE ORDER BY A.JOBTYPE ',@p3 output,@p4 output,@p5 output
select @p1, @p3, @p4, @p5

এই কার্যনির্বাহী পরিকল্পনার ফলস্বরূপ (এবং দুর্ভাগ্যক্রমে একই বহু-দ্বিতীয় নির্বাহের সময়)।

এখানে চিত্র বর্ণনা লিখুন

আমি ক্যাশেড প্ল্যানস বাদ দেওয়া, কার্সার সংজ্ঞার ভিতরে ক্যোয়ারীতে বিকল্পগুলি যুক্ত করার মতো অনেকগুলি বিষয় চেষ্টা করেছি ... তবে এগুলির কোনওটিই আমাকে সমান্তরাল পরিকল্পনা বলে মনে হয় না।

আমি কার্সারগুলির সমান্তরালতা সীমাবদ্ধতার সন্ধান করতে বেশ কিছুটা জন্য গুগলও অনুসন্ধান করেছি তবে কোনও সীমাবদ্ধতা খুঁজে পেতে পারে না বলে মনে হয়।

আমি কি এখানে স্পষ্ট কিছু মিস করছি?

আসল এসকিউএল বিল্ডটি SQL Server 2008 (SP1) - 10.0.2573.0 (X64)যা আমি বুঝতে পেরেছি এটি অসমর্থিত, তবে আমি যথাযথ দেখায় এই সংস্করণটি আপগ্রেড করতে পারি না। আমার ডাটাবেসটিকে অন্য সার্ভারে স্থানান্তর করতে হবে এবং এর অর্থ ধীর WAN এর চেয়ে বেশ বড় অসম্পূর্ণ ব্যাকআপ টানতে হবে।

ট্রেস পতাকা 4199 কোনও তাত্পর্যপূর্ণ করে না এবং অপশন (রিকম্পাইল )ও করে না।

কার্সার বৈশিষ্ট্যগুলি হ'ল:

API | Fast_Forward | Read Only | Global (0)

উত্তর:


20

FAST_FORWARDকার্সারগুলি সমান্তরালতা সমর্থন করে না (যদিও পরিকল্পনার উত্পন্নকারী সার্ভারটি NonParallelPlanReasonশোপ্ল্যান এক্সএমএল এর অংশ হিসাবে পেতে 2012 বা তার বেশি হতে হবে )।

আপনি নির্দিষ্ট করার সময় FAST_FORWARD, অপ্টিমাইজারটি আপনার মধ্যে STATICএবং আপনার DYNAMICজন্য চয়ন করে

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

আপনার কার্সার প্রকারটি স্পষ্টভাবে উভয়র মধ্যে STATICবা KEYSETউদাহরণস্বরূপ পরিবর্তন করা উচিত । এই উভয় কার্সার প্রকার সমান্তরালতা ব্যবহার করতে পারে।

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

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