আমি কীভাবে এসকিউএল সার্ভার কোয়েরি ক্যাশে সাফ করতে পারি?


199

এসকিউএল সার্ভার 2005 এর বিপরীতে আমার কাছে একটি সাধারণ ক্যোয়ারী রয়েছে

SELECT * 
FROM Table 
WHERE Col = 'someval'

আমি প্রথমবারের জন্য ক্যোয়ারি চালিয়ে যাব > 15 secs। পরবর্তী মৃত্যুদন্ডগুলি আবার ফিরে আসবে < 1 sec

আমি কীভাবে এসকিউএল সার্ভার 2005 এর কোনও ক্যাশেড ফলাফল না ব্যবহার করতে পারি? আমি দৌড়ানোর চেষ্টা করেছি

DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

তবে মনে হয় এটি ক্যোয়ারী গতিতে (এখনও < 1 sec) কোনও প্রভাব ফেলেনি ।


ডুপ্লিকেট: স্ট্যাকওভারফ্লো. com/ জিজ্ঞাসা / ১৮৫69666666//২ তবে আরও ভাল
ফয়েজ

উত্তর:


259

এখানে কিছু ভাল ব্যাখ্যা। এটি পরীক্ষা করে দেখুন।

http://www.mssqltips.com/tip.asp?tip=1360

CHECKPOINT; 
GO 
DBCC DROPCLEANBUFFERS; 
GO

লিঙ্কযুক্ত নিবন্ধ থেকে:

এসকিউএল সার্ভারে পারফরম্যান্সের সমস্ত পরীক্ষা-নিরীক্ষা করা হলে চেকপয়েন্ট ইস্যু করা এবং তারপরে ডিবিসিসি ড্রপক্লিয়েনবুফার্স কমান্ডটি প্রদান করা সর্বোত্তম পন্থা হতে পারে। যদিও CHECKPOINT প্রক্রিয়াটি এসকিউএল সার্ভারে একটি স্বয়ংক্রিয় অভ্যন্তরীণ সিস্টেম প্রক্রিয়া এবং নিয়মিতভাবে ঘটে থাকে, বর্তমান ডাটাবেসের জন্য ডিস্কে সমস্ত নোংরা পৃষ্ঠাগুলি লিখতে এবং বাফারগুলি পরিষ্কার করার জন্য এই কমান্ডটি জারি করা গুরুত্বপূর্ণ। তারপরে বাফার পুল থেকে সমস্ত বাফার সরানোর জন্য DBCC DROPCLEANBUFFERS কমান্ড কার্যকর করা যেতে পারে।


14
একটি সাধ্যের মধ্যে ডিবিসিসি নিখরচায় অন্তর্ভুক্ত রয়েছে
জারিকস

1
ড্রপক্লানবাফারগুলি ব্যবহার করার সময় এটি প্রত্যেকের জন্যই যা ডাটাবেসের সাথে সংযুক্ত বা কেবল সেই ব্যবহারকারীর জন্য?
ক্রিস নোবেলস

1
@ ক্রিস: ডিবিসিসি ড্রপক্লেইনবুফার্স, বাফার পুল থেকে সমস্ত পরিষ্কার বাফার সরিয়ে দেয়। এটি ক্যোয়ারী পারফরম্যান্স টিউনিংয়ের প্রয়োজনীয় পদক্ষেপ এবং এটি সরাসরি এসকিউএল সার্ভারে ব্যবহার করা উচিত নয়।
সার

এটি এসকিউএল সার্ভারের জন্য ভাল কাজ করে তবে দয়া করে মনে রাখবেন যে এটি এসকিউএল অ্যাজুরেতে কাজ করে না - এসকিউএল অ্যাজুরির পরিস্থিতিটি পরিচালনা করতে আমি নীচে একটি বিকল্প সমাধান পোস্ট করেছি।
এমএসসি

1
ভাল, এটিই হ'ল একমাত্র আদেশ যা বাস্তবে কাজ করে, আরও অনেককে চেষ্টা করেও কাজ করেনি।
গ্যাব্রিয়েল রদ্রিগেজ

15

পরিকল্পনার ক্যাশে সাফ করার জন্য আটটি ভিন্ন উপায়

1. সম্পূর্ণ উদাহরণের জন্য প্ল্যান ক্যাশে থেকে সমস্ত উপাদান সরান

DBCC FREEPROCCACHE;

পরিকল্পনা ক্যাশে সাবধানে সাফ করতে এটি ব্যবহার করুন। পরিকল্পনার ক্যাশে মুক্ত করার ফলে, উদাহরণস্বরূপ, ক্যাশে থেকে পুনরায় ব্যবহারের পরিবর্তে একটি সঞ্চিত প্রক্রিয়া পুনরায় সংযুক্ত করা হবে। এটি ক্যোয়ারি পারফরম্যান্সে হঠাৎ করে অস্থায়ী হ্রাস পেতে পারে।

2. পুরো উদাহরণটির জন্য প্ল্যান ক্যাশে ফ্লাশ করুন এবং নিয়মিত সমাপ্তির বার্তাটি দমন করুন

"ডিবিসিসির কার্যকর হয়েছে। ডিবিসিসি যদি ত্রুটি বার্তা প্রিন্ট করে তবে আপনার সিস্টেম প্রশাসকের সাথে যোগাযোগ করুন।"

DBCC FREEPROCCACHE WITH NO_INFOMSGS;

৩. পুরো দৃষ্টান্তের জন্য অ্যাডহক এবং প্রস্তুত পরিকল্পনার ক্যাশে ফ্লাশ করুন

DBCC FREESYSTEMCACHE ('SQL Plans');

৪. একটি রিসোর্স পুলে অ্যাডহক এবং প্রস্তুত পরিকল্পনার ক্যাশে ফ্লাশ করুন

DBCC FREESYSTEMCACHE ('SQL Plans', 'LimitedIOPool');

৫. একটি রিসোর্স পুলে পুরো পরিকল্পনা ক্যাশে ফ্লাশ করুন

DBCC FREEPROCCACHE ('LimitedIOPool');

One. একটি ডাটাবেসের জন্য প্ল্যান ক্যাশে থেকে সমস্ত উপাদান সরিয়ে ফেলুন (এসকিউএল অ্যাজুরেতে কাজ করে না)

-- Get DBID from one database name first
DECLARE @intDBID INT;
SET @intDBID = (SELECT [dbid] 
                FROM master.dbo.sysdatabases 
                WHERE name = N'AdventureWorks2014');

DBCC FLUSHPROCINDB (@intDBID);

The. বর্তমান ডাটাবেসের জন্য সাফ প্ল্যান ক্যাশে

USE AdventureWorks2014;
GO
-- New in SQL Server 2016 and SQL Azure
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;

৮. ক্যাশে থেকে একটি ক্যোয়ারী পরিকল্পনা সরান

USE AdventureWorks2014;
GO

-- Run a stored procedure or query
EXEC dbo.uspGetEmployeeManagers 9;

-- Find the plan handle for that query 
-- OPTION (RECOMPILE) keeps this query from going into the plan cache
SELECT cp.plan_handle, cp.objtype, cp.usecounts, 
DB_NAME(st.dbid) AS [DatabaseName]
FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st 
WHERE OBJECT_NAME (st.objectid)
LIKE N'%uspGetEmployeeManagers%' OPTION (RECOMPILE); 

-- Remove the specific query plan from the cache using the plan handle from the above query 
DBCC FREEPROCCACHE (0x050011007A2CC30E204991F30200000001000000000000000000000000000000000000000000000000000000);
 

উত্স 1 2 3


9

প্রশ্নটি কিছুটা পুরানো হলেও এটি এখনও সাহায্য করতে পারে। আমি অনুরূপ ইস্যুতে চলছে এবং নীচের বিকল্পটি ব্যবহার করা আমাকে সহায়তা করেছে। এটি স্থায়ী সমাধান কিনা তা নিশ্চিত নয় তবে এটি এখনই এটি ঠিক করে দিচ্ছে।

OPTION (OPTIMIZE FOR UNKNOWN)

তাহলে আপনার জিজ্ঞাসাটি এরকম হবে

select * from Table where Col = 'someval' OPTION (OPTIMIZE FOR UNKNOWN)

1
'অপশন' মূলশব্দটির নিকটে ভুল সিনট্যাক্স। বা 'অজানা' এর নিকটে ভুল সিনট্যাক্স।
প্যাব্রামগুলি

1
@ পাব্রামগুলি এগুলি (এর অংশ হিসাবে) এর মতো আপনার প্রশ্নের পরে চলেছে:select * from Table where Col = 'someval' OPTION (OPTIMIZE FOR UNKNOWN)
মার্ক অ্যাভিনিয়াস

1
কেবল নিখুঁতভাবে নিশ্চিত করুন যে আপনি অজান্তে প্রোডাকশন কোডে এর মতো কিছু ফেলেছেন না - কারণ এটি রাস্তায় মেজর সমস্যার কারণ হতে পারে।
মাইকেল কে। ক্যাম্পবেল

4
অজানা জন্য অপ্টিমাইজ ক্যাশেড পরিকল্পনাগুলি উপেক্ষা করে না । বরং, পরিকল্পনা তৈরির সময় এটি এসকিউএল সার্ভারকে "কীভাবে কোনও স্বয়ংক্রিয়] প্যারামিটারাইজেশন থেকে পৃথক গড় গড় বিতরণ মান" বেছে নেওয়ার নির্দেশ দেয় - কোন ইউনিফর্ম পরিসংখ্যান জুড়ে আরও সুসংগত হতে পারে এমন পরিকল্পনাগুলির ফলস্বরূপ। একটি বিকল্প (পুনরুদ্ধার) একটি নতুন পরিকল্পনা তৈরি করে , তবে অন্যথায় ডেটা ক্যাশে পরিষ্কার / প্রকাশ করে না - এটি সাধারণত পরিকল্পনার পুনরুত্থান এবং পরিকল্পনার ক্যাশিং ব্যয় ব্যয় করে আরও আদর্শ পরিকল্পনা তৈরি করে।
ব্যবহারকারী 2864740

6
EXEC sys.sp_configure N'max server memory (MB)', N'2147483646'
GO
RECONFIGURE WITH OVERRIDE
GO

আপনি সার্ভার মেমরির জন্য যে মানটি নির্দিষ্ট করেন তা গুরুত্বপূর্ণ নয়, যতক্ষণ না এটি বর্তমানের চেয়ে আলাদা হয় fers

বিটিডব্লিউ, যে জিনিসটি গতিরোধ ঘটায় তা হ'ল ক্যোয়ারী ক্যাশে নয়, তবে ডেটা ক্যাশে।


3

মনে রাখবেন যে এসকিউএল অ্যাজুরি / এসকিউএল ডেটা ওয়্যারহাউসে উভয়ই সমর্থিত DBCC DROPCLEANBUFFERS;নয় DBCC FREEPROCCACHE;

তবে, যদি আপনাকে এসকিউএল অ্যাজুরে প্ল্যান ক্যাশেটি পুনরায় সেট করতে হয় তবে আপনি ক্যোয়ারীর একটি সারণী পরিবর্তন করতে পারেন (উদাহরণস্বরূপ, কেবল একটি কলাম অপসারণ করুন), এটি ক্যাশে থেকে পরিকল্পনা সরানোর পার্শ্ব-প্রতিক্রিয়াটি দেখাবে ।

ক্যাশেড পরিকল্পনাগুলি মোকাবেলা না করেই আমি ব্যক্তিগতভাবে এটি ক্যোয়ারি পারফরম্যান্স পরীক্ষার একটি উপায় হিসাবে করি।

এসকিউএল অ্যাজুরি প্রক্রিয়া ক্যাশে সম্পর্কে আরও বিশদ এখানে


এটি আমার পক্ষে কাজ করে না, তারপরে পরিকল্পনাটি অপরিবর্তিত ছিল। দয়া করে এখানে দেখুন স্ট্যাকওভারফ্লো.com
প্রশ্নগুলি /
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.