PostgreSQL استفسار کی کارکردگی کی نگرانی۔ حصہ 1 - رپورٹنگ

انجینئر - لاطینی سے ترجمہ - حوصلہ افزائی.
انجینئر کچھ بھی کر سکتا ہے۔ (c) آر ڈیزل۔
ایپی گرافس۔
PostgreSQL استفسار کی کارکردگی کی نگرانی۔ حصہ 1 - رپورٹنگ
یا اس بارے میں ایک کہانی کیوں کہ ایک ڈیٹا بیس ایڈمنسٹریٹر کو اپنے پروگرامنگ ماضی کو یاد رکھنے کی ضرورت ہے۔

کردار

تمام نام تبدیل کر دیے گئے ہیں۔ اتفاقات بے ترتیب ہیں۔ مواد مکمل طور پر مصنف کی ذاتی رائے کی نمائندگی کرتا ہے۔

وارنٹیوں کی تردید: مضامین کی منصوبہ بند سیریز میں استعمال شدہ جدولوں اور اسکرپٹس کی تفصیلی اور درست وضاحت نہیں ہوگی۔ مواد کو فوری طور پر "جیسے ہے" استعمال نہیں کیا جاسکتا۔
سب سے پہلے، مواد کی بڑی مقدار کی وجہ سے،
دوم، ایک حقیقی گاہک کی پیداوار کی بنیاد کے ساتھ قریبی تعلق کی وجہ سے۔
لہذا، مضامین صرف عمومی شکل میں خیالات اور وضاحتوں پر مشتمل ہوں گے۔
ہوسکتا ہے کہ مستقبل میں یہ نظام GitHub پر پوسٹ ہونے کی سطح تک بڑھ جائے، یا شاید نہیں۔ وقت دکھائے گا۔

کہانی کا آغاز - "آپ کو یاد ہے کہ یہ سب کیسے شروع ہوا؟'.
اس کے نتیجے میں کیا ہوا، سب سے عام اصطلاحات میں - "PostgreSQL کارکردگی کو بہتر بنانے کے طریقوں میں سے ایک کے طور پر ترکیب»

مجھے اس سب کی ضرورت کیوں ہے؟

ٹھیک ہے، سب سے پہلے، ریٹائرمنٹ کے شاندار دنوں کو یاد کرتے ہوئے، بھولنا نہیں ہے.
دوم، جو لکھا گیا اسے منظم کرنا۔ کیونکہ بعض اوقات میں الجھنے لگتا ہوں اور کچھ حصوں کو بھول جاتا ہوں۔

ٹھیک ہے، اور سب سے اہم بات یہ ہے کہ یہ کسی کے کام آ سکتا ہے اور وہیل کو دوبارہ ایجاد کرنے اور ریک جمع نہ کرنے سے بچنے میں مدد کر سکتا ہے۔ دوسرے الفاظ میں، اپنے کرما کو بہتر بنائیں (خبروف کی نہیں)۔ کیونکہ اس دنیا میں سب سے قیمتی چیز خیالات ہیں۔ اہم چیز ایک خیال تلاش کرنا ہے۔ لیکن کسی خیال کو حقیقت میں بدلنا ایک خالصتاً تکنیکی سوال ہے۔

تو، چلو شروع کرتے ہیں، آہستہ آہستہ...

مسئلہ کی تشکیل۔

دستیاب:

PostgreSQL(10.5) ڈیٹا بیس، مخلوط لوڈ کی قسم (OLTP+DSS)، درمیانے ہلکے بوجھ، AWS کلاؤڈ میں واقع ہے۔
کوئی ڈیٹا بیس مانیٹرنگ نہیں ہے؛ بنیادی ڈھانچے کی نگرانی معیاری AWS ٹولز کی شکل میں کم سے کم ترتیب میں فراہم کی جاتی ہے۔

اس کی ضرورت ہے:

ڈیٹا بیس کی کارکردگی اور حیثیت کی نگرانی کریں، بھاری ڈیٹا بیس کے سوالات کو بہتر بنانے کے لیے ابتدائی معلومات تلاش کریں اور حاصل کریں۔

حل کے اختیارات کا مختصر تعارف یا تجزیہ

شروع کرنے کے لیے، آئیے انجینئر کے لیے فوائد اور نقصانات کے تقابلی تجزیہ کے نقطہ نظر سے مسئلے کو حل کرنے کے لیے آپشنز کا تجزیہ کرنے کی کوشش کریں، اور جو لوگ اسٹافنگ شیڈول کے مطابق اس کے حقدار ہیں ان کو فوائد اور انتظامیہ کے نقصانات

آپشن 1 - "مطالبہ پر کام کرنا"

ہم سب کچھ ویسا ہی چھوڑ دیتے ہیں۔ اگر صارف ڈیٹا بیس یا ایپلیکیشن کی فعالیت، کارکردگی میں کسی چیز سے مطمئن نہیں ہے، تو وہ ڈی بی اے انجینئرز کو ای میل کے ذریعے یا ٹکٹ ٹرے میں واقعہ بنا کر مطلع کرے گا۔
انجینئر، اطلاع ملنے کے بعد، مسئلہ کو سمجھے گا، کوئی حل پیش کرے گا یا مسئلہ کو بیک برنر پر رکھ دے گا، امید ہے کہ سب کچھ خود ہی حل ہو جائے گا، اور بہرحال، جلد ہی سب کچھ بھول جائے گا۔
جنجربریڈ اور ڈونٹس، خراشیں اور ٹکرانےجنجربریڈ اور ڈونٹس:
1. اضافی کچھ کرنے کی ضرورت نہیں ہے۔
2. ہمیشہ بہانے بنانے اور گڑبڑ کرنے کا موقع ملتا ہے۔
3. بہت سا وقت جو آپ اپنی صوابدید پر خرچ کر سکتے ہیں۔
خراشیں اور جھریاں:
1. جلد یا بدیر، گاہک اس دنیا میں وجود اور آفاقی انصاف کے جوہر کے بارے میں سوچے گا اور ایک بار پھر اپنے آپ سے یہ سوال پوچھے گا کہ میں انہیں اپنے پیسے کیوں ادا کر رہا ہوں؟ نتیجہ ہمیشہ ایک جیسا ہوتا ہے - صرف سوال یہ ہے کہ گاہک کب بور ہو گا اور الوداع لہرائے گا۔ اور فیڈر خالی ہو جائے گا۔ یہ دکھ کی بات ہے.
2. انجینئر کی ترقی - صفر۔
3. کام کی منصوبہ بندی اور لوڈنگ میں مشکلات

آپشن 2- "دف کے ساتھ ناچنا، بھاپ لینا اور جوتے پہننا"

پیراگراف 1ہمیں نگرانی کے نظام کی ضرورت کیوں ہے، ہم درخواستوں کے ساتھ ہر چیز وصول کریں گے۔ ہم ڈیٹا ڈکشنری اور ڈائنامک ویوز کے لیے ہر قسم کے سوالات کا ایک گروپ چلاتے ہیں، ہر طرح کے کاؤنٹرز کو آن کرتے ہیں، ہر چیز کو ٹیبل میں ڈالتے ہیں، اور وقتاً فوقتاً فہرستوں اور ٹیبلز کا تجزیہ کرتے ہیں۔ نتیجے کے طور پر، ہمارے پاس خوبصورت یا اتنے خوبصورت گراف، میزیں، رپورٹس ہیں. اہم بات یہ ہے کہ زیادہ، زیادہ ہو۔
پیراگراف 2-ہم سرگرمی پیدا کرتے ہیں اور اس سب کا تجزیہ شروع کرتے ہیں۔
پیراگراف 3-ہم ایک خاص دستاویز تیار کر رہے ہیں، ہم اس دستاویز کو صرف کہتے ہیں - "ہمیں ڈیٹا بیس کیسے ترتیب دینا چاہیے۔"
پیراگراف 4- گاہک، گرافس اور نمبروں کی اس ساری شان کو دیکھ کر، بچکانہ، سادہ اعتماد میں ہے - اب سب کچھ ہمارے لیے جلد ہی کام کرے گا۔ اور، وہ آسانی سے اور بغیر درد کے اپنے مالی وسائل سے الگ ہوجاتا ہے۔ انتظامیہ کو بھی یقین ہے کہ ہمارے انجینئرز بہت اچھا کام کرتے ہیں۔ زیادہ سے زیادہ لوڈ ہو رہا ہے۔
پیراگراف 5-مرحلہ 1 کو باقاعدگی سے دہرائیں۔
جنجربریڈ اور ڈونٹس، خراشیں اور ٹکرانےجنجربریڈ اور ڈونٹس:
1. مینیجرز اور انجینئرز کی زندگی سادہ، پیش قیاسی اور سرگرمی سے بھرپور ہوتی ہے۔ ہر چیز گونج رہی ہے، ہر کوئی مصروف ہے۔
2. گاہک کی زندگی بھی بری نہیں ہے - وہ ہمیشہ اس بات کا یقین رکھتا ہے کہ اسے صرف تھوڑا صبر کرنے کی ضرورت ہے اور سب کچھ ٹھیک ہو جائے گا۔ یہ بہتر نہیں ہو رہا، ٹھیک ہے، دنیا غیر منصفانہ ہے، اگلی زندگی میں آپ خوش قسمت ہوں گے۔
خراشیں اور جھریاں:
1. جلد یا بدیر، اسی طرح کی خدمت کا ایک تیز تر فراہم کنندہ ہوگا جو وہی کام کرے گا، لیکن تھوڑا سستا ہوگا۔ اور اگر نتیجہ ایک ہی ہے تو زیادہ ادائیگی کیوں؟ جو ایک بار پھر فیڈر کے غائب ہونے کا باعث بنے گا۔
2. یہ بورنگ ہے۔ کوئی بھی بے معنی سرگرمی کتنی بورنگ ہوتی ہے۔
3. پچھلے ورژن کی طرح، کوئی ترقی نہیں ہے۔ لیکن ایک انجینئر کے لیے، منفی پہلو یہ ہے کہ، پہلے آپشن کے برعکس، آپ کو مسلسل ایک IBD پیدا کرنے کی ضرورت ہے۔ اور اس میں وقت لگتا ہے۔ جسے آپ اپنے پیارے کی بھلائی کے لیے خرچ کر سکتے ہیں۔ کیونکہ آپ اپنا خیال نہیں رکھ سکتے، کوئی بھی آپ کے بارے میں کوئی بات نہیں کرتا۔

آپشن 3 - آپ کو سائیکل ایجاد کرنے کی ضرورت نہیں ہے، آپ کو صرف اسے خریدنے اور اس پر سوار ہونے کی ضرورت ہے۔

یہ کچھ بھی نہیں ہے کہ دوسری کمپنیوں کے انجینئر بیئر کے ساتھ پیزا کھاتے ہیں (اوہ، 90 کی دہائی میں سینٹ پیٹرزبرگ کے شاندار دن)۔ آئیے مانیٹرنگ سسٹم استعمال کریں جو بنائے گئے، ڈیبگ کیے گئے اور کام کر رہے ہیں، اور عام طور پر فائدہ اٹھاتے ہیں (اچھی طرح سے، کم از کم ان کے تخلیق کاروں کو)۔
جنجربریڈ اور ڈونٹس، خراشیں اور ٹکرانےجنجربریڈ اور ڈونٹس:
1. کسی ایسی چیز کے ساتھ آنے میں وقت ضائع کرنے کی ضرورت نہیں ہے جو پہلے ہی ایجاد ہو چکی ہے۔ اسے لے لو اور استعمال کرو۔
2. نگرانی کے نظام احمقوں کے ذریعہ نہیں لکھے جاتے ہیں اور یہ یقیناً مفید ہیں۔
3. کام کرنے والے نگرانی کے نظام عام طور پر مفید فلٹر شدہ معلومات فراہم کرتے ہیں۔
خراشیں اور جھریاں:
1. اس معاملے میں انجینئر انجینئر نہیں ہے، بلکہ صرف کسی اور کی مصنوعات کا صارف ہے۔ یا صارف۔
2. گاہک کو ایسی چیز خریدنے کی ضرورت کا قائل ہونا چاہیے جسے عام طور پر سمجھا جائے تو وہ سمجھنا نہیں چاہتا، اور نہیں ہونا چاہیے، اور عام طور پر سال کا بجٹ منظور ہو چکا ہے اور اس میں کوئی تبدیلی نہیں آئے گی۔ پھر آپ کو ایک علیحدہ وسیلہ مختص کرنے اور اسے ایک مخصوص سسٹم کے لیے ترتیب دینے کی ضرورت ہے۔ وہ. پہلے آپ کو ادائیگی، ادائیگی اور دوبارہ ادائیگی کرنے کی ضرورت ہے۔ اور گاہک کنجوس ہے۔ یہ اس زندگی کا معمول ہے۔

کیا کرنا ہے - Chernyshevsky؟ آپ کا سوال بہت مناسب ہے۔ (کے ساتھ)

اس خاص معاملے اور موجودہ صورتحال میں، آپ اسے تھوڑا مختلف طریقے سے کر سکتے ہیں۔ آئیے اپنا مانیٹرنگ سسٹم بنائیں۔
PostgreSQL استفسار کی کارکردگی کی نگرانی۔ حصہ 1 - رپورٹنگ
ٹھیک ہے، کوئی سسٹم نہیں، بلاشبہ، لفظ کے مکمل معنی میں، یہ بہت بلند اور گستاخی ہے، لیکن کم از کم کسی نہ کسی طرح آپ کے کام کو آسان بنائیں اور کارکردگی کے واقعات کو حل کرنے کے لیے مزید معلومات اکٹھا کریں۔ اپنے آپ کو کسی صورت حال میں نہ ڈھونڈنے کے لیے - "وہاں جاؤ، مجھے نہیں معلوم کہاں، کچھ ڈھونڈو، مجھے نہیں معلوم کہ کیا ہے۔"

اس اختیار کے فوائد اور نقصانات کیا ہیں:

پیشہ:
1. یہ دلچسپ ہے۔ ٹھیک ہے، کم از کم یہ مستقل "شرک ڈیٹا فائل، ٹیبل اسپیس کو تبدیل کرنا، وغیرہ" سے زیادہ دلچسپ ہے۔
2. یہ نئی مہارتیں اور نئی ترقی ہیں۔ جو، جلد یا بدیر، آپ کو اچھی طرح سے مستحق جنجربریڈ اور ڈونٹس دے گا۔
Cons:
1. آپ کو کام کرنا پڑے گا۔ مشکل کام کرتے ہیں.
2. آپ کو باقاعدگی سے تمام سرگرمیوں کے معنی اور امکانات کی وضاحت کرنی ہوگی۔
3. کسی چیز کی قربانی دینی پڑے گی، کیونکہ انجینئر کے لیے دستیاب واحد وسیلہ - وقت - کائنات کی طرف سے محدود ہے۔
4. سب سے بری اور ناگوار چیز - نتیجہ بدتمیزی ہو سکتا ہے جیسے "چوہا نہیں، مینڈک نہیں، بلکہ ایک نامعلوم جانور۔"

جو لوگ خطرہ مول نہیں لیتے وہ شیمپین نہیں پیتے۔
تو - مزہ شروع ہوتا ہے.

عام خیال - منصوبہ بندی کے مطابق

PostgreSQL استفسار کی کارکردگی کی نگرانی۔ حصہ 1 - رپورٹنگ
(مضمون سے لی گئی مثال «PostgreSQL کارکردگی کو بہتر بنانے کے طریقوں میں سے ایک کے طور پر ترکیب")

وضاحت:

  • معیاری PostgreSQL ایکسٹینشن "pg_stat_statements" ہدف ڈیٹا بیس میں انسٹال ہے۔
  • مانیٹرنگ ڈیٹا بیس میں، ہم ابتدائی مرحلے میں pg_stat_statements کی تاریخ کو ذخیرہ کرنے اور مستقبل میں میٹرکس اور نگرانی کے لیے سروس ٹیبلز کا ایک سیٹ بناتے ہیں۔
  • مانیٹرنگ ہوسٹ پر، ہم باش اسکرپٹس کا ایک سیٹ بناتے ہیں، بشمول ٹکٹ سسٹم میں واقعات پیدا کرنے کے لیے۔

سروس ٹیبلز

سب سے پہلے، ایک اسکیمیٹک آسان ERD، آخر میں کیا ہوا:
PostgreSQL استفسار کی کارکردگی کی نگرانی۔ حصہ 1 - رپورٹنگ
جدولوں کی مختصر تفصیلآخر پوائنٹ - میزبان، مثال سے تعلق کا نقطہ
ڈیٹا بیس - ڈیٹا بیس کے پیرامیٹرز
pg_stat_history - ٹارگٹ ڈیٹا بیس کے pg_stat_statements منظر کے عارضی سنیپ شاٹس کو ذخیرہ کرنے کے لیے ایک تاریخی جدول
metric_glossary - کارکردگی میٹرکس کی لغت
metric_config - انفرادی میٹرکس کی ترتیب
میٹرک۔ - اس درخواست کے لیے ایک مخصوص میٹرک جس کی نگرانی کی جا رہی ہے۔
میٹرک_الرٹ_ہسٹری - کارکردگی کے انتباہات کی تاریخ
log_query - AWS سے ڈاؤن لوڈ کردہ PostgreSQL لاگ فائل سے پارس شدہ ریکارڈز کو ذخیرہ کرنے کے لیے ایک سروس ٹیبل
بیس لائن - بنیاد کے طور پر استعمال ہونے والے وقت کی مدت کے پیرامیٹرز
چوکی - ڈیٹا بیس کی حیثیت کو جانچنے کے لیے میٹرکس کی ترتیب
چیک پوائنٹ_الرٹ_ہسٹری - ڈیٹا بیس ہیلتھ چیک میٹرکس کی انتباہی تاریخ
pg_stat_db_queries - فعال درخواستوں کی خدمت کی میز
سرگرمی_لاگ - سرگرمی لاگ سروس ٹیبل
trap_oid - ٹریپ کنفیگریشن سروس ٹیبل

مرحلہ 1 - کارکردگی کے بارے میں شماریاتی معلومات جمع کریں اور رپورٹیں وصول کریں۔

شماریاتی معلومات کو ذخیرہ کرنے کے لیے ایک جدول استعمال کیا جاتا ہے۔ pg_stat_history
pg_stat_history جدول کا ڈھانچہ

                                          جدول "public.pg_stat_history" کالم | قسم | ترمیم کرنے والے ---------------------------------------------- ------------------------------------------------------ آئی ڈی | عدد | null default nextval('pg_stat_history_id_seq'::regclass) snapshot_timestamp | ٹائم اسٹیمپ بغیر ٹائم زون کے | database_id | عدد | dbid | oid | userid | oid | queryid | bigint | استفسار | متن | کالز | bigint | کل_وقت | ڈبل صحت سے متعلق | منٹ_وقت | ڈبل صحت سے متعلق | max_time | ڈبل صحت سے متعلق | مطلب_وقت | ڈبل صحت سے متعلق | stddev_time | ڈبل صحت سے متعلق | قطاریں | bigint | shared_blks_hit | bigint | shared_blks_read | bigint | shared_blks_dirtied | bigint | shared_blks_written | bigint | local_blks_hit | bigint | local_blks_read | bigint | local_blks_dirtied | bigint | local_blks_written | bigint | temp_blks_read | bigint | temp_blks_written | bigint | blk_read_time | ڈبل صحت سے متعلق | blk_write_time | ڈبل صحت سے متعلق | baseline_id | عدد | اشاریہ جات: "pg_stat_history_pkey" PRIMARY KEY، btree (id) "database_idx" btree (database_id) "queryid_idx" btree (queryid) "snapshot_timestamp_idx" btree (snapshot_timestamp) "Foreign-key: IG_databaseKEs" id) حوالہ جات کا ڈیٹا بیس (id ) DELETE CASCADE پر

جیسا کہ آپ دیکھ سکتے ہیں، ٹیبل صرف مجموعی منظر کا ڈیٹا ہے۔ pg_stat_statements ہدف کے ڈیٹا بیس میں۔

اس ٹیبل کا استعمال بہت آسان ہے۔

pg_stat_history ہر گھنٹے کے لیے استفسار پر عمل درآمد کے جمع شدہ اعدادوشمار کی نمائندگی کرے گا۔ ہر گھنٹے کے شروع میں، ٹیبل کو بھرنے کے بعد، شماریات pg_stat_statements کے ساتھ دوبارہ ترتیب دیں pg_stat_statements_reset().
نوٹ: 1 سیکنڈ سے زیادہ کے عمل کی مدت کے ساتھ سوالات کے لیے اعداد و شمار جمع کیے جاتے ہیں۔
pg_stat_history ٹیبل کو آباد کرنا

--pg_stat_history.sql
CREATE OR REPLACE FUNCTION pg_stat_history( ) RETURNS boolean AS $$
DECLARE
  endpoint_rec record ;
  database_rec record ;
  pg_stat_snapshot record ;
  current_snapshot_timestamp timestamp without time zone;
BEGIN
  current_snapshot_timestamp = date_trunc('minute',now());  
  
  FOR endpoint_rec IN SELECT * FROM endpoint 
  LOOP
    FOR database_rec IN SELECT * FROM database WHERE endpoint_id = endpoint_rec.id 
	  LOOP
	    
		RAISE NOTICE 'NEW SHAPSHOT IS CREATING';
		
		--Connect to the target DB	  
	    EXECUTE 'SELECT dblink_connect(''LINK1'',''host='||endpoint_rec.host||' dbname='||database_rec.name||' user=USER password=PASSWORD '')';
 
        RAISE NOTICE 'host % and dbname % ',endpoint_rec.host,database_rec.name;
		RAISE NOTICE 'Creating snapshot of pg_stat_statements for database %',database_rec.name;
		
		SELECT 
	      *
		INTO 
		  pg_stat_snapshot
	    FROM dblink('LINK1',
	      'SELECT 
	       dbid , SUM(calls),SUM(total_time),SUM(rows) ,SUM(shared_blks_hit) ,SUM(shared_blks_read) ,SUM(shared_blks_dirtied) ,SUM(shared_blks_written) , 
           SUM(local_blks_hit) , SUM(local_blks_read) , SUM(local_blks_dirtied) , SUM(local_blks_written) , SUM(temp_blks_read) , SUM(temp_blks_written) , SUM(blk_read_time) , SUM(blk_write_time)
	       FROM pg_stat_statements WHERE dbid=(SELECT oid from pg_database where datname=current_database() ) 
		   GROUP BY dbid
  	      '
	               )
	      AS t
	       ( dbid oid , calls bigint , 
  	         total_time double precision , 
	         rows bigint , shared_blks_hit bigint , shared_blks_read bigint ,shared_blks_dirtied bigint ,shared_blks_written	 bigint ,
             local_blks_hit	 bigint ,local_blks_read bigint , local_blks_dirtied bigint ,local_blks_written bigint ,
             temp_blks_read	 bigint ,temp_blks_written bigint ,
             blk_read_time double precision , blk_write_time double precision	  
	       );
		 
		INSERT INTO pg_stat_history
          ( 
		    snapshot_timestamp  ,database_id  ,
			dbid , calls  ,total_time ,
            rows ,shared_blks_hit  ,shared_blks_read  ,shared_blks_dirtied  ,shared_blks_written ,local_blks_hit , 	 	
            local_blks_read,local_blks_dirtied,local_blks_written,temp_blks_read,temp_blks_written, 	
            blk_read_time, blk_write_time 
		  )		  
	    VALUES
	      (
	       current_snapshot_timestamp ,
		   database_rec.id ,
	       pg_stat_snapshot.dbid ,pg_stat_snapshot.calls,
	       pg_stat_snapshot.total_time,
	       pg_stat_snapshot.rows ,pg_stat_snapshot.shared_blks_hit ,pg_stat_snapshot.shared_blks_read ,pg_stat_snapshot.shared_blks_dirtied ,pg_stat_snapshot.shared_blks_written , 
           pg_stat_snapshot.local_blks_hit , pg_stat_snapshot.local_blks_read , pg_stat_snapshot.local_blks_dirtied , pg_stat_snapshot.local_blks_written , 
	       pg_stat_snapshot.temp_blks_read , pg_stat_snapshot.temp_blks_written , pg_stat_snapshot.blk_read_time , pg_stat_snapshot.blk_write_time 	   
	      );		   
		  
        RAISE NOTICE 'Creating snapshot of pg_stat_statements for queries with min_time more than 1000ms';
	
        FOR pg_stat_snapshot IN
          --All queries with max_time greater than 1000 ms
	      SELECT 
	        *
	      FROM dblink('LINK1',
	        'SELECT 
	         dbid , userid ,queryid,query,calls,total_time,min_time ,max_time,mean_time, stddev_time ,rows ,shared_blks_hit ,
			 shared_blks_read ,shared_blks_dirtied ,shared_blks_written , 
             local_blks_hit , local_blks_read , local_blks_dirtied , 
			 local_blks_written , temp_blks_read , temp_blks_written , blk_read_time , 
			 blk_write_time
	         FROM pg_stat_statements 
			 WHERE dbid=(SELECT oid from pg_database where datname=current_database() AND min_time >= 1000 ) 
  	        '

	                  )
	        AS t
	         ( dbid oid , userid oid , queryid bigint ,query text , calls bigint , 
  	           total_time double precision ,min_time double precision	 ,max_time double precision	 , mean_time double precision	 ,  stddev_time double precision	 , 
	           rows bigint , shared_blks_hit bigint , shared_blks_read bigint ,shared_blks_dirtied bigint ,shared_blks_written	 bigint ,
               local_blks_hit	 bigint ,local_blks_read bigint , local_blks_dirtied bigint ,local_blks_written bigint ,
               temp_blks_read	 bigint ,temp_blks_written bigint ,
               blk_read_time double precision , blk_write_time double precision	  
	         )
	    LOOP
		  INSERT INTO pg_stat_history
          ( 
		    snapshot_timestamp  ,database_id  ,
			dbid ,userid  , queryid  , query  , calls  ,total_time ,min_time ,max_time ,mean_time ,stddev_time ,
            rows ,shared_blks_hit  ,shared_blks_read  ,shared_blks_dirtied  ,shared_blks_written ,local_blks_hit , 	 	
            local_blks_read,local_blks_dirtied,local_blks_written,temp_blks_read,temp_blks_written, 	
            blk_read_time, blk_write_time 
		  )		  
	      VALUES
	      (
	       current_snapshot_timestamp ,
		   database_rec.id ,
	       pg_stat_snapshot.dbid ,pg_stat_snapshot.userid ,pg_stat_snapshot.queryid,pg_stat_snapshot.query,pg_stat_snapshot.calls,
	       pg_stat_snapshot.total_time,pg_stat_snapshot.min_time ,pg_stat_snapshot.max_time,pg_stat_snapshot.mean_time, pg_stat_snapshot.stddev_time ,
	       pg_stat_snapshot.rows ,pg_stat_snapshot.shared_blks_hit ,pg_stat_snapshot.shared_blks_read ,pg_stat_snapshot.shared_blks_dirtied ,pg_stat_snapshot.shared_blks_written , 
           pg_stat_snapshot.local_blks_hit , pg_stat_snapshot.local_blks_read , pg_stat_snapshot.local_blks_dirtied , pg_stat_snapshot.local_blks_written , 
	       pg_stat_snapshot.temp_blks_read , pg_stat_snapshot.temp_blks_written , pg_stat_snapshot.blk_read_time , pg_stat_snapshot.blk_write_time 	   
	      );
		  
        END LOOP;

        PERFORM dblink_disconnect('LINK1');  
				
	  END LOOP ;--FOR database_rec IN SELECT * FROM database WHERE endpoint_id = endpoint_rec.id 
    
  END LOOP;

RETURN TRUE;  
END
$$ LANGUAGE plpgsql;

نتیجے کے طور پر، میز میں وقت کی کچھ مدت کے بعد pg_stat_history ہمارے پاس ٹیبل کے مواد کے سنیپ شاٹس کا ایک سیٹ ہوگا۔ pg_stat_statements ہدف ڈیٹا بیس.

اصل میں رپورٹنگ

آسان سوالات کا استعمال کرتے ہوئے، آپ کافی مفید اور دلچسپ رپورٹس حاصل کر سکتے ہیں۔

ایک مقررہ مدت کے لیے جمع کردہ ڈیٹا

درخواست کریں۔

SELECT 
  database_id , 
  SUM(calls) AS calls ,SUM(total_time)  AS total_time ,
  SUM(rows) AS rows , SUM(shared_blks_hit)  AS shared_blks_hit,
  SUM(shared_blks_read) AS shared_blks_read ,
  SUM(shared_blks_dirtied) AS shared_blks_dirtied,
  SUM(shared_blks_written) AS shared_blks_written , 
  SUM(local_blks_hit) AS local_blks_hit , 
  SUM(local_blks_read) AS local_blks_read , 
  SUM(local_blks_dirtied) AS local_blks_dirtied , 
  SUM(local_blks_written)  AS local_blks_written,
  SUM(temp_blks_read) AS temp_blks_read, 
  SUM(temp_blks_written) temp_blks_written , 
  SUM(blk_read_time) AS blk_read_time , 
  SUM(blk_write_time) AS blk_write_time
FROM 
  pg_stat_history
WHERE 
  queryid IS NULL AND
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
GROUP BY database_id ;

ڈی بی ٹائم

to_char(وقفہ '1 ملی سیکنڈ' * pg_total_stat_history_rec.total_time, 'HH24:MI:SS.MS')

I/O ٹائم

to_char(وقفہ '1 ملی سیکنڈ' * ( pg_total_stat_history_rec.blk_read_time + pg_total_stat_history_rec.blk_write_time ), 'HH24:MI:SS.MS')

TOP10 SQL بذریعہ کل_وقت

درخواست کریں۔

SELECT 
  queryid , 
  SUM(calls) AS calls ,
  SUM(total_time)  AS total_time  	
FROM 
  pg_stat_history
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT 
GROUP BY queryid 
ORDER BY 3 DESC 
LIMIT 10
------------------------------------------------------------------ ----------------------------------- | TOP10 SQL بذریعہ کل عملدرآمد کے وقت | #| queryid| کالز | کالز %| کل_وقت (ایم ایس) | ڈی بی ٹائم % +---------+------------+------------+------------+ ------ ------------------------------ +------------ | 1| 821760255| 2| .00001|00:03:23.141(203141.681 ms.)| 5.42 | 2| 4152624390| 2| .00001|00:03:13.929( 193929.215 ms.)| 5.17 | 3| 1484454471| 4| .00001|00:02:09.129( 129129.057 ms.)| 3.44 | 4| 655729273 | 1| .00000|00:02:01.869(121869.981 ms.)| 3.25 | 5| 2460318461| 1| .00000|00:01:33.113(93113.835 ms.)| 2.48 | 6| 2194493487 | 4| .00001|00:00:17.377( 17377.868 ms.)| .46 | 7| 1053044345| 1| .00000|00:00:06.156(6156.352 ms.)| .16 | 8| 3644780286| 1| .00000|00:00:01.063(1063.830 ms.)| .03

TOP10 SQL بذریعہ کل I/O وقت

درخواست کریں۔

SELECT 
  queryid , 
  SUM(calls) AS calls ,
  SUM(blk_read_time + blk_write_time)  AS io_time
FROM 
  pg_stat_history
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
GROUP BY  queryid 
ORDER BY 3 DESC 
LIMIT 10
------------------------------------------------------------------ --------------------------------------------------- | TOP10 SQL بذریعہ کل I/O وقت | #| queryid| کالز | کالز %| I/O وقت (ms) --------------------------------------------------------------- ------ -- | 1| 4152624390| 2| .00001|00:08:31.616(511616.592 ms.)| 31.06 | 2| 821760255| 2| .00001|00:08:27.099(507099.036 ms.)| 30.78 | 3| 655729273 | 1| .00000|00:05:02.209(302209.137 ms.)| 18.35 | 4| 2460318461| 1| .00000|00:04:05.981(245981.117 ms.)| 14.93 | 5| 1484454471| 4| .00001|00:00:39.144(39144.221 ms.)| 2.38 | 6| 2194493487 | 4| .00001|00:00:18.182(18182.816 ms.)| 1.10 | 7| 1053044345| 1| .00000|00:00:16.611(16611.722 ms.)| 1.01 | 8| 3644780286| 1| .00000|00:00:00.436(436.205 ms.)| .03

عمل درآمد کے زیادہ سے زیادہ وقت کے لحاظ سے TOP10 SQL

درخواست کریں۔

SELECT 
  id AS snapshotid , 
  queryid , 
  snapshot_timestamp ,  
  max_time 
FROM 
  pg_stat_history 
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
ORDER BY 4 DESC 
LIMIT 10

------------------------------------------------------------------ ------------------------------------------------------------------ | TOP10 SQL بذریعہ زیادہ سے زیادہ عملدرآمد کے وقت | #| سنیپ شاٹ | snapshotID| queryid| زیادہ سے زیادہ_وقت (ایم ایس) +------+------+ --+----------------------------------------- | 1| 05.04.2019/01/03 4169:655729273 | 00 | 02| 01.869:121869.981:2 (04.04.2019 ms.) | 17| 00/4153/821760255 00:01 | 41.570 | 101570.841| 3:04.04.2019:16 (00 ms.) | 4146| 821760255/00/01 41.570:101570.841 | 4| 04.04.2019| 16:00:4144 (4152624390 ms.) | 00| 01/36.964/96964.607 5:04.04.2019 | 17| 00| 4151:4152624390:00(01 ms.) | 36.964| 96964.607/6/05.04.2019 10:00 | 4188| 1484454471| 00:01:33.452(93452.150 ms.) | 7| 04.04.2019/17/00 4150:2460318461 | 00 | 01| 33.113:93113.835:8 (04.04.2019 ms.) | 15| 00/4140/1484454471 00:00 | 11.892| 11892.302| 9:04.04.2019:16(00 ms.) | 4145| 1484454471/00/00 11.892:11892.302 | 10| 04.04.2019| 17:00:4152 (1484454471 ms.) | 00| 00/11.892/11892.302 XNUMX:XNUMX | XNUMX| XNUMX| XNUMX:XNUMX:XNUMX (XNUMX ms.) | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX | XNUMX | XNUMX| XNUMX:XNUMX:XNUMX (XNUMX ms.)

TOP10 SQL بذریعہ شیئرڈ بفر پڑھنے/لکھیں۔

درخواست کریں۔

SELECT 
  id AS snapshotid , 
  queryid ,
  snapshot_timestamp , 
  shared_blks_read , 
  shared_blks_written 
FROM 
  pg_stat_history
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT AND
  ( shared_blks_read > 0 OR shared_blks_written > 0 )
ORDER BY 4 DESC  , 5 DESC 
LIMIT 10
------------------------------------------------------------------ ------------------------------------------------------------------ | TOP10 SQL بذریعہ مشترکہ بفر ریڈ/رائٹ | #| سنیپ شاٹ | snapshotID| queryid| مشترکہ بلاکس پڑھیں | مشترکہ بلاکس لکھتے ہیں +---------------------------------- ------------------------- +---------------------- | 1| 04.04.2019/17/00 4153:821760255 | 797308 | 0| 2 | 04.04.2019 | 16| 00/4146/821760255 797308:0 | 3| 05.04.2019| 01 | 03 | 4169| 655729273/797158/0 4:04.04.2019 | 16 | 00| 4144 | 4152624390 | 756514| 0/5/04.04.2019 17:00 | 4151| 4152624390| 756514| 0 | 6| 04.04.2019/17/00 4150:2460318461 | 734117| 0| 7| 04.04.2019 | 17| 00/4155/3644780286 52973:0 | 8| 05.04.2019| 01 | 03 | 4168| 1053044345/52818/0 9:04.04.2019 | 15 | 00| 4141 | 2194493487 | 52813| 0/10/04.04.2019 16:00 | 4147 | 2194493487| 52813 | 0 | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX | XNUMX| XNUMX | XNUMX | XNUMX | XNUMX| XNUMX/XNUMX/XNUMX XNUMX:XNUMX | XNUMX | XNUMX | XNUMX | XNUMX ------------------------------------------------- ----------------------------------------------------------------------------------

زیادہ سے زیادہ عملدرآمد کے وقت کے حساب سے درخواستوں کی تقسیم کا ہسٹوگرام

درخواستوں

SELECT  
  MIN(max_time) AS hist_min  , 
  MAX(max_time) AS hist_max , 
  (( MAX(max_time) - MIN(min_time) ) / hist_columns ) as hist_width
FROM 
  pg_stat_history 
WHERE 
  queryid IS NOT NULL AND
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT ;

SELECT 
  SUM(calls) AS calls
FROM 
  pg_stat_history 
WHERE 
  queryid IS NOT NULL AND
  database_id =DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT AND 
  ( max_time >= hist_current_min AND  max_time < hist_current_max ) ;
|------------------------------------------------ ---------------------------------------------------------------------------------- | MAX_TIME HISTOGRAM | کل کالز: 33851920 | MIN TIME: 00:00:01.063 | زیادہ سے زیادہ وقت: 00:02:01.869 ------------------------------------------------- ------------------------------------------------------------------ | کم از کم دورانیہ | زیادہ سے زیادہ دورانیہ | کالز -------------------------------- ---------------------+------------| 00:00:01.063 (1063.830 ms.) | 00:00:13.144 (13144.445 ms.) | 9 | 00:00:13.144 (13144.445 ms.) | 00:00:25.225 (25225.060 ms.) | 0 | 00:00:25.225 (25225.060 ms.) | 00:00:37.305 (37305.675 ms.) | 0 | 00:00:37.305 (37305.675 ms.) | 00:00:49.386 (49386.290 ms.) | 0 | 00:00:49.386 (49386.290 ms.) | 00:01:01.466 (61466.906 ms.) | 0 | 00:01:01.466 (61466.906 ms.) | 00:01:13.547 (73547.521 ms.) | 0 | 00:01:13.547 (73547.521 ms.) | 00:01:25.628 (85628.136 ms.) | 0 | 00:01:25.628 (85628.136 ms.) | 00:01:37.708 (97708.751 ms.) | 4 | 00:01:37.708 (97708.751 ms.) | 00:01:49.789 (109789.366 ms.) | 2 | 00:01:49.789 (109789.366 ms.) | 00:02:01.869 (121869.981 ms.) | 0

TOP10 سنیپ شاٹس بذریعہ استفسار فی سیکنڈ

درخواستوں

--pg_qps.sql
--Calculate Query Per Second 
CREATE OR REPLACE FUNCTION pg_qps( pg_stat_history_id integer ) RETURNS double precision AS $$
DECLARE
 pg_stat_history_rec record ;
 prev_pg_stat_history_id integer ;
 prev_pg_stat_history_rec record;
 total_seconds double precision ;
 result double precision;
BEGIN 
  result = 0 ;
  
  SELECT *
  INTO pg_stat_history_rec
  FROM 
    pg_stat_history
  WHERE id = pg_stat_history_id ;

  IF pg_stat_history_rec.snapshot_timestamp IS NULL 
  THEN
    RAISE EXCEPTION 'ERROR - Not found pg_stat_history for id = %',pg_stat_history_id;
  END IF ;  
  
 --RAISE NOTICE 'pg_stat_history_id = % , snapshot_timestamp = %', pg_stat_history_id , 
 pg_stat_history_rec.snapshot_timestamp ;
  
  SELECT 
    MAX(id)   
  INTO
    prev_pg_stat_history_id
  FROM
    pg_stat_history
  WHERE 
    database_id = pg_stat_history_rec.database_id AND
	queryid IS NULL AND
	id < pg_stat_history_rec.id ;

  IF prev_pg_stat_history_id IS NULL 
  THEN
    RAISE NOTICE 'Not found previous pg_stat_history shapshot for id = %',pg_stat_history_id;
	RETURN NULL ;
  END IF;
  
  SELECT *
  INTO prev_pg_stat_history_rec
  FROM 
    pg_stat_history
  WHERE id = prev_pg_stat_history_id ;
  
  --RAISE NOTICE 'prev_pg_stat_history_id = % , prev_snapshot_timestamp = %', prev_pg_stat_history_id , prev_pg_stat_history_rec.snapshot_timestamp ;    

  total_seconds = extract(epoch from ( pg_stat_history_rec.snapshot_timestamp - prev_pg_stat_history_rec.snapshot_timestamp ));
  
  --RAISE NOTICE 'total_seconds = % ', total_seconds ;    
  
  --RAISE NOTICE 'calls = % ', pg_stat_history_rec.calls ;      
  
  IF total_seconds > 0 
  THEN
    result = pg_stat_history_rec.calls / total_seconds ;
  ELSE
   result = 0 ; 
  END IF;
   
 RETURN result ;
END
$$ LANGUAGE plpgsql;


SELECT 
  id , 
  snapshot_timestamp ,
  calls , 	
  total_time , 
  ( select pg_qps( id )) AS QPS ,
  blk_read_time ,
  blk_write_time
FROM 
  pg_stat_history
WHERE 
  queryid IS NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT AND
  ( select pg_qps( id )) IS NOT NULL 
ORDER BY 5 DESC 
LIMIT 10
|------------------------------------------------ ---------------------------------------------------------------------------------- | QueryPerSeconds نمبروں کے ذریعہ ترتیب دیے گئے TOP10 سنیپ شاٹس ------------------------------------------------------ ------------------------------------------------------------------ --------------------------------------------------| #| سنیپ شاٹ | snapshotID| کالز | کل ڈی بی ٹائم | QPS| I/O وقت | I/O وقت % +------+------------ ------------------------------------------ --------------------------- +------------| 1| 04.04.2019/20/04 4161:5758631 | 00| 06| 30.513:390513.926:1573.396(00 ms.)| 00 | 01.470:1470.110:376 (2 ms.)| .04.04.2019 | 17| 00/4149/3529197 00:11 | 48.830 | 708830.618 | 980.332:00:12(47.834 ms.)| 767834.052 | 108.324:3:04.04.2019(16 ms.)| 00 | 4143| 3525360/00/10 13.492:613492.351 | 979.267 | 00| 08:41.396:521396.555(84.988 ms.)| 4 | 04.04.2019:21:03(4163 ms.)| 2781536 | 00| 03/06.470/186470.979 785.745:00 | 00 | 00.249 | 249.865:134:5(04.04.2019 ms.)| 19 | 03:4159:2890362(00 ms.)| .03 | 16.784| 196784.755 776.979:00 | 00 | 01.441 | 1441.386:732:6(04.04.2019 ms.)| 14 | 00:4137:2397326 (00 ms.)| .04 | 43.033| 283033.854/665.924/00 00:00.024 | 24.505 | 009 | 7:04.04.2019:15(00 ms.)| 4139 | 2394416:00:04(51.435 ms.)| .291435.010 | 665.116| 00/00/12.025 12025.895:4.126 | 8 | 04.04.2019 | 13:00:4135(2373043 ms.)| 00| 04:26.791:266791.988(659.179 ms.)| 00 | 00| 00.064 64.261:024 | 9| 05.04.2019 | 01:03:4167 (4387191 ms.)| 00 | 06:51.380:411380.293(609.332 ms.)| .00 | 05| 18.847/318847.407/77.507 10:04.04.2019 | 18 | 01| 4157:1145596:00(01 ms.)| 19.217 | 79217.372:313.004:00(00 ms.)| 01.319 | 1319.676| 1.666/XNUMX/XNUMX XNUMX:XNUMX | XNUMX | XNUMX | XNUMX:XNUMX:XNUMX(XNUMX ms.)| XNUMX | XNUMX:XNUMX:XNUMX( XNUMX ms.)| XNUMX

QueryPerSeconds اور I/O ٹائم کے ساتھ گھنٹے کے حساب سے عملدرآمد کی تاریخ

درخواست کریں۔

SELECT 
  id , 
  snapshot_timestamp ,
  calls , 	
  total_time , 
  ( select pg_qps( id )) AS QPS ,
  blk_read_time ,
  blk_write_time
FROM 
  pg_stat_history
WHERE 
  queryid IS NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
ORDER BY 2
|-----------------------------------------------------------------------------------------------
| HOURLY EXECUTION HISTORY  WITH QueryPerSeconds and I/O Time
-----------------------------------------------------------------------------------------------------------------------------------------------
| QUERY PER SECOND HISTORY
|    #|          snapshot| snapshotID|      calls|                      total dbtime|        QPS|                          I/O time| I/O time %
+-----+------------------+-----------+-----------+----------------------------------+-----------+----------------------------------+-----------
|    1|  04.04.2019 11:00|       4131|       3747|  00:00:00.835(       835.374 ms.)|      1.041|  00:00:00.000(          .000 ms.)|       .000
|    2|  04.04.2019 12:00|       4133|    1002722|  00:01:52.419(    112419.376 ms.)|    278.534|  00:00:00.149(       149.105 ms.)|       .133
|    3|  04.04.2019 13:00|       4135|    2373043|  00:04:26.791(    266791.988 ms.)|    659.179|  00:00:00.064(        64.261 ms.)|       .024
|    4|  04.04.2019 14:00|       4137|    2397326|  00:04:43.033(    283033.854 ms.)|    665.924|  00:00:00.024(        24.505 ms.)|       .009
|    5|  04.04.2019 15:00|       4139|    2394416|  00:04:51.435(    291435.010 ms.)|    665.116|  00:00:12.025(     12025.895 ms.)|      4.126
|    6|  04.04.2019 16:00|       4143|    3525360|  00:10:13.492(    613492.351 ms.)|    979.267|  00:08:41.396(    521396.555 ms.)|     84.988
|    7|  04.04.2019 17:00|       4149|    3529197|  00:11:48.830(    708830.618 ms.)|    980.332|  00:12:47.834(    767834.052 ms.)|    108.324
|    8|  04.04.2019 18:01|       4157|    1145596|  00:01:19.217(     79217.372 ms.)|    313.004|  00:00:01.319(      1319.676 ms.)|      1.666
|    9|  04.04.2019 19:03|       4159|    2890362|  00:03:16.784(    196784.755 ms.)|    776.979|  00:00:01.441(      1441.386 ms.)|       .732
|   10|  04.04.2019 20:04|       4161|    5758631|  00:06:30.513(    390513.926 ms.)|   1573.396|  00:00:01.470(      1470.110 ms.)|       .376
|   11|  04.04.2019 21:03|       4163|    2781536|  00:03:06.470(    186470.979 ms.)|    785.745|  00:00:00.249(       249.865 ms.)|       .134
|   12|  04.04.2019 23:03|       4165|    1443155|  00:01:34.467(     94467.539 ms.)|    200.438|  00:00:00.015(        15.287 ms.)|       .016
|   13|  05.04.2019 01:03|       4167|    4387191|  00:06:51.380(    411380.293 ms.)|    609.332|  00:05:18.847(    318847.407 ms.)|     77.507
|   14|  05.04.2019 02:03|       4171|     189852|  00:00:10.989(     10989.899 ms.)|     52.737|  00:00:00.539(       539.110 ms.)|      4.906
|   15|  05.04.2019 03:01|       4173|       3627|  00:00:00.103(       103.000 ms.)|      1.042|  00:00:00.004(         4.131 ms.)|      4.010
|   16|  05.04.2019 04:00|       4175|       3627|  00:00:00.085(        85.235 ms.)|      1.025|  00:00:00.003(         3.811 ms.)|      4.471
|   17|  05.04.2019 05:00|       4177|       3747|  00:00:00.849(       849.454 ms.)|      1.041|  00:00:00.006(         6.124 ms.)|       .721
|   18|  05.04.2019 06:00|       4179|       3747|  00:00:00.849(       849.561 ms.)|      1.041|  00:00:00.000(          .051 ms.)|       .006
|   19|  05.04.2019 07:00|       4181|       3747|  00:00:00.839(       839.416 ms.)|      1.041|  00:00:00.000(          .062 ms.)|       .007
|   20|  05.04.2019 08:00|       4183|       3747|  00:00:00.846(       846.382 ms.)|      1.041|  00:00:00.000(          .007 ms.)|       .001
|   21|  05.04.2019 09:00|       4185|       3747|  00:00:00.855(       855.426 ms.)|      1.041|  00:00:00.000(          .065 ms.)|       .008
|   22|  05.04.2019 10:00|       4187|       3797|  00:01:40.150(    100150.165 ms.)|      1.055|  00:00:21.845(     21845.217 ms.)|     21.812

تمام ایس کیو ایل سلیکٹس کا متن

درخواست کریں۔

SELECT 
  queryid , 
  query 
FROM 
  pg_stat_history
WHERE 
  queryid IS NOT NULL AND 
  database_id = DATABASE_ID  AND
  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT
GROUP BY queryid , query

کل

جیسا کہ آپ دیکھ سکتے ہیں، کافی آسان ذرائع کا استعمال کرتے ہوئے، آپ ڈیٹا بیس کے کام کے بوجھ اور حالت کے بارے میں بہت سی مفید معلومات حاصل کر سکتے ہیں۔

نوٹ:اگر ہم استفسارات میں queryid کو ریکارڈ کرتے ہیں، تو ہمیں ایک علیحدہ استفسار کی تاریخ ملے گی (جگہ بچانے کے لیے، علیحدہ استفسار کے لیے رپورٹس کو چھوڑ دیا جاتا ہے)۔

لہذا، استفسار کی کارکردگی پر شماریاتی ڈیٹا دستیاب اور جمع کیا جاتا ہے۔
پہلا مرحلہ "شماریاتی اعداد و شمار کا مجموعہ" مکمل ہو گیا ہے۔

آپ دوسرے مرحلے پر جا سکتے ہیں - "کارکردگی میٹرکس ترتیب دینا"۔
PostgreSQL استفسار کی کارکردگی کی نگرانی۔ حصہ 1 - رپورٹنگ

لیکن یہ بالکل مختلف کہانی ہے۔

جاری رکھنا ...

ماخذ: www.habr.com

نیا تبصرہ شامل کریں