একটি ডাটাবেস সূচীকরণ


12

আমি ডাটাবেসের সাথে তেমন পরিচিত নই এবং এখন আমি ইনডেক্সিং প্রক্রিয়াটি বোঝার চেষ্টা করছি।

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

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

আমি কেন একটি ট্রিপল স্টোরে সমস্ত সম্ভাব্য সূচকগুলি যুক্ত করব না এবং আরডিবিএমএসে প্রসারিত করে কেন প্রতিটি কলামে সূচি তৈরি করব না (ধরে নিচ্ছি যে আমি খুব অলস নই)?

উত্তর:


25

কারণ, মূলত, একটি সূচক একটি অতিরিক্ত টেবিল, যেখানে প্রাথমিক কীটি হল সেই ক্ষেত্রটি যেখানে আপনি সূচী করছেন এবং কেবলমাত্র সামগ্রীটিই আপনার মূল সারণীর প্রাথমিক কী। সুতরাং প্রতিটি আপডেটের প্রতিটি সূচীতে প্রতিলিপি তৈরি করতে হবে যা আপনার আপডেট করা ক্ষেত্রটি ব্যবহার করে।

এটি সন্নিবেশগুলিতে বিশেষভাবে লক্ষণীয়। কল্পনা করুন যে কোনও সারণীতে আপনি যে প্রতিটি সন্নিবেশ করেছিলেন তা যদি অন্য 20 টি টেবিলগুলিতে প্রতিলিপি করা হয়। এটি বেদনাদায়ক ধীর হতে চলেছে।

নোট করুন যে এটি যৌগিক, ক্লাস্টারযুক্ত এবং পূর্ণ-পাঠ্য সূচীগুলির সাথে আরও খারাপ হয়ে যায়, তবে আমি আপনার জন্য এখনও বিষয়টি জটিল করতে চাই না।


2

সূচকগুলি মূলত অতিরিক্ত ডেটা স্ট্রাকচার যা তৈরি এবং সংরক্ষণ করতে হয়। অযৌক্তিকভাবে বর্জ্য সিপিইউ শক্তি তৈরি করা (লেখার ক্রিয়াকলাপের সময়) এবং এটি সঞ্চয় করে ডিস্কের ক্ষমতা।

আপনি কখনই সূচকগুলি তৈরি এবং সঞ্চয় করতে চান যা আপনি কখনও ব্যবহার করেন না?


এটি একটি সম্পূর্ণ তাত্ত্বিক প্রশ্ন ("কি তবে / কেন নয়")।
ড্রাগগোস

@ ড্রাগগোস আমি মনে করি যে এই প্রশ্নের উত্তর আমার পোস্ট থেকে সুস্পষ্ট: আপনি যদি তা করেন তবে প্রতিটি লেখার ক্রমটি অনেক ধীর হয়ে যায় এবং প্রতিটি রেকর্ড অনেক ডিস্কের ক্ষমতা নষ্ট করে দেবে। কেন না? কারণ সিপিইউ পাওয়ার এবং ডিস্ক স্টোরেজ ব্যয়বহুল।
মাতাজ জাবস্কি

2

যখন প্রয়োজন হয় কেবল সূচকগুলি রাখুন। থাম্বের নিয়ম হিসাবে যখন আমি ডেটাবেস স্কিমা বিকাশ করি, প্রতিটি টেবিলটি শুরু করার জন্য একটি পিকে প্রাথমিক কী ক্লাস্টারড সূচক পায়। এটি সেই টেবিলের ডেটার অনন্য শনাক্তকারী হবে। ইন 1 কলাম বা অনেক হতে পারে।

এর পরে, আমি সাধারণত কলাম (গুলি) -এ নন-ক্লাস্টারযুক্ত অনন্য সূচকগুলি যুক্ত করি যা আমি স্বতন্ত্রতা প্রয়োগ করতে চাই।

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

প্রতিটি সূচক যুক্ত করা ব্যবধান ব্যবধান বৃদ্ধি করার পাশাপাশি অতিরিক্ত রক্ষণাবেক্ষণ যোগ করে। সুতরাং আপনার সূচকগুলি বুদ্ধিমানের সাথে চয়ন করুন।


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

হ্যাঁ, একটি প্রাথমিক কী আপনার (এসকিউএল সার্ভার) জন্য স্বয়ংক্রিয়ভাবে একটি ক্লাস্টার ইনডেক্স তৈরি করা উচিত। কেবলমাত্র একটি প্রাথমিক কী, সুতরাং প্রতি টেবিলের জন্য কেবল একটি ক্লাস্টারড সূচক। মাইএসকিউএল একই হওয়া উচিত তবে একটি মাইএসকিউএল বিশেষজ্ঞ যাচাই করতে পারেন।
জন রায়নার

2

সূচকের শক্তি হ'ল এগুলি হ'ল 1) একটি ডেটা স্ট্রাকচার যা দ্রুত অনুসন্ধান করা যায় এবং 2) প্রকৃত টেবিলের চেয়ে আরও কমপ্যাক্ট, সূচিগুলির বেশিরভাগ ডিস্কে পৃষ্ঠাযুক্ত হওয়ার পরিবর্তে মেমরির সাথে মাপসই করে।

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

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

সুতরাং প্রতিটি সম্ভাব্য সূচক তৈরি করতে, কমপক্ষে এন রয়েছে! একটি সূচীতে কলামগুলি সাজানোর উপায়। কেবল 5 টি কলামের সাথে, 120 টি সূচক রয়েছে।

যেহেতু অনেকগুলি সম্ভাব্য সূচী রয়েছে, তাই আপনার অ্যাপ্লিকেশনের জন্য কোন সূচকগুলি কার্যকর তা আপনাকে নির্ধারণ করতে হবে এবং কেবলমাত্র সেগুলি তৈরি করতে হবে।


তবে আপনার উদাহরণে দুটি সূচক হবে: একটি স্কুলে এবং অন্যটি ক্লাসইয়ারে কোনও ক্ষেত্রে কার্যকর হতে পারে?
ড্রাগগোস

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

আমার অভিপ্রায়টি হ'ল, যদি আমার স্কুল এবং ক্লাস ইয়ারে পৃথক সূচক থাকে তবে 1980 থেকে 1984 এর মধ্যে ক্লাস থেকে ডিউকে যাওয়া সমস্ত লোকদের অনুসন্ধান করার সময় কি তারা কার্যকর হবে?
ড্রাগগোস

@ ড্রাগাগস এটি নির্দিষ্ট ডিবি ইঞ্জিনের উপর নির্ভর করে। উদাহরণস্বরূপ, একাধিক সূচকের ফলাফল ছেদ করতে পোস্টগ্র্রেস বিটম্যাপ সূচক স্ক্যান নামে কিছু ব্যবহার করবে । কোন সূচকটি ব্যবহার করবেন তা সিদ্ধান্ত নেওয়ার বিষয়টি ক্যোয়ারী ইঞ্জিনের উপর নির্ভর করে এবং এটি সর্বদা ডিবি নির্দিষ্ট থাকবে।
ক্রিস পিটম্যান

2

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

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

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