প্রচুর INSERTS এবং বাইটিয়া আপডেটের জন্য পোস্টগ্রিজ এসকিউএল অনুকূলিত করুন


12

আমাদের যা আছে (সফ্টওয়্যার):

  • বেস কনফিগারেশন সহ পোস্টআরএসকিউএল 9.3 (কোনও পরিবর্তন নেই postgresql.conf)
  • উইন্ডোজ 7 64 বিট

হার্ডওয়্যার:

  • ইন্টেল কোর i7-3770 3.9 গিগাহার্টজ
  • 32 জিবি র‌্যাম
  • ডাব্লুডিসি ডাব্লুডি 10 ই জেডআরএক্স -00 এল 4 এইচবিটা ড্রাইভ (1000 জিবি, সটা III)

সুতরাং, আমাদের ডিবি এপ্রোক্সে লোড করতে হবে। 100.000.000 সঙ্গে সারি bytea কলাম, এবং আরো অনেক কিছু সহজ 500.000.000 সারি (LOBs ছাড়াই)। varcharপ্রথম টেবিলে 2 টি সূচক রয়েছে (13, 19 দৈর্ঘ্য সহ) এবং varcharদ্বিতীয় টেবিলে 2 টি সূচক রয়েছে (18, 10 দৈর্ঘ্য)। প্রতিটি টেবিলের জন্য আইডি জেনারেশনের সিকোয়েন্সও রয়েছে।

এখন পর্যন্ত এই অপারেশনগুলি 50 টি জেডিবিসি ব্যাচের আকারের সমান্তরালে 8 সংযোগের মাধ্যমে করছে। নীচের চিত্রটি সিস্টেম লোডকে দেখায়: এটি postgresqlপ্রক্রিয়াগুলিতে শূন্য-লোড । 24 ঘন্টা লোড হওয়ার পরে আমরা কেবল 10.000.000 সারি লোড করেছি যা খুব ধীর ফলাফল।

এখানে চিত্র বর্ণনা লিখুন

আমরা এর PostrgreSQLউদ্দেশ্যে কনফিগারেশন টিউনিংয়ে সহায়তা চাইছি :

1) অতিমাত্রায় এই পরিমাণ ডেটা লোড করার জন্য, এটি একবারে কেবল অপারেশন হয়, সুতরাং এটি অস্থায়ী কনফিগারেশন হতে পারে

2) উত্পাদনের মোডের জন্য এই 2 টি টেবিলের সাথে সংযোজন এবং বাছাই ছাড়াই তাদের সূচীগুলির মাধ্যমে সংযত সংখ্যক SELECTs করার জন্য mode

উত্তর:


14

জন্য insertকর্মক্ষমতা, দেখতে পোস্টগ্রি কর্মক্ষমতা সন্নিবেশ দ্রুত গাড়ী চালানোর আপ এবং পোস্টগ্রি মধ্যে বাল্ক সন্নিবেশ

আপনি জেডিবিসি ব্যাচের সাথে আপনার সময় নষ্ট করছেন insertপিজজেডিবিসি insertব্যাচগুলির সাথে দরকারী কিছু করে না , এটি প্রতিটি বিবৃতি চালিয়ে যায়<- এটি আর নতুন পিজিজেডিবিসি সংস্করণে সত্য নয়, যা এখন রাউন্ড-ট্রিপের সময়কে যথেষ্ট পরিমাণ হ্রাস করার জন্য প্রস্তুত বিবৃতিগুলিতে ব্যাচ করতে পারে। তবে এটি আরও ভাল:

COPYপরিবর্তে ব্যবহার করুন; দেখতে PgJDBC ব্যাচ কপি এবং CopyManager। সাম্প্রতিক লোডার সংখ্যার জন্য: ডিস্কে প্রতি দম্পতির জন্য লক্ষ্য, যদি অপারেশনগুলি ডিস্ক I / O সীমাবদ্ধ থাকে। আটটি সম্ভবত আপনি সবচেয়ে চান।

আপনার "প্রোডাকশন মোড" এর জন্য আমি ডেটার একটি নমুনা লোড করা, আপনার চালনার প্রত্যাশিত ক্যোয়ারী সেট আপ করতে এবং explain analyzeপারফরম্যান্স তদন্ত করতে ব্যবহার করার পরামর্শ দিচ্ছি । কেবল পরীক্ষার উদ্দেশ্যে, enable_বিভিন্ন পরিকল্পনা নির্বাচনের অন্বেষণ করতে প্যারামগুলি ব্যবহার করুন । ক্যোয়ারী পরিকল্পক খরচ মাপদণ্ডগুলি (সেট random_page_cost, seq_page_cost, effective_cache_sizeউপযুক্তভাবে আপনার সিস্টেমে, ইত্যাদি), এবং নিশ্চিত করুন shared_buffersউপযুক্তভাবে সেট করা হয়। auto_explainমডিউল, log_min_duration_statementসেটিং, pg_stat_statementsএক্সটেনশন ইত্যাদি ব্যবহার করে আপনি যেমন একটি অনুকরণীয় উত্পাদন কাজের চাপ যোগ করেন তদারকি চালিয়ে যান

বিশদগুলির জন্য, পোস্টগ্রিএসকিউএল ব্যবহারকারী ম্যানুয়ালটি দেখুন। আপনার কাছে explain analyzeক্যোয়ারি এক্সিকিউশন বিশদ ইত্যাদির আরও কংক্রিট সমস্যা হলে আমি এখানে ফিরে পপিংয়ের পরামর্শ দিই


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