আমি কাজের টিকিটের একটি ফায়ার বার্ড 2.5 ডাটাবেস অনুকূল করে তুলছি। এগুলি হিসাবে ঘোষিত একটি সারণীতে সংরক্ষণ করা হয়েছে:
CREATE TABLE TICKETS (
TICKET_ID id PRIMARY KEY,
JOB_ID id,
ACTION_ID id,
STATUS str256 DEFAULT 'Pending'
);
আমি সাধারণত প্রথম টিকিটটি সন্ধান করতে চাই যা প্রক্রিয়াজাত হয়নি এবং Pending
স্থিতিতে রয়েছে।
আমার প্রসেসিং লুপটি হ'ল:
- যেখানে 1 ম টিকিট পুনরুদ্ধার করুন
Pending
- টিকিট নিয়ে কাজ করুন।
- টিকিটের স্থিতি => আপডেট করুন
Complete
- পদ্ধতি পুনরাবৃত্তি করুন।
খুব অভিনব কিছু না। এই লুপটি চলার সময় যদি আমি ডাটাবেসটি দেখছি তবে আমি দেখতে পাচ্ছি প্রতিটি পুনরাবৃত্তির জন্য সূচী পাঠকের সংখ্যাটি উপরে উঠছে। পারফরম্যান্সটি আমি বলতে পারি এমন ভয়াবহভাবে হ্রাস পাচ্ছে বলে মনে হচ্ছে না, তবে আমি যে মেশিনটি পরীক্ষা করছি তা খুব দ্রুত। তবে, আমি আমার কিছু ব্যবহারকারীর কাছ থেকে সময়ের সাথে পারফরম্যান্স অবক্ষয়ের রিপোর্ট পেয়েছি।
আমি একটি সূচক পেয়েছি Status
, তবে এটি এখনও মনে হয় এটি Ticket_Id
প্রতিটি পুনরাবৃত্তির কলামটি স্ক্যান করে । দেখে মনে হচ্ছে যে আমি কিছু উপেক্ষা করছি, তবে আমি নিশ্চিত না what সূচকের উপরে আরোহণের সংখ্যাটি কি প্রত্যাশিত এই জাতীয় কিছুর জন্য পড়া হয়, বা সূচিটি কোনওভাবে খারাপ আচরণ করছে?
- মন্তব্যের জন্য সম্পাদনা -
ফায়ারবার্ডে আপনি সারি পুনরুদ্ধারটিকে সীমাবদ্ধ করেছেন:
Select First 1
Job_ID, Ticket_Id
From
Tickets
Where
Status = 'Pending'
সুতরাং যখন আমি "প্রথম" বলি, আমি কেবল এটির সীমাবদ্ধ রেকর্ডের জন্য জিজ্ঞাসা করি Status = 'Pending'
।
ticket_id
টির অর্থ ক্ষুদ্রতম হয় তবে আপনার সম্ভাব্যতার উপর একটি সূচি দরকার(status, ticket_id)
ticket_id
আসলে স্ট্যাটাস ইনডেক্সের চেয়ে খারাপ সঞ্চালিত হয়।
id
(ডাটা টাইপ) একটি ডোমেইন আপনি সংজ্ঞায়িত?