পারফরম্যান্স উন্নয়নের জন্য অস্বীকৃতি? এটি বিশ্বাসযোগ্য মনে হয়, কিন্তু এটি জল ধরে না।
ক্রিস ডেট, যিনি ডঃ টেড কোডের সাথে সম্পর্কযুক্ত তথ্য মডেলের মূল প্রবক্তা ছিলেন, সাধারণীকরণের বিরুদ্ধে ভুল তথ্য যুক্তি দিয়ে ধৈর্য ধারণ করে দৌড়ে গিয়েছিলেন এবং বৈজ্ঞানিক পদ্ধতি ব্যবহার করে পদ্ধতিগতভাবে তাদের ধ্বংস করেছিলেন: তিনি বড় ডেটাবেস পেয়েছিলেন এবং এই দাবিগুলি পরীক্ষা করেছিলেন।
আমি মনে করি তিনি এটি 1988-1991 সম্পর্কিত রিলেশনাল ডেটাবেস রাইটিংয়ে লিখেছিলেন তবে এই বইটি পরবর্তীকালে ডাটাবেস সিস্টেমগুলির পরিচিতির ছয় সংস্করণে রোল করা হয়েছিল যা এটি লেখার সাথে সাথে অষ্টম সংস্করণে ডাটাবেস তত্ত্ব এবং ডিজাইনের চূড়ান্ত পাঠ্য হিসাবে লেখা রয়েছে এবং সম্ভবত রয়ে যাওয়ার সম্ভাবনা রয়েছে কয়েক দশক ধরে মুদ্রণ। ক্রিস ডেট এই ক্ষেত্রের একজন বিশেষজ্ঞ ছিলেন যখন আমাদের বেশিরভাগ এখনও খালি পায়ে চলছিল।
তিনি এটি পেয়েছিলেন:
- তাদের মধ্যে কিছু বিশেষ মামলার জন্য ধার্য রয়েছে
- তাদের সমস্ত সাধারণ ব্যবহারের জন্য অর্থ ব্যয় করতে ব্যর্থ
- এগুলির সবগুলিই অন্যান্য বিশেষ মামলার জন্য উল্লেখযোগ্যভাবে খারাপ
এটি সবই কাজের সেটটির আকার হ্রাস করতে ফিরে আসে। সঠিকভাবে সেট আপ ইনডেক্স সহ সঠিকভাবে নির্বাচিত কীগুলিতে জড়িত হওয়া সস্তা, ব্যয়বহুল নয়, কারণ তারা সারিগুলি বাস্তবায়িত হওয়ার আগে ফলাফলের উল্লেখযোগ্য ছাঁটাইকে মঞ্জুরি দেয় ।
ফলাফলটি বাস্তবায়িত করার সাথে বাল্ক ডিস্কের পাঠগুলি জড়িত যা প্রস্থের আদেশ অনুসারে মহড়ার ব্যয়বহুল দিক। বিপরীতে একটি যোগদান সম্পাদন করার জন্য, যৌক্তিকভাবে কেবল কীগুলি পুনরুদ্ধার করা দরকার । অনুশীলনে, এমনকি মূল মানগুলি আনা হয় না: মূল হ্যাশ মানগুলি তুলনা করার জন্য ব্যবহৃত হয়, বহু-কলামে যোগদানের ব্যয় হ্রাস করে এবং স্ট্রিং তুলনার সাথে জড়িতদের ব্যয়কে মৌলিকভাবে হ্রাস করে। কেবলমাত্র ক্যাশে যথেষ্ট পরিমাণে ফিট হবে না, এর জন্য ডিস্ক পড়াও অনেক কম।
তদুপরি, একজন ভাল আশাবাদী সর্বাধিক সীমাবদ্ধ শর্তটি চয়ন করে এবং এটি যোগদানের আগে এটি প্রয়োগ করে, খুব কার্যকরভাবে উচ্চ কার্ডিনালিটির সাথে সূচকগুলিতে যোগদানের উচ্চ নির্বাচনকে উপকার করে।
স্বীকার করা যায় যে এই ধরণের অপ্টিমাইজেশানটি ডেনোরালাইজড ডেটাবেসগুলিতেও প্রয়োগ করা যেতে পারে, তবে যে ধরণের লোকেরা স্কিমাটিকে অস্বীকৃতি জানাতে চায় তারা সাধারণত সূচিপত্র সেট আপ করার সময় (যদি) কার্ডিনালিটির কথা ভাবেন না।
এটি বুঝতে গুরুত্বপূর্ণ যে টেবিল স্ক্যানগুলি (যোগদানের উত্পাদন করার সময় একটি টেবিলের প্রতিটি সারি পরীক্ষা) অনুশীলনে বিরল। নীচের এক বা একাধিকটি ধরে রাখলে কেবল কোনও কোয়েরি অপটিমাইজার একটি টেবিল স্ক্যান বেছে নেবে।
- সম্পর্কের মধ্যে 200 টিরও কম সারি রয়েছে (এক্ষেত্রে একটি স্ক্যান সস্তা হবে)
- যোগদানের কলামগুলিতে কোনও উপযুক্ত সূচক নেই (যদি এই কলামগুলিতে যোগদান করা অর্থবহ হয় তবে সেগুলি কেন সূচী করা হয় না? এটি ঠিক করুন)
- কলামগুলির সাথে তুলনা করার আগে একটি ধরণের জবরদস্তি প্রয়োজন (ডাব্লুটিএফ? এটি ঠিক করুন বা বাড়িতে যান) অ্যাডো.নেট ইস্যুটির জন্য শেষ নোটগুলি দেখুন
- তুলনার আর্গুমেন্টগুলির মধ্যে একটি হল একটি অভিব্যক্তি (কোনও সূচক নয়)
কোনও অপারেশন সম্পাদন করা এটি সম্পাদন না করার চেয়ে ব্যয়বহুল। যাইহোক, পারফর্মিং ভুল অপারেশন অর্থহীন ডিস্ক ইনপুট / আউটপুট করতে বাধ্য হচ্ছে এবং তারপর আপনি সত্যিই প্রয়োজন যোগদানের করণ করতে আবর্জনার পূর্বে খারিজ হয় অনেক বেশি ব্যয়বহুল। এমনকি যখন "ভুল" অপারেশন প্রাক্পম্পিউটেড হয় এবং সূচকগুলি বুদ্ধিমানভাবে প্রয়োগ করা হয়, তবুও উল্লেখযোগ্য শাস্তি রয়েছে। একটি যোগদানের পূর্বাপর অস্বীকৃতি জানানো - আপডেট হওয়া ব্যতীত হওয়া সত্ত্বেও - একটি বিশেষ যোগদানের প্রতিশ্রুতিবদ্ধ। আপনি যদি একটি প্রয়োজন বিভিন্ন যোগদানের যে প্রতিশ্রুতি আপনি খরচ যাচ্ছে বড় ।
যদি কেউ আমাকে এটির পরিবর্তিত বিশ্ব মনে করিয়ে দিতে চায় তবে আমি মনে করি আপনি গ্রান্টিয়ার হার্ডওয়ারে আরও বড় ডেটাসেটগুলি কেবল তারিখের অনুসন্ধানের বিস্তারকে অতিরঞ্জিত করে।
আপনারা যারা বিলিং সিস্টেম বা জাঙ্ক মেল জেনারেটরের উপর কাজ করেন (আপনার জন্য লজ্জা পাচ্ছেন) এবং নির্দ্বিধায় কীবোর্ডে হাত রেখেছেন তা জানাতে যে আপনি এমন একটি সত্যের জন্য জানেন যে নরমালাইজেশন দ্রুততর, দুঃখিত তবে আপনি বিশেষের একটিতে বাস করছেন কেস - বিশেষতঃ আপনি যেখানে অর্ডার অনুযায়ী সমস্ত ডেটা প্রক্রিয়াকরণ করেন। এটা একটা সাধারণ ঘটনা না, আর আপনি হয় আপনার কৌশলের সমর্থনযোগ্য।
আপনি এটি মিথ্যা সাধারণীকরণে ন্যায়সঙ্গত নন । ডেটা গুদামজাত করার পরিস্থিতিতে দৃ den়তার সাথে ডোনোরালাইমাইজেশনের যথাযথ ব্যবহার সম্পর্কিত আরও তথ্যের জন্য নোট বিভাগের শেষে দেখুন।
আমিও সাড়া দিতে চাই
কিছু লিপগ্লাস সহ কেবল কারটিশিয়ান পণ্যগুলিতে যোগদান করেন
কি ভারী বোঝা। সীমাবদ্ধতা যত তাড়াতাড়ি সম্ভব প্রয়োগ করা হয়, সবচেয়ে সীমাবদ্ধ প্রথমে। আপনি তত্ত্বটি পড়েছেন, তবে আপনি এটি বুঝতে পারেন নি। যোগদানগুলি "ক্যারিটিশিয়ান পণ্য হিসাবে বিবেচিত হয় যা পূর্বাভাসগুলি প্রয়োগ করে" কেবল ক্যোয়ারী অপটিমাইজারের মাধ্যমে। প্রতীকী পচনের সুবিধার্থে এটি প্রতীকী উপস্থাপনা (আসলে একটি সাধারণীকরণ) যাতে অপটিমাইজার সমস্ত সমতুল্য রূপান্তর উত্পাদন করতে পারে এবং তাদের ব্যয় এবং নির্বাচনের দ্বারা রেঙ্ক করতে পারে যাতে এটি সর্বোত্তম ক্যোয়ারী পরিকল্পনাটি নির্বাচন করতে পারে।
কারটিশিয়ান পণ্য উত্পাদন করতে আপনি কখনই অপটিমাস্টার পাবেন তার একমাত্র উপায় হ'ল একটি প্রিকেট সরবরাহ করতে ব্যর্থ: SELECT * FROM A,B
মন্তব্য
ডেভিড অলড্রিজ কিছু গুরুত্বপূর্ণ অতিরিক্ত তথ্য সরবরাহ করে।
ইনডেক্স এবং টেবিল স্ক্যানগুলি ছাড়াও অন্যান্য কৌশলগুলি প্রকৃতপক্ষে রয়েছে এবং একটি আধুনিক অপটিমাইজার কার্যকর করার পরিকল্পনা তৈরির আগে এগুলি সমস্ত ব্যয় করে।
একটি ব্যবহারিক পরামর্শের অংশ: যদি এটি বিদেশী কী হিসাবে ব্যবহার করা যায় তবে এটি সূচক করুন, যাতে একটি সূচক কৌশলটি অপ্টিমাইজারের জন্য উপলব্ধ ।
আমি এমএসএসকিউএল অপটিমাইজারের চেয়ে স্মার্ট হয়ে থাকতাম। এটি দুটি সংস্করণ আগে পরিবর্তন হয়েছিল। এখন এটি সাধারণত আমাকে শেখায় । এটি একটি সত্যিকার অর্থে, একটি বিশেষজ্ঞ সিস্টেম, একটি ডোমেনের অনেক চতুর লোকের সমস্ত প্রজ্ঞাকে কোডিং করে যথেষ্ট নিয়মিত যে একটি নিয়ম-ভিত্তিক ব্যবস্থা কার্যকর।
"বলকস" কৌশলে হতে পারে। আমাকে কম অহংকারী হতে বলা হয়েছে এবং মনে করিয়ে দেওয়া হয়েছে যে গণিত মিথ্যা বলে না। এটি সত্য, তবে গাণিতিক মডেলগুলির সমস্ত প্রচ্ছন্নতা অগত্যা আক্ষরিকভাবে নেওয়া উচিত নয়। Youণাত্মক সংখ্যার স্কোয়ার শিকড়গুলি খুব সহজেই যদি আপনি সাবধানতার সাথে তাদের অযৌক্তিকতা (সেখানে শ্লেষ) পরীক্ষা না করে এবং আপনার সমীকরণটি ব্যাখ্যা করার চেষ্টা করার আগে নিশ্চিত হন যে আপনি সেগুলি বাতিল করে দিয়েছেন।
যে কারণে আমি এতটা বর্বরতার সাথে প্রতিক্রিয়া জানালাম তা হ'ল বক্তব্যটি যেমনটি বলেছিল তেমনটি
যোগদান করেছে হয় কার্টিজিয়ান পণ্য ...
এটি যা বোঝানো হয়েছিল তা নাও হতে পারে তবে এটি যা লেখা হয়েছিল, এবং এটি স্পষ্টভাবে অসত্য। কার্টেসিয়ান পণ্য একটি সম্পর্ক is একটি যোগদান একটি ফাংশন। আরও নির্দিষ্টভাবে, একটি যোগদান একটি সম্পর্ক-মূল্যবান ফাংশন। একটি খালি শিকারের সাহায্যে এটি কার্টেসিয়ান পণ্য তৈরি করবে এবং এটি এমনটি করে তা যাচাই করা এটি একটি ডাটাবেস ক্যোয়ারী ইঞ্জিনের জন্য একটি নির্ভুলতা যাচাই করা হয়, তবে কেউ অনুশীলনে যোগদান করেন না কারণ তাদের শ্রেণিকক্ষের বাইরে কোনও ব্যবহারিক মূল্য নেই have
আমি এটিকে ডাকলাম কারণ আমি চাই না যে পাঠকরা মডেলটিকে মডেল করা জিনিসটির সাথে মডেলকে বিভ্রান্ত করার প্রাচীন ফাঁদে পড়বেন। একটি মডেল একটি আনুমানিক হয়, ইচ্ছাকৃতভাবে সুবিধাজনক কারসাজির জন্য সরলীকৃত।
টেবিল-স্ক্যান যোগদানের কৌশল নির্বাচনের জন্য কাট অফটি ডাটাবেস ইঞ্জিনগুলির মধ্যে পরিবর্তিত হতে পারে। এটি ট্রি-নোড ফিল-ফ্যাক্টর, কী-মান আকার এবং অ্যালগরিদমের সূক্ষ্মতার মতো বিভিন্ন বাস্তবায়নের সিদ্ধান্ত দ্বারা প্রভাবিত হয়, তবে উচ্চভাবে কর্মক্ষমতা সূচকে কে লগ এন + সি কার্যকর করার সময় থাকে । সি শব্দটি একটি স্থির ওভারহেড যা বেশিরভাগ সেটআপের সময় তৈরি হয় এবং বক্ররেখার আকারের অর্থ এন শত শত না হওয়া পর্যন্ত আপনি কোনও বেতন (একটি লিনিয়ার সন্ধানের তুলনায়) পাবেন না ।
কখনও কখনও অস্বীকৃতি একটি ভাল ধারণা
অস্বীকৃতি হ'ল একটি বিশেষ যোগদানের কৌশলটির প্রতিশ্রুতি। পূর্বে উল্লিখিত হিসাবে, এটি অন্যান্য যোগদানের কৌশলগুলিতে হস্তক্ষেপ করে । তবে আপনার যদি ডিস্কের জায়গার বালতি, অ্যাক্সেসের পূর্বাভাসযোগ্য নিদর্শন এবং অনেকগুলি বা এগুলি সমস্ত প্রক্রিয়া করার প্রবণতা থাকে তবে একটি জোড় প্রাক্প্রপুট করা খুব উপযুক্ত হতে পারে।
আপনার ক্রিয়াকলাপটি সাধারণত যে অ্যাক্সেস পাথগুলি ব্যবহার করে সেগুলিও নির্ধারণ করতে এবং সেই অ্যাক্সেস পাথগুলির জন্য সমস্ত সংযুক্তিকে সংহত করে। এটি ডেটা গুদামগুলির পেছনের ভিত্তি, বা কমপক্ষে এটি যখন লোকেরা তৈরি করে যখন তারা জানে যে তারা কেন করছে এবং কেবল বাজওয়ার্ড কমপ্লায়েন্সের জন্য নয়।
একটি যথাযথভাবে ডিজাইন করা ডেটা গুদাম একটি নিয়মিত লেনদেন প্রক্রিয়াকরণ সিস্টেমের বাইরে প্রচুর রূপান্তর দ্বারা পর্যায়ক্রমে উত্পাদিত হয়। অপারেশন এবং রিপোর্টিং ডাটাবেসের এই পৃথকীকরণটি ওলটিপি এবং ওএলএপি (অনলাইন লেনদেন প্রক্রিয়াজাতকরণ অর্থাত্ ডেটা এন্ট্রি, এবং অনলাইন বিশ্লষণী প্রক্রিয়াজাতকরণ অর্থাৎ রিপোর্টিং) এর মধ্যে সংঘর্ষ দূর করার খুব পছন্দসই প্রভাব ফেলে।
এখানে একটি গুরুত্বপূর্ণ বিষয় হ'ল পর্যায়ক্রমিক আপডেটগুলি বাদে কেবলমাত্র ডেটা গুদাম পড়তে পারে । এটি আপডেট ব্যতিক্রমগুলির প্রশ্নকে রেন্ডার করে।
আপনার ওলটিপি ডাটাবেসটিকে অস্বীকৃতি জানাতে ভুল করবেন না (যে ডাটাবেসে ডেটা এন্ট্রি হয়)। বিলিং রানের জন্য এটি দ্রুত হতে পারে তবে আপনি যদি এটি করেন তবে আপনি আপডেট ব্যতিক্রম পাবেন। আপনি স্টাফ পাঠানো বন্ধ করার জন্য কি কখনও পাঠকের ডাইজেস্ট পাওয়ার চেষ্টা করেছিলেন?
এই দিনটিতে ডিস্কের জায়গা সস্তা, তাই নিজেকে ছিটকে যান। তবে ডেনারমালাইজিং ডেটা গুদামগুলির গল্পের কেবল একটি অংশ। অনেক বড় পারফরম্যান্স লাভগুলি প্রাক্পম্পিউটেড রোলড-আপ মান থেকে প্রাপ্ত: মাসিক মোট, এই ধরণের জিনিস। এটি সর্বদা কাজের সেট হ্রাস সম্পর্কে
প্রকারের অমিলের সাথে ADO.NET সমস্যা
ধরুন আপনার কাছে একটি এসকিউএল সার্ভারের টেবিল রয়েছে যা ভেরচার টাইপের একটি সূচকযুক্ত কলামযুক্ত রয়েছে এবং আপনি এই কলামটিতে কোয়েরিকে সীমাবদ্ধ করে একটি পরামিতি পাস করতে অ্যাডউইথওয়ালু ব্যবহার করেন। সি # স্ট্রিংগুলি ইউনিকোড, সুতরাং ইনফারার্ড প্যারামিটারের ধরণটি এনভিচারচার হবে, যা ভ্রচারের সাথে মেলে না।
ভর্চার থেকে এনভিচার্চার হ'ল একটি বিস্তৃত রূপান্তর তাই এটি স্পষ্টভাবে ঘটে - তবে সূচকে বিদায় জানাতে এবং কেন সৌভাগ্য কামনা করছি তা জানাতে।
"ডিস্কের হিটগুলি গণনা করুন" (রিক জেমস)
যদি সমস্ত কিছু র্যামে ক্যাশে করা JOINs
হয় তবে এটি সস্তা। এটি হ'ল, নরমালাইজেশনে খুব বেশি পারফরম্যান্স পেনাল্টি হয় না ।
যদি "নরমালাইজড" স্কিমাটি JOINs
ডিস্ককে প্রচুর পরিমাণে আঘাত করে, তবে সমতুল্য "ডেনারমালাইজড" স্কিমাটি ডিস্কটিতে আঘাত করতে হবে না, তবে ডেনারমালাইজেশন একটি পারফরম্যান্স প্রতিযোগিতা জিতবে।
মূল লেখকের মন্তব্য: আধুনিক ক্রিয়াকলাপ ইঞ্জিনগুলি যোগদানের ক্রিয়াকলাপের সময় ক্যাশে মিস হ্রাস করতে অ্যাক্সেস সিকোয়েন্সিংয়ের আয়োজনে খুব ভাল। উপরেরটি সত্য হলেও এটি ভুল বোঝানো হতে পারে যে এটি বড় ডেটাতে সমস্যাযুক্তভাবে ব্যয়বহুল। এটি অনভিজ্ঞ বিকাশকারীদের পক্ষ থেকে দুর্বল সিদ্ধান্ত গ্রহণের দিকে পরিচালিত করবে।