إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
مخزن الاستعلام هو ميزة في Azure Database for PostgreSQL مثيل خادم مرن يوفر طريقة لتتبع أداء الاستعلام بمرور الوقت. يبسط مخزن الاستعلام استكشاف مشكلات الأداء وإصلاحها من خلال مساعدتك في العثور بسرعة على أطول استعلامات قيد التشغيل وأكثرها استخداما للموارد. يلتقط مخزن الاستعلامات تلقائيا محفوظات الاستعلامات وإحصائيات وقت التشغيل، ويحتفظ بها لمراجعتك. هو يقسم البيانات إلى شرائح حسب الوقت بحيث يمكنك أن ترى أنماط الاستخدام الزمني. يتم تخزين البيانات لجميع المستخدمين وقواعد البيانات والاستعلامات في قاعدة بيانات تسمى azure_sys في قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
تمكين مخزن الاستعلام
يتوفر مخزن الاستعلام للاستخدام دون أي رسوم إضافية. إنها ميزة اشتراك، لذلك لا يتم تمكينها بشكل افتراضي على الخادم. يمكن تمكين مخزن الاستعلامات أو تعطيله بشكل عام لجميع قواعد البيانات على خادم معين ولا يمكن تشغيله أو إيقاف تشغيله لكل قاعدة بيانات.
هام
لا تقم بتمكين مخزن الاستعلام على مستوى التسعير القابل للاندفاع لأنه قد يتسبب في تأثير الأداء.
تمكين مخزن الاستعلام في مدخل Microsoft Azure
- سجل الدخول إلى مدخل Microsoft Azure وحدد مثيل خادم Azure Database for PostgreSQL المرن.
- حدد معلمات الخادم في قسم الإعدادات من القائمة.
- قم بإجراء بحث عن المعلمة
pg_qs.query_capture_mode. - قم بتعيين القيمة إلى
topأوall، اعتمادا على ما إذا كنت تريد تعقب استعلامات المستوى الأعلى أو الاستعلامات المتداخلة أيضا (تلك التي يتم تنفيذها داخل دالة أو إجراء)، وحدد حفظ. السماح بما يصل إلى 20 دقيقة للدفعة الأولى من البيانات للاستمرار فيazure_sysقاعدة البيانات.
تمكين أخذ عينات انتظار مخزن الاستعلام
- قم بإجراء بحث عن المعلمة
pgms_wait_sampling.query_capture_mode. - تعيين القيمة إلى
allو Save.
المعلومات في مخزن الاستعلام
يتكون مخزن الاستعلام من متجرين:
- مخزن إحصائيات وقت التشغيل لاستمرار معلومات إحصائيات تنفيذ الاستعلام.
- مخزن إحصائيات الانتظار لمعلومات إحصائيات الانتظار المستمرة.
تتضمن السيناريوهات الشائعة لاستخدام مخزن الاستعلام ما يلي:
- تحديد عدد المرات التي تم فيها تنفيذ استعلام في إطار زمني معين.
- مقارنة متوسط وقت تنفيذ استعلام عبر نوافذ الوقت لمشاهدة تباينات كبيرة.
- تحديد أطول استعلامات قيد التشغيل في الساعات القليلة الماضية.
- تحديد أهم استعلامات N التي تنتظر الموارد.
- فهم طبيعة انتظار استعلام معين.
لتقليل استخدام المساحة، يتم تجميع إحصائيات تنفيذ وقت التشغيل في مخزن إحصائيات وقت التشغيل عبر نافذة زمنية ثابتة وقابلة للتكوين. يمكن الاستعلام عن المعلومات الموجودة في هذه المخازن باستخدام طرق العرض.
الوصول إلى معلومات مخزن الاستعلام
يتم تخزين بيانات مخزن الاستعلام في azure_sys قاعدة البيانات على مثيل خادم Azure Database for PostgreSQL المرن.
يقوم الاستعلام التالي بإرجاع معلومات حول الاستعلامات التي تم تسجيلها في مخزن الاستعلامات:
SELECT * FROM query_store.qs_view;
ويعيد هذا الاستعلام معلومات حول إحصائيات الانتظار:
SELECT * FROM query_store.pgms_wait_sampling_view;
البحث عن استعلامات الانتظار
تقوم أنواع أحداث الانتظار بدمج أحداث الانتظار المختلفة في مستودعات حسب التشابه. يوفر مخزن الاستعلام نوع حدث الانتظار واسم حدث الانتظار المحدد والاستعلام المعني. القدرة على ربط معلومات الانتظار هذه بإحصائيات وقت تشغيل الاستعلام يعني أنه يمكنك الحصول على فهم أعمق لما يساهم في خصائص أداء الاستعلام.
فيما يلي بعض الأمثلة حول كيفية الحصول على مزيد من الرؤى حول حمل العمل الخاص بك باستخدام إحصائيات الانتظار في مخزن الاستعلام:
| المراقبة | الإجراء |
|---|---|
| انتظارات قفل عالية | تحقق من نصوص الاستعلام للاستعلامات المتأثرة وحدد الكيانات المستهدفة. ابحث في مخزن الاستعلام عن الاستعلامات الأخرى التي يتم تنفيذها بشكل متكرر و/أو ذات مدة عالية ويتم تعديل نفس الكيان. بعد تحديد هذه الاستعلامات، ضع في اعتبارك تغيير منطق التطبيق لتحسين التزامن، أو استخدام مستوى عزل أقل تقييداً. |
| انتظار الإدخال/الإدخال /الإدخال في المخزن المؤقت العالي | ابحث عن الاستعلامات التي بها عدد كبير من القراءات الفعلية في مخزن الاستعلام. إذا كانت تطابق الاستعلامات مع انتظار الإدخال والإخراج العالي، ففكر في تمكين ميزة ضبط الفهرس التلقائي لمعرفة ما إذا كان يمكنها التوصية بإنشاء بعض الفهارس التي قد تقلل من عدد القراءات الفعلية لتلك الاستعلامات. |
| انتظارات الذاكرة العالية | ابحث عن أهم استعلامات استهلاك الذاكرة في مخزن الاستعلامات. ربما تؤخر هذه الاستعلامات المزيد من التقدم في الاستعلامات المتأثرة. |
خيارات الإعداد
عند تمكين مخزن الاستعلام، فإنه يحفظ البيانات في نوافذ التجميع من الطول التي تحددها معلمة خادم pg_qs.interval_length_minutes (افتراضيا إلى 15 دقيقة). لكل نافذة، فإنه يخزن ما يصل إلى 500 استعلامات مميزة لكل نافذة. السمات التي تميز تفرد كل استعلام هي user_id (معرف المستخدم الذي ينفذ الاستعلام)، db_id (معرف قاعدة البيانات الذي ينفذ الاستعلام في سياقه)، query_id (قيمة عدد صحيح تحدد الاستعلام المنفذ بشكل فريد). إذا وصل عدد الاستعلامات المميزة إلى 500 استعلام أثناء الفاصل الزمني المكون، يتم إلغاء تخصيص 5٪ من الاستعلامات المسجلة لتوفير مساحة لمزيد من المعلومات. تلك التي تم إلغاء تخصيصها أولا هي تلك التي تم تنفيذها أقل عدد من المرات.
تتوفر الخيارات التالية لتكوين معلمات Query Store:
| المعلمة | الوصف | الإعداد الافتراضي | نطاق |
|---|---|---|---|
pg_qs.interval_length_minutes (*) |
التقاط الفاصل الزمني بالدقائق لمخزن الاستعلام. يحدد تكرار استمرار البيانات. | 15 |
1 - 30 |
pg_qs.is_enabled_fs |
الاستخدام الداخلي فقط: يتم استخدام هذه المعلمة كمفتاح تبديل تجاوز ميزة. إذا كان يظهر كإيقاف تشغيل، يتم تعطيل مخزن الاستعلام، على الرغم من القيمة المعينة ل pg_qs.query_capture_mode. |
on |
on، off |
pg_qs.max_plan_size |
الحد الأقصى لعدد وحدات البايت المحفوظة من نص خطة الاستعلام حسب مخزن الاستعلام؛ يتم اقتطاع الخطط الأطول. | 7500 |
100 - 10000 |
pg_qs.max_query_text_length |
الحد الأقصى لطول الاستعلام الذي يمكن حفظه؛ يتم اقتطاع الاستعلامات الأطول. | 6000 |
100 - 10000 |
pg_qs.parameters_capture_mode |
ما إذا كان يجب التقاط المعلمات الموضعية للاستعلام ومتى. | capture_parameterless_only |
capture_parameterless_only، capture_first_sample |
pg_qs.query_capture_mode |
عبارات لتعقبها. | none |
none، ، topall |
pg_qs.retention_period_in_days |
نافذة فترة الاستبقاء بالأيام لمخزن الاستعلام. يتم حذف البيانات القديمة تلقائيا. | 7 |
1 - 30 |
pg_qs.store_query_plans |
ما إذا كان يجب حفظ خطط الاستعلام في مخزن الاستعلام. | off |
on، off |
pg_qs.track_utility |
ما إذا كان يجب على مخزن الاستعلام تعقب أوامر الأداة المساعدة. | on |
on، off |
(*) معلمة الخادم الثابت التي تتطلب إعادة تشغيل الخادم لتغيير قيمته لتدخل حيز التنفيذ.
إشعار
إذا قمت بتغيير قيمة pg_qs.max_query_text_length المعلمة، يستمر نص كافة الاستعلامات التي تم التقاطها قبل إجراء التغيير في استخدام نفس query_id sql_query_text. قد يعطي الانطباع بأن القيمة الجديدة لا تسري ولكن بالنسبة للاستعلامات التي لم يتم تسجيلها في مخزن الاستعلامات من قبل، سترى أن نص الاستعلام يستخدم الحد الأقصى للطول الذي تم تكوينه حديثا. هذا حسب التصميم، ويتم شرحه في طرق العرض والوظائف. إذا قمت بتنفيذ query_store.qs_reset، فإنه يزيل جميع المعلومات المسجلة بواسطة مخزن الاستعلام حتى الآن، بما في ذلك النص الذي تم التقاطه لكل معرف استعلام، وإذا تم تنفيذ أي من هذه الاستعلامات مرة أخرى، يتم تطبيق الحد الأقصى للطول الذي تم تكوينه حديثا على النص الذي يتم التقاطه.
تنطبق الخيارات التالية خصيصا على إحصائيات الانتظار:
| المعلمة | الوصف | الإعداد الافتراضي | نطاق |
|---|---|---|---|
pgms_wait_sampling.history_period |
التردد، بالمللي ثانية، حيث يتم أخذ عينات من أحداث الانتظار. | 100 |
1 - 600000 |
pgms_wait_sampling.is_enabled_fs |
الاستخدام الداخلي فقط: يتم استخدام هذه المعلمة كمفتاح تبديل تجاوز ميزة. إذا كان يظهر ك off، يتم تعطيل أخذ عينات الانتظار على الرغم من القيمة المعينة ل pgms_wait_sampling.query_capture_mode. |
on |
on، off |
pgms_wait_sampling.query_capture_mode |
العبارات التي يجب أن يتعقبها pgms_wait_sampling الملحق. |
none |
none، all |
إشعار
pg_qs.query_capture_modeيحل محل .pgms_wait_sampling.query_capture_mode إذا كان pg_qs.query_capture_mode هو none، فلن يكون للإعداد pgms_wait_sampling.query_capture_mode أي تأثير.
استخدم مدخل Microsoft Azure للحصول على قيمة مختلفة لمعلمة أو تعيينها.
طرق العرض والوظائف
يمكنك الاستعلام عن المعلومات المسجلة بواسطة مخزن الاستعلام أو حذفها باستخدام بعض طرق العرض والوظائف المتوفرة query_store في مخطط azure_sys قاعدة البيانات. يمكن لأي شخص في دور PostgreSQL العام استخدام طرق العرض هذه لمشاهدة البيانات في مخزن الاستعلام. تتوفر طرق العرض هذه فقط في قاعدة بيانات azure_sys.
يتم تطبيع الاستعلامات من خلال النظر إلى بنيتها وتجاهل أي شيء غير مهم دلاليا، مثل القيم الحرفية أو الثوابت أو الأسماء المستعارة أو الاختلافات في الغلاف.
إذا كان استعلامين متطابقين دلاليا، حتى إذا استخدما أسماء مستعارة مختلفة لنفس الأعمدة والجداول المشار إليها، يتم تعريفهما بنفس query_id. إذا كان استعلابان يختلفان فقط في القيم الحرفية المستخدمة فيهما، يتم تعريفهما أيضا بنفس query_id. بالنسبة للاستعلامات التي تم تعريفها بنفس query_id، sql_query_text الخاص بها هو الاستعلام الذي تم تنفيذه أولا منذ بدء تشغيل مخزن الاستعلام نشاط التسجيل، أو منذ آخر مرة تم فيها تجاهل البيانات المستمرة بسبب تنفيذ الدالة query_store.qs_reset .
كيفية عمل تسوية الاستعلام
فيما يلي بعض الأمثلة لمحاولة توضيح كيفية عمل هذا التطبيع:
لنفترض أنك قمت بإنشاء جدول باستخدام العبارة التالية:
create table tableOne (columnOne int, columnTwo int);
يمكنك تمكين جمع بيانات Query Store، وتنفيذ مستخدم واحد أو عدة مستخدمين للاستعلامات التالية، بهذا الترتيب الدقيق:
select * from tableOne;
select columnOne, columnTwo from tableOne;
select columnOne as c1, columnTwo as c2 from tableOne as t1;
select columnOne as "column one", columnTwo as "column two" from tableOne as "table one";
تشترك جميع الاستعلامات السابقة في نفس query_id. والنص الذي يحتفظ به Query Store هو نص الاستعلام الأول الذي تم تنفيذه بعد تمكين جمع البيانات. لذلك، سيكون select * from tableOne;.
لا تتطابق مجموعة الاستعلامات التالية، بمجرد تسويتها، مع المجموعة السابقة من الاستعلامات لأن عبارة WHERE تجعلها مختلفة دلاليا:
select columnOne as c1, columnTwo as c2 from tableOne as t1 where columnOne = 1 and columnTwo = 1;
select * from tableOne where columnOne = -3 and columnTwo = -3;
select columnOne, columnTwo from tableOne where columnOne = '5' and columnTwo = '5';
select columnOne as "column one", columnTwo as "column two" from tableOne as "table one" where columnOne = 7 and columnTwo = 7;
ومع ذلك، تشترك جميع الاستعلامات في هذه المجموعة الأخيرة في نفس query_id والنص المستخدم لتعريفها كلها هو الاستعلام الأول في الدفعة select columnOne as c1, columnTwo as c2 from tableOne as t1 where columnOne = 1 and columnTwo = 1;.
وأخيرا، ابحث أدناه عن بعض الاستعلامات التي لا تطابق query_id تلك الموجودة في الدفعة السابقة، والسبب في عدم تطابقها:
الاستعلام:
select columnTwo as c2, columnOne as c1 from tableOne as t1 where columnOne = 1 and columnTwo = 1;
سبب عدم المطابقة: تشير قائمة الأعمدة إلى نفس العمودين (columnOne و ColumnTwo)، ولكن يتم عكس الترتيب الذي تتم الإشارة إليهما به، من columnOne, ColumnTwo الدفعة السابقة إلى ColumnTwo, columnOne في هذا الاستعلام.
الاستعلام:
select * from tableOne where columnTwo = 25 and columnOne = 25;
سبب عدم المطابقة: يتم عكس الترتيب الذي تتم به الإشارة إلى التعبيرات التي تم تقييمها في عبارة WHERE من columnOne = ? and ColumnTwo = ? في الدفعة السابقة إلى ColumnTwo = ? and columnOne = ? في هذا الاستعلام.
الاستعلام:
select abs(columnOne), columnTwo from tableOne where columnOne = 12 and columnTwo = 21;
سبب عدم المطابقة: لم يعد التعبير الأول في قائمة columnOne الأعمدة بعد الآن، ولكن الدالة abs التي تم تقييمها عبر columnOne (abs(columnOne))، وهي ليست مكافئة دلاليا.
الاستعلام:
select columnOne as "column one", columnTwo as "column two" from tableOne as "table one" where columnOne = ceiling(16) and columnTwo = 16;
سبب عدم المطابقة: لا يقيم التعبير الأول في عبارة WHERE المساواة columnOne مع القيمة الحرفية بعد الآن، ولكن مع نتيجة الدالة ceiling التي تم تقييمها على قيمة حرفية، والتي ليست مكافئة دلاليا.
طرق العرض
query_store.qs_view
تقوم طريقة العرض هذه بإرجاع كافة البيانات التي تم الاحتفاظ بها في الجداول الداعمة لمخزن الاستعلام. البيانات التي لا تزال تسجل في الذاكرة للنافذة الزمنية النشطة حاليا، غير مرئية حتى تنتهي النافذة الزمنية، ويتم جمع بياناتها المتقلبة في الذاكرة واستمرارها في الجداول المخزنة على القرص. ترجع طريقة العرض هذه صفا مختلفا لكل قاعدة بيانات مميزة (db_id) والمستخدم (user_id) والاستعلام (query_id).
| الاسم | النوع | المراجع | الوصف |
|---|---|---|---|
runtime_stats_entry_id |
عدد صحيح كبير | معرف من الجدول runtime_stats_entries. | |
user_id |
معرف العنصر | pg_authid.oid | OID للمستخدم الذي قام بتنفيذ العبارة. |
db_id |
معرف العنصر | pg_database.oid | OID لقاعدة البيانات التي تم تنفيذ العبارة فيها. |
query_id |
عدد صحيح كبير | رمز التجزئة الداخلي، المحسوب من شجرة تحليل العبارة. | |
query_sql_text |
varchar(10000) | نص بيان تمثيلي. يتم تجميع الاستعلامات المختلفة ذات البنية نفسها معاً؛ هذا النص هو نص الاستعلامات الأولى في نظام المجموعة. القيمة الافتراضية لأقصى طول لنص الاستعلام هي 6000، ويمكن تعديلها باستخدام معلمة pg_qs.max_query_text_lengthمخزن الاستعلام . إذا تجاوز نص الاستعلام هذه القيمة القصوى، يتم اقتطاعه إلى البايت الأول pg_qs.max_query_text_length . |
|
plan_id |
عدد صحيح كبير | معرف الخطة المقابلة لهذا الاستعلام. | |
start_time |
الطابع الزمني | يتم تجميع الاستعلامات حسب نوافذ الوقت. تحدد معلمة pg_qs.interval_length_minutes الخادم الفترة الزمنية لتلك النوافذ (الافتراضي هو 15 دقيقة). يتوافق هذا العمود مع وقت بدء النافذة التي تم تسجيل هذا الإدخال فيها. |
|
end_time |
الطابع الزمني | وقت الانتهاء المطابق للنافذة الزمنية لهذا الإدخال. | |
calls |
عدد صحيح كبير | عدد المرات التي تم فيها تنفيذ الاستعلام في هذه النافذة الزمنية. لاحظ أنه بالنسبة للاستعلامات المتوازية، يتوافق عدد الاستدعاءات لكل تنفيذ مع 1 لعملية الواجهة الخلفية التي تدفع تنفيذ الاستعلام، بالإضافة إلى العديد من الوحدات الأخرى لكل عملية عامل خلفية يتم تشغيلها للتعاون في تنفيذ الفروع المتوازية لشجرة التنفيذ. | |
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 |
الدقة المزدوجة | إجمالي الوقت الذي أمضته العبارة في قراءة الكتل، بالمللي ثانية (إذا تم تمكين track_io_timing، وإلا فلن تكون هناك أي كتل). | |
blk_write_time |
الدقة المزدوجة | إجمالي الوقت الذي أمضته العبارة في كتابة الكتل، بالمللي ثانية (إذا تم تمكين track_io_timing، وبخلاف ذلك صفر). | |
is_system_query |
منطقيه | تحديد ما إذا كان الدور مع user_id = 10 (azuresu) قام بتنفيذ الاستعلام. يتمتع هذا المستخدم بامتيازات المستخدم الفائق ويستخدم لتنفيذ عمليات وحدة التحكم. نظرا لأن هذه الخدمة هي خدمة PaaS مدارة، فإن Microsoft فقط هي جزء من دور المستخدم الفائق هذا. | |
query_type |
النص | نوع العملية التي يمثلها الاستعلام. القيم المحتملة هي unknown، select، update، insert، delete، merge، utility، ، nothing. undefined |
|
search_path |
النص | قيمة search_path المعينة في وقت التقاط الاستعلام. | |
query_parameters |
النص | تمثيل نصي لكائن JSON بالقيم التي تم تمريرها إلى المعلمات الموضعية لاستعلام ذي معلمات. يملأ هذا العمود قيمته فقط في حالتين: 1) للاستعلامات غير المعلمة. 2) بالنسبة للاستعلامات ذات المعلمات، عندما pg_qs.parameters_capture_mode يتم تعيين إلى capture_first_sample، وإذا كان مخزن الاستعلام يمكنه إحضار قيم معلمات الاستعلام في وقت التنفيذ. |
|
parameters_capture_status |
النص | نوع العملية التي يمثلها الاستعلام. القيم المحتملة هي succeeded (إما أن الاستعلام لم يتم تحديد معلماته أو أنه استعلام ذو معلمات وتم التقاط القيم بنجاح)، disabled (تم تحديد معلمات الاستعلام ولكن، لم يتم التقاط المعلمات لأنه pg_qs.parameters_capture_mode تم تعيينها إلى capture_parameterless_only)، too_long_to_capture (تم تحديد معلمات الاستعلام، ولكن لم يتم التقاط المعلمات لأن طول JSON الناتج الذي سيتم عرضه في query_parameters عمود طريقة العرض هذه، اعتبر طويلا بشكل مفرط حتى يستمر مخزن الاستعلام)، too_many_to_capture (تم وضع معلمات للاستعلام، ولكن لم يتم التقاط المعلمات لأن العدد الإجمالي للمعلمات، اعتبر مفرطا لاستمرار مخزن الاستعلام)، serialization_failed (تم وضع معلمات على الاستعلام، ولكن لا يمكن تسلسل قيمة واحدة على الأقل من القيم التي تم تمريرها كمعلمة إلى نص). |
query_store.query_text_view
تقوم طريقة العرض هذه بإرجاع بيانات نص الاستعلام في Query Store. يوجد صف واحد لكل query_sql_text مميز.
| الاسم | النوع | الوصف |
|---|---|---|
query_text_id |
عدد صحيح كبير | معرف الجدول query_texts |
query_sql_text |
varchar(10000) | نص بيان تمثيلي. يتم تجميع الاستعلامات المختلفة ذات البنية نفسها معاً؛ هذا النص هو نص الاستعلامات الأولى في نظام المجموعة. |
query_type |
Smallint | نوع العملية التي يمثلها الاستعلام. في إصدار PostgreSQL <= 14، تكون 0 القيم المحتملة (غير معروفة)، (تحديد)، 1 (تحديث)، 2 (إدراج)، 3 (حذف)، 45 (أداة مساعدة)، 6 (لا شيء). في إصدار PostgreSQL >= 15، تكون القيم 0 المحتملة (غير معروفة)، (تحديد)، 1 (تحديث)، 2 (إدراج)، 3 (حذف)، 4 (دمج)، 56 (أداة مساعدة)، 7 (لا شيء). |
query_store.pgms_wait_sampling_view
تقوم طريقة العرض هذه بإرجاع بيانات أحداث الانتظار في Query Store. ترجع طريقة العرض هذه صفا مختلفا لكل قاعدة بيانات مميزة (db_id) والمستخدم (user_id) والاستعلام (query_id) والحدث (الحدث).
| الاسم | النوع | المراجع | الوصف |
|---|---|---|---|
start_time |
الطابع الزمني | يتم تجميع الاستعلامات حسب نوافذ الوقت. تحدد معلمة pg_qs.interval_length_minutes الخادم الفترة الزمنية لتلك النوافذ (الافتراضي هو 15 دقيقة). يتوافق هذا العمود مع وقت بدء النافذة التي تم تسجيل هذا الإدخال فيها. |
|
end_time |
الطابع الزمني | وقت الانتهاء المطابق للنافذة الزمنية لهذا الإدخال. | |
user_id |
معرف العنصر | pg_authid.oid | معرف الكائن للمستخدم الذي قام بتنفيذ العبارة. |
db_id |
معرف العنصر | pg_database.oid | معرف الكائن لقاعدة البيانات التي تم تنفيذ العبارة فيها. |
query_id |
عدد صحيح كبير | رمز التجزئة الداخلي، المحسوب من شجرة تحليل العبارة. | |
event_type |
النص | نوع الحدث الذي تنتظره الخلفية. | |
event |
النص | اسم حدث الانتظار إذا كانت الخلفية قيد الانتظار حاليا. | |
calls |
العدد الصحيح | عدد المرات التي تم فيها التقاط نفس الحدث. |
إشعار
للحصول على قائمة بالقيم المحتملة event_type في عمودي event العرض وquery_store.pgms_wait_sampling_view، راجع الوثائق الرسمية pg_stat_activity وابحث عن المعلومات التي تشير إلى أعمدة بنفس الأسماء.
query_store.query_plans_view
طريقة العرض هذه ترجع خطة الاستعلام التي تم استخدامها لتنفيذ استعلام. يوجد صف واحد لكل معرف قاعدة بيانات مميز، ومعرف الاستعلام. يسجل مخزن الاستعلام فقط خطط الاستعلام للاستعلامات غير القابلة للعبث.
| الاسم | النوع | المراجع | الوصف |
|---|---|---|---|
plan_id |
عدد صحيح كبير | قيمة التجزئة من خطة الاستعلام التي تم تسويتها التي تنتجها EXPLAIN. إنه في شكل عادي لأنه يستبعد التكاليف المقدرة لعقد الخطة واستخدام المخازن المؤقتة. | |
db_id |
معرف العنصر | pg_database.oid | OID لقاعدة البيانات التي تم تنفيذ العبارة فيها. |
query_id |
عدد صحيح كبير | رمز التجزئة الداخلي، المحسوب من شجرة تحليل العبارة. | |
plan_text |
varchar(10000) | خطة تنفيذ العبارة المعطاة التكاليف=خطأ، المخازن المؤقتة=خطأ، وتنسيق=نص. إخراج مماثل للإخراج الذي تنتجه EXPLAIN. |
الوظائف
query_store.qs_reset
تتجاهل هذه الدالة كافة الإحصائيات التي تم جمعها حتى الآن بواسطة مخزن الاستعلام. إنه يتجاهل الإحصائيات للنوافذ الزمنية المغلقة بالفعل، والتي تستمر بالفعل في الجداول الموجودة على القرص. كما أنه يتجاهل الإحصائيات للنافذة الزمنية الحالية، والتي توجد فقط في الذاكرة. يمكن فقط لأعضاء دور مسؤول الخادم (azure_pg_admin) تنفيذ هذه الوظيفة.
query_store.staging_data_reset
تتجاهل هذه الدالة جميع الإحصائيات التي تم جمعها في الذاكرة بواسطة مخزن الاستعلام (أي البيانات الموجودة في الذاكرة التي لم يتم مسحها بعد إلى جداول القرص التي تدعم استمرار البيانات المجمعة لمخزن الاستعلام). يمكن فقط لأعضاء دور مسؤول الخادم (azure_pg_admin) تنفيذ هذه الوظيفة.
وضع القراءة فقط
عندما يكون مثيل خادم Azure Database for PostgreSQL المرن في وضع القراءة فقط، مثل عند تعيين المعلمة default_transaction_read_only إلى on، أو إذا تم تمكين وضع القراءة فقط تلقائيا بسبب الوصول إلى سعة التخزين، فإن مخزن الاستعلام لا يلتقط أي بيانات.
لا يؤدي تمكين مخزن الاستعلام على خادم يحتوي على نسخ متماثلة للقراءة إلى تمكين مخزن الاستعلام تلقائيا على أي من النسخ المتماثلة المقروءة. حتى إذا قمت بتمكينه على أي من النسخ المتماثلة للقراءة، لا يسجل مخزن الاستعلام الاستعلامات المنفذة على أي نسخ متماثلة للقراءة، لأنها تعمل في وضع القراءة فقط حتى تقوم بترقية هذه الاستعلامات إلى النسخة الأساسية.
المحتوى ذو الصلة
- سيناريوهات الاستخدام مخزن الاستعلام
- أفضل ممارسات مخزن الاستعلام
- Query Performance Insight