সুতরাং আমার ডিবি ডিজাইনের উপর আমার সম্পূর্ণ নিয়ন্ত্রণ নেই বলে এই প্রবন্ধটি উপস্থাপন করা যাক, সুতরাং এই দৃশ্যের উদ্দেশ্যগুলির জন্য বর্তমান সিস্টেমের অনেক দিক পরিবর্তন করা যায় না ।
আমাদের ডিজাইনের দিকগুলি কীভাবে পুনর্বিবেচনা করা উচিত সে সম্পর্কে মন্তব্যগুলি সম্ভবত সঠিক তবে অসহায় :)
আমার একটি খুব বড় টেবিল রয়েছে, প্রায় 150 টি ক্ষেত্র প্রশস্ত এবং প্রায় 600 মি সারি, এটি প্রচুর সংখ্যক প্রক্রিয়া চালিত করে। এটি একটি ডেটা গুদামের পরিস্থিতিতে রয়েছে তাই নির্ধারিত লোড প্রক্রিয়াটির বাইরে আমাদের কোনও আপডেট / সন্নিবেশ নেই, তাই এটি ভারী সূচকযুক্ত।
এই টেবিলটি বিভাজন করার চেষ্টা করার সিদ্ধান্ত নেওয়া হয়েছে, এবং একটি বিভাজনযুক্ত টেবিলটিকে সূচীকরণ সম্পর্কে আমার কিছু উদ্বেগ রয়েছে। বিভাজন নিয়ে আমার কোনও অভিজ্ঞতা নেই, তাই কোনও ইনপুট বা লিঙ্কের প্রশংসা করা হয়। আমি বিওএল বা এমএসডিএন-তে যা করছি তা আমি বিশেষভাবে সনাক্ত করতে পারি না।
বর্তমানে আমরা এমন একটি ফিল্ডে ক্লাস্টার করেছি যা আমরা কল করব IncidentKey
যা একটি varchar(50)
এবং অনন্য নয় - আমাদের সাথে এটি 1-100 রেকর্ড থাকতে পারে IK
(দয়া করে কোনও মন্তব্য নেই)। আমরা প্রায়শই পুরানো IncidentKey
রেকর্ডগুলিতে নতুন ডেটা পাই তাই এটি অনুক্রমিকও নয়।
আমি বুঝতে পারছি পার্টিশনটি IncidentDate
সঠিকভাবে কাজ করার জন্য আমার ক্লাস্টারড ইনডেক্স কীতে আমার পার্টিশন ক্ষেত্রটি অন্তর্ভুক্ত করা দরকার । আমি ভাবছি এটা হবে IncidentKey, IncidentDate
।
প্রশ্নটি হল, ক্লাস্টারড ইনডেক্সের মেকানিকরা কীভাবে পার্টিশনযুক্ত টেবিলের একটি 2 অংশ কীতে কাজ করবে, যদি একটি "নতুন" পার্টিশনে রেকর্ডটি ক্লাস্টারড ইনডেক্সের "পুরানো" পার্টিশনে রেকর্ডের আগে হওয়া উচিত?
উদাহরণস্বরূপ, আমার কাছে 5 টি রেকর্ড রয়েছে:
IncidentKey Date
ABC123 1/1/2010
ABC123 7/1/2010
ABC123 1/1/2011
XYZ999 1/1/2010
XYZ999 7/1/2010
আমি যদি ABC123, 2/1/2011
এটির জন্য একটি নতুন রেকর্ড পাই তবে আগে ক্লাস্টারড সূচীতে থাকা দরকার XYZ999, 1/1/2010
। কিভাবে কাজ করে?
আমি বিভাজন এবং পয়েন্টার ধরে নিচ্ছি, তবে দ্বৈত-অংশ কীগুলি সহ বিভাজনযুক্ত টেবিলগুলিতে বিভাজনযুক্ত ক্লাস্টারড ইনডেক্সগুলির শারীরিক সঞ্চয় এবং কনফিগারেশনের কোনও তথ্য আমি পাই না।