সূচি পুনর্গঠনের সময় লেনদেনের লগ পূর্ণ হওয়া রোধ করবেন কীভাবে?


19

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

টেবিলের খণ্ডন স্তর 30 - 35%। এর মধ্যে কয়েকটি মেশিনে আমি "লেনদেন লগ পূর্ণ" ত্রুটি পেয়েছি এবং ব্যর্থদের পুনর্গঠিত করি। লেনদেনের লগের আকার 48gb অবধি পৌঁছে যায়। এটি মোকাবেলার জন্য একটি ভাল উপায় কি? আমাদের অটো ইনক্রিমেন্ট চালু নেই এবং আমি এটি করতে নারাজ।

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

উত্তর:


7

সর্বোত্তম অনুশীলন হ'ল REORGANIZEপ্রায় 30% বিভাজন এবং এর REBUILDউপরে। সহজভাবে, REBUILDএকটি পরিষ্কার অনুলিপি তৈরি করে, REORGANIZEএটি সিট-সিট করে।

আপনি আসলে কী করছেন তা যাচাই করুন: আপনি উভয়ই করছেন কোনও রক্ষণাবেক্ষণের পরিকল্পনা নেই?

বৃহত্তর টেবিলগুলিতে (50 গিগাবাইটের টেবিলটি সেখানে চলে আসছে) REORGANIZEআপনি যদি এই নিয়মটি অনুসরণ করেন তবে আমি সমস্ত লেনদেনের লগ স্পেস গ্রাস করতে দেখেছি । প্রায়শই নয়: নির্দিষ্ট লোড প্যাটার্ন সহ একটি মাত্র সিস্টেম। REORGANIZEলগ পর্যন্ত মাত্র দৌড়ে সম্প্রসারিত এবং সব ডিস্কের স্থান পুড়িয়ে ফেলল।

আমরা REBUILDআর কোনও সমস্যা না করে পরিবর্তে স্যুইচ করেছি , তবে 25% এর নীচে টুকরো টুকরো টুকরো টুকরো করে উপেক্ষা করেছি। এটি আমাদের পক্ষে আরও ভাল কাজ করেছে: আপনাকে দেখতে হবে এটি আপনার পক্ষে কাজ করে কিনা।

REBUILDREORGANIZEউত্পাদনের তুলনায় পারফরম্যান্সকে আরও প্রভাবিত করতে পারে তবে কখনও কখনও ONLINEবিকল্পটি (এন্টারপ্রাইজ সংস্করণ প্রয়োজন) দিয়ে এটি হ্রাস করা যেতে পারে ।


থাম্ব সংখ্যাগুলির নিয়ম এবং গুণগত এবং পরিমাণগত উভয় পদে কথা বলা খুব সহায়ক।
রবিনো

6

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

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

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

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

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

যদি টেবিলটি বিভক্ত হয় তবে আপনি একবারে একটি পার্টিশন অফলাইনে পুনর্গঠন করতে (এবং পুনরায় সংগঠিত) করতে পারেন। অনলাইন পুনর্নির্মাণ শুধুমাত্র পুরো টেবিল স্তরে করা যেতে পারে।


2
আমি পুনর্গঠন করছি পুনরুদ্ধারের মডেলটি পূর্ণ এবং আমি একটি বড় লেনদেনের লগের আকার দেখতে পাচ্ছি। ব্যর্থতার কারণ দুটি দুটির মধ্যে একটি mirror স্থান পুনরুদ্ধার করার আগে লগটিকে মাধ্যমিকের দিকে ঠেলে দেওয়া দরকার 2. লগ ব্যাকআপ। যদিও আমরা প্রতি 15 মিনিটে ব্যাকআপ নিই তা কখনও কখনও এই কারণে ব্যর্থ হয়।

এখানে একই পরিস্থিতি, ২০০৮আর ২, সূচি পুনর্গঠিত (পুনর্নির্মাণ নয়), এবং এমনকি সাধারণ মোডে (!) টলোগুলি সবচেয়ে বড় টেবিলের আকারের চেয়ে বেশি বৃদ্ধি পায় যা> 40 জিবি। যখন পুরো পুনরুদ্ধার মোডে থাকে, 5 মিনিট টলগ ব্যাকআপ করা কোনওভাবেই সহায়তা করে না, সূচক পুনরায় চালু করার সময় কেবলমাত্র একটি বিশাল টিআরএন ব্যাকআপ ফাইল তৈরি করা হয়। এটি বোধগম্য বলে মনে হচ্ছে না তবে এটি দুটি ভিন্ন সার্ভারে একই আচরণ। ডকুমেন্ট হিসাবে ছোট ব্যাচের লেনদেনে এটিকে কীভাবে ভাগ করবেন আসলে কোনও ধারণা ?
realMarkusSchmidt

5

আমি আগে এই সমস্যা ছিল।

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

এটি একটি সামান্য পাল্টা স্বজ্ঞাত কারণ আপনি জানেন যে আপনি যদি পুনর্গঠনটি বাতিল করেন তবে এটি যেখান থেকে ছেড়ে গেছে সেখান থেকে এটি চালিয়ে যেতে পারে, এটি ঠিক যে কোনও গর্ভপাতটি পিছনে ফিরে না গিয়ে লেনদেন করে।

আপনি যা করেন তা এখানে। এটি কিছুটা দীর্ঘ তবে সোজা।

  • তুলনামূলকভাবে বড় আকারে আপনার লগ ফাইলটি প্রাক-বৃদ্ধি করুন তবে সর্বাধিক নয়। মূলত আপনি দরকারী কাজ করার জন্য পর্যাপ্ত জায়গা ত্যাগ করতে চান, সাথে সাথে কিছু ছোট বর্ধনের জন্য যদি সেগুলি ঘটে তবে স্বাভাবিক ক্রিয়াকলাপ বন্ধ না হয়।
  • আপনার সূচক পুনর্গঠিত ('পুনর্গঠিত') চালানোর জন্য একটি চাকরি তৈরি করুন।
  • পারফরম্যান্সের শর্তে একটি এজেন্ট ডাব্লুএমআই সতর্কতা তৈরি করুন ('রিলিফ ভালভকে পুনর্গঠিত করুন')।

    • অবজেক্ট: এসকিউএল সার্ভার: ডাটাবেসগুলি
    • কাউন্টার: শতাংশ লগ ব্যবহৃত হয়
    • উদাহরণ: (আপনার বড় ডাটাবেসের নাম)
    • কাউন্টার উপরে উঠলে সতর্কতা: 80
    • প্রতিক্রিয়া: কাজ সম্পাদন করুন ('পুনরায় সংগঠিত চেক')
  • একটি চাকরী তৈরি করুন ('পুনরায় সংগঠিত চেক')

    • জবটিতে msdb.dbo.sysjobactivity পরীক্ষা করে দেখুন যে 'পুনর্গঠিত' কাজ চলছে কিনা তা দেখতে। এবং যদি এটি হয় ...
    • কাজ বন্ধ করুন এবং পোল বন্ধ না হওয়া পর্যন্ত এটি বন্ধ করুন। এটি কয়েক সেকেন্ড সময় নিতে পারে।
    • (আপনি যদি পুরো মোডে থাকেন) আপনার লগ ব্যাকআপ কাজটি ট্রিগার করুন এবং এটি শেষ হয়ে গেলে নিশ্চিত করুন।
    • আপনার লগ ফ্রি স্পেস কাউন্টারটি আপনার প্রান্তিকের নীচে হ্রাস পেয়েছে এমন সিএস.ডিএম_স_পারফরম্যান্স_কাউন্টগুলি ডাবল-চেক করুন।
    • 'পুনর্গঠন' কাজ শুরু করুন।
  • আপনার প্রোডাকশন সার্ভারে এটি স্টিক করার আগে এটি সঠিকভাবে সম্পাদন করে তা নিশ্চিত করার জন্য এটি কোথাও কোনও বিকাশ স্যান্ডবক্সও পরীক্ষা করুন।

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

সুতরাং আপনি এই দৃশ্যের কোনও যুক্তিসঙ্গত চিত্রটিতে আপনার লগটিকে প্রাক-আকারের কারণ হিসাবে বিকাশ / ট্রিগার / কাজ / স্টপ / পুনঃসূচনাগুলির সংখ্যা হ্রাস করতে পারেন, যাতে এটি আরও দক্ষ হতে পারে এবং এর জন্য পর্যাপ্ত জায়গাও রাখতে পারে মাঝেমধ্যে বৃদ্ধি যা সময় ধরা পড়ে না।

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

যতক্ষণ এটি নিরাপদ, যৌক্তিক, পরীক্ষিত এবং ভালভাবে নথিভুক্ত করা হয় ততক্ষণ কোনও সমস্যা হওয়া উচিত নয়।


1

সূচক পুনর্গঠনের জন্য আমি সাধারণত এটিই করতাম (আমার কাছে প্রত্যেকটি ৮০ + গিগাবাইট বড় কয়েকটি টেবিল রয়েছে) (কারণ পূর্ববর্তী পুনরায় কাজটি না ছাড়াই সূচি পুনরায় কোনও সময় বন্ধ করা যেতে পারে)।

  1. সূচক পুনর্বিবেচনার সময় আমি আমার নিয়মিত 30 মিনিট ফ্রিকোয়েন্সি থেকে প্রতি 10 মিনিটের ফ্রিকোয়েন্সিতে টোগল ব্যাকআপ বাড়িয়ে দেব
  2. আমি প্রতি 1 মিনিটে টোগল ফ্রি স্পেস যাচাই করে আরও একটি অধিবেশন করছি এবং যদি টলগ ফ্রি স্পেসটি একটি প্রান্তিকের নীচে থাকে তবে আমি সূচি পুনর্বার সেশনটি বন্ধ করে দিয়ে (বা অপেক্ষা) টলোগুলি ব্যাকআপ শুরু করব। তারপরে সূচি পুনরায় চালু করুন।

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


1

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

লেনদেনের অনুলিপি দ্বারা সমস্যাটি হয়েছিল । দৃশ্যত, REORGANIZEঅপারেশন শেষ না হওয়া অবধি লগ ব্যাক আপ করা যাবে না । আমি কোথাও পড়েছি যে এটি মাইক্রোসফ্ট দ্বারা পরিচিত সমস্যা ছিল, তবে আমি নিশ্চিত নই যে কোথায়।

একবার আমি লেনদেনের অনুলিপি অক্ষম করলে লগ ব্যাকআপগুলি আবার স্বাভাবিকভাবে কাজ করে এবং পুনর্গঠন করার সময় প্রতি 30 সেকেন্ডে লগ ব্যাকআপগুলি করে আমার পক্ষে ভাল কাজ করে।


0

আমি ধরে নিচ্ছি আপনি এর লাইনে কিছু চালাচ্ছেন:

পুনঃনির্দেশে সূচি পরিবর্তন করুন

দুর্ভাগ্যক্রমে, আংশিক আয়োজন চালানোর কোনও উপায় নেই (উদাহরণস্বরূপ আপনি যেভাবে কোনও লগ ফাইল আংশিকভাবে সঙ্কুচিত করতে পারেন)। এই সমস্যাগুলি সম্পর্কে আমি যেভাবে ভাবতে পারি তা হ'ল:

1) আপনি পুনর্গঠন চালানোর সময় ডাটাবেসটিকে সাধারণ পুনরুদ্ধার মোডে সেট করুন তবে আপনি বলেছিলেন যে এটি গ্রহণযোগ্য নয়

২) সূচককে বিভাজন করুন - যদি প্রায় সমান আকারের পার্টিশন পাওয়ার জন্য সূচককে বিভাজনের কোনও উপায় মনে করতে পারেন, তবে আপনি প্রতিটি পার্টিশনটি স্বাধীনভাবে পুনরায় সংগঠিত করতে পারবেন (বা অনলাইন বিকল্পের সাথে পুনর্নির্মাণ করতে পারবেন) এবং এভাবে লগ ফাইলের বৃদ্ধি সীমাবদ্ধ করতে পারবেন

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

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