পোস্টগ্রিজ এসকিউএল ভাগ করা মেমরির বিষয়ে অভিযোগ করে তবে ভাগ করা মেমরিটি ঠিক আছে বলে মনে হয়


13

আমি পোস্টগ্র্রেএসকিউএল সার্ভারের উপর দিয়ে এক ধরণের নিবিড় স্কিমা ফেলে এবং তৈরি করছি, তবে এখন অভিযোগ করে ..:

WARNING:  out of shared memory
ERROR:  out of shared memory
HINT:  You might need to increase max_locks_per_transaction.

তবে সমস্যাটি যদি পোস্টগ্র্রেএসকিউএল সবে পুনরায় চালু করা হয় তবে service postgresql restartআমার মনে হয় যে ম্যাক্স_লকস_পার_ট্রান্সঅ্যাকশন কিছুই টিউন করবে না।

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

আরও তথ্য 1409291350: কিছু বিবরণ অনুপস্থিত তবে আমি মূল এসকিউএল ফলাফল রাখি।

postgres=# SELECT version();
PostgreSQL 9.3.5 on x86_64-unknown-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2,
 64-bit

এবং:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty

2
পোস্টগ্রিজ এসকিউএল সংস্করণ থেকে SELECT version()? আকর্ষণীয় সমস্যা ...
ক্রেগ রিঞ্জার

2
"আমি সন্দেহ করি যে ম্যাক্স_লকস_পার_ট্রান্সঅ্যাকশন কিছুই টিউন করবে না।" - আহ, তুমি কেন সন্দেহ করবে? আপনি কি ইঙ্গিতটির পরামর্শ অনুসরণ করার চেষ্টা করেছেন?
জোশ কুপারশ্মিদট

আপনি কি ইঙ্গিতটির পরামর্শ অনুসরণ করার চেষ্টা করেছেন? আমি এখনও max_locks_per_transaction = 64 # min 10অবধি /etc/postgresql/9.3/main/postgresql.conf- তে নিরীক্ষণ করেছি।
48347

1
ডিফল্ট ম্যাক্স_লকস_পার_সংশোধনটি to৪ টির সাথে শুরু করতে হবে - যে লাইনটি কার্যকরভাবে পরিবর্তন করে নি om
ফলস্বরূপ 13

1
128 এ কার্যকর সমাধান বৃদ্ধি পেয়ে সমস্যার সমাধান হয়েছে , প্রকৃতপক্ষে অপারেশনটি চালিয়ে যাওয়ার অনুমতি দেওয়া হয়েছে।
48347

উত্তর:


11

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

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

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


আমার কর্মপ্রবাহের মধ্যে রয়েছে (১) একটি স্কিমা এক্স ডাম্পিং, (২) অন্য স্কিমা ওয়াই বাদ দেওয়া, এবং (৩) স্কিমা নাম ওয়াইটিতে এক্স পুনরুদ্ধার করুন I যেমনটি আমি বলেছি, আজ অবধি আমি এই কার্যক্রমগুলি সম্পাদন করে বেশ কয়েক সপ্তাহ পেরিয়েছি, এবং আজ পদক্ষেপ (2) ব্যর্থ হচ্ছে। পদক্ষেপ (২) প্রধানত এতে অন্তর্ভুক্ত থাকে DROP SCHEMA IF EXISTS public CASCADE; CREATE SCHEMA public, এগুলি সতর্কতা, ত্রুটি এবং ইঙ্গিতটি ছুঁড়ে দেওয়া বাক্যগুলি।
48347

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

এখন আমি বুঝতে পারি অনেক দিন আমি একটি ছোট স্কিমা বৃদ্ধি পেয়েছি এবং এই সমস্যাটি সেই ছোট স্কিমার বৃদ্ধির মধ্যে একটির সাথে পুরোপুরি মেলে । একটি সাধারণ কৌশল হিসাবে আমি এখন থেকে এইচআইএনটিগুলির সাথে আরও বেশি বিবেচনা করব।
48347
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.