মাইএসকিউএল পার্টিশন: পার্টিশনের সংখ্যা এবং প্রতিটি পার্টিশনের আকারের মধ্যে পারফরম্যান্স ট্রেড অফ রয়েছে?


10

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

দ্রষ্টব্য: স্ট্যাকওভারফ্লোতে ইতিমধ্যে কিছুটা একই প্রশ্ন রয়েছে , তবে কেবলমাত্র একটি উত্তর, যা (আমার দৃষ্টিকোণ থেকে) চিহ্নটি মিস করে। সুতরাং আমি প্রশ্নটি আমার নিজের উপায়ে বলব ... আশা করি এটি আরও পরিষ্কার

উত্তর:


6

আসুন তাদের তুলনা করা যাক

পার্টিশনের মাপ

আপনার যদি নিম্নলিখিত থাকে:

  • একটি টেবিলে 100 মিলিয়ন সারি
  • বিটিআরই সূচি
  • বিটিআরইএর প্রতিটি পৃষ্ঠায় 1024 কী থাকে

মেট্রিকগুলি দেখতে কেমন হবে?

যেহেতু এলওজি (100000000) / এলওজি (2) = 26.575424759099, তাই প্রতি পৃষ্ঠায় 1024 কী সহ একটি বিটিআরই সূচকটির গাছের উচ্চতা কেবল 3 (সিইলিং (এলওজি (100000000) / এলওজি (1024%) হবে। মাত্র তিন পৃষ্ঠার নোডের সাথে, প্রতিটি অ্যাক্সেস করা ট্রাইনেডে প্রয়োজনীয় কীটির জন্য বাইনারি অনুসন্ধানের ফলে প্রায় 30 টি কী ছাঁটাই এবং বিচ্ছিন্ন করা যায়।

পার্টিশনের সংখ্যা

আপনার যদি নিম্নলিখিত থাকে:

  • একটি টেবিলে 100 মিলিয়ন সারি
  • বিটিআরই সূচি
  • বিটিআরইএর প্রতিটি পৃষ্ঠায় 1024 কী থাকে
  • আপনি 1024 পার্টিশন তৈরি করেন

সংখ্যাগুলি কিছুটা আলাদা হবে।

প্রতিটি পার্টিশনে প্রায় 97656 সারি থাকা উচিত। মেট্রিকগুলি এখন কী হবে?

যেহেতু এলওজি (97656) / এলওজি (2) = 16.575421065795, বিটিআরই সূচক প্রতি পৃষ্ঠার 1024 কী সহ একটি গাছের উচ্চতা কেবল 2 (সিইলিং (এলওজি (97656) / এলওজি (1024)) হবে। মাত্র দুটি পৃষ্ঠার নোডের সাথে, প্রতিটি অ্যাক্সেস করা ট্রাইনেডে প্রয়োজনীয় কীটির জন্য বাইনারি অনুসন্ধানের ফলে প্রায় 20 টি কী ছাঁটাই এবং বিচ্ছিন্ন করা যায়।

উপসংহার

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

  • ক্লাস্টারড ইনডেক্স পরিচালনা করার কারণে মনিআইএমএমের তুলনায় ইনোডিবি সূচকটি একটু মেসির হবে
  • আইএনডিডিবি আইড্ডিটি 1-তে পাশাপাশি বর্তমান লগ ফাইলের (আইবি_লগফাইল0 বা আইবি_লগফাইল 1) ডেটা ডাবল রাইটিং করে

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

বিটিডাব্লু, এই নিবন্ধটি পরামর্শ দেয় যে উত্তরটি আরও কিছুটা জটিল: mysqlperformanceblog.com/2010/12/11/…
ছদ্মবেশ

উত্তরটি ভাল, তবে এটি কী (বা সূচকযুক্ত ক্ষেত্র) দ্বারা অনুসন্ধান করা। বিভাজন নিয়ে আমার খুব বেশি অভিজ্ঞতা নেই, তবে আমার বক্তব্য থেকে আপনি যখন পুরো টেবিল স্ক্যান করতে হবে তখন তা কার্যকর। সেক্ষেত্রে আপনি পুরো টেবিলের পরিবর্তে কয়েকটি পার্টিশন স্ক্যান করুন।
চেরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.