স্কেলিং পোস্টগ্র্যাসকিউএল ট্রিগার (গুলি)


14

কীভাবে পোস্টগ্রিজ মেকানিজম স্কেলগুলিকে ট্রিগার করে?

আমাদের একটি বড় পোস্টগ্রিসকিউএল ইনস্টলেশন রয়েছে এবং আমরা লগ টেবিল এবং ট্রিগার (গুলি) ব্যবহার করে ইভেন্ট ভিত্তিক সিস্টেমটি প্রয়োগ করার চেষ্টা করছি are

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

পোস্টগ্রিজ ট্রিগার (গুলি) এর সাথে সবার আগে যাবার আগে আমরা জানতে চাই যে তারা কীভাবে স্কেল করে: একক পোস্টগ্রিজ ইনস্টলেশনতে আমরা কয়টি ট্রিগার তৈরি করতে পারি? তারা কি কোয়েরি কার্যকারিতা প্রভাবিত করে? এর আগে কি কেউ চেষ্টা করেছিল?


আপনি পিজকিউ দরকারী দেখতে পারেন, এটি ডেটা সংশোধন ইভেন্টগুলি নিবন্ধ করার জন্য সি ট্রিগার ব্যবহার করে।
dezso

শুনুন / অবহিত করুন একবারে আপনার হয়তো ট্রিগারগুলির প্রয়োজন নাও হতে পারে: postgresql.org/docs/current/static/sql-listen.html
a_horse_with_no_name

উত্তর:


17

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

এটি একটি ট্রিগার জন্য একটি দুর্দান্ত মান ব্যবহার।

পোস্টগ্রিজ ট্রিগার (গুলি) এর সাথে সবার আগে যাবার আগে আমরা জানতে চাই যে তারা কীভাবে স্কেল করে: একক পোস্টগ্রিজ ইনস্টলেশনতে আমরা কয়টি ট্রিগার তৈরি করতে পারি?

আপনি যদি এগুলি তৈরি করে চালিয়ে যান তবে শেষ পর্যন্ত আপনার ডিস্কের স্থান শেষ হয়ে যাবে।

ট্রিগারগুলির জন্য কোনও নির্দিষ্ট সীমা নেই।

পোস্টগ্রাইএসকিউএল সীমাটি প্রায় পৃষ্ঠায় নথিভুক্ত করা হয়

তারা কি কোয়েরি কার্যকারিতা প্রভাবিত করে?

এটি ট্রিগার ধরণ, ট্রিগার ভাষা এবং ট্রিগার কী করে তার উপর নির্ভর করে।

একটি সাধারণ পিএল / পিজিএসকিউএল BEFORE ... FOR EACH STATEMENTট্রিগার যা কিছুই করে না তার কাছে শূন্যের ওভারহেড রয়েছে।

FOR EACH ROWট্রিগারগুলির তুলনায় FOR EACH STATEMENTট্রিগারগুলির ওভারহেড বেশি থাকে । স্পেলিং, স্পষ্টতই, প্রভাবিত সারি গণনা সহ।

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

একটি ট্রিগার যা NEWসন্নিবেশ / আপডেটের আগে সারিটি সংশোধন করে ডিএমএল করে এমন ট্রিগারের চেয়ে সস্তা is

আপনি যে নির্দিষ্ট ব্যবহারের ক্ষেত্রে চান সেটি অগ্রগতি বর্ধনের সাথে আরও ভাল সম্পাদন করবে যা পোস্টগ্র্রেএসকিউএল 9.5 এ পরিণত করতে পারে (যদি আমরা ভাগ্যবান), যেখানে FOR EACH STATEMENTট্রিগাররা ভার্চুয়াল OLDএবং NEWসারণীগুলি দেখতে পারে । এটি বর্তমান পোস্টগ্রিজ এসকিউএল সংস্করণগুলিতে সম্ভব নয়, সুতরাং এর FOR EACH ROWপরিবর্তে আপনাকে অবশ্যই ট্রিগারগুলি ব্যবহার করতে হবে ।

এর আগে কি কেউ চেষ্টা করেছিল?

অবশ্যই. এটি নিরীক্ষণ, স্যানিটি পরীক্ষা করা ইত্যাদির সাথে ট্রিগারগুলির জন্য একটি দুর্দান্ত মান ব্যবহার

আপনি দেখব করতে চাইবেন LISTENএবং NOTIFYএকটি ভালো উপায় আপনার কর্মী ঘুম থেকে যখন কাজের টেবিলে পরিবর্তন ঘটতে জন্য।

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


1

এটি সামান্য বিচলিত উত্তর, তবে এটি ভবিষ্যতের পাঠকদের জন্য দরকারী be

আজকাল (10,11,12 সংস্করণে) আমাদের একই তথ্য দু'বার সংরক্ষণ করতে হবে না (ডাব্লুওয়ালায় পিজি দ্বারা এবং ম্যানুয়ালি)। আমাদের ডেটাতে সমস্ত বা কিছু পরিবর্তন ট্র্যাক করতে আমরা পোস্টগ্রে লজিকাল ডিকোডিং মেকানিক্স (লজিকাল প্রতিরূপ হিসাবে একই) ব্যবহার করতে পারি (বা পরে বিশ্লেষণের জন্য কাফকার মতো কিছু ইভেন্টগুলিতে এই ইভেন্টগুলি প্রেরণ করব)

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