নিচের দুটিটির মধ্যে কোনটি আরও সঠিক?
select numbackends from pg_stat_database;
select count(*) from pg_stat_activity;
নিচের দুটিটির মধ্যে কোনটি আরও সঠিক?
select numbackends from pg_stat_database;
select count(*) from pg_stat_activity;
উত্তর:
এই দুটি প্রয়োজন সমতুল্য নয়। প্রথমটির সমতুল্য সংস্করণটি হ'ল:
SELECT sum(numbackends) FROM pg_stat_database;
সেক্ষেত্রে আমি আশা করব যে সংস্করণটি দ্বিতীয়টির তুলনায় কিছুটা দ্রুত হবে, কারণ এটির কম সংখ্যা রয়েছে। তবে আপনি সম্ভবত কোনও পার্থক্য পরিমাপ করতে সক্ষম হবেন না।
উভয় কোয়েরি একই ডেটার উপর ভিত্তি করে, সুতরাং তারা সমানভাবে নির্ভুল হবে।
নিম্নলিখিত কোয়েরিটি খুব সহায়ক
select * from
(select count(*) used from pg_stat_activity) q1,
(select setting::int res_for_super from pg_settings where name=$$superuser_reserved_connections$$) q2,
(select setting::int max_conn from pg_settings where name=$$max_connections$$) q3;
তারা অবশ্যই বিভিন্ন ফলাফল দিতে পারে। আরও ভাল হয়
select count(*) from pg_stat_activity;
এর কারণ এটি ওএল প্রেরক প্রক্রিয়াগুলির সাথে সংযোগগুলি অন্তর্ভুক্ত করে যা নিয়মিত সংযোগ হিসাবে গণ্য হয় এবং এর দিকে গণনা করা হয় max_connections
।
টিসিপি সংযোগের সংখ্যা আপনাকে সহায়তা করবে। মনে রাখবেন এটি কোনও নির্দিষ্ট ডাটাবেসের জন্য নয়
netstat -a -n | find /c "127.0.0.1:13306"
উত্স কোডটি দেখে, দেখে মনে হচ্ছে pg_stat_database কোয়েরি আপনাকে সমস্ত ব্যবহারকারীর জন্য বর্তমান ডাটাবেসে সংযোগের সংখ্যা দেয়। অন্যদিকে, pg_stat_activity কোয়েরি কেবল অনুসন্ধানকারী ব্যবহারকারীর জন্য বর্তমান ডাটাবেসে সংযোগের সংখ্যা দেয়।