বিশাল টেবিলে একটি ক্লাস্টারড ইনডেক্স তৈরির বেদনাহীন উপায়?


22

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

এখন আমি সেই টেবিলটিতে একটি ক্লাস্টার ইনডেক্স তৈরি করতে চাই - তবে আমার পরীক্ষার পরিবেশে আমার create indexকমান্ডটি এক ঘন্টার জন্য চলছে এবং এখনও তা করা হয়নি। গ্রাহক সাইটটি এমন একটি শপ ফ্লোর যা 24/7 কাজ করে এবং আমি সূচি তৈরি করার সময় এক ঘন্টা ডাউন টাইম তুলতে পারি না।

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

আমরা এসকিউএল সার্ভার এন্টারপ্রাইজ সংস্করণ ব্যবহার করছি।

উত্তর:


26
  • যদি আপনার এসকিএল সার্ভারটি এন্টারপ্রাইজ + সংস্করণ হয় এবং টেবিলের কোনও বিএলওবি ক্ষেত্র নেই - CREATE CLUSTERED INDEX ... WITH(ONLINE=ON)

  • যদি তা না হয় - পাশেই একই স্কিমার সাহায্যে টেবিল তৈরি করা এবং সমস্ত INSERT / UPDATE / DELETE ক্রিয়াকলাপ (উদাহরণস্বরূপ ট্রিগার ব্যবহার করে) সহ সঠিকভাবে ডেটা স্থানান্তর করা, এবং তারপরে সঠিকভাবে পুরানো টেবিলটি ফেলে দিন এবং নাম পরিবর্তন করা ছাড়া উপায় নেই পুরানো হিসাবে একই নামে নতুন - মতগুলি হ'ল: ধীর, সার্ভার এবং স্টোরেজে অতিরিক্ত বোঝা যুক্ত করে


12

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


8
  • আসলটির অনুরূপ নতুন টেবিল তৈরি করুন (স্পষ্টতই আলাদা নামের প্রয়োজন হবে)
  • নতুন টেবিলে ক্লাস্টারড ইনডেক্স তৈরি করুন
  • নতুন টেবিলে ডেটা লোড করুন
  • আসল টেবিলটি ফেলে দিন
  • আসল নামটি ব্যবহার করে নতুন টেবিলটির নতুন নামকরণ করুন

আসল থেকে প্রয়োজনীয় যে কোনও অনুমতি আপনি প্রয়োগ করেছেন তা নিশ্চিত করুন।

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