কঠোরভাবে বলতে গেলে, শব্দটি "সঞ্চিত পদ্ধতি" পোস্টগ্রিস ১১-এর সাথে প্রবর্তিত পোস্টগ্র্রেসে এসকিউএল পদ্ধতিগুলিকে নির্দেশ করে । সম্পর্কিত:
এছাড়াও রয়েছে ফাংশন , প্রায় কিন্তু পুরোপুরি একই করছেন না, এবং যারা প্রথম থেকেই সেখানে হয়েছে।
কার্যাবলী সঙ্গে LANGUAGE sql
মূলত একটি ফাংশন মোড়কের মধ্যে প্লেইন এসকিউএল কমান্ড (এবং পারমাণবিক, সবসময় একটি ভিতরে চালানোর সঙ্গে মাত্র ব্যাচ ফাইল একক লেনদেনের) গ্রহণ প্যারামিটার। এসকিউএল ফাংশনে সমস্ত বিবৃতি একবারে পরিকল্পনা করা হয় , যা অন্যের পরে একটি বিবৃতি কার্যকর করার চেয়ে সম্পূর্ণ আলাদা এবং লকগুলি যে ক্রমে নেওয়া হয় সেটিকে প্রভাবিত করতে পারে।
আরও কিছুর জন্য, সবচেয়ে পরিপক্ক ভাষা হ'ল পিএল / পিজিএসকিউএল ( LANGUAGE plpgsql
)। এটি ভাল কাজ করে এবং গত দশকে প্রতিটি প্রকাশের সাথে উন্নত হয়েছে, তবে এটি এসকিউএল কমান্ডগুলির জন্য আঠালো হিসাবে সেরা কাজ করে best এটি ভারী গণনার জন্য নয় (এসকিউএল কমান্ড ব্যতীত)।
পিএল / পিজিএসকিউএল ফাংশন প্রস্তুত বিবৃতিগুলির মতো প্রশ্নের সম্পাদন করে । ক্যাশেড ক্যোয়ারী পরিকল্পনাগুলি পুনরায় ব্যবহার করা কিছু পরিকল্পনার ওভারহেড কেটে দেয় এবং সমতুল্য এসকিউএল স্টেটমেন্টের চেয়ে কিছুটা দ্রুত করে তোলে যা পরিস্থিতিগুলির উপর নির্ভর করে একটি লক্ষণীয় প্রভাব হতে পারে। এটি সম্পর্কিত প্রশ্নের মতো পার্শ্ব প্রতিক্রিয়াও থাকতে পারে:
এই সুবিধা এবং প্রস্তুত বিবৃতি অসুবিধেও বহন করে - যেমন ম্যানুয়াল আলোচনা । অনিয়মিত তথ্য বিতরণ এবং বিভিন্ন পরামিতিগুলির গতিশীল এসকিউএল সহ টেবিলের প্রশ্নের EXECUTE
জন্য যখন প্রদত্ত প্যারামিটারগুলির জন্য একটি অনুকূলিতকরণ বাস্তবায়ন পরিকল্পনা থেকে লাভ পুনরায় পরিকল্পনার ব্যয়কে ছাড়িয়ে যায় তখন আরও ভাল সম্পাদন করতে পারে।
যেহেতু পোস্টগ্রিস 9.2 জেনেরিক এক্সিকিউশন প্ল্যানগুলি এখনও অধিবেশনটির জন্য ক্যাশে করা হয়েছে তবে ম্যানুয়ালটি উদ্ধৃত করে :
এটি কোনও পরামিতি ছাড়াই প্রস্তুত বিবৃতিগুলির জন্য অবিলম্বে ঘটে; অন্যথায় এটি কেবল পাঁচ বা ততোধিক মৃত্যুদণ্ড কার্যকর করার পরিকল্পনার পরে দেখা যায় যার আনুমানিক ব্যয় গড় (ব্যয় ওভারহেড পরিকল্পনা সহ) জেনেরিক পরিকল্পনার ব্যয় প্রাক্কলনের চেয়ে ব্যয়বহুল।
আমরা উভয় বোথ ওয়ার্ল্ডস শ্রেষ্ঠ পেতে সবচেয়ে সময় ছাড়া (কম কিছু উপরি যোগ করা হয়েছে) (AB) ব্যবহার করে EXECUTE
। পোস্টগ্রাইএসকিউএল উইকির পোস্টগ্রিজ এসকিউএল 9.2 -এ নতুন কী রয়েছে তার বিশদ ।
পোস্টগ্রিজ 12 জেনেরিক বা কাস্টম পরিকল্পনা জোর করতে অতিরিক্ত সার্ভার ভেরিয়েবলেরplan_cache_mode
সাথে পরিচয় করিয়ে দেয়। বিশেষ ক্ষেত্রে যত্ন সহকারে ব্যবহার করুন।
আপনি সার্ভার সাইড ফাংশনগুলির সাহায্যে বড় জয় করতে পারেন যা আপনার অ্যাপ্লিকেশন থেকে ডেটাবেস সার্ভারে অতিরিক্ত রাউন্ড-ট্রিপগুলি প্রতিরোধ করে। সার্ভারটিকে একবারে যথাসম্ভব কার্যকর করতে এবং কেবলমাত্র একটি ভাল সংজ্ঞায়িত ফলাফল প্রদান করতে হবে।
জটিল ফাংশন, বিশেষত টেবিল ফাংশন ( RETURNING SETOF record
বা TABLE (...)
) এর বাসা বাঁধুন । কার্যগুলি হ'ল কালো বাক্সগুলি ক্যোয়ার পরিকল্পনাকারীর জন্য অপ্টিমাইজেশন বাধা হিসাবে উপস্থিত। বাহ্যিক ক্যোয়ারীর প্রসঙ্গে নয়, এগুলি পৃথকভাবে অপ্টিমাইজ করা হয়েছে যা পরিকল্পনাকে সহজ করে তোলে তবে নিখুঁত পরিকল্পনার চেয়ে কম ফলাফল হতে পারে। এছাড়াও, কার্যগুলির ব্যয় এবং ফলাফলের আকার নির্ভরযোগ্যভাবে পূর্বাভাস দেওয়া যায় না।
ব্যতিক্রম এই নিয়মের সহজ এসকিউএল ফাংশন (হয় LANGUAGE sql
), যা করা যেতে পারে "inlined" যদি কিছু পূর্বশর্ত পূরণ করা - । নীল কনওয়ে (উন্নত স্টাফ) দ্বারা উপস্থাপনাটিতে কীভাবে পরিকল্পনাকারী কাজ করে সে সম্পর্কে আরও পড়ুন ।
PostgreSQL এ একটি ফাংশন সর্বদা স্বয়ংক্রিয়ভাবে একটি একক লেনদেনের মধ্যে চলে । এটির সব কিছুই সফল হয় বা কিছুই না। যদি কোনও ব্যতিক্রম ঘটে থাকে, সমস্ত কিছু আবার ঘূর্ণিত হয়। তবে পরিচালনা করার সময় ত্রুটি রয়েছে ...
এজন্যই ফাংশনগুলি হুবহু "সঞ্চিত পদ্ধতি" হয় না (যদিও সেই শব্দটি কখনও কখনও ব্যবহৃত হয়, বিভ্রান্তিকরভাবে)। কিছু কমান্ড পছন্দ , বা , একটি লেনদেন ব্লক ভিতরে চালানো যাবে না যাতে তারা ফাংশন অনুমোদিত নয়। (এসকিউএল পদ্ধতিতে এখনও নয়, পোস্টগ্রিস ১১ হিসাবে। এটি পরে যুক্ত করা যেতে পারে))VACUUM
CREATE INDEX CONCURRENTLY
CREATE DATABASE
আমি কয়েক হাজার বছর ধরে plpgsql ফাংশন লিখেছি।