আমি ERROR: cached plan must not change result typeযখন জাভা / জেডিবিসি অ্যাপ্লিকেশন প্রসঙ্গে সমস্যাটি সমাধান করার চেষ্টা করছি তখন গুগল করে যে কেউ এখানে অবতরণ করছে তাদের জন্য আমি এই উত্তরটি যুক্ত করছি ।
স্কিমা আপগ্রেডগুলি (অর্থাত্ ডিডিএল বিবৃতি) চালিয়ে আমি ডিবি ব্যবহার করে এমন আমার ব্যাক-এন্ড অ্যাপ্লিকেশন চলমান অবস্থায় আমি ত্রুটিটি বিশ্বস্তভাবে পুনরুত্পাদন করতে সক্ষম হয়েছি। অ্যাপ্লিকেশনটি যদি কোনও টেবিলটি অনুসন্ধান করে যা স্কিমা আপগ্রেড দ্বারা পরিবর্তিত হয়েছিল (যেমন অ্যাপ্লিকেশন পরিবর্তিত টেবিলের উপরে আপগ্রেডের আগে এবং পরে অনুসন্ধান করেছিল) - পোস্টগ্রিস ড্রাইভারটি এই ত্রুটিটি ফিরিয়ে দেবে কারণ স্পষ্টতই এটি কিছু স্কিমার বিবরণ ক্যাশে করে।
আপনি নিজের pgjdbcড্রাইভারটি কনফিগার করে সমস্যাটি এড়াতে পারেন autosave=conservative। এই বিকল্পের সাহায্যে ড্রাইভারটি যা যা বিবরণ দিচ্ছে তা ফ্লাশ করতে সক্ষম হবে এবং আপনাকে আপনার সার্ভারটি বাউন্স করতে হবে না বা আপনার সংযোগের পুলটি বা আপনি যে কাজটি করতে এসেছেন তা ফ্লাশ করতে হবে না।
পোস্টগ্রিস 9.6 (এডাব্লুএস আরডিএস) এ পুনরুত্পাদন করা হয়েছে এবং আমার প্রাথমিক পরীক্ষার মাধ্যমে এই বিকল্পটি দিয়ে সমস্যার সম্পূর্ণ সমাধান করা হয়েছে বলে মনে হচ্ছে।
ডকুমেন্টেশন: https://jdbc.postgresql.org/docamentation/head/connect.html# সংযোগ- পরিমিতি
pgjdbc সমস্যাটির আরও বিশদ এবং ইতিহাসের জন্য আপনি গিথুব সংখ্যা 451 দেখতে পারেন look
জেআরবি অ্যাক্টিভেকর্ডস ব্যবহারকারীরা এটি দেখতে পান: https://github.com/jruby/activerecord-jdbc-adapter/blob/master/lib/arjdbc/postgresql/connication_methods.rb#L60
কর্মক্ষমতা উপর নোট:
উপরের লিঙ্কে উল্লিখিত পারফরম্যান্স ইস্যু অনুসারে - অন্ধভাবে এটি স্যুইচ করার আগে আপনার অ্যাপ্লিকেশনটির কিছু পারফরম্যান্স / লোড / ভেজানো পরীক্ষা করা উচিত।
আমার নিজের অ্যাপ্লিকেশনটিতে একটি এডাব্লুএস আরডিএস ইভেন্টে চলমান পারফরম্যান্স টেস্টিং Postgres 10করার পরে, conservativeসেটিংস সক্ষম করার ফলে ডাটাবেস সার্ভারে অতিরিক্ত সিপিইউ ব্যবহার হয় না in যদিও এটি খুব বেশি ছিল না, আমি কেবলমাত্র autosaveআমার লোড টেস্টটি ব্যবহার করে প্রতিটি ক্যোয়ারী টিউন করার পরে এবং ভারী পরীক্ষাকে শক্তভাবে চাপ দেওয়া শুরু করার পরে সিপিইউর একটি পরিমাপযোগ্য পরিমাণ ব্যবহার করার মতো কার্যকারিতাটি কেবলমাত্র দেখতে পেতাম ।