ملحقات PostgreSQL في قاعدة بيانات Azure لـPostgreSQL - الخادم المرن

يطبق على: قاعدة بيانات Azure لـ PostgreSQL - الخادم المرن

يوفر خادم Azure Database for PostgreSQL المرن القدرة على توسيع وظائف قاعدة البيانات باستخدام الملحقات. تجمع الملحقات عناصر SQL متعددة ذات صلة في حزمة واحدة يمكن تحميلها أو إزالتها من قاعدة البيانات باستخدام أمر. بعد تحميلها في قاعدة البيانات، تعمل الملحقات مثل الميزات المضمنة.

كيفية استخدام الملحقات الخاصة بـ PostgreSQL

قبل تثبيت الملحقات في قاعدة بيانات Azure لخادم PostgreSQL المرن، تحتاج إلى السماح بقائمة هذه الملحقات للاستخدام.

استخدام المدخل الخاص بـ Microsoft Azure:

  1. حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
  2. على الشريط الجانبي، قم بتحديدمعلمات الخادم.
  3. قم بإجراء بحث عن المعلمةazure.extensions.
  4. حدد الملحقات التي ترغب في السماح بها. لقطة شاشة تعرض خادم Azure Database for PostgreSQL المرن - ملحقات قائمة السماح للتثبيت.

استخدام Azure CLI:

يمكنك السماح بملحقات القائمة عبر أمر مجموعة معلمات CLI.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value <extension name>,<extension name>

استخدام قالب ARM: مثال موضح أدناه allowlists extensions dblink, dict_xsyn, pg_buffercache على الخادم mypostgreserver

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "flexibleServers_name": {
            "defaultValue": "mypostgreserver",
            "type": "String"
        },
        "azure_extensions_set_value": {
            "defaultValue": " dblink,dict_xsyn,pg_buffercache",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",
            "apiVersion": "2021-06-01",
            "name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",
            "properties": {
                "value": "[parameters('azure_extensions_set_value')]",
                "source": "user-override"
            }
        }
    ]
}

shared_preload_libraries هي معلمة تكوين خادم تحدد المكتبات التي سيتم تحميلها عند بدء تشغيل خادم Azure Database for PostgreSQL المرن. يجب تحميل أي مكتبات تستخدم الذاكرة المشتركة عبر هذه المعلمة. إذا كان الملحق الخاص بك بحاجة إلى إضافته إلى مكتبات التحميل المسبق المشتركة، فيمكن القيام بهذا الإجراء:

استخدام المدخل الخاص بـ Microsoft Azure:

  1. حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
  2. على الشريط الجانبي، قم بتحديدمعلمات الخادم.
  3. قم بإجراء بحث عن المعلمةshared_preload_libraries.
  4. حدد الملحقات التي ترغب في إضافتها. لقطة شاشة تعرض قاعدة بيانات Azure ل PostgreSQL -إعداد معلمة مكتبات التحميل المسبق المشتركة لتثبيت الملحقات.

استخدام Azure CLI:

يمكنك تعيين shared_preload_libraries عبر أمر مجموعة معلمات CLI.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name shared_preload_libraries --value <extension name>,<extension name>

بعد إدراج الملحقات وتحميلها، يجب تثبيتها في قاعدة البيانات قبل أن تتمكن من استخدامها. لتثبيت ملحق معين، يجب تشغيل الأمر CREATE EXTENSION. يقوم هذا الأمر بتحميل الكائنات المجمعة في قاعدة البيانات الخاصة بك.

إشعار

ملحقات الجهات الخارجية المقدمة في قاعدة بيانات Azure لخادم PostgreSQL المرن هي مصدر مفتوح تعليمة برمجية مرخصة. حاليا، لا نقدم أي ملحقات أو إصدارات ملحقة لجهة خارجية مع نماذج ترخيص متميزة أو خاصة.

تدعم قاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL مجموعة فرعية من ملحقات PostgreSQL الرئيسية كما هو موضح أدناه. تتوفر هذه المعلومات أيضا عن طريق إجراء عملية التشغيل SHOW azure.extensions;. الملحقات غير المدرجة في هذا المستند غير مدعومة على قاعدة بيانات Azure لخادم PostgreSQL المرن. لا يمكنك إنشاء الملحق الخاص بك أو تحميله في قاعدة بيانات Azure لخادم PostgreSQL المرن.

إصدارات ملحقات البرنامج

تتوفر الملحقات التالية في قاعدة بيانات Azure لخادم PostgreSQL المرن:

إشعار

تتطلب الملحقات في الجدول التالي مع العلامة ✔️ تمكين مكتباتها المقابلة في معلمة shared_preload_libraries الخادم.

اسم الملحق الوصف PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer تستخدم لتحليل العنوان الخاص بالعناصر المكونة. يستخدم بشكل عام لدعم خطوة تسوية عنوان الترميز الجغرافي. 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us مثال على مجموعة بيانات العنوان القياسي للولايات المتحدة 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
amcheck دالات للتحقق من تكامل العلاقة 1.3 1.3 1.3 1.2 1.2 1.1
anon (معاينة) أدوات مجهولة هوية البيانات 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️
azure_ai تكامل Azure الذكاء الاصطناعي وخدمات التعلم الآلي ل PostgreSQL 1.0.0 1.1.0 1.0.0 1.0.0 1.0.0 ‏‫غير متوفر‬
azure_storage تكامل Azure ل PostgreSQL 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ ‏‫غير متوفر‬
bloom طريقة الوصول إلى Bloom - فهرس مستند إلى ملف التوقيع 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin دعم فهرسة أنواع البيانات الشائعة في GIN 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist دعم فهرسة أنواع البيانات الشائعة في GiST 1.7 1.7 1.6 1.5 1.5 1.5
citext نوع البيانات لسلاسل الأحرف غير الحساسة لحالة الأحرف 1.6 1.6 1.6 1.6 1.6 1.5
cube نوع البيانات للمكعبات متعددة الأبعاد 1.5 1.5 1.5 1.4 1.4 1.4
dblink الاتصال إلى قواعد بيانات PostgreSQL الأخرى من داخل قاعدة بيانات 1.2 1.2 1.2 1.2 1.2 1.2
dict_int قالب قاموس البحث عن النص للأعداد الصحيحة 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn قالب قاموس البحث عن النص لمعالجة المرادفات الموسعة 1.0 1.0 1.0 1.0 1.0 1.0
earthdistance حساب مسافات الدوائر الكبيرة على سطح الأرض 1.1 1.1 1.1 1.1 1.1 1.1
fuzzystrmatch تحديد أوجه التشابه والمسافة بين السلاسل 1.2 1.1 1.1 1.1 1.1 1.1
hstore نوع البيانات لتخزين مجموعات من أزواج (المفتاح والقيمة) 1.8 1.8 1.8 1.7 1.6 1.5
hypopg الفهارس الافتراضية الخاصة بـPostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
intagg مجمع الأعداد الصحيحة وعداد (قديم) 1.1 1.1 1.1 1.1 1.1 1.1
intarray الدوال والمشغلين ودعم الفهرس لصفائف أحادية الأبعاد من الأعداد الصحيحة 1.5 1.5 1.5 1.3 1.2 1.2
isn أنواع البيانات الخاصة بمعايير ترقيم المنتجات الدولية 1.2 1.2 1.2 1.2 1.2 1.2
lo صيانة الكائنات الكبيرة 1.1 1.1 1.1 1.1 1.1 1.1
login_hook Login_hook - ربط لتنفيذ login_hook.login() في وقت تسجيل الدخول 1.5 1.4 1.4 1.4 1.4 1.4
ltree نوع البيانات للهياكل الهرمية الشبيهة بالأشجار 1.2 1.2 1.2 1.2 1.1 1.1
orafce الوظائف وعوامل التشغيل التي تحاكي مجموعة فرعية من الوظائف والحزم من Oracle RDBMS 4.4 3.24 3.18 3.18 3.18 3.7
pageinspect فحص محتويات صفحات قاعدة البيانات بمستوى منخفض 1.12 1.11 1.9 1.8 1.7 1.7
pgaudit توفير وظائف التدقيق 16.0 ✔️ 1.7 ✔️ 1.6.2 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.2 ✔️
pg_buffercache فحص ذاكرة التخزين المؤقت المشتركة 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron جدولة الوظائف لـ PostgreSQL 1.5 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️
pgcrypto دوال التشفير 1.3 1.3 1.3 1.3 1.3 1.3
pg_failover_slots (معاينة) إدارة فتحة النسخ المتماثل المنطقية لأغراض تجاوز الفشل 1.0.1 1.0.1 1.0.1 1.0.1 1.0.1 1.0.1
pg_freespacemap فحص خريطة المساحة الحرة (FSM) 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan يجعل من الممكن تعديل خطط تنفيذ PostgreSQL باستخدام ما يسمى بالتلميحات في تعليقات SQL. 1.6.0 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical النسخ المتماثل المنطقي ل PostgreSQL 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman الملحق الخاص بإدارة الجداول المقسمة حسب الوقت أو المعرف 4.7.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm بيانات علاقة ما قبل الحرب 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack إعادة تنظيم الجداول في قواعد بيانات PostgreSQL مع الحد الأدنى من التأمينات 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting ملحق PgRouting ‏‫غير متوفر‬ 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks إظهار معلومات التأمين على مستوى الصف 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze أداة لإزالة مساحة غير مستخدمة من علاقة. 1.6 ✔️ 1.6 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️
pg_stat_statements تتبع إحصائيات التخطيط والتنفيذ لجميع عبارات SQL المنفذة 1.10 ✔️ 1.10 ✔️ 1.9 ✔️ 1.8 ✔️ 1.7 ✔️ 1.6 ✔️
pgstattuple إظهار الإحصائيات على مستوى المجموعة 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm قياس تشابه النص والبحث في الفهرس استنادا إلى المدرجات الثلاثية 1.6 1.6 1.6 1.5 1.4 1.4
pg_visibility فحص خريطة الرؤية (VM) ومعلومات الرؤية على مستوى الصفحة 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql اللغة الإجرائية الخاصة بـ PL/pgSQL 1.0 1.0 1.0 1.0 1.0 1.0
plv8 PL/JavaScript (v8) هي عبارة عن لغة إجرائية موثوق بها 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
postgis وظائف ووظائف هندسة PostGIS والجغرافيا 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster أنواع ووظائف PostGIS النقطية 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal الوظائف الخاصة بـ PostGIS SFCGAL 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder أداة الترميز الجغرافي للنمر PostGIS والأداة الترميز الجغرافي العكسية 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology أنواع ووظائف طوبولوجيا PostGIS المكانية 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw برنامج تضمين البيانات الخارجية لخوادم PostgreSQL البعيدة 1.1 1.1 1.1 1.0 1.0 1.0
semver نوع بيانات الإصدار الدلالي 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable - تسجيل متغيرات الجلسة والثوابت ومعالجتها 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo معلومات حول شهادات SSL 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc الوظائف التي تعالج الجداول الكاملة، بما في ذلك الجدولي 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw برنامج تضمين البيانات الخارجية للاستعلام عن قاعدة بيانات TDS (Sybase أو Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb من أجل تمكين إدخالات قابلة للتطوير والاستعلامات المعقدة لبيانات السلاسل الزمنية 2.13.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows طريقة TABLESAMPLE، والتي تقبل عدد الصفوف كحد 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time طريقة TABLESAMPLE، والتي تقبل الوقت بالمللي ثانية كحد 1.0 1.0 1.0 1.0 1.0 1.0
unaccent قاموس البحث عن النص الذي يزيل التمييزات 1.1 1.1 1.1 1.1 1.1 1.1
uuid-ossp إنشاء معرفات فريدة عالميا (UUIDs) 1.1 1.1 1.1 1.1 1.1 1.1
المتجه نوع بيانات المتجه وأساليب الوصول إلى ivfflat وhnsw 0.6.1 0.6.1 0.6.1 0.6.1 0.6.1 0.5.1

يسمح لك dblink و postgres_fdw بالاتصال من قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن إلى آخر، أو إلى قاعدة بيانات أخرى في نفس الخادم. يدعم خادم Azure Database for PostgreSQL المرن كلا من الاتصالات الواردة والصادرة إلى أي خادم PostgreSQL. يحتاج الخادم المرسل إلى السماح بالاتصالات الصادرة إلى الخادم المتلقي. وبالمثل، يحتاج الخادم المتلقي للسماح الاتصالات من خادم الإرسال.

نوصي بنشر الخوادم الخاصة بك مع تكامل الشبكة الظاهرية إذا كنت تخطط لاستخدام هذين الملحقين. يسمح تكامل الشبكة الظاهرية افتراضيا بالاتصالات بين الخوادم في الشبكة الظاهرية. يمكنك أيضا اختيار استخدام مجموعات أمان شبكة الاتصال الظاهرية لتخصيص الوصول.

pg_prewarm

يقوم pg_prewarm الملحق بتحميل البيانات الارتباطية في ذاكرة التخزين المؤقت. يعني التهيئة المسبقة لذاكرة التخزين المؤقت أن الاستعلامات الخاصة بك تتمتع بأوقات استجابة أفضل عند تشغيلها لأول مرة بعد إعادة التشغيل. وظيفة ما قبل الحرب التلقائية غير متوفرة حاليا في قاعدة بيانات Azure لخادم PostgreSQL المرن.

pg_cron

pg_cron هو مجدول مهام بسيط يستند إلى cron لـPostgreSQL يعمل داخل قاعدة البيانات كملحق. pg_cron يمكن استخدام الملحق لتشغيل مهام الصيانة المجدولة داخل قاعدة بيانات PostgreSQL. على سبيل المثال، يمكنك تشغيل فراغ دوري لجدول أو إزالة مهام البيانات القديمة.

يمكن لـpg_cron تشغيل وظائف متعددة بالتوازي، ولكنها تعمل على مثيل واحد على الأكثر من وظيفة في كل مرة. إذا كان من المفترض أن يبدأ تشغيل ثان قبل انتهاء التشغيل الأول، فسيتم وضع التشغيل الثاني في قائمة الانتظار وبدء تشغيله بمجرد اكتمال التشغيل الأول. وهذا يضمن أن الوظائف تعمل تماما عدة مرات كما هو مجدول ولا تعمل بشكل متزامن مع نفسها.

بعض الأمثلة:

لحذف البيانات القديمة يوم السبت في الساعة 3:30 صباحا (GMT).

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

لتشغيل فراغ كل يوم في الساعة 10:00 صباحا (GMT) في قاعدة البيانات postgresالافتراضية .

SELECT cron.schedule('0 10 * * *', 'VACUUM');

لإلغاء جدولة كافة المهام من pg_cron.

SELECT cron.unschedule(jobid) FROM cron.job;

لمشاهدة جميع المهام المجدولة حاليا باستخدام pg_cron.

SELECT * FROM cron.job;

لتشغيل فراغ كل يوم في الساعة 10:00 صباحا (GMT) في قاعدة البيانات "testcron" ضمن حساب دور azure_pg_admin.

SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE);

إشعار

يتم تحميل ملحق pg_cron مسبقا لكل مثيل خادم مرن لقاعدة shared_preload_libraries بيانات Azure ل PostgreSQL داخل قاعدة بيانات postgres لتزويدك بالقدرة على جدولة المهام للتشغيل في قواعد البيانات الأخرى داخل قاعدة بيانات Azure لمثيل قاعدة بيانات الخادم المرن PostgreSQL دون المساس بالأمان. ومع ذلك، لأسباب أمنية، لا يزال يتعين عليك السماح بامتداد القائمةpg_cron وتثبيته باستخدام الأمر CREATE EXTENSION.

pg_cron بدءا من الإصدار 1.4، يمكنك استخدام cron.schedule_in_database الدالتين و cron.alter_job لجدولة وظيفتك في قاعدة بيانات معينة وتحديث جدول موجود على التوالي.

بعض الأمثلة:

لحذف البيانات القديمة يوم السبت في الساعة 3:30 صباحا (GMT) على قاعدة البيانات DBName.

SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');

إشعار

cron_schedule_in_database تسمح الدالة باسم المستخدم كمعلمة اختيارية. يتطلب تعيين اسم المستخدم إلى قيمة غير خالية امتياز مستخدم PostgreSQL الفائق وهو غير مدعوم في قاعدة بيانات Azure لخادم PostgreSQL المرن. تظهر الأمثلة السابقة تشغيل هذه الدالة مع معلمة اسم المستخدم الاختيارية ommitted أو تعيينها إلى null، والتي تقوم بتشغيل المهمة في سياق جدولة المستخدم للوظيفة، والتي يجب أن يكون لها امتيازات دور azure_pg_admin.

لتحديث اسم قاعدة البيانات للجدول الحالي أو تغييره

SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');

pg_failover_slots (معاينة)

يعمل ملحق PG Failover Slots على تحسين خادم Azure Database for PostgreSQL المرن عند العمل مع كل من النسخ المتماثل المنطقي والخوادم الممكنة عالية التوفر. وهو يعالج بشكل فعال التحدي داخل محرك PostgreSQL القياسي الذي لا يحافظ على فتحات النسخ المتماثل المنطقية بعد تجاوز الفشل. يعد الحفاظ على هذه الفتحات أمرا بالغ الأهمية لمنع إيقاف النسخ المتماثل مؤقتا أو عدم تطابق البيانات أثناء تغييرات دور الخادم الأساسي، ما يضمن استمرارية التشغيل وتكامل البيانات.

يبسط الملحق عملية تجاوز الفشل من خلال إدارة النقل الضروري وتنظيف ومزامنة فتحات النسخ المتماثل، مما يوفر انتقالا سلسا أثناء تغييرات دور الخادم. الملحق مدعوم لإصدارات PostgreSQL من 11 إلى 16.

يمكنك العثور على مزيد من المعلومات وكيفية استخدام ملحق PG Failover Slots في صفحة GitHub الخاصة به.

تمكين pg_failover_slots

لتمكين ملحق PG Failover Slots لمثيل خادم Azure Database for PostgreSQL المرن، تحتاج إلى تعديل تكوين الخادم عن طريق تضمين الملحق في مكتبات التحميل المسبق المشتركة للخادم وضبط معلمة خادم معينة. وها هي العملية :

  1. أضف pg_failover_slots إلى مكتبات التحميل المسبق المشتركة للخادم عن طريق تحديث المعلمة shared_preload_libraries .
  2. غير معلمة hot_standby_feedback الخادم إلى on.

تتطلب أي تغييرات على المعلمة shared_preload_libraries إعادة تشغيل الخادم حتى يصبح ساري المفعول.

اتبع هذه الخطوات في مدخل Azure:

  1. سجل الدخول إلى مدخل Microsoft Azure وانتقل إلى صفحة مثيل خادم Azure Database for PostgreSQL المرن.
  2. في القائمة على اليسار، حدد Server parameters.
  3. ابحث عن المعلمة shared_preload_libraries في القائمة وقم بتحرير قيمتها لتضمين pg_failover_slots.
  4. ابحث عن المعلمة hot_standby_feedback واضبط قيمتها على on.
  5. حدد حفظ للحفاظ على التغييرات. الآن، سيكون لديك خيار الحفظ وإعادة التشغيل. اختر هذا للتأكد من أن التغييرات سارية المفعول لأن التعديل shared_preload_libraries يتطلب إعادة تشغيل الخادم.

بتحديد حفظ وإعادة تشغيل، ستتم إعادة تشغيل الخادم تلقائيا، وتطبيق التغييرات التي أجريتها. بمجرد عودة الخادم إلى الاتصال بالإنترنت، يتم تمكين ملحق PG Failover Slots وتشغيله على قاعدة بيانات Azure الأساسية لمثيل الخادم المرن PostgreSQL، وهو جاهز للتعامل مع فتحات النسخ المتماثل المنطقية أثناء عمليات تجاوز الفشل.

pg_stat_statements

يمنحك ملحق pg_stat_statements طريقة عرض لكافة الاستعلامات التي تم تشغيلها على قاعدة البيانات الخاصة بك. وهذا مفيد للحصول على فهم لما يبدو عليه أداء حمل عمل الاستعلام الخاص بك على نظام الإنتاج.

يتم تحميل ملحق pg_stat_statements مسبقا في shared_preload_libraries كل قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن لتوفير وسيلة لتتبع إحصائيات التنفيذ لعبارات SQL. ومع ذلك، لأسباب أمنية، لا يزال يتعين عليك السماح pg_stat_statementsالملحق وتثبيته باستخدام الأمر CREATE EXTENSION . الإعداداتpg_stat_statements.track، التي تتحكم في البيانات التي يتم احتسابها بواسطة الملحق، يتم تعيينه افتراضيًا، مماtop يعني أنه يتم تتبع كافة البيانات الصادرة مباشرة من قبل العملاء. هناك مستويان تعقب آخران هما none و all. هذا الإعداد قابل للتكوين كمعلمة خادم.

هناك مقايضة بين معلومات pg_stat_statements تنفيذ الاستعلام التي يوفرها والتأثير على أداء الخادم أثناء تسجيل كل عبارة SQL. إذا لم تكن تستخدم الملحق pg_stat_statements بنشاط، نوصي بتعيين pg_stat_statements.track إلى none. قد تعتمد بعض خدمات المراقبة التابعة لجهات خارجية على pg_stat_statements تقديم رؤى أداء الاستعلام، لذا تأكد مما إذا كان الأمر كذلك بالنسبة لك أم لا.

TimescaleDB

TimescaleDB هي قاعدة بيانات سلاسل زمنية يتم تجميعها كملحق لـ PostgreSQL. يوفر TimescaleDB وظائف تحليلية موجهة زمنياً، وتحسينات، ومقاييس Postgres لأحمال عمل السلاسل الزمنية. تعرف على المزيد حول TimescaleDB، وهي علامة تجارية مسجلة ل Timescale, Inc. توفر قاعدة بيانات Azure لخادم PostgreSQL المرن إصدار TimescaleDB Apache-2.

تثبيت TimescaleDB

لتثبيت TimescaleDB، بالإضافة إلى ذلك، للسماح بإدراجه، كما هو موضح أعلاه، تحتاج إلى تضمينه في مكتبات التحميل المسبق المشتركة للخادم. يتطلب التغيير في معلمة Postgres shared_preload_librariesإعادة تشغيل الخادم حتى يصبح ساري المفعول. يمكنك تغيير المعلمة باستخدام المدخل الخاص بـ Azure أو PowerShellأو Azure CLI. استخدام المدخل الخاص بـ Microsoft Azure:

  1. حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.

  2. على الشريط الجانبي، قم بتحديدمعلمات الخادم.

  3. قم بإجراء بحث عن المعلمةshared_preload_libraries.

  4. قم بتحديد TimescaleDB.

  5. قم بتحديد حفظ للاحتفاظ بالتغييرات التي أجريتها تتلقى إخطاراً بمجرد حفظ التغيير.

  6. بعد تلقي الإخطار،أعد تشغيل الخادم لتطبيق هذه التغييرات.

يمكنك الآن تمكين TimescaleDB في قاعدة بيانات Azure Database for PostgreSQL المرنة. قم بإجراء اتصال بقاعدة البيانات وإصدار الأمر التالي:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

تلميح

إذا رأيت خطأ، فتأكد من إعادة تشغيل الخادم بعد إجراء عملية حفظ shared_preload_libraries.

يمكنك الآن إنشاء TimescaleDB hypertable من البداية أو ترحيل بيانات السلاسل الزمنية الحالية في PostgreSQL.

استعادة قاعدة بيانات مقياس الوقت باستخدام pg_dump pg_restore

لاستعادة قاعدة بيانات مقياس الوقت باستخدام pg_dump pg_restore، يجب تشغيل إجراءين مساعدين في قاعدة البيانات الوجهة: timescaledb_pre_restore() و timescaledb_post restore().

أولا، قم بإعداد قاعدة البيانات الوجهة:

--create the new database where you'll perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

يمكنك الآن تشغيل pg_dump على قاعدة البيانات الأصلية ثم استعادة pg_restore. بعد الاستعادة، تأكد من بدء عملية تشغيل الأمر التالي في قاعدة البيانات المستعادة:

SELECT timescaledb_post_restore();

لمزيد من التفاصيل حول أسلوب الاستعادة مع قاعدة بيانات ممكنة ل مقياس الوقت، راجع وثائق مقياس الوقت.

استعادة قاعدة بيانات مقياس الوقت باستخدام النسخ الاحتياطي للمقياس الزمني

أثناء تشغيل SELECT timescaledb_post_restore() الإجراء المذكور أعلاه، قد تحصل على خطأ رفض الأذونات أثناء تحديث علامة timescaledb.restoring. يرجع ذلك إلى إذن "تعديل قاعدة البيانات" المحدود في خدمات قاعدة البيانات الخاصة بـCloud PaaS. في هذه الحالة يمكنك تنفيذ أسلوب بديل باستخدام timescaledb-backup أداة لإجراء نسخ احتياطي واستعادة قاعدة بيانات مقياس الوقت. النسخ الاحتياطي ل Timescaledb هو برنامج لجعل تفريغ واستعادة قاعدة البيانات الخاصة بـ TimescaleDB أبسط وأقل عرضة للخطأ وأكثر أداءً.
للقيام بذلك، يجب عليك القيام بما يلي

  1. تثبيت الأدوات كما هو موضح بشكل تفصيليهنا
  2. إنشاء قاعدة بيانات Azure الهدف لمثيل خادم PostgreSQL المرن وقاعدة البيانات
  3. تمكين الملحق الخاص بمقياس الوقت كما هو موضح أعلاه
  4. منح azure_pg_admin دور للمستخدم الذي سيتم استخدامه بواسطة ts-restore
  5. قم بتشغيل ts-restore لاستعادة قاعدة البيانات

يمكن اكتشاف المزيد من التفاصيل حول هذا الموضوع الوارد هنا

إشعار

عند استخدام timescale-backup الأدوات المساعدة للاستعادة إلى Azure، نظرا لأن أسماء مستخدمي قاعدة البيانات لقاعدة بيانات Azure لخادم PostgreSQL الفردي يجب أن تستخدم <user@db-name> التنسيق، تحتاج إلى استبدال @ برمز %40 الأحرف.

pg_hint_plan

pg_hint_plan يجعل من الممكن تعديل خطط تنفيذ PostgreSQL باستخدام ما يسمى "تلميحات" في تعليقات SQL، مثل:

/*+ SeqScan(a) */

pg_hint_plan يقرأ عبارات التلميح في تعليق نموذج خاص مع عبارة SQL الهدف. يبدأ النموذج الخاص بتسلسل الأحرف "/*+" وينتهي ب "*/". تتكون عبارات التلميح من اسم التلميح والمعلمات التالية محاطة بأقواس ومحددة بمسافات. يمكن أن تحدد الأسطر الجديدة لقابلية القراءة كل عبارة تلميح.

مثال:

  /*+
      HashJoin(a b)
      SeqScan(a)
    */
    SELECT *
      FROM pgbench_branches b
      JOIN pgbench_accounts an ON b.bid = a.bid
     ORDER BY a.aid;

يتسبب المثال أعلاه في أن يستخدم المخطط نتائج seq scan على الجدول a ليتم دمجها مع الجدول b ك hash join.

لتثبيت pg_hint_plan، بالإضافة إلى ذلك، للسماح بإدراجه، كما هو موضح أعلاه، تحتاج إلى تضمينه في مكتبات التحميل المسبق المشتركة للخادم. يتطلب التغيير في معلمة Postgres shared_preload_librariesإعادة تشغيل الخادم حتى يصبح ساري المفعول. يمكنك تغيير المعلمة باستخدام المدخل الخاص بـ Azure أو PowerShellأو Azure CLI. استخدام المدخل الخاص بـ Microsoft Azure:

  1. حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.

  2. على الشريط الجانبي، قم بتحديدمعلمات الخادم.

  3. قم بإجراء بحث عن المعلمةshared_preload_libraries.

  4. حدد pg_hint_plan.

  5. قم بتحديد حفظ للاحتفاظ بالتغييرات التي أجريتها تتلقى إخطاراً بمجرد حفظ التغيير.

  6. بعد تلقي الإخطار،أعد تشغيل الخادم لتطبيق هذه التغييرات.

يمكنك الآن تمكين pg_hint_plan قاعدة بيانات Azure لقاعدة بيانات الخادم المرن PostgreSQL. قم بإجراء اتصال بقاعدة البيانات وإصدار الأمر التالي:

CREATE EXTENSION pg_hint_plan;

pg_buffercache

Pg_buffercache يمكن استخدامها لدراسة محتويات shared_buffers. باستخدام هذا الملحق ، يمكنك معرفة ما إذا كانت علاقة معينة مخزنة مؤقتا أم لا (في shared_buffers). يمكن أن يساعدك هذا الملحق في استكشاف مشكلات الأداء وإصلاحها (التخزين المؤقت لمشكلات الأداء ذات الصلة).

هذا جزء من contrib، ومن السهل تثبيت هذا الملحق.

CREATE EXTENSION pg_buffercache;

الملحقات وترقية الإصدار الرئيسي

قدمت قاعدة بيانات Azure لخادم PostgreSQL المرن ميزة ترقية إصدار رئيسي موضعي تقوم بإجراء ترقية موضعية لمثيل خادم Azure Database for PostgreSQL المرن بنقرة واحدة فقط. تعمل ترقية الإصدار الرئيسي الموضعي على تبسيط عملية ترقية خادم Azure Database for PostgreSQL المرن، ما يقلل من تعطيل وصول المستخدمين والتطبيقات إلى الخادم. لا تدعم ترقية الإصدار الرئيسي الموضعي ملحقات معينة، وهناك بعض القيود على ترقية ملحقات معينة. الملحقات Timescaledb وpgaudit وdblink وorafce postgres_fdwغير مدعومة لجميع إصدارات خادم Azure Database for PostgreSQL المرنة عند استخدام ميزة تحديث الإصدار الرئيسي الموضعي.