এসকিউএল সার্ভার পর্যায়ক্রমে পরিকল্পনার ক্যাশে এবং কার্যকর করার পরিসংখ্যান পরিষ্কার করে


24

এসকিউএল সার্ভার ২০১৪-তে ২০১g-তে উন্নীত করার পরে, সার্ভার প্রতি ঘন্টা কয়েক ঘন্টা ক্যাশেড এক্সিকিউশন পরিকল্পনা এবং dm*মতামত (যেমন dm_exec_query_stats) ইত্যাদি পুনরায় সেট করতে থাকে

যেন কেউ মৃত্যুদণ্ড কার্যকর করে DBCC FREEPROCCACHEএবং DBCC DROPCLEANBUFFERSম্যানুয়ালি (কেউ না করে তবে তা স্বয়ংক্রিয়ভাবে ঘটে)।

একই ডাটাবেসটি এসকিউএল সার্ভার ২০১৪ এবং উইন্ডোজ সার্ভার ২০১২ তে দুর্দান্ত কাজ করেছে, এসকিউএল সার্ভার ২০১ 2016 (এবং উইন্ডোজ সার্ভার ২০১ 2016) এ যাওয়ার পরে জিনিসগুলি দক্ষিণে চলে গেছে

আমি যা পরীক্ষা করেছি: ডাটাবেসে "অটো ক্লোজ" পতাকা নেই have এসকিউএল সার্ভারটি ad hoc optimizedসেট করা আছে true(আমি ভেবেছিলাম এটি সাহায্য করবে, এটি হয়নি)। "ক্যোয়ারী স্টোর" "অফ"। সার্ভারে 16 গিগাবাইট মেমরি রয়েছে।

"এসকিউএল সার্ভার লগ" তেমন কোনও সহায়ক নয়। কেবল একটি সাপ্তাহিক ব্যাকআপ বার্তা ...

আমি এই নিবন্ধটি https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-datedia-transact-sql-set-options টিও পরীক্ষা করে দেখেছি (উপরে "উদাহরণ" বিভাগে স্ক্রোল করুন এবং ঠিক উপরে এটি) পরিস্থিতিগুলির একটি তালিকা রয়েছে যখন পরিকল্পনাটি স্বয়ংক্রিয়ভাবে সাফ হয়ে যায়। এগুলির কোনওটিই প্রয়োগ করে না।

হালনাগাদ:

দুর্ভাগ্যক্রমে, পরামর্শগুলির কোনওটিই সহায়তা করেনি। "সর্বোচ্চ সার্ভারের মেমরি" হ্রাস করে একই ক্যোয়ারির জন্য প্রচুর পরিকল্পনা তৈরি করে এলপিআইএম অনুমতি প্রদান, নন-প্যারামিটারাইজড কোয়েরিগুলি সনাক্তকরণ এবং ফিক্সিং ... প্রতি ঘন্টা কয়েক ঘন্টা থেকে প্রতি 5-10 মিনিটে পরিকল্পনাগুলি এলোমেলোভাবে পুনরায় সেট করতে থাকে। যদি সার্ভারটি "মেমরির চাপের মধ্যে থাকে" তবে কীভাবে আসবে ২০১৪ সংস্করণ একই মেশিনে দুর্দান্ত কাজ করছে

অনুরোধ হিসাবে এখানে sp_Blitz আউটপুট

**Priority 10: Performance**:

- Query Store Disabled - The new SQL Server 2016 Query Store feature has not been enabled on this database.

    * xxx


**Priority 50: Server Info**:

- Instant File Initialization Not Enabled  - Consider enabling IFI for faster restores and data file growths.


**Priority 100: Performance**:

- Resource Governor Enabled  - Resource Governor is enabled.  Queries may be throttled.  Make sure you understand how the Classifier Function is configured.


**Priority 120: Query Plans**:

- Implicit Conversion Affecting Cardinality - One of the top resource-intensive queries has an implicit conversion that is affecting cardinality estimation.

    * 

- Missing Index - One of the top resource-intensive queries may be dramatically improved by adding an index.

    * 

- RID or Key Lookups - One of the top resource-intensive queries contains RID or Key Lookups. Try to avoid them by creating covering indexes.

    * 

**Priority 170: File Configuration**:

- System Database on C Drive
    * master - The master database has a file on the C drive.  Putting system databases on the C drive runs the risk of crashing the server when it runs out of space.

    * model - The model database has a file on the C drive.  Putting system databases on the C drive runs the risk of crashing the server when it runs out of space.

    * msdb - The msdb database has a file on the C drive.  Putting system databases on the C drive runs the risk of crashing the server when it runs out of space.


**Priority 200: Backup**:

- MSDB Backup History Not Purged msdb - Database backup history retained back to Jun 10 2017  9:47PM


**Priority 200: Informational**:

- Backup Compression Default Off  - Uncompressed full backups have happened recently, and backup compression is not turned on at the server level. Backup compression is included with SQL Server 2008R2 & newer, even in Standard Edition. We recommend turning backup compression on by default so that ad-hoc backups will get compressed.


**Priority 200: Non-Default Server Config**:

- Agent XPs  - This sp_configure option has been changed.  Its default value is 0 and it has been set to 1.

- max server memory (MB)  - This sp_configure option has been changed.  Its default value is 2147483647 and it has been set to 15000.

- optimize for ad hoc workloads  - This sp_configure option has been changed.  Its default value is 0 and it has been set to 1.

- show advanced options  - This sp_configure option has been changed.  Its default value is 0 and it has been set to 1.

- xp_cmdshell  - This sp_configure option has been changed.  Its default value is 0 and it has been set to 1.


**Priority 200: Performance**:

- Buffer Pool Extensions Enabled  - You have Buffer Pool Extensions enabled, and one lives here: Z:\sql_buffer_pool.BPE. It's currently 60.00000000000 GB. Did you know that BPEs only provide single threaded access 8KB (one page) at a time?

- cost threshold for parallelism  - Set to 5, its default value. Changing this sp_configure setting may reduce CXPACKET waits.

**Priority 240: Wait Stats**:

- No Significant Waits Detected  - This server might be just sitting around idle, or someone may have cleared wait stats recently.

**Priority 250: Informational**:

- SQL Server Agent is running under an NT Service account  - I'm running as NT Service\SQLSERVERAGENT. I wish I had an Active Directory service account instead.

- SQL Server is running under an NT Service account  - I'm running as NT Service\MSSQLSERVER. I wish I had an Active Directory service account instead.

**Priority 250: Server Info**:

- Default Trace Contents  - The default trace holds 125 hours of data between Aug 19 2017 11:55AM and Aug 24 2017  4:59PM. The default trace files are located in: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log

- Hardware  - Logical processors: 2. Physical memory: 15GB.

- Hardware - NUMA Config  - Node: 0 State: ONLINE Online schedulers: 2 Offline schedulers: 0 Processor Group: 0 Memory node: 0 Memory VAS Reserved GB: 29

- Locked Pages In Memory Enabled  - You currently have 12.02534484863 GB of pages locked in memory.

- Memory Model Unconventional  - Memory Model: LOCK_PAGES

- Server Last Restart  - Aug 20 2017 12:32PM

- Server Name  - xx

- Services
 - Service: SQL Full-text Filter Daemon Launcher (MSSQLSERVER) runs under service account NT Service\MSSQLFDLauncher. Last startup time: not shown.. Startup type: Manual, currently Running.

 - Service: SQL Server (MSSQLSERVER) runs under service account NT Service\MSSQLSERVER. Last startup time: Aug 20 2017 12:32PM. Startup type: Automatic, currently Running.

 - Service: SQL Server Agent (MSSQLSERVER) runs under service account NT Service\SQLSERVERAGENT. Last startup time: not shown.. Startup type: Automatic, currently Running.

- SQL Server Last Restart  - Aug 20 2017 12:33PM

- SQL Server Service  - Version: 13.0.4446.0. Patch Level: SP1. Edition: Enterprise Edition (64-bit). AlwaysOn Enabled: 0. AlwaysOn Mgr Status: 2

- Virtual Server  - Type: (HYPERVISOR)

- Windows Version  - You're running a pretty modern version of Windows: Server 2012R2 era, version 6.3


**Priority 254: Rundate**:

 - Captain's log: stardate something and something...

1
আমি একই সমস্যাটি সমাধান করেছি, আপনি চেষ্টা করতে পারেন। dba.stackexchange.com/questions/179618/query-plan-deleted/…
ইউনুস ইউয়ানিক

উত্তর:


27

প্রথমে পরিকল্পনার ক্যাশে সাফ হওয়ার সময় সঠিক সময়টি পান। এটি করার সহজ উপায় এখানে - এটি প্রায় তাত্ক্ষণিকভাবে চালানো উচিত, এবং কাউকে অবরুদ্ধ করবে না:

SELECT TOP 1 creation_time
FROM sys.dm_exec_query_stats WITH (NOLOCK)
ORDER BY creation_time;

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

যদি v তারিখ / সময় নির্দিষ্ট বিরতিতে আপডেট হয় , যেমন 6:00, 8:00, 10:00, ইত্যাদি বলার জন্য প্রতি 2 ঘন্টা ঠিক ঠিক আপডেট হয় বলে মনে হয় তবে কেউ সম্ভবত কোনও কাজ বা ক্যোয়ারী চালাচ্ছেন যার ফলে পরিকল্পনার ক্যাশে চলেছে পরিষ্কার করা। একবার আপনি সঠিক ফ্রিকোয়েন্সি জানার পরে, আপনি করতে পারেন:

  • সেই ব্যবধানে কী চলে তা দেখতে আপনার কাজের সময়সূচি দেখুন
  • রহস্যটি সনাক্ত করার জন্য টাইমস্প্যানের সময়ে একজন প্রোফাইলার ট্রেস বা বর্ধিত ইভেন্টের সন্ধান চালান (আমি সাধারণত উত্পাদন প্রযোজনার অনুরাগী নই, তবে হত্যাকারী কখন স্ট্রাইক করতে চলেছে তা যদি আপনি ঠিক জানেন তবে নীচের দিকে গুলি চালানো যথেষ্ট সহজ) - কি চলছে তার ওপরে নমুনা)
  • sp_WhoIsActiveসেই সময়ে কোনও টেবিলে লগইন করুন (সবচেয়ে সহজ পদ্ধতি, তবে এটির কারণটি সঠিক কোয়েরিতে কমিয়ে আনার সম্ভাবনা)

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

sp_Blitz @OutputType = 'markdown', @CheckServerInfo = 1, @CheckUserDatabaseObjects = 1

(প্রকাশ: আমি এর অন্যতম লেখক sp_Blitz।)

আপনার এসপি_ব্লিটজ ডেটা দিয়ে 2017/08/25 আপডেট হয়েছে - এসপি_ব্লিটজ চালানো এবং এটি আপনার প্রশ্নের সাথে যুক্ত করার জন্য ধন্যবাদ এবং এটি সত্যিই কয়েকটি জিনিস দেখাতে সহায়তা করে। আপনি 2 কোরের এবং 16 জিবি র‌্যাম সহ একটি ভিএম এ এসকিউএল সার্ভার 2016 এন্টারপ্রাইজ সংস্করণটি চালাচ্ছেন। প্রথমে লাইসেন্স দেওয়ার বিষয়ে একটি দ্রষ্টব্য নোট: আপনি যদি অতিথির দ্বারা লাইসেন্স দিচ্ছেন তবে ন্যূনতম ক্রয়ের প্রয়োজনীয়তা 4 টি নয়, 2 নয় (( আরও তথ্যের জন্য এসকিউএল সার্ভার লাইসেন্সিং গাইডটি দেখুন)) এন্টারপ্রাইজ সংস্করণটির 4 টি কোর প্রায় 28 ডলার মার্কিন ডলার , এবং কেবলমাত্র 16 গিগাবাইট র্যামের জন্য এত বেশি লাইসেন্সিং অর্থ ব্যয় করা মোটেও অস্বাভাবিক। আপনি যদি হোস্ট স্তরে এসকিউএল সার্ভার এন্টারপ্রাইজ সংস্করণটিকে লাইসেন্স দিচ্ছেন তবে আপনি সেটিকে উপেক্ষা করে ছোট ভিএম চালাতে পারবেন run

দেখে মনে হচ্ছে আপনার এসকিউএল সার্ভারটি বাহ্যিক মেমরির চাপের মধ্যে চলেছে। আপনি 16 জিবি র‌্যাম পেয়েছেন এবং আপনি 15 গিগাবাইটে সর্বোচ্চ সার্ভার মেমরি সেট করেছেন। দুর্ভাগ্যক্রমে, 1 গিগাবাইট অপারেটিং সিস্টেমের জন্য যথেষ্ট পরিমাণে অবশিষ্ট নেই (প্লাস ব্যাকআপ সফ্টওয়্যার এবং এসএসএমএসের মতো আপনি যা চালিয়ে যাচ্ছেন তাও।) আমাদের এসকিউএল সার্ভার সেটআপ গাইডে, আমরা 4 জিবি বা 10% নিখরচায় ছেড়ে দেওয়ার পরামর্শ দিচ্ছি, যেটিই হোক আরও বড় - আপনার ক্ষেত্রে এটি 4GB হবে, সুতরাং আপনার সর্বাধিক সার্ভারের মেমরির সেটিংটি 15 গিগাবাইটের চেয়ে 12 গিগাবাইট হওয়া উচিত।

আপনার বর্তমান মেমোরি বরাদ্দগুলিতে আরও প্রমাণ প্রমাণিত হয়: আপনি পৃষ্ঠাগুলি মেমরিতে লক করেছেন (এলপিআইএম) চালু আছে, তবে আপনি কেবল মেমরিতে 12.02GB পৃষ্ঠা লক করেছেন। সম্ভবত এটির (তবে গ্যারান্টিযুক্ত নয়) এর অর্থ হ'ল অন্য কিছু অ্যাপ্লিকেশনটির জন্য মেমরির প্রয়োজন ছিল, তাই উইন্ডোজ একটি মেমরি চাপের বিজ্ঞপ্তি পাঠিয়েছিল এবং এসকিউএল সার্ভার অন্য 3 জিবি মেমরিটিকে অন্য অ্যাপ্লিকেশনটিকে এটি করতে দেয়। এটি আরও প্রমাণ যে আপনি 15GB সর্বাধিকের সাথে সত্যই যেতে পারবেন না - আপনার অন্যান্য জিনিসগুলির জন্য মেমরির প্রয়োজন।

যখন আপনার এসকিউএল সার্ভারটি বাহ্যিক মেমরির চাপের মধ্যে চলে আসে এবং অন্যান্য অ্যাপ্লিকেশনের জন্য মেমরি মুক্ত করতে হয়, তখন আপনার পরিকল্পনার ক্যাশে ক্ষতিগ্রস্থ হবে।

সুতরাং আপনি কয়েকটি বিকল্প পেয়েছেন:

  • সর্বোচ্চ মেমরি যথাযথভাবে সেট করুন - বলুন, 12 গিগাবাইট (আপনি যদি সার্ভারে অন্য অ্যাপ্লিকেশন চালাতে যাচ্ছেন তবে এমনকি আরও কম) অ্যাপ্লিকেশনটির 2-3 গিগাবাইট র‍্যাম দরকার - এটি ইতিমধ্যে উপলব্ধ
  • সার্ভারে অন্যান্য অ্যাপ্লিকেশনগুলি চালানো বন্ধ করুন - এটি অন্য সিস্টেমেডমিনস রিমোট ডেস্কটপিং এবং এসএসএমএসের মতো স্টাফ চালানো যদি শক্ত হয় তবে। আমি খোলার আরডিপি সেশনের সংখ্যার জন্য পারফোন কাউন্টার অ্যালার্ম স্থাপন করেছি এবং এটি 0 ছাড়া অন্য কিছু হলে সতর্ক হয়েছি - যা অপরাধীকে ক্রিয়াকলাপ করতে সহায়তা করতে পারে।
  • ভিএম - তে আরও স্মৃতি যুক্ত করুন - তবে আমি মনে করি না যে আপনার এটির সত্যিকারের প্রয়োজন। "কোন উল্লেখযোগ্য অপেক্ষার সনাক্ত করা যায় নি" এর এসপি_ব্লিটজ রিপোর্ট দ্বারা কিছু প্রমাণ দেখানো হয়েছে। আমি মনে করি না যে আপনি ঘন ঘন মেমরির চাপের মধ্যে রয়েছেন, বিশেষত যেহেতু আপনি রিপোর্ট করেছেন যে এটি কেবল এখন এবং পরে ঘটে থাকে। এটি সর্বনিম্ন ব্যয়-কার্যকর বিকল্প।

5

ঠিক আছে, এখানে ওপি, আমি শেষ পর্যন্ত এসকিউএল সার্ভারকে সর্বশেষ সংস্করণে আপডেট করে এই সমস্যাটি সমাধান করেছি। আমি SP1এবং গতকাল ইনস্টল করেছি Cumulative Update 6

আমি ব্রেন্টের উত্তর অনুসারে যথাযথভাবে "সর্বোচ্চ মেমরি" সেট করেছিলাম। যাইহোক দুর্দান্ত উত্তর, আমি সবাইকে এটি উত্সাহিত করার জন্য অনুরোধ করছি।

এটি 36 ঘন্টা হয়েছে এবং গণনা হচ্ছে, পুনরায় সেট করার পরিকল্পনা নেই।

ব্রেন্ট ওজারের একটি খুব সুন্দর ওয়েবসাইট এখানে রয়েছে: আপনাকে কোন আপডেটগুলি প্রয়োজন তা নির্ধারণ করতে সহায়তা করতে https://sqlserverupdates.com/

অন্য একটি জিনিস যা "অবিশ্বস্ত বিদেশী কী" সমস্যাটি সনাক্ত এবং সমাধান করতে সহায়তা করেছিল। ব্রেন্টের একটি খুব সুন্দর নিবন্ধ রয়েছে (হাহাহা, হ্যাঁ, ব্রেন্ট আবার, আমি ঠিক জানি) কীভাবে এটি সমাধান করা যায়, গুগল, তিনিই # 1 ফলাফল


1

আমার বাড়ির পরীক্ষার বাক্সে আমার এই সমস্যাটি ছিল এবং আমি জানতে পেরেছিলাম যে এসকিউএল সার্ভার পরিষেবা অ্যাকাউন্টে 'মেমরিতে লক পেজস' যুক্ত করে সমস্যার সমাধান করা হয়েছে, তবে আমি নিশ্চিত নই যে এটিই সেরা পরামর্শ is

দেখুন মেমরি অপশন লক পৃষ্ঠাগুলি সক্ষম (উইন্ডোজ)


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