এসকিউএল সার্ভার 2014 COUNT (DISTINCT x) কলাম x এর জন্য পরিসংখ্যানের ঘনত্বের ভেক্টরটিকে উপেক্ষা করে


15

যার জন্য COUNT(DISTINCT)billion 1 বিলিয়ন স্বতন্ত্র মান রয়েছে তার জন্য, আমি প্রায় 3 মিলিয়ন ডলার সারি অনুমান করে একটি হ্যাশ সমষ্টি সহ একটি ক্যোয়ারী পরিকল্পনা পাচ্ছি।

ইহা কি জন্য ঘটিতেছে? এসকিউএল সার্ভার 2012 একটি ভাল অনুমান উত্পাদন করে, তাই এটি কি এসকিউএল সার্ভার 2014 এ আমার একটি সংযোগের রিপোর্ট করা উচিত?

ক্যোয়ারী এবং খারাপ অনুমান

-- Actual rows: 1,011,719,166
-- SQL 2012 estimated rows: 1,079,130,000 (106% of actual)
-- SQL 2014 estimated rows: 2,980,240 (0.29% of actual)
SELECT COUNT(DISTINCT factCol5)
FROM BigFactTable
OPTION (RECOMPILE, QUERYTRACEON 9481) -- Include this line to use SQL 2012 CE

-- Stats for the factCol5 column show that there are ~1 billion distinct values
-- This is a good estimate, and it appears to be what the SQL 2012 CE uses
DBCC SHOW_STATISTICS (BigFactTable, _WA_Sys_00000005_24927208)
--All density   Average Length  Columns
--9.266754E-10  8               factCol5
SELECT 1 / 9.266754E-10
-- 1079126520.46229

ক্যোয়ারী প্ল্যান

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

সম্পূর্ণ স্ক্রিপ্ট

কেবলমাত্র একটি পরিসংখ্যান ডাটাবেস ব্যবহার করে পরিস্থিতিটির সম্পূর্ণ তিরস্কার এখানে

আমি এখন পর্যন্ত কি চেষ্টা করেছি

আমি প্রাসঙ্গিক কলামের পরিসংখ্যান খনন করে দেখেছি যে ঘনত্বের ভেক্টর আনুমানিক ~ 1.1 বিলিয়ন স্বতন্ত্র মান দেখায়। এসকিউএল সার্ভার 2012 এই অনুমানটি ব্যবহার করে এবং একটি ভাল পরিকল্পনা তৈরি করে। এসকিউএল সার্ভার ২০১৪, আশ্চর্যরূপে, পরিসংখ্যানগুলির দ্বারা সরবরাহিত খুব সঠিক অনুমানটিকে উপেক্ষা করেছে এবং পরিবর্তে এটি অনেক কম অনুমান ব্যবহার করে। এটি একটি অনেক ধীরগতির পরিকল্পনা তৈরি করে যা প্রায় পর্যাপ্ত মেমরি সংরক্ষণ করে না এবং টেম্পডিবির জন্য ছড়িয়ে পড়ে।

আমি পতাকা চিহ্নিত করার চেষ্টা করেছি 4199, তবে পরিস্থিতি ঠিক হয়নি। শেষ পর্যন্ত, আমি এই নিবন্ধটির(3604, 8606, 8607, 8608, 8612) দ্বিতীয়ার্ধে প্রদর্শিত হিসাবে, ট্রেস পতাকাগুলির সংমিশ্রণের মাধ্যমে অপ্টিমাইজার তথ্য অনুসন্ধান করার চেষ্টা করেছি । যাইহোক, চূড়ান্ত আউটপুট ট্রিটিতে উপস্থিত না হওয়া অবধি খারাপ অনুমানের ব্যাখ্যা দেওয়ার মতো কোনও তথ্য আমি দেখতে পাচ্ছিলাম না।

সমস্যা সংযুক্ত করুন

এই প্রশ্নের উত্তরের ভিত্তিতে, আমি এটি সংযোগ হিসাবে একটি সমস্যা হিসাবে এটিও দায়ের করেছি

উত্তর:


14

কার্ডিনালিটির প্রাক্কলনটি যেভাবে উত্পন্ন হয়েছে তা অবশ্যই আমার কাছে স্বতঃসিদ্ধ বলে মনে হচ্ছে। স্বতন্ত্র গণনা গণনা (বর্ধিত ইভেন্টগুলি বা ট্রেস পতাকা 2323 এবং 3604 সহ দেখতে পাওয়া যায়):

পরিসংখ্যান ডেরিভেশন

ক্যাপটি লক্ষ্য করুন। এর সাধারণ যুক্তিটি খুব যুক্তিসঙ্গত বলে মনে হচ্ছে (এর চেয়ে আলাদা স্বতন্ত্র মান থাকতে পারে না), তবে ক্যাপটি নমুনাযুক্ত বহু-কলামের পরিসংখ্যান থেকে প্রয়োগ করা হয়েছে :

DBCC SHOW_STATISTICS 
    (BigFactTable, [PK_BigFactTable])
WITH
    STAT_HEADER, 
    DENSITY_VECTOR;

পিকে স্ট্যাটাস

এটি দেখায় 2,380,235 সারি 3,359,431,721 এর মধ্যে 3.35544E-07 এর কল 5 স্তরের ঘনত্ব ভেক্টরের সাথে স্যাম্পল করেছে। এর পারস্পরিক ক্রিয়াকলাপ 2,980,235 এর বিভিন্ন স্বতন্ত্র মানগুলিকে 2,980,240 এ বাস্তব গণিত ব্যবহার করে গোল করে।

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

আরও স্বজ্ঞাতভাবে, আমি আশা করব যে মাল্টি-কলামের পরিসংখ্যানগুলি ব্যবহার না করে, এটি কল 5 এর ঘনত্বের দিকে তাকাবে (তবে এটি নেই):

DBCC SHOW_STATISTICS 
    (BigFactTable, [_WA_Sys_00000005_24927208])
WITH
    STAT_HEADER, 
    DENSITY_VECTOR;

কল 5 পরিসংখ্যান

এখানে ঘনত্ব 9.266754E-10, যা পারস্পরিক প্রতিদান 1,079,126,528

এর মধ্যে একটি সুস্পষ্ট কর্মসূচী হ'ল সম্পূর্ণ স্ক্যান সহ বহু-কলামের পরিসংখ্যান আপডেট করা। অন্যটি হ'ল মূল কার্ডিনালিটি অনুমানকারী ব্যবহার করা।

আপনি যে সংযোগ আইটেমটি খোলেন, এসকিউএল 2014 স্যাম্পলড মাল্টি-কলামের পরিসংখ্যানগুলি অ-নেতৃস্থানীয় কলামগুলির জন্য আরও সঠিক একক-কলাম পরিসংখ্যানকে ওভাররাইড করে , এসকিউএল সার্ভার 2017 এর জন্য স্থির চিহ্নিত করা হয়েছে ।

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