একটি একক PostgreSQL কোয়েরি একাধিক কোর ব্যবহার করতে পারে?


56

পোস্টগ্রেএসকিউএল এর সাম্প্রতিক সংস্করণগুলিতে (ডিসেম্বর ২০১৩ হিসাবে), আমরা পারফরম্যান্সের উত্সাহ পেতে দুই বা ততোধিক কোরগুলির মধ্যে একটি জিজ্ঞাসা ভাগ করতে পারি? বা আমাদের দ্রুত কোর পাওয়া উচিত?

উত্তর:


48

না, v9.6 এর পূর্বে পোস্টগ্রিজ এসকিউএল সংস্করণগুলির জন্য। দয়া করে পোস্টগ্রিসকিউএলএফএএকিউ দেখুন : পোস্টগ্রিসকিউএল সিপিইউ সংস্থানগুলি কীভাবে ব্যবহার করে?

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

সংস্করণ 9.6 থেকে, কিছু প্রশ্নের কিছু অংশ সমান্তরালভাবে পৃথক ওএস প্রসেসগুলিতে চালানো যেতে পারে, এতে একাধিক সিপিইউ কোর ব্যবহারের অনুমতি দেওয়া হয়। সমান্তরাল ক্যোয়ারীগুলি 10 সংস্করণে ডিফল্টরূপে সক্ষম করা হয়েছে (সর্বোচ্চ_প্যারালেন্সাল_ ওয়ার্কার্স_পার_গাদার), ভবিষ্যতে প্রকাশের ক্ষেত্রে অতিরিক্ত সমান্তরালতা প্রত্যাশিত।


37

PostgreSQL 9.6+ এর পরে সমান্তরাল-ক্যোয়ারী শেষ পর্যন্ত পোস্টগ্র্যাস এসকিউএল এ আসতে শুরু করবে।

উদাহরণস্বরূপ, সমান্তরাল স্ক্যান / সমান্তরাল যোগদান / সমান্তরাল সমষ্টিগুলির মত ধারণাগুলি ইতিমধ্যে আরও শিগগিরই বেকড হয়েছে।

আসলেই কী উত্তেজনাপূর্ণ তা হ'ল কিছু ক্ষেত্রে নিশ্চিত হওয়া রিপোর্ট রয়েছেnear-linear speed-up যা বেশ চিত্তাকর্ষক!


8

না, তবে একটি কাজ আছে। :)

আমি পার্সেল (সমান্তরাল নির্বাচন) plpgsql ফাংশনটি পেয়েছি, যা প্রাথমিক কী এর উপর ভিত্তি করে আপনার ক্যোয়ারিকে বিভক্ত করে, তারপরে dblink এক্সটেনশনের মাধ্যমে ডেটাবেসের সাথে সংযোগ স্থাপন করে এবং সমস্ত উপক্রমের জন্য অপেক্ষা করে।

https://gist.github.com/mjgleaso/8031067

লেখক এই ফাংশনটি সম্পর্কে নিবন্ধও লিখেছেন: http://geeohspatial.blogspot.com/2013/12/a-simple-function-for-parallel-queries_18.html


3

না। প্রতিটি সংযোগগুলি সার্ভারে একটি পৃথক প্রক্রিয়া তৈরি করে।

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

থ্রেড সমন্বয় / সহযোগিতার জন্য জাভার ভাল সমর্থন রয়েছে।

উদাহরণ হিসাবে, এটি সিপিইউ নিবিড় ক্রিয়াকলাপ বা নেটওয়ার্ক দৈর্ঘ্যের ক্রিয়াকলাপগুলির জন্য দুর্দান্ত।

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