আমরা প্রায় 5000 জন হারে রিয়েল-টাইম জিপিএস ডেটা পাই। মিনিট (4 টিসিপি সার্ভার থেকে)। প্রতিটি সার্ভার ডেটা এবং সন্নিবেশগুলির মধ্যে ডেটা andোকাতে একটি একক সংযোগ ব্যবহার করে। প্রতি 15 মিনিট বা তার পরে, একটি পরিষেবা এই ডেটাটি নিয়ে আসে এবং এটিকে ট্রিপে নিয়ে যায়। একবার ট্রিপগুলি উত্পন্ন হওয়ার পরে, আসল জিপিএস ডেটা সাধারণত এতটা গুরুত্বপূর্ণ হয় না, কেবল যদি ব্যবহারকারী কোনও মানচিত্রে রুটটি দেখতে চান।
সমস্যাটি হ'ল এটি মনে হয় যে ডাটাবেসটি beingোকানো হচ্ছে এমন হারের হারের সাথে লড়াই চালিয়ে যাচ্ছেন। কখনও কখনও যখন লোড বৃদ্ধি পায়, সন্নিবেশের সময়টি হঠাৎ করে তীব্রভাবে বেড়ে যায় (> 30 সেকেন্ড), যার ফলস্বরূপ আরও ডেটা বাফার করা যায় যা ফলস্বরূপ বৃহত্তর সন্নিবেশ এবং দীর্ঘতর সময়কাল সন্নিবেশিত করে।
আমি আশা করি বর্তমান নকশা সম্পর্কে কিছু মন্তব্য, এবং আমাদের কার্যকারিতা উন্নত করতে হবে এমন কিছু ধারণাগুলি, এবং আমাদের কয়েকটি প্রশ্নের উত্তর - এবং লোকেরা থাকতে পারে এমন কোনও টিপস!
বর্তমান নকশা
ডেটা বর্তমানে এক সপ্তাহের প্রতিনিধিত্বকারী টেবিলগুলিতে পৃথক করা হয় এবং এক বছরেরও বেশি পুরানো ডেটা একটি গৌণ ডাটাবেসে সংরক্ষণাগারভুক্ত হয়। পুরোটি একসাথে সম্পাদনাযোগ্য দৃশ্যে যোগ দেওয়া হয়েছে, যা সন্নিবেশকারী এবং পঠন উভয়ের জন্যই ব্যবহৃত হয়।
টেবিল ডিজাইন
- আইডি (পিকে, অনন্য সনাক্তকারী)
- ডিভাইসআইডি (এফকে, ইনট)
- পার্সোনআইড (এফকে, ইনট)
- যানবাহন (এফকে, ইনট)
- টোকেনআইডি (এফকে, ইনট)
- ইউটিটাইম (পিকে, ডেটটাইম 2 (3))
- অক্ষাংশ (ভাসা)
- দ্রাঘিমাংশ (ভাসা)
- গতি (ছোট)
- শিরোনাম (ছোট)
- উপগ্রহ (টিনিনেন্ট)
- আইওডাটা (ভেরিবিনারি (100))
- ইগনিশন স্টেট (টিনিনেন্ট)
- ব্যবহারকারী ইনপুট (ক্ষুদ্রকায়)
- ক্রিয়েটটাইমআউটসি (তারিখের সময় 2 (3))
সূচক
- DeviceId_CreateTimeUtc_Desc
- ডিভাইসআইডি_আউটসিটাইম_ডেস্ক (ক্লাস্টারড)
- PersonId_UtcTime_Desc
- TokenId_UtcTime_Desc
- VehicleId_UtcTime_Desc
প্রতি সপ্তাহে সূচকগুলি সহ 10 গিগাবাইট সময় নেয় এবং বর্তমানে মূল ডাটাবেসে প্রায় 300 জিবি ডেটা রয়েছে।
মূল ডাটাবেসে ডেটা টেবিলগুলির 1 টি ফাইলের নিজস্ব ফাইলগ্রুপ রয়েছে তবে এটি মূল ডাটাবেসের অন্যান্য টেবিলের মতো একই ডিস্কে রয়েছে। মাধ্যমিক ডাটাবেসটি একটি পৃথক ডিস্কে রয়েছে, তবে একই মেশিনে রয়েছে।
আমি মনে করি আমরা যখন একটি নতুন টেবিল বিভাজন (সপ্তাহ) ব্যবহার করা হয় তখন আমরা সাপ্তাহিক পুনর্নির্মাণ কাজও চালাচ্ছি। কোন সঙ্কুচিত করা হয় না।
মেশিনটি একটি 8-কোর এইচপি যা 12 জিবি মেমরি সহ, এবং মূল ডাটাবেসযুক্ত ডিস্কটি RAID 10 চলছে।
ধারনা
- প্রাথমিক ডাটাবেসে সঞ্চিত ডেটার পরিমাণ সীমাবদ্ধ করুন যেমন সর্বোচ্চ 1 মাস। খুব কমপক্ষে এটি ডাটাবেসটিকে ব্যাকআপ / পুনরুদ্ধারের জন্য আরও পরিচালনাযোগ্য করে তুলবে, তবে আমরা কি এটি করে কোনও পারফরম্যান্সের উন্নতি দেখতে আশা করতে পারি?
- বর্তমান ডেটা জন্য ফাইলগ্রুপে 2 টি ফাইল তৈরি করুন এবং এগুলি 2 টি বিভিন্ন শারীরিক পার্টিশনে বিতরণ করুন
- বর্তমান ডেটা ধারণ করে মাস্টার-স্লেভ ডাটাবেসগুলি তৈরি করুন, সুতরাং সন্নিবেশ এবং পঠনগুলি বিভিন্ন ডাটাবেসে সম্পাদিত হয়
- এসএসডি ডিস্কগুলিতে বর্তমান ডেটাগুলির জন্য ফাইলগুলি রাখুন (এসএসডি ডিস্কগুলির সাথে কোনও পারফরম্যান্সের পার্থক্য তৈরি করবে?)
আরও তথ্যের প্রয়োজন হলে আমাকে জানান know কর্মক্ষমতা প্রভাবিত করে এমন মারাত্মকভাবে অনেকগুলি কারণ রয়েছে এবং সম্ভবত এটি সমানভাবে সম্পাদন করার বহু উপায়।