mysql - বলত - সবচেয়ে বড় ডাটার একক




কার্যক্ষমতা হ্রাস করার আগে একটি MySQL ডাটাবেস পেতে পারেন কিভাবে বড় (9)

কোন বিন্দুতে একটি MySQL ডাটাবেস কর্মক্ষমতা হারাতে শুরু করে?

  • শারীরিক ডাটাবেস আকার ব্যাপার কি?
  • রেকর্ড সংখ্যা সংখ্যা কি?
  • কোন কর্মক্ষমতা হ্রাস রৈখিক বা সূচকীয় হয়?

আমি একটি বড় ডাটাবেস হিসাবে বিশ্বাস করি যা আমার প্রায় 15M রেকর্ড প্রায় 2 গিগাবাইট নিতে। এই সংখ্যাগুলির উপর ভিত্তি করে, আমার ডেটা সাফ করার জন্য কোন উদ্দীপনা আছে, নাকি আমি আরও কয়েক বছর ধরে এটি স্কেলিং চালিয়ে যাওয়ার অনুমতি দিতে নিরাপদ?


একটি সার্ভার অ্যাডমিন আপনার OS এ দেখানোর চেয়ে আমি প্রথমে আপনার সূচীগুলিতে ফোকাস করব এবং যদি এটি সাহায্য না করে তবে এটি একটি মাস্টার / স্লেভ কনফিগারেশনের জন্য সময় হতে পারে।

সেটা সত্য. সাধারণত কাজ করে এমন আরেকটি জিনিস হ'ল বার বার কাজ করা তথ্যের পরিমাণ কমাতে হয়। আপনার যদি "পুরানো তথ্য" এবং "নতুন তথ্য" থাকে এবং আপনার 99% প্রশ্নগুলি নতুন ডেটা দিয়ে কাজ করে তবে পুরানো ডেটা অন্য টেবিলে সরান - এবং এটিকে দেখবেন না;)

-> partitioning


"ডাটাবেস পারফরমেন্স", "ক্যোয়ারী পারফরম্যান্স" সম্পর্কে কথা বলা একেবারে নির্বোধ, এখানে একটি ভাল শব্দ। এবং এর উত্তর হল: এটি ক্যোয়ারী, ডেটা যা এটি পরিচালনা করে, সূচী, হার্ডওয়্যার, ইত্যাদি উপর নির্ভর করে। আপনি কতগুলি সারি স্ক্যান করা হবে এবং কোন সূচী EXPLAIN সিনট্যাক্সের সাথে ব্যবহার করা হবে তা ধারণা পেতে পারেন।

2 গিগাবাইট সত্যিই একটি "বড়" ডাটাবেস হিসাবে গণনা করা হয় না - এটি একটি মাঝারি আকারের আরো।


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

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


একবার আমাকে "মাইক্রোসফট" কাজ করার জন্য একটি মাইএসএলএল দেখার আহবান জানানো হয়েছিল। আমি আবিষ্কার করেছি যে ডিবি ফাইলগুলি নেটওয়ার্ক অ্যাপ্লায়েন্স ফিল্টারে NFS2 এর সাথে মাউন্ট করা হয়েছে এবং সর্বাধিক ফাইলের আকার 2 গিগাবাইটের মধ্যে ছিল। এবং নিশ্চিত যথেষ্ট, লেনদেন গ্রহণ বন্ধ করা হয়েছে টেবিল ঠিক ডিস্কে 2GB ছিল। কিন্তু কর্মক্ষমতা বক্ররেখা সম্পর্কে আমি বললাম যে এটি একটি চ্যাম্প ডান মত কাজ ছিল যতক্ষণ না এটি সব কাজ না! এই অভিজ্ঞতাটি সর্বদা আমার জন্য একটি চমৎকার অনুস্মারক হিসাবে কাজ করে যে স্বাভাবিকভাবেই সন্দেহভাজন একের উপরে ও নীচে মাত্রা রয়েছে।


ডাটাবেস আকার ব্যাপার না । যদি আপনার এক মিলিয়নেরও বেশি রেকর্ডের সাথে একাধিক টেবিল থাকে তবে কার্যক্ষমতাটি হ্রাস করতে শুরু করে। রেকর্ড সংখ্যা অবশ্যই কর্মক্ষমতা প্রভাবিত করে: MySQL বড় টেবিল সঙ্গে ধীর হতে পারে । যদি আপনি এক মিলিয়ন রেকর্ড হিট করেন তবে সূচকগুলি সঠিকভাবে সেট না থাকলে কর্মক্ষমতা সমস্যা পাবেন (উদাহরণস্বরূপ, "যেখানে বিবৃতি" বা "যোগ শর্তগুলিতে" ক্ষেত্রে ক্ষেত্রগুলির জন্য কোন সূচক নেই)। যদি আপনি 10 মিলিয়ন রেকর্ড হিট করেন তবে আপনার সমস্ত সূচকগুলি সঠিক থাকলেও আপনি কর্মক্ষমতা সমস্যাগুলি পেতে শুরু করবেন। হার্ডওয়্যার আপগ্রেডগুলি - আরো মেমরি এবং আরো প্রসেসর পাওয়ার, বিশেষত মেমরি যোগ করা - প্রায়ই কমপক্ষে একটি নির্দিষ্ট ডিগ্রীতে কর্মক্ষমতা বৃদ্ধি করে সবচেয়ে গুরুতর সমস্যাগুলি হ্রাস করতে সহায়তা করে। উদাহরণস্বরূপ বেস্ক্যাম্প ডাটাবেস সার্ভারের জন্য 37 টি সিগন্যাল 32 গিগাবাইট থেকে 128 গিগাবাইট RAM পর্যন্ত গিয়েছিল


ডাটাবেস আকার বাইট এবং টেবিল এর সারি নম্বর পদে ব্যাপার। আপনি একটি হালকা ডাটাবেস এবং একটি blob ভরা এক মধ্যে একটি বিশাল পারফরম্যান্স পার্থক্য লক্ষ্য করা হবে। একবার আমার অ্যাপ্লিকেশনটি আটকে গিয়েছিল কারণ আমি ডিস্কের ফাইলগুলিতে চিত্রগুলি রাখার এবং ডাটাবেসের মধ্যে কেবলমাত্র ফাইলের নাম রাখার পরিবর্তে ক্ষেত্রের ভিতরে বাইনারি চিত্রগুলি রাখি। অন্যদিকে সারির একটি বড় সংখ্যক সারি মুক্ত নয়।


বিবেচনা একটি বিন্দু এছাড়াও দিনের উদ্দেশ্য এবং সিস্টেমের উদ্দেশ্য।

উদাহরণস্বরূপ, গাড়িগুলির GPS পর্যবেক্ষণ সহ একটি সিস্টেমের জন্য পূর্ববর্তী মাসে গাড়ির অবস্থানের সাথে সম্পর্কিত অনুসন্ধানের তথ্য নেই।

অতএব তথ্য সম্ভাব্য পরামর্শের জন্য অন্যান্য ঐতিহাসিক সারণিতে প্রেরণ করা যেতে পারে এবং প্রতিদিনের প্রশ্নগুলির নির্বাহের সময় কমাতে পারে।


শারীরিক ডাটাবেস আকার ব্যাপার না। রেকর্ড সংখ্যা কোন ব্যাপার না।

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

আমি আমার কাছে 10 গিগাবাইট পর্যন্ত পেয়েছি, শুধুমাত্র মাঝারি সংখ্যার সাথে এবং এটি অনুরোধগুলিকে ঠিকঠাক করে ঠিক করে দিয়েছে।

আমি প্রথমে আপনার সূচীগুলিতে ফোকাস করব, তারপরে আপনার সার্ভার প্রশাসকটি আপনার OS এ দেখবেন এবং যদি এটি সাহায্য না করে তবে এটি একটি মাস্টার / স্লেভ কনফিগারেশন বাস্তবায়ন করার সময় হতে পারে।


এটা আপনার প্রশ্নের এবং বৈধতার উপর নির্ভর করে।

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







database-performance