ملحقات PostgreSQL في قاعدة بيانات Azure لـPostgreSQL - الخادم المرن
ينطبق على: قاعدة بيانات Azure ل PostgreSQL - خادم مرن
يوفر خادم Azure Database for PostgreSQL المرن القدرة على توسيع وظائف قاعدة البيانات باستخدام الملحقات. تجمع الملحقات عناصر SQL متعددة ذات صلة في حزمة واحدة يمكن تحميلها أو إزالتها من قاعدة البيانات باستخدام أمر. بعد تحميلها في قاعدة البيانات، تعمل الملحقات مثل الميزات المضمنة.
كيفية استخدام الملحقات الخاصة بـ PostgreSQL
قبل تثبيت الملحقات في قاعدة بيانات Azure لخادم PostgreSQL المرن، تحتاج إلى السماح بقائمة هذه الملحقات للاستخدام.
استخدام المدخل الخاص بـ Microsoft Azure:
- حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
- من قائمة الموارد، ضمن قسم الإعدادات ، حدد معلمات الخادم.
- قم بإجراء بحث عن المعلمة
azure.extensions
. - حدد الملحقات التي ترغب في السماح بها.
استخدام Azure CLI:
يمكنك السماح بملحقات القائمة عبر أمر مجموعة معلمات CLI.
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --subscription <subscription_id> --name azure.extensions --value <extension_name>,<extension_name>
استخدام قالب ARM: المثال التالي لملحقات dblink
قوائم السماح ، dict_xsyn
، pg_buffercache
على خادم اسمه :postgres-test-server
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"flexibleServers_name": {
"defaultValue": "postgres-test-server",
"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:
- حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
- من قائمة الموارد، ضمن قسم الإعدادات ، حدد معلمات الخادم.
- قم بإجراء بحث عن المعلمة
shared_preload_libraries
. - حدد المكتبات التي ترغب في إضافتها.
استخدام Azure CLI:
يمكنك تعيين shared_preload_libraries
عبر أمر مجموعة معلمات CLI.
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --subscription <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 17 | PostgreSQL 16 | PostgreSQL 15 | PostgreSQL 14 | PostgreSQL 13 | PostgreSQL 12 | PostgreSQL 11 |
---|---|---|---|---|---|---|---|---|
address_standardizer | تستخدم لتحليل العنوان الخاص بالعناصر المكونة. يستخدم بشكل عام لدعم خطوة تسوية عنوان الترميز الجغرافي. | 3.5.0alpha2 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
address_standardizer_data_us | مثال على مجموعة بيانات العنوان القياسي للولايات المتحدة | 3.5.0alpha2 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
العمر (معاينة) | يوفر قدرات قاعدة بيانات الرسم البياني | غير متوفر | 1.5.0 ✔️ | 1.5.0 ✔️ | 1.5.0 ✔️ | 1.5.0 ✔️ | غير متوفر | غير متوفر |
amcheck | دالات للتحقق من تكامل العلاقة | 1.4 | 1.3 | 1.3 | 1.3 | 1.2 | 1.2 | 1.1 |
anon (معاينة) | أدوات مجهولة هوية البيانات | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ |
azure_ai | تكامل Azure الذكاء الاصطناعي وخدمات التعلم الآلي ل PostgreSQL | غير متوفر | 1.1.0 | 1.1.0 | 1.1.0 | 1.1.0 | 1.1.0 | غير متوفر |
azure_storage | تكامل Azure ل PostgreSQL | غير متوفر | 1.5 ✔️ | 1.5 ✔️ | 1.5 ✔️ | 1.5 ✔️ | 1.5 ✔️ | غير متوفر |
bloom | طريقة الوصول إلى Bloom - فهرس مستند إلى ملف التوقيع | 1.0 | 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 | 1.3 |
btree_gist | دعم فهرسة أنواع البيانات الشائعة في GiST | 1.7 | 1.7 | 1.7 | 1.6 | 1.5 | 1.5 | 1.5 |
citext | نوع البيانات لسلاسل الأحرف غير الحساسة لحالة الأحرف | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 1.5 |
cube | نوع البيانات للمكعبات متعددة الأبعاد | 1.5 | 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 | 1.2 |
dict_int | قالب قاموس البحث عن النص للأعداد الصحيحة | 1.0 | 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 | 1.0 |
earthdistance | حساب مسافات الدوائر الكبيرة على سطح الأرض | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
fuzzystrmatch | تحديد أوجه التشابه والمسافة بين السلاسل | 1.2 | 1.2 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
hstore | نوع البيانات لتخزين مجموعات من أزواج (المفتاح والقيمة) | 1.8 | 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 | 1.4.0 |
intagg | مجمع الأعداد الصحيحة وعداد (قديم) | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
intarray | الدوال والمشغلين ودعم الفهرس لصفائف أحادية الأبعاد من الأعداد الصحيحة | 1.5 | 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 | 1.2 |
lo | صيانة الكائنات الكبيرة | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
login_hook | Login_hook - ربط لتنفيذ login_hook.login() في وقت تسجيل الدخول | 1.5 | 1.5 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 |
ltree | نوع البيانات للهياكل الهرمية الشبيهة بالأشجار | 1.3 | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 | 1.1 |
oracle_fdw | برنامج تضمين البيانات الخارجية لقواعد بيانات Oracle | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | غير متوفر |
orafce | الوظائف وعوامل التشغيل التي تحاكي مجموعة فرعية من الوظائف والحزم من Oracle RDBMS | 4.9 | 4.4 | 3.24 | 3.18 | 3.18 | 3.18 | 3.7 |
pageinspect | فحص محتويات صفحات قاعدة البيانات بمستوى منخفض | 1.12 | 1.12 | 1.11 | 1.9 | 1.8 | 1.7 | 1.7 |
pgaudit | توفير وظائف التدقيق | 16.0 ✔️ | 16.0 ✔️ | 1.7 ✔️ | 1.6.2 ✔️ | 1.5 ✔️ | 1.4.3 ✔️ | 1.3.2 ✔️ |
pg_buffercache | فحص ذاكرة التخزين المؤقت المشتركة | 1.5 | 1.4 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_cron | جدولة الوظائف لـ PostgreSQL | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.4-1 ✔️ |
pgcrypto | دوال التشفير | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_freespacemap | فحص خريطة المساحة الحرة (FSM) | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_hint_plan | يجعل من الممكن تعديل خطط تنفيذ PostgreSQL باستخدام ما يسمى بالتلميحات في تعليقات SQL. | 1.7.0 ✔️ | 1.6.0 ✔️ | 1.5 ✔️ | 1.4 ✔️ | 1.3.7 ✔️ | 1.3.7 ✔️ | 1.3.7 ✔️ |
pglogical | النسخ المتماثل المنطقي ل PostgreSQL | 2.4.5 ✔️ | 2.4.4 ✔️ | 2.4.2 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ |
pg_partman | الملحق الخاص بإدارة الجداول المقسمة حسب الوقت أو المعرف | 5.0.1 ✔️ | 5.0.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 ✔️ | 1.2 ✔️ |
pg_repack | إعادة تنظيم الجداول في قواعد بيانات PostgreSQL مع الحد الأدنى من التأمينات | 1.4.7 | 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 | 1.2 |
pg_squeeze | أداة لإزالة مساحة غير مستخدمة من علاقة. | 1.7 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.5 ✔️ | 1.5 ✔️ | 1.5 ✔️ | 1.5 ✔️ |
pg_stat_statements | تتبع إحصائيات التنفيذ لجميع عبارات SQL المنفذة | 1.11 ✔️ | 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 | 1.5 |
pg_trgm | قياس تشابه النص والبحث في الفهرس استنادا إلى المدرجات الثلاثية | 1.6 | 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 | 1.2 |
plpgsql | اللغة الإجرائية الخاصة بـ PL/pgSQL | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
plv8 | PL/JavaScript (v8) هي عبارة عن لغة إجرائية موثوق بها | 3.1.7 | 3.1.7 | 3.1.7 | 3.0.0 | 3.0.0 | 3.0.0 | 3.0.0 |
postgis | وظائف ووظائف هندسة PostGIS والجغرافيا | 3.5.0alpha2 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_raster | أنواع ووظائف PostGIS النقطية | 3.5.0alpha2 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_sfcgal | الوظائف الخاصة بـ PostGIS SFCGAL | 3.5.0alpha2 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_tiger_geocoder | أداة الترميز الجغرافي للنمر PostGIS والأداة الترميز الجغرافي العكسية | 3.5.0alpha2 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_topology | أنواع ووظائف طوبولوجيا PostGIS المكانية | 3.5.0alpha2 | 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.1 | 1.0 | 1.0 | 1.0 |
postgres_protobuf | مخازن البروتوكول المؤقتة ل PostgreSQL | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | غير متوفر |
semver | نوع بيانات الإصدار الدلالي | 0.32.1 | 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 | 3.3 |
sslinfo | معلومات حول شهادات SSL | 1.2 | 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 | 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 | 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 | 1.0 |
tsm_system_time | طريقة TABLESAMPLE، والتي تقبل الوقت بالمللي ثانية كحد | 1.0 | 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 | 1.1 |
uuid-ossp | إنشاء معرفات فريدة عالميا (UUIDs) | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
المتجه | نوع بيانات المتجه وأساليب الوصول إلى ivfflat وhnsw | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.5.1 |
ترقية ملحقات PostgreSQL
يسمح بالترقيات الموضعية لملحقات قاعدة البيانات من خلال أمر بسيط. تمكن هذه الميزة العملاء من تحديث ملحقات الجهات الخارجية تلقائيا إلى أحدث الإصدارات، مع الحفاظ على الأنظمة الحالية والآمنة دون جهد يدوي.
تحديث الملحقات
لتحديث ملحق مثبت إلى أحدث إصدار متوفر مدعوم من Azure، استخدم أمر SQL التالي:
ALTER EXTENSION <extension_name> UPDATE;
يبسط هذا الأمر إدارة ملحقات قاعدة البيانات من خلال السماح للمستخدمين بالترقية يدويا إلى أحدث إصدار تمت الموافقة عليه من قبل Azure، ما يعزز كل من التوافق والأمان.
القيود
في حين أن تحديث الملحقات مباشر، هناك قيود معينة:
- تحديد إصدار معين: لا يدعم الأمر التحديث إلى إصدارات وسيطة من ملحق. يتم تحديثه دائما إلى أحدث إصدار متوفر.
- الرجوع إلى إصدار سابق: لا يدعم تخفيض إصدار ملحق إلى إصدار سابق. إذا كان الرجوع إلى إصدار أدنى ضروريا، فقد يتطلب مساعدة الدعم ويعتمد على توفر الإصدار السابق.
ملحقات مثبتة
لسرد الملحقات المثبتة حاليا على قاعدة البيانات الخاصة بك، استخدم أمر SQL التالي:
SELECT * FROM pg_extension;
الملحقات المتوفرة وإصداراتها
للتحقق من إصدارات الملحق المتوفرة لتثبيت قاعدة البيانات الحالية، استعلم عن pg_available_extensions
طريقة عرض كتالوج النظام. على سبيل المثال، لتحديد الإصدار المتوفر للملحق azure_ai
، قم بتنفيذ:
SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';
توفر هذه الأوامر رؤى ضرورية حول تكوينات ملحق قاعدة البيانات الخاصة بك، مما يساعد على الحفاظ على أنظمتك بكفاءة وأمان. من خلال تمكين التحديثات السهلة لأحدث إصدارات الملحقات، تستمر قاعدة بيانات Azure ل PostgreSQL في دعم الإدارة القوية والآمنة والفعالة لتطبيقات قاعدة البيانات الخاصة بك.
اعتبارات خاصة بقاعدة بيانات Azure لخادم PostgreSQL المرن
فيما يلي قائمة بالملحقات المدعومة التي تتطلب بعض الاعتبارات المحددة عند استخدامها في قاعدة بيانات Azure لخدمة الخادم المرن PostgreSQL. يتم فرز القائمة أبجديا.
dblink
يسمح لك dblink بالاتصال من قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن إلى آخر، أو إلى قاعدة بيانات أخرى في نفس الخادم. يدعم خادم Azure Database for PostgreSQL المرن كلا من الاتصالات الواردة والصادرة إلى أي خادم PostgreSQL. يحتاج الخادم المرسل إلى السماح بالاتصالات الصادرة إلى الخادم المتلقي. وبالمثل، يحتاج الخادم المتلقي للسماح الاتصالات من خادم الإرسال.
نوصي بنشر الخوادم الخاصة بك مع تكامل الشبكة الظاهرية إذا كنت تخطط لاستخدام هذا الملحق. يسمح تكامل الشبكة الظاهرية افتراضيا بالاتصالات بين الخوادم في الشبكة الظاهرية. يمكنك أيضا اختيار استخدام مجموعات أمان شبكة الاتصال الظاهرية لتخصيص الوصول.
pg_buffercache
pg_buffercache
يمكن استخدامها لدراسة محتويات shared_buffers. باستخدام هذا الملحق ، يمكنك معرفة ما إذا كانت علاقة معينة مخزنة مؤقتا أم لا (في shared_buffers
). يمكن أن يساعدك هذا الملحق في استكشاف مشكلات الأداء وإصلاحها (التخزين المؤقت لمشكلات الأداء ذات الصلة).
هذا الملحق متكامل مع التثبيت الأساسي ل PostgreSQL، ومن السهل تثبيته.
CREATE EXTENSION pg_buffercache;
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 المرن، تحتاج إلى تعديل تكوين الخادم عن طريق تضمين الملحق في مكتبات التحميل المسبق المشتركة للخادم وضبط معلمة خادم معينة. وها هي العملية :
- أضف
pg_failover_slots
إلى مكتبات التحميل المسبق المشتركة للخادم عن طريق تحديث المعلمةshared_preload_libraries
. - غير معلمة
hot_standby_feedback
الخادم إلىon
.
تتطلب أي تغييرات على المعلمة shared_preload_libraries
إعادة تشغيل الخادم حتى يصبح ساري المفعول.
استخدام المدخل الخاص بـ Microsoft Azure:
- حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
- من قائمة الموارد، ضمن قسم الإعدادات ، حدد معلمات الخادم.
- ابحث عن المعلمة
shared_preload_libraries
وقم بتحرير قيمتها لتضمينpg_failover_slots
. - ابحث عن المعلمة
hot_standby_feedback
واضبط قيمتها علىon
. - حدد حفظ للحفاظ على التغييرات. الآن، لديك خيار الحفظ وإعادة التشغيل. اختر هذا للتأكد من أن التغييرات سارية المفعول، لأن التعديل
shared_preload_libraries
يتطلب إعادة تشغيل الخادم.
من خلال تحديد حفظ وإعادة تشغيل، يقوم الخادم تلقائيا بإعادة التشغيل، وتطبيق التغييرات التي تم إجراؤها للتو. بمجرد عودة الخادم إلى الاتصال بالإنترنت، يتم تمكين ملحق PG Failover Slots وتشغيله على قاعدة بيانات Azure الأساسية لمثيل الخادم المرن PostgreSQL، وهو جاهز للتعامل مع فتحات النسخ المتماثل المنطقية أثناء عمليات تجاوز الفشل.
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، بالإضافة إلى ذلك، للسماح بإدراجه، كما هو موضح في كيفية استخدام ملحقات PostgreSQL، تحتاج إلى تضمينه في مكتبات التحميل المسبق المشتركة للخادم. يتطلب التغيير في معلمة Postgres shared_preload_libraries
إعادة تشغيل الخادم حتى يصبح ساري المفعول. يمكنك تغيير المعلمة باستخدام المدخل الخاص بـ Azure أو PowerShellأو Azure CLI.
استخدام المدخل الخاص بـ Microsoft Azure:
- حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
- من قائمة الموارد، ضمن قسم الإعدادات ، حدد معلمات الخادم.
- ابحث عن المعلمة
shared_preload_libraries
وقم بتحرير قيمتها لتضمينpg_hint_plan
. - حدد حفظ للحفاظ على التغييرات. الآن، لديك خيار الحفظ وإعادة التشغيل. اختر هذا للتأكد من أن التغييرات سارية المفعول، لأن التعديل
shared_preload_libraries
يتطلب إعادة تشغيل الخادم. يمكنك الآن تمكين pg_hint_plan قاعدة بيانات Azure لقاعدة بيانات الخادم المرن PostgreSQL. قم بإجراء اتصال بقاعدة البيانات وإصدار الأمر التالي:
CREATE EXTENSION pg_hint_plan;
pg_prewarm
يقوم pg_prewarm
الملحق بتحميل البيانات الارتباطية في ذاكرة التخزين المؤقت. يعني التهيئة المسبقة لذاكرة التخزين المؤقت أن الاستعلامات الخاصة بك تتمتع بأوقات استجابة أفضل عند تشغيلها لأول مرة بعد إعادة التشغيل. وظيفة ما قبل الحرب التلقائية غير متوفرة حاليا في قاعدة بيانات Azure لخادم PostgreSQL المرن.
pg_repack
السؤال النموذجي الذي يطرحه الأشخاص عند محاولة استخدام هذا الملحق لأول مرة هو: هل pg_repack ملحقا أو قابلا للتنفيذ من جانب العميل مثل psql أو pg_dump؟
الجواب على ذلك هو أنه في الواقع كلاهما. يحتفظ pg_repack/lib بالتعليمات البرمجية للملحق، بما في ذلك المخطط والبيانات الاصطناعية SQL التي يقوم بإنشائها، ومكتبة C التي تنفذ التعليمات البرمجية للعديد من هذه الدالات. من ناحية أخرى، يحتفظ pg_repack/bin بالتعليمات البرمجية لتطبيق العميل، والذي يعرف كيفية التفاعل مع أدوات قابلية البرمجة التي تم إنشاؤها بواسطة الملحق. يهدف تطبيق العميل هذا إلى تخفيف تعقيد التفاعل مع الواجهات المختلفة التي تظهر بواسطة الملحق من جانب الخادم، عن طريق تزويد المستخدم ببعض خيارات سطر الأوامر التي يسهل فهمها. تطبيق العميل دون الملحق الذي تم إنشاؤه على قاعدة البيانات المشار إليه، عديم الفائدة. سيكون الملحق من جانب الخادم بمفرده يعمل بكامل طاقته، ولكنه يتطلب من المستخدم فهم نمط تفاعل معقد يتكون من تنفيذ الاستعلامات لاسترداد البيانات المستخدمة كمدخل للوظائف التي ينفذها الملحق.
تم رفض الإذن لإعادة حزمة المخطط
اعتبارا من الآن، نظرا للطريقة التي نمنح بها أذونات لمخطط repack الذي تم إنشاؤه بواسطة هذا الملحق، فإنه مدعوم فقط لتشغيل وظيفة pg_repack من سياق azure_pg_admin
.
قد تلاحظ أنه إذا حاول مالك جدول، وهو ليس azure_pg_admin
، تشغيل pg_repack، ينتهي به الأمر إلى تلقي خطأ كما يلي:
NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR: permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()
لتجنب هذا الخطأ، تأكد من تشغيل pg_repack من سياق azure_pg_admin
.
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
تقديم رؤى أداء الاستعلام، لذا تأكد مما إذا كان الأمر كذلك بالنسبة لك أم لا.
postgres_fdw
يسمح لك postgres_fdw بالاتصال من قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن إلى آخر، أو إلى قاعدة بيانات أخرى في نفس الخادم. يدعم خادم Azure Database for PostgreSQL المرن كلا من الاتصالات الواردة والصادرة إلى أي خادم PostgreSQL. يحتاج الخادم المرسل إلى السماح بالاتصالات الصادرة إلى الخادم المتلقي. وبالمثل، يحتاج الخادم المتلقي للسماح الاتصالات من خادم الإرسال.
نوصي بنشر الخوادم الخاصة بك مع تكامل الشبكة الظاهرية إذا كنت تخطط لاستخدام هذا الملحق. يسمح تكامل الشبكة الظاهرية افتراضيا بالاتصالات بين الخوادم في الشبكة الظاهرية. يمكنك أيضا اختيار استخدام مجموعات أمان شبكة الاتصال الظاهرية لتخصيص الوصول.
pgstattuple
عند استخدام ملحق "pgstattuple" لمحاولة الحصول على إحصائيات المجموعة من الكائنات المحفوظة في pg_toast
المخطط في إصدارات Postgres 11 إلى 13، ستتلقى خطأ "تم رفض الإذن للمخطط pg_toast".
تم رفض الإذن pg_toast المخطط
لا يمكن للعملاء الذين يستخدمون إصدارات PostgreSQL من 11 إلى 13 على Azure Database for Flexible Server استخدام الملحق pgstattuple
على الكائنات داخل pg_toast
المخطط.
في PostgreSQL 16 و17، pg_read_all_data
يتم منح الدور تلقائيا إلى azure_pg_admin
، مما pgstattuple
يسمح بالعمل بشكل صحيح. في PostgreSQL 14 و15، يمكن للعملاء منح pg_read_all_data
الدور azure_pg_admin
يدويا لتحقيق نفس النتيجة. ومع ذلك، في PostgreSQL 11 إلى 13، pg_read_all_data
الدور غير موجود.
لا يمكن للعملاء منح الأذونات الضرورية مباشرة. إذا كنت بحاجة إلى أن تكون قادرا على التشغيل pgstattuple
للوصول إلى الكائنات ضمن المخطط، يرجى المتابعة pg_toast
لإنشاء طلب دعم Azure.
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:
- حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
- من قائمة الموارد، ضمن قسم الإعدادات ، حدد معلمات الخادم.
- ابحث عن المعلمة
shared_preload_libraries
وقم بتحرير قيمتها لتضمينTimescaleDB
. - حدد حفظ للحفاظ على التغييرات. الآن، لديك خيار الحفظ وإعادة التشغيل. اختر هذا للتأكد من أن التغييرات سارية المفعول، لأن التعديل
shared_preload_libraries
يتطلب إعادة تشغيل الخادم. يمكنك الآن تمكين 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 want to 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 أبسط وأقل عرضة للخطأ وأكثر أداءً.
للقيام بذلك، يجب عليك القيام بما يلي
- تثبيت الأدوات كما هو موضح بشكل تفصيليهنا
- إنشاء قاعدة بيانات Azure الهدف لمثيل خادم PostgreSQL المرن وقاعدة البيانات
- تمكين الملحق الخاص بمقياس الوقت كما هو موضح أعلاه
- منح
azure_pg_admin
دور للمستخدم الذي سيتم استخدامه بواسطة ts-restore - قم بتشغيل ts-restore لاستعادة قاعدة البيانات
يمكن اكتشاف المزيد من التفاصيل حول هذا الموضوع الوارد هنا
الملحقات وترقية الإصدار الرئيسي
قدمت قاعدة بيانات Azure لخادم PostgreSQL المرن ميزة ترقية إصدار رئيسي موضعي تقوم بإجراء ترقية موضعية لمثيل خادم Azure Database for PostgreSQL المرن بنقرة واحدة فقط. تعمل ترقية الإصدار الرئيسي الموضعي على تبسيط عملية ترقية خادم Azure Database for PostgreSQL المرن، ما يقلل من تعطيل وصول المستخدمين والتطبيقات إلى الخادم. لا تدعم ترقية الإصدار الرئيسي الموضعي ملحقات معينة، وهناك بعض القيود على ترقية ملحقات معينة. الملحقات Timescaledb وpgaudit وdblink وorafce postgres_fdw غير مدعومة لجميع إصدارات خادم Azure Database for PostgreSQL المرنة عند استخدام ميزة تحديث الإصدار الرئيسي الموضعي.