একটি বিস্তৃত পিকে বনাম একটি পৃথক সিন্থেটিক কী এবং ইউকিউ ব্যবহারের মধ্যে পারফরম্যান্সের বিবেচনাগুলি কী?


10

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

  • সরলতা; কোনও বহিরাগত ক্ষেত্র এবং কেবল একটি সূচক নেই
  • ক্লাস্টারিং দ্রুত মার্জ এবং যোগদানের পরিসীমা ভিত্তিক ফিল্টারগুলির মঞ্জুরি দেয়

তবে, আমি একটি সিন্থেটিক IDENTITY INTপিকে তৈরির জন্য এবং তার পরিবর্তে ব্যবসায়ের কীটিকে পৃথক UNIQUEবাধা দিয়ে প্রয়োগ করার জন্য একটি কেস শুনেছি । সুবিধাটি হ'ল সংকীর্ণ পিকে অনেক ছোট মাধ্যমিক সূচকগুলি তৈরি করে।

একটি টেবিল তাহলে হয়েছে পি কে ছাড়া অন্য কোন সূচকের, আমি দ্বিতীয় পদ্ধতির পক্ষপাতী কোনো কারণ দেখি না যদিও একটি বৃহৎ সারণিতে এটি সম্ভবত অনুমান করা সূচকের ভবিষ্যতে প্রয়োজন হতে পারে যে সেরা, সেইজন্য এবং সংকীর্ণ সিন্থেটিক পি কে পক্ষপাতী । আমি কি কোন বিবেচনা মিস করছি?

ঘটনাচক্রে, আমি ডেটা গুদামগুলিতে সিন্থেটিক কীগুলি ব্যবহার করার বিরুদ্ধে তর্ক করছি না, আমি কখনই একক ব্রড পিকে ব্যবহার করতে পারি এবং কখন সংকীর্ণ পিকে প্লাস একটি ব্রড ইউকে ব্যবহার করতে আগ্রহী।


1
আপনি খুঁজে পেতে পারেন এই বা এই সাইটে অন্য কোন প্রশ্ন মধ্যে সহায়ক
জ্যাক topanswers.xyz চেষ্টা বলছেন

উত্তর:


11

ক্লাস্টারড ইনডেক্স হিসাবে প্রাকৃতিক কী ব্যবহার করে কোনও উল্লেখযোগ্য অসুবিধা নেই

  • কোনও ক্লাস্টারযুক্ত সূচি নেই
  • এই টেবিলটি উল্লেখ করে কোনও বিদেশী কী নেই (এটি প্যারেন্ট সারি)

ডাউনসাইডটি পৃষ্ঠ বিভাজনগুলি বাড়ানো হবে কারণ শেষের পরিবর্তে ডেটা সন্নিবেশগুলি ডেটা জুড়ে বিতরণ করা হবে।

আপনার কাছে যেখানে এফকে বা এনসি সূচক রয়েছে সেখানে সংকীর্ণ, সংখ্যাসূচক এবং ক্রমবর্ধমান ক্লাস্টার ইনডেক্সের সুবিধা রয়েছে। আপনি কেবলমাত্র এনসি বা এফকে এন্ট্রি প্রতি কিছু বাইট ডেটা পুনরাবৃত্তি করেন, যদিও ব্যবসায় / প্রাকৃতিক কী নয়।

কেন, গুগল থেকে খুব বেশি 5 টি নিবন্ধ পড়ুন

দ্রষ্টব্য আমি "প্রাথমিক কী" ব্যবহার এড়িয়ে চললাম।

আপনার কাছে সারোগেট কীতে ক্লাস্টারড ইনডেক্স থাকতে পারে তবে ব্যবসাকে নিয়মে পি কে রাখুন তবে ক্লাস্টারবিহীন হিসাবে রাখতে পারেন। কেবল নিশ্চিত করুন যে গোষ্ঠীটি অনন্য, কারণ এসকিউএল এটি তৈরি করার জন্য একটি "ইউনিকিফায়ার" যুক্ত করবে।

পরিশেষে, প্রতিটি টেবিলের অন্ধভাবে নয় এমন একটি সরোগেট কী থাকা বোধগম্য হতে পারে : বহু-অনেকগুলি টেবিলের একটির প্রয়োজন হয় না, বা যেখানে প্যারেন্ট টেবিলগুলি থেকে একটি যৌগিক চাবি যথেষ্ট হবে


সূত্রের জন্য মিসেস ট্রিপ অসাধারণ নিবন্ধগুলির জন্য +1 ex
ফ্যাব্রিকিও আরাউজো

2
+1 এই দফার জন্য যে পারফরম্যান্সটির প্রাথমিক কীগুলি এবং সূচিগুলির সাথে করার মতো কিছুই নেই।
nvogel

4

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

আপনি যদি সেভাবে তাদের সংজ্ঞা দেন তবে ডিবিএমগুলি বিদেশী কীগুলি সমর্থন করতে এই জাতীয় সূচক ব্যবহার করবে।

আপনি কখনও কখনও বিদেশী কী হিসাবে আইডি নম্বর ব্যবহার করে কর্মক্ষমতা উন্নত করতে পারেন, তবে এটি চূড়ান্ত কোনও উন্নতি নয়। আমাদের ওলটিপি সিস্টেমে, প্রাকৃতিক কীগুলি ব্যবহার করে বিদেশী কীগুলি প্রায় 130 টি (আমার মনে হয়) প্রতিনিধি প্রশ্নগুলির একটি পরীক্ষার স্যুইটে আইডি নম্বর ব্যবহার করে বিদেশী কীগুলি ছাড়িয়ে যায়। (কারণ গুরুত্বপূর্ণ তথ্যগুলি প্রায়শই কীগুলিতে বহন করা হয়, প্রাকৃতিক কীগুলি ব্যবহার করে প্রচুর যোগ দেওয়া এড়ানো যায় )) মিডিয়ান স্পিডআপটি 85 এর একটি ফ্যাক্টর (আইডি নম্বর ব্যবহার করে যোগ দেয় সারিগুলিতে ফিরে আসতে 85 গুণ বেশি সময় নেয়)।

পরীক্ষাগুলি দেখিয়েছে যে আইডি নম্বরগুলিতে যোগদান করে আমাদের ডাটাবেসে প্রাকৃতিক কীগুলি পড়ার চেয়ে দ্রুত সঞ্চালন করতে পারে না যতক্ষণ না নির্দিষ্ট টেবিলগুলি কয়েক মিলিয়ন সারিতে পৌঁছে যায়। সারিটির প্রস্থটি এর সাথে অনেক কিছু করতে পারে - বিস্তৃত সারিগুলির অর্থ কোনও পৃষ্ঠায় কম সারি ফিট হয়, সুতরাং আপনাকে 'এন' সারি পেতে আরও পৃষ্ঠা পড়তে হবে। আমাদের প্রায় সমস্ত টেবিল 5NF এ রয়েছে; বেশিরভাগ টেবিলগুলি মোটামুটি সংকীর্ণ।

সহজ সরল পাঠগুলি সম্পাদন শুরু করার সাথে সাথে এখানে শক্ত রাষ্ট্রের ডিস্কে সমালোচনামূলক সারণী এবং সূচিপত্র স্থাপন করা কয়েক লক্ষ লক্ষ সারিতে পারফরম্যান্সকে স্তরের করে দিতে পারে।


3

ক্লাস্টারিং + পিকে জন্য পরিচয় কলাম ব্যবহার করে আমার কাছে একটি সম্পূর্ণ অল্টপি ডাটাবেস রয়েছে। এটি সন্নিবেশ / সন্ধানে বেশ দ্রুত কাজ করে তবে আমি কয়েকটি সমস্যা দেখেছি:
১. সূচক পূরণের বিকল্পটি অকেজো কারণ সন্নিবেশগুলি কেবল সূচক
2 এর শেষের দিকে ঘটে 2 আরও সঞ্চয় স্থান। আমার কাছে কয়েক মিলিয়ন রেকর্ড সহ টেবিল রয়েছে এবং 1 টি নিজেই স্থান গ্রহণ করে। এটির pk এর জন্য একটি পরিচয় কলাম সহ প্রতিটি সারণিতে ব্যবসায়িক সন্ধানের জন্য অন্য সূচি থাকতে হবে, সুতরাং আরও স্টোরেজ প্রয়োজন।
৩. স্কেলিবিলিটি এটি সবচেয়ে খারাপ সমস্যা। যেহেতু প্রতিটি সন্নিবেশ সূচকের শেষ প্রান্তে চলে যায়, প্রতিটি সন্নিবেশ সূচকের শেষ প্রান্তে চাপ দেবে (লেখার জন্য বরাদ্দ, আইও ইত্যাদি)। ক্লাস্টারিং কী হিসাবে একটি ব্যবসায়িক কী ব্যবহার করে আপনি সূচকগুলিতে সমানভাবে সন্নিবেশগুলি বিতরণ করতে পারেন। এর অর্থ হ'ল আপনি কেবল একটি বড় হটস্পটকে সরিয়ে দিয়েছেন। আপনি কোনও সূচকের জন্য সহজেই আরও ফাইল ব্যবহার করতে পারেন, প্রতিটি ফাইল আলাদা ড্রাইভে, প্রতিটি ড্রাইভ পৃথকভাবে কাজ করে।

আমি আমার টেবিলগুলি একটি পরিচয় কলাম থেকে প্রাকৃতিক কীগুলিতে পরিবর্তন করতে শুরু করেছি (সম্ভবত ক্লাস্টারিং এবং পিকে জন্য পৃথক)। এটা এখন আরও ভাল বোধ।

আমি নিম্নলিখিতটি প্রস্তাব করব (কমপক্ষে একটি অল্টপি ডিবি এর জন্য):
১. সবচেয়ে ঘন ঘন প্রশ্নগুলি অনুকূল করতে ডান ক্রমে ডান কলামগুলিতে একটি ক্লাস্টারিং কী হিসাবে ব্যবহার করুন ২. কোনও পিকে ডান কলামগুলি
ব্যবহার করুন যা আপনার টেবিলের জন্য অর্থবোধ করে table

যদি ক্লাস্টার্ড কীটি সহজ না হয় এবং এতে অক্ষর (চর [], বর্ণচর, এনভারচার) থাকে তবে আমি মনে করি উত্তরটি 'এটি নির্ভর করে', আপনার প্রতিটি ক্ষেত্রে পৃথকভাবে বিশ্লেষণ করা উচিত।

আমি নিম্নলিখিত নীতিটি রাখি: সবচেয়ে খারাপ পরিস্থিতি হ্রাস করার সময় সর্বাধিক সাধারণ ক্যোয়ারীর জন্য অনুকূলিতকরণ।

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


4
আপনার "হটস্পট" ধারণাটি একটি পৌরাণিক কাহিনী: dba.stackexchange.com/questions/1584/… এবং আপনি যখন বলেন "এখন এটি আরও ভাল লাগছে।" আপনি কি মানদণ্ড করলেন?
gbn

4
হ্যাঁ, লেখাগুলি সরাসরি ডিস্কে নয় মেমরিতে করা হয়। আপনি যদি কোনও পৃষ্ঠায় 20 টি নতুন সারি লেখেন তবে চেকপয়েন্টটি ঘটলে ডেটা ফাইলে কেবল 1 টি দৈহিক লিখন থাকে।
mrdenny

সূচকের শেষে সবকিছু লেখার জন্য @ এমরডেনি একই ফাইলটিতে সমস্ত আইও রাইটিং অনুরোধ প্রেরণ করবে। আমি সন্দেহ করি যে সাধারণ অল্টপি লেনদেন ব্যবহার করে এই দৃশ্যের পুনরুত্পাদন করা শক্ত হবে, তবে কিছু বিশেষ পরিস্থিতি যেমন বাল্ক / ব্যাচ সন্নিবেশ রেকর্ড ব্যবহার করে কিছু ব্যবসায়ের ডেটা সরিয়ে নিতে সিসিস ব্যবহার করে আপনি সেখানে পাবেন get
ক্যাটালিন অ্যাডলার

1
@ user973156 হ্যাঁ সমস্ত অনুরোধগুলি একই ফাইলটিতে করবে, তবে লেখকরা চেকপয়েন্ট পর্যন্ত আসলে ডিস্কে যান না যা কেবল প্রতি মিনিটে ঘটে (ডিফল্টরূপে) বা যখন লেখার বাফার 50% পূর্ণ থাকে। আপনি কীভাবে ডেটা লেখেন এই বিধিটি এখনও প্রযোজ্য তা বিবেচ্য নয়।
mrdenny

2
@ user973156 এলোমেলোভাবে বিতরণ করা ক্লাস্টারিং কী ব্যবহারের ফলে সূচি খণ্ডিত হবে। সূচক বিভাজন কর্মক্ষমতা সমস্যার কারণ হবে। এবং আপনার টেবিলটি যথেষ্ট পরিমাণে বড় হবে যে সূচক ডিফ্র্যাগমেন্টেশন সম্পাদন করতে "দীর্ঘ সময়" লাগবে, এবং লগ স্পেস এবং সম্ভাব্য টেম্পডিবি স্থান খাবে। আমার যখন কিম্বারলি ট্রিপের মতো লোকেরা আমাকে বলছেন যে এটি একটি ভাল ধারণা, আমি শুনি। ( sqlskills.com/BLOGS/KIMBERLY/post/… )
ম্যাট এম

2

পারফরম্যান্সের দৃষ্টিকোণ থেকে কোন কীটি "প্রাথমিক" কী তা পছন্দ করলে কোনও পার্থক্য হয় না। আপনার কীগুলি প্রয়োগ করার জন্য একটি প্রাথমিক কী এবং একটি অনন্য বাধা ব্যবহার করার মধ্যে কোনও পার্থক্য নেই।

পারফরম্যান্স নির্বাচন এবং সূচি এবং অন্যান্য স্টোরেজ বিকল্পগুলির ধরণের এবং কীগুলি প্রশ্ন এবং কোডে ব্যবহৃত হয় তা দ্বারা নির্ধারিত হয়।

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