এসকিউএল সার্ভারের জন্য মোছার গতি উন্নত করুন


12

আমাদের কাছে বিশাল উত্পাদনের ডাটাবেস রয়েছে, এর আকার প্রায় 300 গিগাবাইট। মোছা ক্যোয়ারীটির কার্যকারিতা উন্নত করার জন্য কি কোনও উপায় আছে? এখনই মুছে ফেলার গতি প্রতি মিনিটে 1-10k এর মধ্যে, এটি আমাদের পক্ষে খুব ধীর।


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

সম্ভবত আপনার মোছার মানদণ্ডটি আবরণ করার জন্য আপনাকে সূচি তৈরি করতে হবে।
জিন্ডেন

6
উত্তর দেওয়ার জন্য পর্যাপ্ত বিশদ নেই। আপনি কোন জিজ্ঞাসা কার্যকর করবেন? আপনার কি জড়িত মানদণ্ড কলামগুলিতে সূচি রয়েছে (যদি থাকে)? আপনার কি মুছতে ট্রিগার আছে? ...
সাবস্টিয়ান সেভরিন

3
আপনি কি একবারে এক বিলিয়ন সারি মুছে ফেলার চেষ্টা করছেন? অটোগ্রো পরে অটোগ্রো পরে আপনি কি অটোগ্রোয়ের জন্য অপেক্ষা করছেন তা সম্ভব? (এটি সম্ভবত আপনি অপেক্ষারত লগ ক্রিয়াকলাপ, আসল মুছে ফেলার কার্যকলাপ নয়)) এই নিবন্ধটি দেখুন ...
অ্যারন বারট্রান্ড

3
এছাড়াও। কোনও বিদেশী কী বাধা? সম্পূর্ণ টেবিল সংজ্ঞা, ক্যোয়ারী এবং সম্পাদন পরিকল্পনা সরবরাহ করুন।
মার্টিন স্মিথ

উত্তর:


20

আপনি যদি একক বিবৃতিতে প্রচুর পরিমাণে সারি মুছে ফেলার চেষ্টা করছেন, তবে সম্ভবত আপনি লগ ক্রিয়াকলাপের জন্য অপেক্ষা করছেন। তাই আপনি পারেন:

  1. আপনার লগ পর্যাপ্ত আকারের হয়েছে তা নিশ্চিত করুন যাতে বৃদ্ধির ইভেন্টগুলি আপনাকে ধীর করে না। ডিফল্টগুলির সাথে আপনার লগটি সম্ভবত 10% প্রবৃদ্ধির সাথে 1MB থেকে শুরু হচ্ছে। গ্রোথ ইভেন্টগুলি ব্যয়বহুল, এবং আপনি যদি এমনকি 10 জিবি মুছে ফেলা লগইন করেন তবে এটি কেবল এখনই নয় ভবিষ্যতেও পারফরম্যান্সকে ধ্বংস করবে (এটি ভিএলএফগুলির সাথে কী করে তার কারণে)।
  2. আপনি যদি পুরো টেবিলটি মুছে ফেলছেন, TRUNCATEবা DROP/ ব্যবহার করুন CREATE
  3. যদি আপনি বেশিরভাগ টেবিলটি মুছে ফেলছেন তবে আপনি SELECT INTOযে ডেটাটি অন্য টেবিলে রাখতে চান তা রাখার জন্য ব্যবহার করুন, তারপরে TRUNCATE, তারপরে ছোট অংশটি আবার সরান। (বা কেবল পুরানো টেবিলটি ফেলে দিন, নতুন নামকরণ করুন এবং সীমাবদ্ধতা / অনুমতিগুলি পুনরায় প্রয়োগ করুন)
  4. লগিংয়ের প্রভাবটি একবারে পরিবর্তে সবার পরিবর্তে হ্রাস করে ডেটা অংশে হ্রাস করুন। এই নিবন্ধটি দেখুন । আপনি সাময়িকভাবে সহজ পুনরুদ্ধারের দিকে স্যুইচিংয়ের কথাও বিবেচনা করতে পারেন, যাতে আপনাকে কেবল CHECKPOINTলগ ব্যাকআপ নেওয়ার পরিবর্তে লগটি সাফ করতে হয়, তবে আপনাকে লগ চেইনটি পুনরায় আরম্ভ করার জন্য এটি আবার সেট করে রাখা এবং নতুন পুরো ব্যাকআপ নেওয়ার বিষয়ে নিশ্চিত হওয়া দরকার ।

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

এছাড়াও, যদি কোনও অপ্রয়োজনীয় সূচী থাকে তবে এগুলি বাদ দেওয়ার ফলে মোছার গতি বাড়বে। আবার যদি সমস্ত বা প্রায় সমস্ত ডেটা মুছে ফেলা হয়, সমস্ত সূচি প্রথমে বাদ দিয়ে সেগুলি আবার তৈরি করার পরে সুন্দর প্রভাব ফেলতে পারে।
টনি হিঙ্কল 27'15

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

এফকে সীমাবদ্ধতাগুলি অস্থায়ীভাবে অক্ষম করা কি ক্যোরির উন্নতি করতে পারে?
লেভ জেড

3

কিছু ইঙ্গিত রয়েছে, তবে আপনি কোন সংস্করণ ব্যবহার করছেন? এটি কি এন্টারপ্রাইজ সংস্করণ? যাই হোক:

  1. যদি আপনি পারেন তবে একটি দ্রুত ডিস্কে লেনদেনের লগটি সরান
  2. কোথায় বিশ্লেষণ । এটি মুছে ফেলার জন্য রেকর্ড সনাক্ত করতে একটি সূচক ব্যবহার করবে? যদি না হয়, আপনি একটি সূচক যোগ করতে পারেন?
  3. টেবিলে এমন কোনও সূচক রয়েছে যা আপনি ফেলে দিতে পারেন? যদি হ্যাঁ তবে এগুলি ফেলে দিন।
  4. আপনার কাছে এই টেবিলের বিপরীতে বিদেশী কী রয়েছে? এগুলি সত্যিই আপনার মুছা ধীর করতে পারে।
  5. আপনার যদি একটি এন্টারপ্রাইজ সংস্করণ থাকে এবং বাধা হ'ল ডিস্ক আইও, সারি স্তরের সংক্ষেপণ, আপনাকে কিছুটা সহায়তা দিতে পারে (বা না, আপনার ডেটা অনুসারে)
  6. আপনি টেবিল বিভাজন করতে পারেন? স্থানীয় সূচি এবং পার্টিশনের ড্রপ দ্রুততর হতে পারে।
  7. ক্রিয়াকলাপ মনিটরের মাধ্যমে কোথায় বাধা রয়েছে তা তদন্ত করুন।

বিশদ যুক্ত করুন, যখন আপনি বড় ডাটাবেস নিয়ে কাজ করেন তখন কোনও বৈধ উত্তর নেই।


0

আপনার এগুলি খণ্ড দ্বারা মুছে ফেলার চেষ্টা করা উচিত, সম্ভবত লুপে মোছা, প্রতিটি মুছে ফেলা তার নিজস্ব লেনদেন এবং তারপরে প্রতিটি লুপ পুনরাবৃত্তির শেষে লগটি সাফ করে।

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

কীভাবে এগিয়ে যাওয়া যায় সে সম্পর্কে আপনাকে বড় মুছে ফেলা অপারেশনগুলিকে খণ্ডগুলিতে ভাঙার নির্দেশ দেয়


0

যদি বড় টেবিলটিতে পুনরাবৃত্ত বিদেশী কী থাকে তবে মুছুন ধীর হতে পারে।

যদি তাই হয়, উপযুক্ত সময় সন্ধান করুন, নির্ভরশীল পরিষেবাগুলি অক্ষম করুন, পুনরাবৃত্ত বিদেশী কী অক্ষম করুন, ব্যাপক মুছুন সম্পাদন করুন, তারপরে আবার বিদেশী কী পুনরুদ্ধার করুন।


এটি আমার ঘটনা ছিল। কনট্রিন্ট অক্ষম করা কিছুটা ঝুঁকিপূর্ণ তবে মুছে ফেলুন 1 সারি / সেকেন্ড থেকে 500 / সেকেন্ডে
Jurion

0

আরও কয়েকটি পয়েন্ট যুক্ত করা হচ্ছে ...

  1. শিকারীর উপর সূচি রয়েছে কিনা তা পরীক্ষা করে দেখুন এবং পরিসংখ্যানও দেখুন।
  2. আপনি যদি সংখ্যক সারি মুছে ফেলছেন এবং আপনিও টেম্প টেবিল বিকল্পটি চান না। tablockবিকল্পের জন্য যান ।
  3. আপনার কোনও ট্রিগার রয়েছে কিনা তা দেখুন, বিশেষত ট্রিগারগুলি মুছার পরে।

আরও সহায়তা পেতে, আপনি যে ক্যোয়ারীটি ব্যবহার করছেন তা সারণী তথ্য এবং যে কোনও ব্লকিং তথ্য পোস্ট করুন।

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