কেন পার্টিশন নয়?


10

যখন কেউ একটি ডাটাবেস বিভাজন করতে চান না? ( মাইএসকিউএল বিভাজন ভাবা )

আমার ক্ষেত্রে

  • আমি কয়েক মিলিয়ন সারি দিয়ে শুরু করব, এটি সেখান থেকে বাড়তে হবে।
  • একটি চরিত্রের ক্ষেত্রের প্রাথমিক কী যা সর্বাধিক ঘন ঘন ক্যোয়ারী সংযম হিসাবে কাজ করে (এবং অনুসন্ধানগুলি ঘন ঘন হয় - কমপক্ষে প্রতি সেকেন্ডে কয়েক)।
  • পার্টিশন কী হিসাবে পরিবেশন করতে প্রাথমিক কীটি হ্যাশ করা হবে
  • উপরে উল্লিখিত ঘন ঘন প্রশ্নগুলিতে টানা প্রত্যেকটি সারিতে আপডেট করা হবে
  • কম ঘন ঘন অনুসন্ধান (তারিখ কলাম বা অন্যান্য বিরুদ্ধে) সমস্ত পার্টিশন হিট করতে হবে

এমনকি সর্বশেষ পয়েন্টের জন্যও, অনুসন্ধান সব ক্ষেত্রে এতটা সমান্তরালে চলে না , এটি কি একটি জয় ? পার্টিশন করার ডাউনসাইডগুলি কী কী? কমপক্ষে আপনি যখন এক মিলিয়ন + রেকর্ডের দিকে তাকিয়ে থাকেন তখন কেন এটি প্রত্যেকে ডিফল্টরূপে ব্যবহার করে এমন কিছু নয়?

আপডেট - আমি zgguy এর উত্তর নির্বাচন করেছি তবে নোট করুন যে আমি আমার নিজের গবেষণার ফলাফলের সাথে আমার নিজের উত্তরটি যুক্ত করেছি যা আমার পক্ষে খুব কার্যকর ছিল একইরকম প্রশ্নের সত্যিকারের উত্তরের একটি লিঙ্ক সহ।

উত্তর:


5

পারফরম্যান্স সমস্যার জন্য কোনও রূপালী বুলেট নেই, এবং বিভাজনও একটি নয়।

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

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

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


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

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

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

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

দুঃখিত, ইদানীং স্ট্যাক এক্সচেঞ্জ পরিদর্শন করতে সক্ষম ছিল না। আপনি যে উত্তরটি যুক্ত করেছেন তা দুর্দান্ত। আমি বিশ্বাস করি এটি আপনার উভয় প্রশ্নের উত্তর দেয়।
zgguy

2

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

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

আমি আরও উল্লেখ করেছি যে মাইএসকিউএল কখনও সমান্তরালে কিছু করে না (সে সম্পর্কে কিছু লিঙ্ক বা আরও ব্যাখ্যা দেখে ভাল লাগবে)।

ক্রিয়াকলাপ লিখতে বা না লিখতে কাউকে কথা বলতে দেখেনি বিভিন্ন বিবেচনা যুক্ত করে।


আমি মনে করি না লেখাগুলি আপনার উত্তর পরিবর্তন করে। আমি খুঁজে পাওয়া 4 টির মধ্যে 2 টি ক্ষেত্রে আপনি উল্লেখ করেছেন । এখনও কোনও সমান্তরালতা নেই, এমনকি 8.0 এও।
রিক জেমস

1

খুব প্রথম জিনিস মনে আসে পার্টিশন ছাঁটাই ; যদি এটি আপনার প্রশ্নগুলি ব্যবহার করতে পারে এমন কিছু না হয়।

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

এবং আরেকটি বিষয় যা আপনি ভাবতে পারেন তা হল সহজ টেবিলগুলির জন্য ব্যবহারের সহজতা ... বিভাজনের জন্য অতিরিক্ত কাজ এবং রক্ষণাবেক্ষণ প্রয়োজন।


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