কত ডাটাবেস সূচী অনেক?


109

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

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

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

সুতরাং কতগুলি সূচকে খুব বেশি বিবেচনা করা হয়? 10? 25? 50? বা আমি কি সত্যিই, সত্যিই সাধারণ এবং সুস্পষ্ট কেসগুলি আবৃত করে অন্য সব কিছু উপেক্ষা করব?

উত্তর:


87

এটি টেবিলে ঘটে যাওয়া ক্রিয়াকলাপগুলির উপর নির্ভর করে।

যদি প্রচুর নির্বাচন ও খুব কম পরিবর্তন হয় তবে আপনার সমস্ত পছন্দ সূচক .... এইগুলি (সম্ভাব্যভাবে) নির্বাচনের বিবৃতিগুলিকে গতিবেগিত করবে।

যদি টেবিলটি আপডেটগুলি দ্বারা ভারীভাবে আঘাত করা হয়, INSERTs + মুছে ফেলুন ... এগুলি প্রচুর সূচির সাথে খুব ধীর হবে কারণ এই ক্রিয়াকলাপগুলির মধ্যে একবার সঞ্চালনের সময় তাদের সমস্ত সংশোধন করা দরকার need

এটি বলার পরে, আপনি কোনও টেবিলে পরিষ্কারভাবে প্রচুর অর্থহীন সূচকগুলি যুক্ত করতে পারেন যা কিছু করবে না। 2 টি স্বতন্ত্র মান সহ একটি কলামে বি-ট্রি সূচকগুলি যুক্ত করা অর্থহীন হবে কারণ এটি ডেটা সন্ধান করার ক্ষেত্রে কোনও পদ যুক্ত করে না। কলামের মানগুলি যত বেশি অনন্য হবে, তত তা সূচক থেকে উপকৃত হবে।


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

44

আমি সাধারণত এইভাবে এগিয়ে যান।

  1. একটি সাধারণ দিনে ডেটাতে চালিত আসল প্রশ্নের একটি লগ পান ।
  2. সূচীগুলি যুক্ত করুন যাতে সর্বাধিক গুরুত্বপূর্ণ প্রশ্নগুলি তাদের কার্যকর করার পরিকল্পনার সূচকগুলিতে আঘাত করে।
  3. ইনডেক্স ক্ষেত্রগুলি এড়ানোর চেষ্টা করুন যার প্রচুর আপডেট বা সন্নিবেশ রয়েছে
  4. কয়েকটি সূচকের পরে, নতুন লগ পান এবং পুনরাবৃত্তি করুন।

সমস্ত অপ্টিমাইজেশনের মতো, যখন অনুরোধ করা কার্যকারিতাটি পৌঁছে যায় তখন আমি থামি (এটি স্পষ্টভাবে এটি নির্দেশ করে যে 0 পয়েন্টটি নির্দিষ্ট পারফরম্যান্স প্রয়োজনীয়তা পাবে)।


26

বাকি সবাই আপনাকে দুর্দান্ত পরামর্শ দিচ্ছে। আপনি এগিয়ে যাওয়ার সাথে সাথে আপনার জন্য আমার একটি যুক্ত পরামর্শ রয়েছে। কোনও সময়ে আপনাকে আপনার সেরা সূচক কৌশল হিসাবে সিদ্ধান্ত নিতে হবে। যদিও শেষ পর্যন্ত, সর্বোত্তম প্ল্যানড ইনডেক্স কৌশলটি এমন সূচকগুলি তৈরি করতে পারে যা ব্যবহার শেষ হয় না। একটি কৌশল যা আপনাকে ব্যবহার না করা সূচিগুলি সন্ধান করতে দেয় তা হ'ল সূচি ব্যবহারের উপর নজর রাখা। আপনি নিম্নলিখিত হিসাবে এটি করুন: -

alter index my_index_name monitoring usage;

তারপরে আপনি ভি $ অবজেক্ট_উসেজটি জিজ্ঞাসা করে সূচিটি ব্যবহার করা হয়েছে কিনা সে বিষয়টি পর্যবেক্ষণ করতে পারেন। এর সম্পর্কিত তথ্যটি ওরাকলে ডাটাবেস প্রশাসকের গাইডে পাওয়া যাবে

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


14

ডেটা গুদামজাত করার ক্ষেত্রে খুব বেশি সংখ্যক সূচক থাকা খুব সাধারণ বিষয়। আমি দুই শতাধিক কলামযুক্ত ফ্যাক্ট টেবিলের সাথে কাজ করেছি এবং এর মধ্যে 190 টি সূচীযুক্ত।

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

সর্বাধিক নমনীয়তার জন্য একটি ডেটা গুদাম সাধারণত উচ্চ কার্ডিনালিটি কলাম ব্যতীত একক কলাম বিটম্যাপ সূচকগুলি ব্যবহার করে, যেখানে (সংক্ষেপিত) বিটি ইনডেক্সগুলি ব্যবহার করা যেতে পারে।

সূচক রক্ষণাবেক্ষণের উপরের ওভারহেডটি বেশিরভাগ দুর্দান্ত ব্লকে লেখার ব্যয়ের সাথে জড়িত এবং ব্লকটি বিভাজিত হয় কারণ that কলামটির বিদ্যমান মানের সীমাগুলির "মাঝখানে" মানের সাথে নতুন সারি যুক্ত হয়। পার্টিশনের মাধ্যমে এবং নতুন ডেটা লোডগুলি পার্টিশন স্কিমের সাথে একত্রিত করে এবং সরাসরি পাথ সন্নিবেশ ব্যবহার করে এটিকে হ্রাস করা যেতে পারে।

আপনার প্রশ্নকে আরও সরাসরি সম্বোধন করার জন্য, আমি মনে করি প্রথমে সুস্পষ্ট সূচকে সূচনা করা ভাল, তবে টেবিলের বিরুদ্ধে থাকা প্রশ্নগুলি যদি উপকৃত হয় তবে আরও সূচী যুক্ত করতে ভয় পাবেন না।


অনেক কি সত্য? আমি অনুমান করতাম আপনি প্রায় মাত্রা বলতে চলেছেন। এটি একটি উদ্ভট ইউপকেস। তবে, আপনি একটি ডিবিএ হিসাবে রক করছেন তাই আমি বলতে চাই যে আমি অবশ্যই কিছু অনুভব করছি।
স্টেফানি পৃষ্ঠা

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

12

সরলতার বিষয়ে আইনস্টাইনের একটি প্যারাফ্রেজে আপনার প্রয়োজন অনুসারে আরও বেশি সূচক যুক্ত করুন এবং আরও কিছু নেই।

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

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

এছাড়াও, কয়েক মাস অন্তর আপনার ইনডেক্সিং স্কিমগুলির পুনরায় মূল্যায়ন করা ভাল, কেবলমাত্র দেখার জন্য যে কোনও নতুন কিছুর দরকার আছে যা আপনি তৈরি করেছেন এমন কোনও সূচক যা আপনার কোনও কিছুর জন্য ব্যবহার করা হচ্ছে না এবং সেগুলি থেকে মুক্তি পাওয়া উচিত if ।


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

6

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

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

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


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

@StephaniePage- এ আমি কিছু প্রমাণ করার জন্য একটি পরীক্ষা করিনি। তবে আমি এমন একটি প্রকল্প দেখেছি যা নিরীহভাবে প্রতিটি কলামে একটি একক-কলাম সূচক তৈরি করেছে। যদি কিছু টেবিলের 80 টি কলাম থাকে তবে আমি অনুমান করি এটি কার্যকর হতে শুরু করবে। ওরাকল প্রতিটি সূচক দ্বারা অ্যাক্সেসের ব্যয় বিবেচনা করে বলে মনে হচ্ছে। তবে হ্যাঁ, আমি সম্মত, এর চেয়ে আরও বেশি গুরুত্বপূর্ণ বিষয় বিবেচনা করা উচিত।
ডাব্লুডাব্লু

মিম ... আমি বিশ্বাস করি যে সর্বাধিক পরিমাণে সময় আছে যা ওরাকল একটি হার্ড পার্সে ব্যয় করবে ... কয়েকটি টেবিলের চেয়ে বেশি একটি এসকিউএল বিবেচনা করুন, or বা ৮ বলুন, কেবলমাত্র জয়েন অর্ডার পছন্দই শত শত সম্ভাবনা তৈরি করতে পারে অ্যাক্সেস পাথ।
স্টেফানি পৃষ্ঠা

6

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

তবে আমি মনে করি এটি এখানে উদ্ধৃত করলে ভাল হবে:

আমি আমার বাস্তব প্রকল্প এবং বাস্তব MySQL ডাটাবেস ব্যবহার করে কিছু সাধারণ পরীক্ষা করেছি।

আমার ফলাফলগুলি হ'ল: কোনও টেবিলে গড় সূচক (সূচকে 1-3 কলাম) যুক্ত করা - সন্নিবেশগুলিকে 2.1% কমিয়ে দেয়। সুতরাং, আপনি যদি 20 টি সূচক যুক্ত করেন তবে আপনার সন্নিবেশগুলি 40-50% দ্বারা ধীর হবে। তবে আপনার নির্বাচনগুলি 10-100 গুণ দ্রুত হবে।

সুতরাং অনেক সূচক যুক্ত করা ঠিক আছে? - এটি নির্ভর করে :) আমি আপনাকে আমার ফলাফল দিয়েছি - আপনি সিদ্ধান্ত নিন!


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

3

আপনার ডেটাবেস সার্ভারের শীর্ষে থাকা অ্যাপ্লিকেশনগুলির আচরণের উপর আপনার শেষ পর্যন্ত কতগুলি সূচক প্রয়োজন তা নির্ভর করে।

সাধারণভাবে আপনি যত বেশি সন্নিবেশ করান তত আপনার সূচকগুলি তত বেশি বেদনাদায়ক হয়। প্রতিবার আপনি যখন কোনও সন্নিবেশ করান, সেই তালিকাটিতে সমস্ত সূচকগুলি আপডেট করতে হবে।

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


3

আমার মতে কোনও স্থির উত্তর নেই, এই ধরণের জিনিসটি 'পারফরম্যান্স টিউনিং'-এর আওতায় পড়ে।

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

কেবল সূচিকাগুলির বাইরেও, আপনার ডিবিকে গণনা করা অনুসন্ধান ক্ষেত্রগুলি, বিভক্ত টেবিল ইত্যাদি অন্তর্ভুক্ত করার জন্য পুনঃব্যবস্থাপনা করা - এটি আপনার লোডের আকার এবং ক্যোয়ারী প্যারামিটারের উপর নির্ভরশীল, কোনও তথ্য দ্বারা 'সত্যিকার অর্থে' কতটুকু ফিরে আসা দরকার needs

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

এসকিউএল সার্ভারের জন্য আমি ডেটাবেস ইঞ্জিন টিউনিংয়ের উপদেষ্টা ব্যবহারকারীর সম্পূর্ণ খুঁজে পেয়েছি - আপনি 'সাধারণ' কাজের চাপ সেট আপ করেন এবং এটি সূচক এবং পরিসংখ্যান যুক্ত / অপসারণ সম্পর্কে সুপারিশ করতে পারে। আমি নিশ্চিত যে অন্যান্য ডিবি'র কাছে একই রকম সরঞ্জাম রয়েছে, হয় 'অফিশিয়াল' বা তৃতীয় পক্ষ।


3

এটি বাস্তবের চেয়ে বাস্তবের চেয়ে বেশি তাত্ত্বিক প্রশ্ন। আপনার পারফরম্যান্সের উপর সূচকগুলির প্রভাব আপনার থাকা হার্ডওয়্যার, ওরাকল এর সংস্করণ, সূচক প্রকারের ইত্যাদির উপর নির্ভর করে I আপনার ক্ষেত্রে হিসাবে, বেশ কয়েকটি সমাধান হতে পারে: 1. প্রচুর পরিমাণে সূচক (> 20) রাখুন এবং এগুলি প্রতিদিন (রাত্রে) পুনর্নির্মাণ করুন। এটি বিশেষত কার্যকর হবে যদি টেবিলটি প্রতিদিন কয়েক হাজার আপডেট / ডিলিট করে। ২. আপনার টেবিলটি বিভাজন করুন (যদি এটি আপনার ডেটা মডেলটি প্রয়োগ করে)। ৩. নতুন / আপডেট হওয়া ডেটার জন্য একটি পৃথক টেবিল ব্যবহার করুন এবং একটি নাইট প্রসেস চালান যা ডেটা একসাথে একত্রিত করে। এর জন্য আপনার অ্যাপ্লিকেশন যুক্তিতে পরিবর্তন দরকার হবে। ৪. যদি আপনার ডেটা এটি সমর্থন করে তবে আইওটি (সূচিযুক্ত সংগঠিত টেবিল) এ স্যুইচ করুন।

অবশ্যই এই ধরনের ক্ষেত্রে আরও অনেক সমাধান হতে পারে। আপনার কাছে আমার প্রথম পরামর্শটি হ'ল ডিবিটিকে বিকাশের পরিবেশে ক্লোন করা এবং এর বিরুদ্ধে কিছুটা চাপ পরীক্ষা করা।


আমি বুঝতে পারি না সূচিগুলি পুনর্নির্মাণ কীভাবে সহায়তা করবে, বা কোনও আইওটি কীভাবে সহায়তা করবে।
ডেভিড আল্ড্রিজে

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

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

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

2

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


2

আপনি যে বিষয়টিকে বিবেচনা করতে পারেন তা হ'ল অনুসন্ধানগুলির একটি মানক সংমিশ্রণ লক্ষ্যবস্তু করতে সূচি তৈরি করা। কলাম 1 সাধারণত অনুসন্ধান করা হয় এবং কলাম 2 এটির সাথে প্রায়শই ব্যবহৃত হয় এবং কলাম 3 কখনও কখনও কলাম 2 এবং কলাম 1 এর সাথে ব্যবহৃত হয়, তারপর কলাম 1, কলাম 2 এবং কলাম 3 এর সূচক সেই তিনটি পরিস্থিতিতে যে কোনওটির জন্য ব্যবহার করা যেতে পারে, যদিও এটি কেবল একটি সূচক বজায় রাখতে হবে।


2

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

আপনি একটি আপডেট সম্পূর্ণ করতে অতিরিক্ত সময় সহ্য করতে পারেন?

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

সূচকটি সঞ্চয় করার জন্য প্রয়োজনীয় জায়গার দামও রয়েছে, তবে আপনি বলেছেন যে আপনার পরিস্থিতিতে এটি কোনও সমস্যা নয়। সস্তা ডিস্কের স্থান কীভাবে বেড়েছে তা প্রদত্ত বেশিরভাগ পরিস্থিতিতে একই রকম।


1

কয়টি কলাম আছে? আমাকে সর্বদা একক-কলাম সূচী তৈরি করতে বলা হয়েছে, বহু-কলাম সূচী নয়। সুতরাং আইএমএইচও, কলামের পরিমাণের চেয়ে বেশি সূচি নেই।


1

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

যে সূচকগুলি এই মানদণ্ডটি পূরণ করে না তার জন্য এটির ব্যবহারের অদ্ভুত ক্ষেত্রে না থাকার পারফরম্যান্স জরিমানার চেয়ে পুনর্নির্মাণের জন্য আপনাকে আরও বেশি ব্যয় করতে হবে।


1

এসকিএল সার্ভার আপনাকে কিছু ভাল সরঞ্জাম দেয় যা আপনাকে দেখতে দেয় যে কোন সূচকগুলি আসলে ব্যবহৃত হচ্ছে। এই নিবন্ধটি, http://www.mssqltips.com/tip.asp?tip=1239 , আপনাকে কিছু প্রশ্ন দেয় যা আপনাকে সূচীটি কীভাবে আপডেট করা হয় তার বিপরীতে কতটা ব্যবহার করা হয় তার থেকে আরও ভাল অন্তর্দৃষ্টি পেতে দেয়।


0

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


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