مشاركة عبر


استخدام الموارد / الذاكرة

autovacuum_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها من قبل كل عملية عامل إخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية -1
القيم المسموح بها -1-2097151
نوع المعلمة ديناميكي
Documentation autovacuum_work_mem

commit_timestamp_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت للطابع الزمني للالتزام. حدد 0 لتحديد هذه القيمة كجزء من shared_buffers.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 0-131072
نوع المعلمة ثابت
Documentation commit_timestamp_buffers

dynamic_shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة الديناميكية المستخدمة.
نوع البيانات التعداد
القيمة الافتراضية posix
القيم المسموح بها posix
نوع المعلمة للقراءة فقط
Documentation dynamic_shared_memory_type

hash_mem_multiplier

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف مضاعفات "work_mem" لاستخدامها في جداول التجزئة.
نوع البيانات عددي
القيمة الافتراضية 2
القيم المسموح بها 1-1000
نوع المعلمة ديناميكي
Documentation hash_mem_multiplier

huge_pages

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف استخدام صفحات ضخمة على Linux أو Windows.
نوع البيانات التعداد
القيمة الافتراضية try
القيم المسموح بها on,off,try
نوع المعلمة ثابت
Documentation huge_pages

الوصف

الصفحات الضخمة هي ميزة تسمح بإدارة الذاكرة في كتل أكبر. يمكنك عادة إدارة الكتل التي يصل حجمها إلى 2 ميغابايت، على عكس الصفحات القياسية التي تبلغ سعتها 4 كيلوبايت.

يمكن أن يوفر استخدام الصفحات الضخمة مزايا أداء تقوم بتفريغ وحدة المعالجة المركزية بشكل فعال:

  • إنها تقلل من النفقات العامة المرتبطة بمهام إدارة الذاكرة مثل عدد أقل من الأخطاء في المخزن المؤقت للترجمة (TLB).
  • أنها تقصر الوقت اللازم لإدارة الذاكرة.

على وجه التحديد ، في PostgreSQL ، يمكنك استخدام صفحات ضخمة فقط لمنطقة الذاكرة المشتركة. يتم تخصيص جزء كبير من منطقة الذاكرة المشتركة للمخازن المؤقتة المشتركة.

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

Recommendations

  • بالنسبة للخوادم التي تحتوي على موارد ذاكرة كبيرة، تجنب تعطيل الصفحات الضخمة. قد يؤدي تعطيل الصفحات الضخمة إلى الإضرار بالأداء.
  • إذا بدأت بخادم أصغر لا يدعم الصفحات الضخمة ولكنك تتوقع التوسع إلى خادم يدعم ذلك، فاحتفظ بالإعداد huge_pages للانتقال TRY السلس والأداء الأمثل.

ملاحظات خاصة ب Azure

بالنسبة للخوادم التي تحتوي على أربعة أو أكثر من vCores ، يتم تخصيص صفحات ضخمة تلقائيا من نظام التشغيل الأساسي. الميزة غير متوفرة للخوادم التي تحتوي على أقل من أربعة نواة افتراضية. يتم ضبط عدد الصفحات الضخمة تلقائيا في حالة تغيير أي إعدادات للذاكرة المشتركة، بما في ذلك التعديلات على shared_buffers.

huge_page_size

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف حجم الصفحة الضخمة التي يجب طلبها.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0
نوع المعلمة للقراءة فقط
Documentation huge_page_size

io_combine_limit

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف الحد من حجم قراءة البيانات وكتابتها.
نوع البيانات العدد الصحيح
القيمة الافتراضية 16
القيم المسموح بها 1-128
نوع المعلمة ديناميكي
Documentation io_combine_limit

io_max_combine_limit

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف حد على مستوى الخادم يثبت io_combine_limit.
نوع البيانات العدد الصحيح
القيمة الافتراضية 16
القيم المسموح بها 1-128
نوع المعلمة ديناميكي
Documentation io_max_combine_limit

io_max_concurrency

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف الحد الأقصى لعدد عمليات الإدخال والإخراج التي يمكن لعملية واحدة تنفيذها في وقت واحد.
نوع البيانات العدد الصحيح
القيمة الافتراضية 64
القيم المسموح بها -1-1024
نوع المعلمة ثابت
Documentation io_max_concurrency

io_method

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد طريقة تنفيذ الإدخال/الإخراج غير المتزامن.
نوع البيانات التعداد
القيمة الافتراضية worker
القيم المسموح بها worker,sync
نوع المعلمة ثابت
Documentation io_method

io_workers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف عدد عمليات عامل IO، ل io_method=عامل.
نوع البيانات العدد الصحيح
القيمة الافتراضية 3
القيم المسموح بها 1-32
نوع المعلمة ديناميكي
Documentation io_workers

logical_decoding_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في فك التشفير المنطقي. يمكن استخدام هذا القدر من الذاكرة بواسطة كل مخزن مؤقت داخلي لإعادة الترتيب قبل الانسكاب على القرص.
نوع البيانات العدد الصحيح
القيمة الافتراضية 65536
القيم المسموح بها 64-2147483647
نوع المعلمة ديناميكي
Documentation logical_decoding_work_mem

maintenance_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد الحد الأقصى للذاكرة المراد استخدامها في عمليات الصيانة. يتضمن ذلك عمليات مثل VACUUM و CREATE INDEX.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 1024-2097151
نوع المعلمة ديناميكي
Documentation maintenance_work_mem

الوصف

maintenance_work_mem هي معلمة تكوين في PostgreSQL. يتحكم في مقدار الذاكرة المخصصة لعمليات الصيانة، مثل VACUUM، CREATE INDEXو.ALTER TABLE على عكس work_mem، الذي يؤثر على تخصيص الذاكرة لعمليات الاستعلام ، maintenance_work_mem يتم حجزه للمهام التي تحافظ على بنية قاعدة البيانات وتحسينها.

! [ملاحظة] قد يؤدي الضبط maintenance_work_mem على القيم شديدة العدوانية إلى حدوث خطأ في نفاد الذاكرة بشكل دوري في النظام. من المهم للغاية فهم مقدار الذاكرة المتوفرة على الخادم ، وعدد العمليات المتزامنة التي يمكن أن تخصص الذاكرة للمهام الموضحة سابقا ، قبل إجراء تغييرات على هذه المعلمة.

النقاط الرئيسية

  • غطاء الذاكرة الفراغية: إذا كنت ترغب في تسريع تنظيف المجموعات الميتة عن طريق الزيادة maintenance_work_mem، فكن على دراية بأن VACUUM لديها قيودا مضمنة لجمع معرفات المجموعات الميتة. يمكنه استخدام ما يصل إلى 1 جيجابايت فقط من الذاكرة لهذه العملية.
  • فصل الذاكرة للتفريغ التلقائي: يمكنك استخدام الإعداد autovacuum_work_mem للتحكم في الذاكرة التي تستخدمها عمليات التفريغ التلقائي بشكل مستقل. يعمل هذا الإعداد كمجموعة فرعية من maintenance_work_mem. يمكنك تحديد مقدار استخدام التفريغ التلقائي للذاكرة دون التأثير على تخصيص الذاكرة لمهام الصيانة الأخرى وعمليات تعريف البيانات.

ملاحظات خاصة ب Azure

يتم حساب القيمة الافتراضية لمعلمة maintenance_work_mem الخادم عند توفير مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن، استنادا إلى اسم المنتج الذي تحدده لحسابه. لن يكون لأي تغييرات لاحقة في تحديد المنتج على الحساب الذي يدعم الخادم المرن أي تأثير على القيمة الافتراضية لمعلمة maintenance_work_mem الخادم لهذا المثيل.

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة maintenance_work_mem وفقا للقيم الموجودة في الصيغة التالية.

الصيغة المستخدمة لحساب قيمة maintenance_work_mem هي (long)(82.5 * ln(memoryGiB) + 40) * 1024.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة maintenance_work_mem
2 جيبي بايت 99,328 كيلوبايت
4 جيجابيت 157,696 كيلوبايت
8 جيجابيت 216,064 كيلوبايت
16 جيجابيت 274,432 كيلوبايت
32 غيغابايت 332,800 كيلوبايت
48 جيبي بايت 367,616 كيلوبايت
64 جيبي بايت 392,192 كيلوبايت
80 جيبي بايت 410,624 كيلوبايت
128 جيبي بايت 450,560 كيلوبايت
160 جيجابايت 468,992 كيلوبايت
192 جيجابايت 484,352 كيلوبايت
256 غيغابايت 508,928 كيلوبايت
384 جيجابايت 542,720 كيلوبايت
432 جيجابايت 552,960 كيلوبايت
672 جيبي بايت 590,848 كيلوبايت

max_prepared_transactions

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المعاملات المعدة في وقت واحد.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0-262143
نوع المعلمة ثابت
Documentation max_prepared_transactions

max_stack_depth

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعمق المكدس، بالكيلو بايت.
نوع البيانات العدد الصحيح
القيمة الافتراضية 2048
القيم المسموح بها 2048
نوع المعلمة للقراءة فقط
Documentation max_stack_depth

min_dynamic_shared_memory

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف مقدار الذاكرة المشتركة الديناميكية المحجوزة عند بدء التشغيل.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0
نوع المعلمة للقراءة فقط
Documentation min_dynamic_shared_memory

multixact_member_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف لتعيين حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت لعضو MultiXact.
نوع البيانات العدد الصحيح
القيمة الافتراضية 32
القيم المسموح بها 16-131072
نوع المعلمة ثابت
Documentation multixact_member_buffers

multixact_offset_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت لإزاحة MultiXact.
نوع البيانات العدد الصحيح
القيمة الافتراضية 16
القيم المسموح بها 16-131072
نوع المعلمة ثابت
Documentation multixact_offset_buffers

notify_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يضبط حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت للرسائل LISTEN/NOTIFY.
نوع البيانات العدد الصحيح
القيمة الافتراضية 16
القيم المسموح بها 16-131072
نوع المعلمة ثابت
Documentation notify_buffers

serializable_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت للمعاملات القابلة للتسلسل.
نوع البيانات العدد الصحيح
القيمة الافتراضية 32
القيم المسموح بها 16-131072
نوع المعلمة ثابت
Documentation serializable_buffers

shared_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين عدد المخازن المؤقتة للذاكرة المشتركة المستخدمة من قبل الخادم.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 16-1073741823
نوع المعلمة ثابت
Documentation shared_buffers

الوصف

shared_buffers تحدد معلمة التكوين مقدار ذاكرة النظام المخصصة لقاعدة بيانات PostgreSQL لتخزين البيانات مؤقتا. إنه بمثابة تجمع ذاكرة مركزي يمكن الوصول إليه من قبل جميع عمليات قاعدة البيانات.

عند الحاجة إلى البيانات، تتحقق عملية قاعدة البيانات أولا من المخزن المؤقت المشترك. في حالة وجود البيانات المطلوبة، يتم استردادها بسرعة وتجاوز قراءة القرص التي تستغرق وقتا أطول. تعمل المخازن المؤقتة المشتركة كوسيط بين عمليات قاعدة البيانات والقرص ، وتقلل بشكل فعال من عدد عمليات الإدخال / الإخراج المطلوبة.

ملاحظات خاصة ب Azure

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

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة shared_buffers وفقا للقيم الموجودة في الصيغ التالية.

بالنسبة للأجهزة الظاهرية التي تصل إلى 2 غيغابايت من الذاكرة، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 16384.

بالنسبة للأجهزة الظاهرية التي تزيد عن 2 غيغابايت، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 32768.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة shared_buffers
2 جيبي بايت 32768
4 جيجابيت 131072
8 جيجابيت 262144
16 جيجابيت 524288
32 غيغابايت 1048576
48 جيبي بايت 1572864
64 جيبي بايت 2097152
80 جيبي بايت 2621440
128 جيبي بايت 4194304
160 جيجابايت 5242880
192 جيجابايت 6291456
256 غيغابايت 8388608
384 جيجابايت 12582912
432 جيجابايت 14155776
672 جيبي بايت 22020096

shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة المستخدمة لمنطقة الذاكرة المشتركة الرئيسية.
نوع البيانات التعداد
القيمة الافتراضية mmap
القيم المسموح بها mmap
نوع المعلمة للقراءة فقط
Documentation shared_memory_type

subtransaction_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت للمعاملات الفرعية. حدد 0 لتحديد هذه القيمة كجزء من shared_buffers.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 0-131072
نوع المعلمة ثابت
Documentation subtransaction_buffers

temp_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد الحد الأقصى لعدد المخازن المؤقتة التي تستخدمها كل جلسة.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 100-1073741823
نوع المعلمة ديناميكي
Documentation temp_buffers

transaction_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت لحالة المعاملة. حدد 0 لتحديد هذه القيمة كجزء من shared_buffers.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 0-131072
نوع المعلمة ثابت
Documentation transaction_buffers

vacuum_buffer_usage_limit

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين حجم تجمع المخزن المؤقت ل فراغ وتحليل وإخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 2048
القيم المسموح بها 0-16777216
نوع المعلمة ديناميكي
Documentation vacuum_buffer_usage_limit

work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة المراد استخدامها لمساحات عمل الاستعلام. يمكن استخدام هذا القدر من الذاكرة بواسطة كل عملية فرز داخلية وجدول تجزئة قبل التبديل إلى ملفات القرص المؤقتة.
نوع البيانات العدد الصحيح
القيمة الافتراضية 4096
القيم المسموح بها 4096-2097151
نوع المعلمة ديناميكي
Documentation work_mem

الوصف

تتحكم المعلمة work_mem في PostgreSQL في مقدار الذاكرة المخصصة لعمليات داخلية معينة داخل منطقة الذاكرة الخاصة لكل جلسة قاعدة بيانات. ومن الأمثلة على هذه العمليات الفرز والتجزئة.

على عكس المخازن المؤقتة المشتركة، الموجودة في منطقة الذاكرة المشتركة، work_mem يتم تخصيصها في مساحة ذاكرة خاصة لكل جلسة أو لكل استعلام. من خلال تعيين حجم مناسب work_mem ، يمكنك تحسين كفاءة هذه العمليات بشكل كبير وتقليل الحاجة إلى كتابة بيانات مؤقتة على القرص.

النقاط الرئيسية

  • ذاكرة الاتصال الخاصة: work_mem هي جزء من الذاكرة الخاصة التي تستخدمها كل جلسة عمل قاعدة بيانات. تختلف هذه الذاكرة عن منطقة الذاكرة المشتركة التي shared_buffers تستخدمها.
  • الاستخدام الخاص بالاستعلام: لا تستخدم work_memجميع الجلسات أو الاستعلامات . من غير المحتمل أن تتطلب SELECT 1الاستعلامات البسيطة مثل work_mem . ومع ذلك ، يمكن أن تستهلك الاستعلامات المعقدة التي تتضمن عمليات مثل الفرز أو التجزئة جزءا واحدا أو عدة أجزاء من work_mem.
  • العمليات المتوازية: بالنسبة للاستعلامات التي تمتد عبر نهايات خلفية متوازية متعددة، يمكن أن تستخدم كل واجهة خلفية جزءا واحدا أو عدة أجزاء من work_mem.

مراقبة وضبط work_mem

من الضروري مراقبة أداء نظامك باستمرار وضبطه work_mem حسب الضرورة، في المقام الأول إذا كانت أوقات تنفيذ الاستعلام المتعلقة بعمليات الفرز أو التجزئة بطيئة. فيما يلي طرق لمراقبة الأداء باستخدام الأدوات المتوفرة في مدخل Microsoft Azure:

  • إحصاءات أداء الاستعلام: تحقق من علامة التبويب أهم الاستعلامات حسب الملفات المؤقتة لتحديد الاستعلامات التي تنشئ ملفات مؤقتة. يشير هذا الوضع إلى الحاجة المحتملة للزيادة work_mem.
  • أدلة استكشاف الأخطاء وإصلاحها: استخدم علامة التبويب الملفات المؤقتة العالية في أدلة استكشاف الأخطاء وإصلاحها لتحديد الاستعلامات التي بها مشكلات.
تعديل الحبوب

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

  • مستوى المستخدم: إذا كان مستخدم معين يشارك بشكل أساسي في مهام التجميع أو إعداد التقارير، والتي تتطلب ذاكرة مكثفة، ففكر في work_mem تخصيص القيمة لهذا المستخدم. استخدم الأمر ALTER ROLE لتحسين أداء عمليات المستخدم.

  • مستوى الوظيفة / الإجراء: إذا كانت وظائف أو إجراءات معينة تنشئ ملفات مؤقتة كبيرة ، فقد تكون زيادة القيمة work_mem على مستوى الوظيفة أو الإجراء المحدد مفيدة. استخدم الأمر ALTER FUNCTION or ALTER PROCEDURE لتخصيص المزيد من الذاكرة على وجه التحديد لهذه العمليات.

  • مستوى قاعدة البيانات: قم بالتغيير work_mem على مستوى قاعدة البيانات إذا كانت قواعد بيانات معينة فقط تنشئ أعدادا كبيرة من الملفات المؤقتة.

  • المستوى العالمي: إذا كشف تحليل نظامك أن معظم الاستعلامات تنشئ ملفات مؤقتة صغيرة ، بينما يقوم عدد قليل فقط بإنشاء ملفات كبيرة ، فقد يكون من الحكمة زيادة القيمة work_mem بشكل عام. يسهل هذا الإجراء معالجة معظم الاستعلامات في الذاكرة، بحيث يمكنك تجنب العمليات المستندة إلى القرص وتحسين الكفاءة. ومع ذلك ، كن حذرا دائما وراقب استخدام الذاكرة على الخادم الخاص بك للتأكد من قدرته على التعامل مع القيمة المتزايدة work_mem .

تحديد الحد الأدنى لقيمة work_mem لعمليات الفرز

للعثور على الحد الأدنى work_mem للقيمة لاستعلام معين، خاصة تلك التي تقوم بإنشاء ملفات قرص مؤقتة أثناء عملية الفرز، ابدأ بالنظر في حجم الملف المؤقت الذي تم إنشاؤه أثناء تنفيذ الاستعلام. على سبيل المثال، إذا كان الاستعلام ينشئ ملفا مؤقتا بحجم 20 ميغابايت:

  1. اتصل بقاعدة البيانات الخاصة بك باستخدام psql أو عميل PostgreSQL المفضل لديك.
  2. قم بتعيين قيمة أولية work_mem أعلى قليلا من 20 ميغابايت لحساب الرؤوس الإضافية عند المعالجة في الذاكرة. استخدم أمرا مثل: SET work_mem TO '25MB'.
  3. قم بالتشغيل EXPLAIN ANALYZE على الاستعلام الذي به مشكلات في نفس الجلسة.
  4. راجع الإخراج ل "Sort Method: quicksort Memory: xkB". إذا أشار "external merge Disk: xkB"، فقم برفع القيمة work_mem بشكل تدريجي وأعد الاختبار حتى "quicksort Memory" تظهر. ظهور "quicksort Memory" الإشارات التي تشير إلى أن الاستعلام يعمل الآن في الذاكرة.
  5. بعد تحديد القيمة من خلال هذه الطريقة ، يمكنك تطبيقها إما بشكل عام أو على مستويات أكثر دقة (كما هو موضح سابقا) لتناسب احتياجاتك التشغيلية.

autovacuum_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها من قبل كل عملية عامل إخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية -1
القيم المسموح بها -1-2097151
نوع المعلمة ديناميكي
Documentation autovacuum_work_mem

commit_timestamp_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت للطابع الزمني للالتزام. حدد 0 لتحديد هذه القيمة كجزء من shared_buffers.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 0-131072
نوع المعلمة ثابت
Documentation commit_timestamp_buffers

dynamic_shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة الديناميكية المستخدمة.
نوع البيانات التعداد
القيمة الافتراضية posix
القيم المسموح بها posix
نوع المعلمة للقراءة فقط
Documentation dynamic_shared_memory_type

hash_mem_multiplier

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف مضاعفات "work_mem" لاستخدامها في جداول التجزئة.
نوع البيانات عددي
القيمة الافتراضية 2
القيم المسموح بها 1-1000
نوع المعلمة ديناميكي
Documentation hash_mem_multiplier

huge_pages

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف استخدام صفحات ضخمة على Linux أو Windows.
نوع البيانات التعداد
القيمة الافتراضية try
القيم المسموح بها on,off,try
نوع المعلمة ثابت
Documentation huge_pages

الوصف

الصفحات الضخمة هي ميزة تسمح بإدارة الذاكرة في كتل أكبر. يمكنك عادة إدارة الكتل التي يصل حجمها إلى 2 ميغابايت، على عكس الصفحات القياسية التي تبلغ سعتها 4 كيلوبايت.

يمكن أن يوفر استخدام الصفحات الضخمة مزايا أداء تقوم بتفريغ وحدة المعالجة المركزية بشكل فعال:

  • إنها تقلل من النفقات العامة المرتبطة بمهام إدارة الذاكرة مثل عدد أقل من الأخطاء في المخزن المؤقت للترجمة (TLB).
  • أنها تقصر الوقت اللازم لإدارة الذاكرة.

على وجه التحديد ، في PostgreSQL ، يمكنك استخدام صفحات ضخمة فقط لمنطقة الذاكرة المشتركة. يتم تخصيص جزء كبير من منطقة الذاكرة المشتركة للمخازن المؤقتة المشتركة.

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

Recommendations

  • بالنسبة للخوادم التي تحتوي على موارد ذاكرة كبيرة، تجنب تعطيل الصفحات الضخمة. قد يؤدي تعطيل الصفحات الضخمة إلى الإضرار بالأداء.
  • إذا بدأت بخادم أصغر لا يدعم الصفحات الضخمة ولكنك تتوقع التوسع إلى خادم يدعم ذلك، فاحتفظ بالإعداد huge_pages للانتقال TRY السلس والأداء الأمثل.

ملاحظات خاصة ب Azure

بالنسبة للخوادم التي تحتوي على أربعة أو أكثر من vCores ، يتم تخصيص صفحات ضخمة تلقائيا من نظام التشغيل الأساسي. الميزة غير متوفرة للخوادم التي تحتوي على أقل من أربعة نواة افتراضية. يتم ضبط عدد الصفحات الضخمة تلقائيا في حالة تغيير أي إعدادات للذاكرة المشتركة، بما في ذلك التعديلات على shared_buffers.

huge_page_size

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف حجم الصفحة الضخمة التي يجب طلبها.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0
نوع المعلمة للقراءة فقط
Documentation huge_page_size

io_combine_limit

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف الحد من حجم قراءة البيانات وكتابتها.
نوع البيانات العدد الصحيح
القيمة الافتراضية 16
القيم المسموح بها 16
نوع المعلمة للقراءة فقط
Documentation io_combine_limit

logical_decoding_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في فك التشفير المنطقي. يمكن استخدام هذا القدر من الذاكرة بواسطة كل مخزن مؤقت داخلي لإعادة الترتيب قبل الانسكاب على القرص.
نوع البيانات العدد الصحيح
القيمة الافتراضية 65536
القيم المسموح بها 64-2147483647
نوع المعلمة ديناميكي
Documentation logical_decoding_work_mem

maintenance_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد الحد الأقصى للذاكرة المراد استخدامها في عمليات الصيانة. يتضمن ذلك عمليات مثل VACUUM و CREATE INDEX.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 1024-2097151
نوع المعلمة ديناميكي
Documentation maintenance_work_mem

الوصف

maintenance_work_mem هي معلمة تكوين في PostgreSQL. يتحكم في مقدار الذاكرة المخصصة لعمليات الصيانة، مثل VACUUM، CREATE INDEXو.ALTER TABLE على عكس work_mem، الذي يؤثر على تخصيص الذاكرة لعمليات الاستعلام ، maintenance_work_mem يتم حجزه للمهام التي تحافظ على بنية قاعدة البيانات وتحسينها.

! [ملاحظة] قد يؤدي الضبط maintenance_work_mem على القيم شديدة العدوانية إلى حدوث خطأ في نفاد الذاكرة بشكل دوري في النظام. من المهم للغاية فهم مقدار الذاكرة المتوفرة على الخادم ، وعدد العمليات المتزامنة التي يمكن أن تخصص الذاكرة للمهام الموضحة سابقا ، قبل إجراء تغييرات على هذه المعلمة.

النقاط الرئيسية

  • غطاء الذاكرة الفراغية: إذا كنت ترغب في تسريع تنظيف المجموعات الميتة عن طريق الزيادة maintenance_work_mem، فكن على دراية بأن VACUUM لديها قيودا مضمنة لجمع معرفات المجموعات الميتة. يمكنه استخدام ما يصل إلى 1 جيجابايت فقط من الذاكرة لهذه العملية.
  • فصل الذاكرة للتفريغ التلقائي: يمكنك استخدام الإعداد autovacuum_work_mem للتحكم في الذاكرة التي تستخدمها عمليات التفريغ التلقائي بشكل مستقل. يعمل هذا الإعداد كمجموعة فرعية من maintenance_work_mem. يمكنك تحديد مقدار استخدام التفريغ التلقائي للذاكرة دون التأثير على تخصيص الذاكرة لمهام الصيانة الأخرى وعمليات تعريف البيانات.

ملاحظات خاصة ب Azure

يتم حساب القيمة الافتراضية لمعلمة maintenance_work_mem الخادم عند توفير مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن، استنادا إلى اسم المنتج الذي تحدده لحسابه. لن يكون لأي تغييرات لاحقة في تحديد المنتج على الحساب الذي يدعم الخادم المرن أي تأثير على القيمة الافتراضية لمعلمة maintenance_work_mem الخادم لهذا المثيل.

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة maintenance_work_mem وفقا للقيم الموجودة في الصيغة التالية.

الصيغة المستخدمة لحساب قيمة maintenance_work_mem هي (long)(82.5 * ln(memoryGiB) + 40) * 1024.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة maintenance_work_mem
2 جيبي بايت 99,328 كيلوبايت
4 جيجابيت 157,696 كيلوبايت
8 جيجابيت 216,064 كيلوبايت
16 جيجابيت 274,432 كيلوبايت
32 غيغابايت 332,800 كيلوبايت
48 جيبي بايت 367,616 كيلوبايت
64 جيبي بايت 392,192 كيلوبايت
80 جيبي بايت 410,624 كيلوبايت
128 جيبي بايت 450,560 كيلوبايت
160 جيجابايت 468,992 كيلوبايت
192 جيجابايت 484,352 كيلوبايت
256 غيغابايت 508,928 كيلوبايت
384 جيجابايت 542,720 كيلوبايت
432 جيجابايت 552,960 كيلوبايت
672 جيبي بايت 590,848 كيلوبايت

max_prepared_transactions

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المعاملات المعدة في وقت واحد.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0-262143
نوع المعلمة ثابت
Documentation max_prepared_transactions

max_stack_depth

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعمق المكدس، بالكيلو بايت.
نوع البيانات العدد الصحيح
القيمة الافتراضية 2048
القيم المسموح بها 2048
نوع المعلمة للقراءة فقط
Documentation max_stack_depth

min_dynamic_shared_memory

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف مقدار الذاكرة المشتركة الديناميكية المحجوزة عند بدء التشغيل.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0
نوع المعلمة للقراءة فقط
Documentation min_dynamic_shared_memory

multixact_member_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف لتعيين حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت لعضو MultiXact.
نوع البيانات العدد الصحيح
القيمة الافتراضية 32
القيم المسموح بها 16-131072
نوع المعلمة ثابت
Documentation multixact_member_buffers

multixact_offset_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت لإزاحة MultiXact.
نوع البيانات العدد الصحيح
القيمة الافتراضية 16
القيم المسموح بها 16-131072
نوع المعلمة ثابت
Documentation multixact_offset_buffers

notify_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يضبط حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت للرسائل LISTEN/NOTIFY.
نوع البيانات العدد الصحيح
القيمة الافتراضية 16
القيم المسموح بها 16-131072
نوع المعلمة ثابت
Documentation notify_buffers

serializable_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت للمعاملات القابلة للتسلسل.
نوع البيانات العدد الصحيح
القيمة الافتراضية 32
القيم المسموح بها 16-131072
نوع المعلمة ثابت
Documentation serializable_buffers

shared_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين عدد المخازن المؤقتة للذاكرة المشتركة المستخدمة من قبل الخادم.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 16-1073741823
نوع المعلمة ثابت
Documentation shared_buffers

الوصف

shared_buffers تحدد معلمة التكوين مقدار ذاكرة النظام المخصصة لقاعدة بيانات PostgreSQL لتخزين البيانات مؤقتا. إنه بمثابة تجمع ذاكرة مركزي يمكن الوصول إليه من قبل جميع عمليات قاعدة البيانات.

عند الحاجة إلى البيانات، تتحقق عملية قاعدة البيانات أولا من المخزن المؤقت المشترك. في حالة وجود البيانات المطلوبة، يتم استردادها بسرعة وتجاوز قراءة القرص التي تستغرق وقتا أطول. تعمل المخازن المؤقتة المشتركة كوسيط بين عمليات قاعدة البيانات والقرص ، وتقلل بشكل فعال من عدد عمليات الإدخال / الإخراج المطلوبة.

ملاحظات خاصة ب Azure

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

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة shared_buffers وفقا للقيم الموجودة في الصيغ التالية.

بالنسبة للأجهزة الظاهرية التي تصل إلى 2 غيغابايت من الذاكرة، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 16384.

بالنسبة للأجهزة الظاهرية التي تزيد عن 2 غيغابايت، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 32768.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة shared_buffers
2 جيبي بايت 32768
4 جيجابيت 131072
8 جيجابيت 262144
16 جيجابيت 524288
32 غيغابايت 1048576
48 جيبي بايت 1572864
64 جيبي بايت 2097152
80 جيبي بايت 2621440
128 جيبي بايت 4194304
160 جيجابايت 5242880
192 جيجابايت 6291456
256 غيغابايت 8388608
384 جيجابايت 12582912
432 جيجابايت 14155776
672 جيبي بايت 22020096

shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة المستخدمة لمنطقة الذاكرة المشتركة الرئيسية.
نوع البيانات التعداد
القيمة الافتراضية mmap
القيم المسموح بها mmap
نوع المعلمة للقراءة فقط
Documentation shared_memory_type

subtransaction_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت للمعاملات الفرعية. حدد 0 لتحديد هذه القيمة كجزء من shared_buffers.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 0-131072
نوع المعلمة ثابت
Documentation subtransaction_buffers

temp_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد الحد الأقصى لعدد المخازن المؤقتة التي تستخدمها كل جلسة.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 100-1073741823
نوع المعلمة ديناميكي
Documentation temp_buffers

transaction_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف يحدد حجم تجمع المخزن المؤقت المخصص المستخدم لذاكرة التخزين المؤقت لحالة المعاملة. حدد 0 لتحديد هذه القيمة كجزء من shared_buffers.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 0-131072
نوع المعلمة ثابت
Documentation transaction_buffers

vacuum_buffer_usage_limit

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين حجم تجمع المخزن المؤقت ل فراغ وتحليل وإخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 2048
القيم المسموح بها 0-16777216
نوع المعلمة ديناميكي
Documentation vacuum_buffer_usage_limit

work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة المراد استخدامها لمساحات عمل الاستعلام. يمكن استخدام هذا القدر من الذاكرة بواسطة كل عملية فرز داخلية وجدول تجزئة قبل التبديل إلى ملفات القرص المؤقتة.
نوع البيانات العدد الصحيح
القيمة الافتراضية 4096
القيم المسموح بها 4096-2097151
نوع المعلمة ديناميكي
Documentation work_mem

الوصف

تتحكم المعلمة work_mem في PostgreSQL في مقدار الذاكرة المخصصة لعمليات داخلية معينة داخل منطقة الذاكرة الخاصة لكل جلسة قاعدة بيانات. ومن الأمثلة على هذه العمليات الفرز والتجزئة.

على عكس المخازن المؤقتة المشتركة، الموجودة في منطقة الذاكرة المشتركة، work_mem يتم تخصيصها في مساحة ذاكرة خاصة لكل جلسة أو لكل استعلام. من خلال تعيين حجم مناسب work_mem ، يمكنك تحسين كفاءة هذه العمليات بشكل كبير وتقليل الحاجة إلى كتابة بيانات مؤقتة على القرص.

النقاط الرئيسية

  • ذاكرة الاتصال الخاصة: work_mem هي جزء من الذاكرة الخاصة التي تستخدمها كل جلسة عمل قاعدة بيانات. تختلف هذه الذاكرة عن منطقة الذاكرة المشتركة التي shared_buffers تستخدمها.
  • الاستخدام الخاص بالاستعلام: لا تستخدم work_memجميع الجلسات أو الاستعلامات . من غير المحتمل أن تتطلب SELECT 1الاستعلامات البسيطة مثل work_mem . ومع ذلك ، يمكن أن تستهلك الاستعلامات المعقدة التي تتضمن عمليات مثل الفرز أو التجزئة جزءا واحدا أو عدة أجزاء من work_mem.
  • العمليات المتوازية: بالنسبة للاستعلامات التي تمتد عبر نهايات خلفية متوازية متعددة، يمكن أن تستخدم كل واجهة خلفية جزءا واحدا أو عدة أجزاء من work_mem.

مراقبة وضبط work_mem

من الضروري مراقبة أداء نظامك باستمرار وضبطه work_mem حسب الضرورة، في المقام الأول إذا كانت أوقات تنفيذ الاستعلام المتعلقة بعمليات الفرز أو التجزئة بطيئة. فيما يلي طرق لمراقبة الأداء باستخدام الأدوات المتوفرة في مدخل Microsoft Azure:

  • إحصاءات أداء الاستعلام: تحقق من علامة التبويب أهم الاستعلامات حسب الملفات المؤقتة لتحديد الاستعلامات التي تنشئ ملفات مؤقتة. يشير هذا الوضع إلى الحاجة المحتملة للزيادة work_mem.
  • أدلة استكشاف الأخطاء وإصلاحها: استخدم علامة التبويب الملفات المؤقتة العالية في أدلة استكشاف الأخطاء وإصلاحها لتحديد الاستعلامات التي بها مشكلات.
تعديل الحبوب

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

  • مستوى المستخدم: إذا كان مستخدم معين يشارك بشكل أساسي في مهام التجميع أو إعداد التقارير، والتي تتطلب ذاكرة مكثفة، ففكر في work_mem تخصيص القيمة لهذا المستخدم. استخدم الأمر ALTER ROLE لتحسين أداء عمليات المستخدم.

  • مستوى الوظيفة / الإجراء: إذا كانت وظائف أو إجراءات معينة تنشئ ملفات مؤقتة كبيرة ، فقد تكون زيادة القيمة work_mem على مستوى الوظيفة أو الإجراء المحدد مفيدة. استخدم الأمر ALTER FUNCTION or ALTER PROCEDURE لتخصيص المزيد من الذاكرة على وجه التحديد لهذه العمليات.

  • مستوى قاعدة البيانات: قم بالتغيير work_mem على مستوى قاعدة البيانات إذا كانت قواعد بيانات معينة فقط تنشئ أعدادا كبيرة من الملفات المؤقتة.

  • المستوى العالمي: إذا كشف تحليل نظامك أن معظم الاستعلامات تنشئ ملفات مؤقتة صغيرة ، بينما يقوم عدد قليل فقط بإنشاء ملفات كبيرة ، فقد يكون من الحكمة زيادة القيمة work_mem بشكل عام. يسهل هذا الإجراء معالجة معظم الاستعلامات في الذاكرة، بحيث يمكنك تجنب العمليات المستندة إلى القرص وتحسين الكفاءة. ومع ذلك ، كن حذرا دائما وراقب استخدام الذاكرة على الخادم الخاص بك للتأكد من قدرته على التعامل مع القيمة المتزايدة work_mem .

تحديد الحد الأدنى لقيمة work_mem لعمليات الفرز

للعثور على الحد الأدنى work_mem للقيمة لاستعلام معين، خاصة تلك التي تقوم بإنشاء ملفات قرص مؤقتة أثناء عملية الفرز، ابدأ بالنظر في حجم الملف المؤقت الذي تم إنشاؤه أثناء تنفيذ الاستعلام. على سبيل المثال، إذا كان الاستعلام ينشئ ملفا مؤقتا بحجم 20 ميغابايت:

  1. اتصل بقاعدة البيانات الخاصة بك باستخدام psql أو عميل PostgreSQL المفضل لديك.
  2. قم بتعيين قيمة أولية work_mem أعلى قليلا من 20 ميغابايت لحساب الرؤوس الإضافية عند المعالجة في الذاكرة. استخدم أمرا مثل: SET work_mem TO '25MB'.
  3. قم بالتشغيل EXPLAIN ANALYZE على الاستعلام الذي به مشكلات في نفس الجلسة.
  4. راجع الإخراج ل "Sort Method: quicksort Memory: xkB". إذا أشار "external merge Disk: xkB"، فقم برفع القيمة work_mem بشكل تدريجي وأعد الاختبار حتى "quicksort Memory" تظهر. ظهور "quicksort Memory" الإشارات التي تشير إلى أن الاستعلام يعمل الآن في الذاكرة.
  5. بعد تحديد القيمة من خلال هذه الطريقة ، يمكنك تطبيقها إما بشكل عام أو على مستويات أكثر دقة (كما هو موضح سابقا) لتناسب احتياجاتك التشغيلية.

autovacuum_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها من قبل كل عملية عامل إخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية -1
القيم المسموح بها -1-2097151
نوع المعلمة ديناميكي
Documentation autovacuum_work_mem

dynamic_shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة الديناميكية المستخدمة.
نوع البيانات التعداد
القيمة الافتراضية posix
القيم المسموح بها posix
نوع المعلمة للقراءة فقط
Documentation dynamic_shared_memory_type

hash_mem_multiplier

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف متعدد work_mem لاستخدامه لجداول التجزئة.
نوع البيانات عددي
القيمة الافتراضية 2
القيم المسموح بها 1-1000
نوع المعلمة ديناميكي
Documentation hash_mem_multiplier

huge_pages

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تمكين/تعطيل استخدام صفحات الذاكرة الضخمة. لا ينطبق هذا الإعداد على الخوادم التي تحتوي على أقل من 4 vCores.
نوع البيانات التعداد
القيمة الافتراضية try
القيم المسموح بها on,off,try
نوع المعلمة ثابت
Documentation huge_pages

الوصف

الصفحات الضخمة هي ميزة تسمح بإدارة الذاكرة في كتل أكبر. يمكنك عادة إدارة الكتل التي يصل حجمها إلى 2 ميغابايت، على عكس الصفحات القياسية التي تبلغ سعتها 4 كيلوبايت.

يمكن أن يوفر استخدام الصفحات الضخمة مزايا أداء تقوم بتفريغ وحدة المعالجة المركزية بشكل فعال:

  • إنها تقلل من النفقات العامة المرتبطة بمهام إدارة الذاكرة مثل عدد أقل من الأخطاء في المخزن المؤقت للترجمة (TLB).
  • أنها تقصر الوقت اللازم لإدارة الذاكرة.

على وجه التحديد ، في PostgreSQL ، يمكنك استخدام صفحات ضخمة فقط لمنطقة الذاكرة المشتركة. يتم تخصيص جزء كبير من منطقة الذاكرة المشتركة للمخازن المؤقتة المشتركة.

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

Recommendations

  • بالنسبة للخوادم التي تحتوي على موارد ذاكرة كبيرة، تجنب تعطيل الصفحات الضخمة. قد يؤدي تعطيل الصفحات الضخمة إلى الإضرار بالأداء.
  • إذا بدأت بخادم أصغر لا يدعم الصفحات الضخمة ولكنك تتوقع التوسع إلى خادم يدعم ذلك، فاحتفظ بالإعداد huge_pages للانتقال TRY السلس والأداء الأمثل.

ملاحظات خاصة ب Azure

بالنسبة للخوادم التي تحتوي على أربعة أو أكثر من vCores ، يتم تخصيص صفحات ضخمة تلقائيا من نظام التشغيل الأساسي. الميزة غير متوفرة للخوادم التي تحتوي على أقل من أربعة نواة افتراضية. يتم ضبط عدد الصفحات الضخمة تلقائيا في حالة تغيير أي إعدادات للذاكرة المشتركة، بما في ذلك التعديلات على shared_buffers.

huge_page_size

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف حجم الصفحة الضخمة التي يجب طلبها.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0
نوع المعلمة للقراءة فقط
Documentation huge_page_size

logical_decoding_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في فك التشفير المنطقي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 65536
القيم المسموح بها 64-2147483647
نوع المعلمة ديناميكي
Documentation logical_decoding_work_mem

maintenance_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في عمليات الصيانة مثل فراغ، إنشاء فهرس.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 1024-2097151
نوع المعلمة ديناميكي
Documentation maintenance_work_mem

الوصف

maintenance_work_mem هي معلمة تكوين في PostgreSQL. يتحكم في مقدار الذاكرة المخصصة لعمليات الصيانة، مثل VACUUM، CREATE INDEXو.ALTER TABLE على عكس work_mem، الذي يؤثر على تخصيص الذاكرة لعمليات الاستعلام ، maintenance_work_mem يتم حجزه للمهام التي تحافظ على بنية قاعدة البيانات وتحسينها.

! [ملاحظة] قد يؤدي الضبط maintenance_work_mem على القيم شديدة العدوانية إلى حدوث خطأ في نفاد الذاكرة بشكل دوري في النظام. من المهم للغاية فهم مقدار الذاكرة المتوفرة على الخادم ، وعدد العمليات المتزامنة التي يمكن أن تخصص الذاكرة للمهام الموضحة سابقا ، قبل إجراء تغييرات على هذه المعلمة.

النقاط الرئيسية

  • غطاء الذاكرة الفراغية: إذا كنت ترغب في تسريع تنظيف المجموعات الميتة عن طريق الزيادة maintenance_work_mem، فكن على دراية بأن VACUUM لديها قيودا مضمنة لجمع معرفات المجموعات الميتة. يمكنه استخدام ما يصل إلى 1 جيجابايت فقط من الذاكرة لهذه العملية.
  • فصل الذاكرة للتفريغ التلقائي: يمكنك استخدام الإعداد autovacuum_work_mem للتحكم في الذاكرة التي تستخدمها عمليات التفريغ التلقائي بشكل مستقل. يعمل هذا الإعداد كمجموعة فرعية من maintenance_work_mem. يمكنك تحديد مقدار استخدام التفريغ التلقائي للذاكرة دون التأثير على تخصيص الذاكرة لمهام الصيانة الأخرى وعمليات تعريف البيانات.

ملاحظات خاصة ب Azure

يتم حساب القيمة الافتراضية لمعلمة maintenance_work_mem الخادم عند توفير مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن، استنادا إلى اسم المنتج الذي تحدده لحسابه. لن يكون لأي تغييرات لاحقة في تحديد المنتج على الحساب الذي يدعم الخادم المرن أي تأثير على القيمة الافتراضية لمعلمة maintenance_work_mem الخادم لهذا المثيل.

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة maintenance_work_mem وفقا للقيم الموجودة في الصيغة التالية.

الصيغة المستخدمة لحساب قيمة maintenance_work_mem هي (long)(82.5 * ln(memoryGiB) + 40) * 1024.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة maintenance_work_mem
2 جيبي بايت 99,328 كيلوبايت
4 جيجابيت 157,696 كيلوبايت
8 جيجابيت 216,064 كيلوبايت
16 جيجابيت 274,432 كيلوبايت
32 غيغابايت 332,800 كيلوبايت
48 جيبي بايت 367,616 كيلوبايت
64 جيبي بايت 392,192 كيلوبايت
80 جيبي بايت 410,624 كيلوبايت
128 جيبي بايت 450,560 كيلوبايت
160 جيجابايت 468,992 كيلوبايت
192 جيجابايت 484,352 كيلوبايت
256 غيغابايت 508,928 كيلوبايت
384 جيجابايت 542,720 كيلوبايت
432 جيجابايت 552,960 كيلوبايت
672 جيبي بايت 590,848 كيلوبايت

max_prepared_transactions

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المعاملات المعدة في وقت واحد. عند تشغيل خادم نسخة متماثلة، يجب تعيين هذه المعلمة إلى نفس القيمة أو أعلى من على الخادم الأساسي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0-262143
نوع المعلمة ثابت
Documentation max_prepared_transactions

max_stack_depth

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعمق المكدس، بالكيلو بايت.
نوع البيانات العدد الصحيح
القيمة الافتراضية 2048
القيم المسموح بها 2048
نوع المعلمة للقراءة فقط
Documentation max_stack_depth

min_dynamic_shared_memory

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف مقدار الذاكرة المشتركة الديناميكية المحجوزة عند بدء التشغيل.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0
نوع المعلمة للقراءة فقط
Documentation min_dynamic_shared_memory

shared_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين عدد المخازن المؤقتة للذاكرة المشتركة المستخدمة من قبل الخادم. الوحدة هي 8 كيلوبايت. القيم المسموح بها داخل نطاق 10٪ - 75٪ من الذاكرة المتوفرة.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 16-1073741823
نوع المعلمة ثابت
Documentation shared_buffers

الوصف

shared_buffers تحدد معلمة التكوين مقدار ذاكرة النظام المخصصة لقاعدة بيانات PostgreSQL لتخزين البيانات مؤقتا. إنه بمثابة تجمع ذاكرة مركزي يمكن الوصول إليه من قبل جميع عمليات قاعدة البيانات.

عند الحاجة إلى البيانات، تتحقق عملية قاعدة البيانات أولا من المخزن المؤقت المشترك. في حالة وجود البيانات المطلوبة، يتم استردادها بسرعة وتجاوز قراءة القرص التي تستغرق وقتا أطول. تعمل المخازن المؤقتة المشتركة كوسيط بين عمليات قاعدة البيانات والقرص ، وتقلل بشكل فعال من عدد عمليات الإدخال / الإخراج المطلوبة.

ملاحظات خاصة ب Azure

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

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة shared_buffers وفقا للقيم الموجودة في الصيغ التالية.

بالنسبة للأجهزة الظاهرية التي تصل إلى 2 غيغابايت من الذاكرة، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 16384.

بالنسبة للأجهزة الظاهرية التي تزيد عن 2 غيغابايت، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 32768.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة shared_buffers
2 جيبي بايت 32768
4 جيجابيت 131072
8 جيجابيت 262144
16 جيجابيت 524288
32 غيغابايت 1048576
48 جيبي بايت 1572864
64 جيبي بايت 2097152
80 جيبي بايت 2621440
128 جيبي بايت 4194304
160 جيجابايت 5242880
192 جيجابايت 6291456
256 غيغابايت 8388608
384 جيجابايت 12582912
432 جيجابايت 14155776
672 جيبي بايت 22020096

shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة المستخدمة لمنطقة الذاكرة المشتركة الرئيسية.
نوع البيانات التعداد
القيمة الافتراضية mmap
القيم المسموح بها mmap
نوع المعلمة للقراءة فقط
Documentation shared_memory_type

temp_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المخازن المؤقتة المستخدمة من قبل كل جلسة عمل قاعدة بيانات.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 100-1073741823
نوع المعلمة ديناميكي
Documentation temp_buffers

vacuum_buffer_usage_limit

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين حجم تجمع المخزن المؤقت ل فراغ وتحليل وإخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 256
القيم المسموح بها 0-16777216
نوع المعلمة ديناميكي
Documentation vacuum_buffer_usage_limit

work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين مقدار الذاكرة التي سيتم استخدامها بواسطة عمليات الفرز الداخلية وجداول التجزئة قبل الكتابة إلى ملفات القرص المؤقتة.
نوع البيانات العدد الصحيح
القيمة الافتراضية 4096
القيم المسموح بها 4096-2097151
نوع المعلمة ديناميكي
Documentation work_mem

الوصف

تتحكم المعلمة work_mem في PostgreSQL في مقدار الذاكرة المخصصة لعمليات داخلية معينة داخل منطقة الذاكرة الخاصة لكل جلسة قاعدة بيانات. ومن الأمثلة على هذه العمليات الفرز والتجزئة.

على عكس المخازن المؤقتة المشتركة، الموجودة في منطقة الذاكرة المشتركة، work_mem يتم تخصيصها في مساحة ذاكرة خاصة لكل جلسة أو لكل استعلام. من خلال تعيين حجم مناسب work_mem ، يمكنك تحسين كفاءة هذه العمليات بشكل كبير وتقليل الحاجة إلى كتابة بيانات مؤقتة على القرص.

النقاط الرئيسية

  • ذاكرة الاتصال الخاصة: work_mem هي جزء من الذاكرة الخاصة التي تستخدمها كل جلسة عمل قاعدة بيانات. تختلف هذه الذاكرة عن منطقة الذاكرة المشتركة التي shared_buffers تستخدمها.
  • الاستخدام الخاص بالاستعلام: لا تستخدم work_memجميع الجلسات أو الاستعلامات . من غير المحتمل أن تتطلب SELECT 1الاستعلامات البسيطة مثل work_mem . ومع ذلك ، يمكن أن تستهلك الاستعلامات المعقدة التي تتضمن عمليات مثل الفرز أو التجزئة جزءا واحدا أو عدة أجزاء من work_mem.
  • العمليات المتوازية: بالنسبة للاستعلامات التي تمتد عبر نهايات خلفية متوازية متعددة، يمكن أن تستخدم كل واجهة خلفية جزءا واحدا أو عدة أجزاء من work_mem.

مراقبة وضبط work_mem

من الضروري مراقبة أداء نظامك باستمرار وضبطه work_mem حسب الضرورة، في المقام الأول إذا كانت أوقات تنفيذ الاستعلام المتعلقة بعمليات الفرز أو التجزئة بطيئة. فيما يلي طرق لمراقبة الأداء باستخدام الأدوات المتوفرة في مدخل Microsoft Azure:

  • إحصاءات أداء الاستعلام: تحقق من علامة التبويب أهم الاستعلامات حسب الملفات المؤقتة لتحديد الاستعلامات التي تنشئ ملفات مؤقتة. يشير هذا الوضع إلى الحاجة المحتملة للزيادة work_mem.
  • أدلة استكشاف الأخطاء وإصلاحها: استخدم علامة التبويب الملفات المؤقتة العالية في أدلة استكشاف الأخطاء وإصلاحها لتحديد الاستعلامات التي بها مشكلات.
تعديل الحبوب

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

  • مستوى المستخدم: إذا كان مستخدم معين يشارك بشكل أساسي في مهام التجميع أو إعداد التقارير، والتي تتطلب ذاكرة مكثفة، ففكر في work_mem تخصيص القيمة لهذا المستخدم. استخدم الأمر ALTER ROLE لتحسين أداء عمليات المستخدم.

  • مستوى الوظيفة / الإجراء: إذا كانت وظائف أو إجراءات معينة تنشئ ملفات مؤقتة كبيرة ، فقد تكون زيادة القيمة work_mem على مستوى الوظيفة أو الإجراء المحدد مفيدة. استخدم الأمر ALTER FUNCTION or ALTER PROCEDURE لتخصيص المزيد من الذاكرة على وجه التحديد لهذه العمليات.

  • مستوى قاعدة البيانات: قم بالتغيير work_mem على مستوى قاعدة البيانات إذا كانت قواعد بيانات معينة فقط تنشئ أعدادا كبيرة من الملفات المؤقتة.

  • المستوى العالمي: إذا كشف تحليل نظامك أن معظم الاستعلامات تنشئ ملفات مؤقتة صغيرة ، بينما يقوم عدد قليل فقط بإنشاء ملفات كبيرة ، فقد يكون من الحكمة زيادة القيمة work_mem بشكل عام. يسهل هذا الإجراء معالجة معظم الاستعلامات في الذاكرة، بحيث يمكنك تجنب العمليات المستندة إلى القرص وتحسين الكفاءة. ومع ذلك ، كن حذرا دائما وراقب استخدام الذاكرة على الخادم الخاص بك للتأكد من قدرته على التعامل مع القيمة المتزايدة work_mem .

تحديد الحد الأدنى لقيمة work_mem لعمليات الفرز

للعثور على الحد الأدنى work_mem للقيمة لاستعلام معين، خاصة تلك التي تقوم بإنشاء ملفات قرص مؤقتة أثناء عملية الفرز، ابدأ بالنظر في حجم الملف المؤقت الذي تم إنشاؤه أثناء تنفيذ الاستعلام. على سبيل المثال، إذا كان الاستعلام ينشئ ملفا مؤقتا بحجم 20 ميغابايت:

  1. اتصل بقاعدة البيانات الخاصة بك باستخدام psql أو عميل PostgreSQL المفضل لديك.
  2. قم بتعيين قيمة أولية work_mem أعلى قليلا من 20 ميغابايت لحساب الرؤوس الإضافية عند المعالجة في الذاكرة. استخدم أمرا مثل: SET work_mem TO '25MB'.
  3. قم بالتشغيل EXPLAIN ANALYZE على الاستعلام الذي به مشكلات في نفس الجلسة.
  4. راجع الإخراج ل "Sort Method: quicksort Memory: xkB". إذا أشار "external merge Disk: xkB"، فقم برفع القيمة work_mem بشكل تدريجي وأعد الاختبار حتى "quicksort Memory" تظهر. ظهور "quicksort Memory" الإشارات التي تشير إلى أن الاستعلام يعمل الآن في الذاكرة.
  5. بعد تحديد القيمة من خلال هذه الطريقة ، يمكنك تطبيقها إما بشكل عام أو على مستويات أكثر دقة (كما هو موضح سابقا) لتناسب احتياجاتك التشغيلية.

autovacuum_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها من قبل كل عملية عامل إخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية -1
القيم المسموح بها -1-2097151
نوع المعلمة ديناميكي
Documentation autovacuum_work_mem

dynamic_shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة الديناميكية المستخدمة.
نوع البيانات التعداد
القيمة الافتراضية posix
القيم المسموح بها posix
نوع المعلمة للقراءة فقط
Documentation dynamic_shared_memory_type

hash_mem_multiplier

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف متعدد work_mem لاستخدامه لجداول التجزئة.
نوع البيانات عددي
القيمة الافتراضية 2
القيم المسموح بها 1-1000
نوع المعلمة ديناميكي
Documentation hash_mem_multiplier

huge_pages

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تمكين/تعطيل استخدام صفحات الذاكرة الضخمة. لا ينطبق هذا الإعداد على الخوادم التي تحتوي على أقل من 4 vCores.
نوع البيانات التعداد
القيمة الافتراضية try
القيم المسموح بها on,off,try
نوع المعلمة ثابت
Documentation huge_pages

الوصف

الصفحات الضخمة هي ميزة تسمح بإدارة الذاكرة في كتل أكبر. يمكنك عادة إدارة الكتل التي يصل حجمها إلى 2 ميغابايت، على عكس الصفحات القياسية التي تبلغ سعتها 4 كيلوبايت.

يمكن أن يوفر استخدام الصفحات الضخمة مزايا أداء تقوم بتفريغ وحدة المعالجة المركزية بشكل فعال:

  • إنها تقلل من النفقات العامة المرتبطة بمهام إدارة الذاكرة مثل عدد أقل من الأخطاء في المخزن المؤقت للترجمة (TLB).
  • أنها تقصر الوقت اللازم لإدارة الذاكرة.

على وجه التحديد ، في PostgreSQL ، يمكنك استخدام صفحات ضخمة فقط لمنطقة الذاكرة المشتركة. يتم تخصيص جزء كبير من منطقة الذاكرة المشتركة للمخازن المؤقتة المشتركة.

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

Recommendations

  • بالنسبة للخوادم التي تحتوي على موارد ذاكرة كبيرة، تجنب تعطيل الصفحات الضخمة. قد يؤدي تعطيل الصفحات الضخمة إلى الإضرار بالأداء.
  • إذا بدأت بخادم أصغر لا يدعم الصفحات الضخمة ولكنك تتوقع التوسع إلى خادم يدعم ذلك، فاحتفظ بالإعداد huge_pages للانتقال TRY السلس والأداء الأمثل.

ملاحظات خاصة ب Azure

بالنسبة للخوادم التي تحتوي على أربعة أو أكثر من vCores ، يتم تخصيص صفحات ضخمة تلقائيا من نظام التشغيل الأساسي. الميزة غير متوفرة للخوادم التي تحتوي على أقل من أربعة نواة افتراضية. يتم ضبط عدد الصفحات الضخمة تلقائيا في حالة تغيير أي إعدادات للذاكرة المشتركة، بما في ذلك التعديلات على shared_buffers.

huge_page_size

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف حجم الصفحة الضخمة التي يجب طلبها.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0
نوع المعلمة للقراءة فقط
Documentation huge_page_size

logical_decoding_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في فك التشفير المنطقي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 65536
القيم المسموح بها 64-2147483647
نوع المعلمة ديناميكي
Documentation logical_decoding_work_mem

maintenance_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في عمليات الصيانة مثل فراغ، إنشاء فهرس.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 1024-2097151
نوع المعلمة ديناميكي
Documentation maintenance_work_mem

الوصف

maintenance_work_mem هي معلمة تكوين في PostgreSQL. يتحكم في مقدار الذاكرة المخصصة لعمليات الصيانة، مثل VACUUM، CREATE INDEXو.ALTER TABLE على عكس work_mem، الذي يؤثر على تخصيص الذاكرة لعمليات الاستعلام ، maintenance_work_mem يتم حجزه للمهام التي تحافظ على بنية قاعدة البيانات وتحسينها.

! [ملاحظة] قد يؤدي الضبط maintenance_work_mem على القيم شديدة العدوانية إلى حدوث خطأ في نفاد الذاكرة بشكل دوري في النظام. من المهم للغاية فهم مقدار الذاكرة المتوفرة على الخادم ، وعدد العمليات المتزامنة التي يمكن أن تخصص الذاكرة للمهام الموضحة سابقا ، قبل إجراء تغييرات على هذه المعلمة.

النقاط الرئيسية

  • غطاء الذاكرة الفراغية: إذا كنت ترغب في تسريع تنظيف المجموعات الميتة عن طريق الزيادة maintenance_work_mem، فكن على دراية بأن VACUUM لديها قيودا مضمنة لجمع معرفات المجموعات الميتة. يمكنه استخدام ما يصل إلى 1 جيجابايت فقط من الذاكرة لهذه العملية.
  • فصل الذاكرة للتفريغ التلقائي: يمكنك استخدام الإعداد autovacuum_work_mem للتحكم في الذاكرة التي تستخدمها عمليات التفريغ التلقائي بشكل مستقل. يعمل هذا الإعداد كمجموعة فرعية من maintenance_work_mem. يمكنك تحديد مقدار استخدام التفريغ التلقائي للذاكرة دون التأثير على تخصيص الذاكرة لمهام الصيانة الأخرى وعمليات تعريف البيانات.

ملاحظات خاصة ب Azure

يتم حساب القيمة الافتراضية لمعلمة maintenance_work_mem الخادم عند توفير مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن، استنادا إلى اسم المنتج الذي تحدده لحسابه. لن يكون لأي تغييرات لاحقة في تحديد المنتج على الحساب الذي يدعم الخادم المرن أي تأثير على القيمة الافتراضية لمعلمة maintenance_work_mem الخادم لهذا المثيل.

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة maintenance_work_mem وفقا للقيم الموجودة في الصيغة التالية.

الصيغة المستخدمة لحساب قيمة maintenance_work_mem هي (long)(82.5 * ln(memoryGiB) + 40) * 1024.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة maintenance_work_mem
2 جيبي بايت 99,328 كيلوبايت
4 جيجابيت 157,696 كيلوبايت
8 جيجابيت 216,064 كيلوبايت
16 جيجابيت 274,432 كيلوبايت
32 غيغابايت 332,800 كيلوبايت
48 جيبي بايت 367,616 كيلوبايت
64 جيبي بايت 392,192 كيلوبايت
80 جيبي بايت 410,624 كيلوبايت
128 جيبي بايت 450,560 كيلوبايت
160 جيجابايت 468,992 كيلوبايت
192 جيجابايت 484,352 كيلوبايت
256 غيغابايت 508,928 كيلوبايت
384 جيجابايت 542,720 كيلوبايت
432 جيجابايت 552,960 كيلوبايت
672 جيبي بايت 590,848 كيلوبايت

max_prepared_transactions

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المعاملات المعدة في وقت واحد. عند تشغيل خادم نسخة متماثلة، يجب تعيين هذه المعلمة إلى نفس القيمة أو أعلى من على الخادم الأساسي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0-262143
نوع المعلمة ثابت
Documentation max_prepared_transactions

max_stack_depth

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعمق المكدس، بالكيلو بايت.
نوع البيانات العدد الصحيح
القيمة الافتراضية 2048
القيم المسموح بها 2048
نوع المعلمة للقراءة فقط
Documentation max_stack_depth

min_dynamic_shared_memory

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف مقدار الذاكرة المشتركة الديناميكية المحجوزة عند بدء التشغيل.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0
نوع المعلمة للقراءة فقط
Documentation min_dynamic_shared_memory

shared_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين عدد المخازن المؤقتة للذاكرة المشتركة المستخدمة من قبل الخادم. الوحدة هي 8 كيلوبايت. القيم المسموح بها داخل نطاق 10٪ - 75٪ من الذاكرة المتوفرة.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 16-1073741823
نوع المعلمة ثابت
Documentation shared_buffers

الوصف

shared_buffers تحدد معلمة التكوين مقدار ذاكرة النظام المخصصة لقاعدة بيانات PostgreSQL لتخزين البيانات مؤقتا. إنه بمثابة تجمع ذاكرة مركزي يمكن الوصول إليه من قبل جميع عمليات قاعدة البيانات.

عند الحاجة إلى البيانات، تتحقق عملية قاعدة البيانات أولا من المخزن المؤقت المشترك. في حالة وجود البيانات المطلوبة، يتم استردادها بسرعة وتجاوز قراءة القرص التي تستغرق وقتا أطول. تعمل المخازن المؤقتة المشتركة كوسيط بين عمليات قاعدة البيانات والقرص ، وتقلل بشكل فعال من عدد عمليات الإدخال / الإخراج المطلوبة.

ملاحظات خاصة ب Azure

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

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة shared_buffers وفقا للقيم الموجودة في الصيغ التالية.

بالنسبة للأجهزة الظاهرية التي تصل إلى 2 غيغابايت من الذاكرة، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 16384.

بالنسبة للأجهزة الظاهرية التي تزيد عن 2 غيغابايت، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 32768.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة shared_buffers
2 جيبي بايت 32768
4 جيجابيت 131072
8 جيجابيت 262144
16 جيجابيت 524288
32 غيغابايت 1048576
48 جيبي بايت 1572864
64 جيبي بايت 2097152
80 جيبي بايت 2621440
128 جيبي بايت 4194304
160 جيجابايت 5242880
192 جيجابايت 6291456
256 غيغابايت 8388608
384 جيجابايت 12582912
432 جيجابايت 14155776
672 جيبي بايت 22020096

shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة المستخدمة لمنطقة الذاكرة المشتركة الرئيسية.
نوع البيانات التعداد
القيمة الافتراضية mmap
القيم المسموح بها mmap
نوع المعلمة للقراءة فقط
Documentation shared_memory_type

temp_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المخازن المؤقتة المستخدمة من قبل كل جلسة عمل قاعدة بيانات.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 100-1073741823
نوع المعلمة ديناميكي
Documentation temp_buffers

work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين مقدار الذاكرة التي سيتم استخدامها بواسطة عمليات الفرز الداخلية وجداول التجزئة قبل الكتابة إلى ملفات القرص المؤقتة.
نوع البيانات العدد الصحيح
القيمة الافتراضية 4096
القيم المسموح بها 4096-2097151
نوع المعلمة ديناميكي
Documentation work_mem

الوصف

تتحكم المعلمة work_mem في PostgreSQL في مقدار الذاكرة المخصصة لعمليات داخلية معينة داخل منطقة الذاكرة الخاصة لكل جلسة قاعدة بيانات. ومن الأمثلة على هذه العمليات الفرز والتجزئة.

على عكس المخازن المؤقتة المشتركة، الموجودة في منطقة الذاكرة المشتركة، work_mem يتم تخصيصها في مساحة ذاكرة خاصة لكل جلسة أو لكل استعلام. من خلال تعيين حجم مناسب work_mem ، يمكنك تحسين كفاءة هذه العمليات بشكل كبير وتقليل الحاجة إلى كتابة بيانات مؤقتة على القرص.

النقاط الرئيسية

  • ذاكرة الاتصال الخاصة: work_mem هي جزء من الذاكرة الخاصة التي تستخدمها كل جلسة عمل قاعدة بيانات. تختلف هذه الذاكرة عن منطقة الذاكرة المشتركة التي shared_buffers تستخدمها.
  • الاستخدام الخاص بالاستعلام: لا تستخدم work_memجميع الجلسات أو الاستعلامات . من غير المحتمل أن تتطلب SELECT 1الاستعلامات البسيطة مثل work_mem . ومع ذلك ، يمكن أن تستهلك الاستعلامات المعقدة التي تتضمن عمليات مثل الفرز أو التجزئة جزءا واحدا أو عدة أجزاء من work_mem.
  • العمليات المتوازية: بالنسبة للاستعلامات التي تمتد عبر نهايات خلفية متوازية متعددة، يمكن أن تستخدم كل واجهة خلفية جزءا واحدا أو عدة أجزاء من work_mem.

مراقبة وضبط work_mem

من الضروري مراقبة أداء نظامك باستمرار وضبطه work_mem حسب الضرورة، في المقام الأول إذا كانت أوقات تنفيذ الاستعلام المتعلقة بعمليات الفرز أو التجزئة بطيئة. فيما يلي طرق لمراقبة الأداء باستخدام الأدوات المتوفرة في مدخل Microsoft Azure:

  • إحصاءات أداء الاستعلام: تحقق من علامة التبويب أهم الاستعلامات حسب الملفات المؤقتة لتحديد الاستعلامات التي تنشئ ملفات مؤقتة. يشير هذا الوضع إلى الحاجة المحتملة للزيادة work_mem.
  • أدلة استكشاف الأخطاء وإصلاحها: استخدم علامة التبويب الملفات المؤقتة العالية في أدلة استكشاف الأخطاء وإصلاحها لتحديد الاستعلامات التي بها مشكلات.
تعديل الحبوب

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

  • مستوى المستخدم: إذا كان مستخدم معين يشارك بشكل أساسي في مهام التجميع أو إعداد التقارير، والتي تتطلب ذاكرة مكثفة، ففكر في work_mem تخصيص القيمة لهذا المستخدم. استخدم الأمر ALTER ROLE لتحسين أداء عمليات المستخدم.

  • مستوى الوظيفة / الإجراء: إذا كانت وظائف أو إجراءات معينة تنشئ ملفات مؤقتة كبيرة ، فقد تكون زيادة القيمة work_mem على مستوى الوظيفة أو الإجراء المحدد مفيدة. استخدم الأمر ALTER FUNCTION or ALTER PROCEDURE لتخصيص المزيد من الذاكرة على وجه التحديد لهذه العمليات.

  • مستوى قاعدة البيانات: قم بالتغيير work_mem على مستوى قاعدة البيانات إذا كانت قواعد بيانات معينة فقط تنشئ أعدادا كبيرة من الملفات المؤقتة.

  • المستوى العالمي: إذا كشف تحليل نظامك أن معظم الاستعلامات تنشئ ملفات مؤقتة صغيرة ، بينما يقوم عدد قليل فقط بإنشاء ملفات كبيرة ، فقد يكون من الحكمة زيادة القيمة work_mem بشكل عام. يسهل هذا الإجراء معالجة معظم الاستعلامات في الذاكرة، بحيث يمكنك تجنب العمليات المستندة إلى القرص وتحسين الكفاءة. ومع ذلك ، كن حذرا دائما وراقب استخدام الذاكرة على الخادم الخاص بك للتأكد من قدرته على التعامل مع القيمة المتزايدة work_mem .

تحديد الحد الأدنى لقيمة work_mem لعمليات الفرز

للعثور على الحد الأدنى work_mem للقيمة لاستعلام معين، خاصة تلك التي تقوم بإنشاء ملفات قرص مؤقتة أثناء عملية الفرز، ابدأ بالنظر في حجم الملف المؤقت الذي تم إنشاؤه أثناء تنفيذ الاستعلام. على سبيل المثال، إذا كان الاستعلام ينشئ ملفا مؤقتا بحجم 20 ميغابايت:

  1. اتصل بقاعدة البيانات الخاصة بك باستخدام psql أو عميل PostgreSQL المفضل لديك.
  2. قم بتعيين قيمة أولية work_mem أعلى قليلا من 20 ميغابايت لحساب الرؤوس الإضافية عند المعالجة في الذاكرة. استخدم أمرا مثل: SET work_mem TO '25MB'.
  3. قم بالتشغيل EXPLAIN ANALYZE على الاستعلام الذي به مشكلات في نفس الجلسة.
  4. راجع الإخراج ل "Sort Method: quicksort Memory: xkB". إذا أشار "external merge Disk: xkB"، فقم برفع القيمة work_mem بشكل تدريجي وأعد الاختبار حتى "quicksort Memory" تظهر. ظهور "quicksort Memory" الإشارات التي تشير إلى أن الاستعلام يعمل الآن في الذاكرة.
  5. بعد تحديد القيمة من خلال هذه الطريقة ، يمكنك تطبيقها إما بشكل عام أو على مستويات أكثر دقة (كما هو موضح سابقا) لتناسب احتياجاتك التشغيلية.

autovacuum_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها من قبل كل عملية عامل إخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية -1
القيم المسموح بها -1-2097151
نوع المعلمة ديناميكي
Documentation autovacuum_work_mem

dynamic_shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة الديناميكية المستخدمة.
نوع البيانات التعداد
القيمة الافتراضية posix
القيم المسموح بها posix
نوع المعلمة للقراءة فقط
Documentation dynamic_shared_memory_type

hash_mem_multiplier

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف متعدد work_mem لاستخدامه لجداول التجزئة.
نوع البيانات عددي
القيمة الافتراضية 1
القيم المسموح بها 1-1000
نوع المعلمة ديناميكي
Documentation hash_mem_multiplier

huge_pages

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تمكين/تعطيل استخدام صفحات الذاكرة الضخمة. لا ينطبق هذا الإعداد على الخوادم التي تحتوي على أقل من 4 vCores.
نوع البيانات التعداد
القيمة الافتراضية try
القيم المسموح بها on,off,try
نوع المعلمة ثابت
Documentation huge_pages

الوصف

الصفحات الضخمة هي ميزة تسمح بإدارة الذاكرة في كتل أكبر. يمكنك عادة إدارة الكتل التي يصل حجمها إلى 2 ميغابايت، على عكس الصفحات القياسية التي تبلغ سعتها 4 كيلوبايت.

يمكن أن يوفر استخدام الصفحات الضخمة مزايا أداء تقوم بتفريغ وحدة المعالجة المركزية بشكل فعال:

  • إنها تقلل من النفقات العامة المرتبطة بمهام إدارة الذاكرة مثل عدد أقل من الأخطاء في المخزن المؤقت للترجمة (TLB).
  • أنها تقصر الوقت اللازم لإدارة الذاكرة.

على وجه التحديد ، في PostgreSQL ، يمكنك استخدام صفحات ضخمة فقط لمنطقة الذاكرة المشتركة. يتم تخصيص جزء كبير من منطقة الذاكرة المشتركة للمخازن المؤقتة المشتركة.

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

Recommendations

  • بالنسبة للخوادم التي تحتوي على موارد ذاكرة كبيرة، تجنب تعطيل الصفحات الضخمة. قد يؤدي تعطيل الصفحات الضخمة إلى الإضرار بالأداء.
  • إذا بدأت بخادم أصغر لا يدعم الصفحات الضخمة ولكنك تتوقع التوسع إلى خادم يدعم ذلك، فاحتفظ بالإعداد huge_pages للانتقال TRY السلس والأداء الأمثل.

ملاحظات خاصة ب Azure

بالنسبة للخوادم التي تحتوي على أربعة أو أكثر من vCores ، يتم تخصيص صفحات ضخمة تلقائيا من نظام التشغيل الأساسي. الميزة غير متوفرة للخوادم التي تحتوي على أقل من أربعة نواة افتراضية. يتم ضبط عدد الصفحات الضخمة تلقائيا في حالة تغيير أي إعدادات للذاكرة المشتركة، بما في ذلك التعديلات على shared_buffers.

huge_page_size

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف حجم الصفحة الضخمة التي يجب طلبها.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0
نوع المعلمة للقراءة فقط
Documentation huge_page_size

logical_decoding_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في فك التشفير المنطقي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 65536
القيم المسموح بها 64-2147483647
نوع المعلمة ديناميكي
Documentation logical_decoding_work_mem

maintenance_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في عمليات الصيانة مثل فراغ، إنشاء فهرس.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 1024-2097151
نوع المعلمة ديناميكي
Documentation maintenance_work_mem

الوصف

maintenance_work_mem هي معلمة تكوين في PostgreSQL. يتحكم في مقدار الذاكرة المخصصة لعمليات الصيانة، مثل VACUUM، CREATE INDEXو.ALTER TABLE على عكس work_mem، الذي يؤثر على تخصيص الذاكرة لعمليات الاستعلام ، maintenance_work_mem يتم حجزه للمهام التي تحافظ على بنية قاعدة البيانات وتحسينها.

! [ملاحظة] قد يؤدي الضبط maintenance_work_mem على القيم شديدة العدوانية إلى حدوث خطأ في نفاد الذاكرة بشكل دوري في النظام. من المهم للغاية فهم مقدار الذاكرة المتوفرة على الخادم ، وعدد العمليات المتزامنة التي يمكن أن تخصص الذاكرة للمهام الموضحة سابقا ، قبل إجراء تغييرات على هذه المعلمة.

النقاط الرئيسية

  • غطاء الذاكرة الفراغية: إذا كنت ترغب في تسريع تنظيف المجموعات الميتة عن طريق الزيادة maintenance_work_mem، فكن على دراية بأن VACUUM لديها قيودا مضمنة لجمع معرفات المجموعات الميتة. يمكنه استخدام ما يصل إلى 1 جيجابايت فقط من الذاكرة لهذه العملية.
  • فصل الذاكرة للتفريغ التلقائي: يمكنك استخدام الإعداد autovacuum_work_mem للتحكم في الذاكرة التي تستخدمها عمليات التفريغ التلقائي بشكل مستقل. يعمل هذا الإعداد كمجموعة فرعية من maintenance_work_mem. يمكنك تحديد مقدار استخدام التفريغ التلقائي للذاكرة دون التأثير على تخصيص الذاكرة لمهام الصيانة الأخرى وعمليات تعريف البيانات.

ملاحظات خاصة ب Azure

يتم حساب القيمة الافتراضية لمعلمة maintenance_work_mem الخادم عند توفير مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن، استنادا إلى اسم المنتج الذي تحدده لحسابه. لن يكون لأي تغييرات لاحقة في تحديد المنتج على الحساب الذي يدعم الخادم المرن أي تأثير على القيمة الافتراضية لمعلمة maintenance_work_mem الخادم لهذا المثيل.

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة maintenance_work_mem وفقا للقيم الموجودة في الصيغة التالية.

الصيغة المستخدمة لحساب قيمة maintenance_work_mem هي (long)(82.5 * ln(memoryGiB) + 40) * 1024.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة maintenance_work_mem
2 جيبي بايت 99,328 كيلوبايت
4 جيجابيت 157,696 كيلوبايت
8 جيجابيت 216,064 كيلوبايت
16 جيجابيت 274,432 كيلوبايت
32 غيغابايت 332,800 كيلوبايت
48 جيبي بايت 367,616 كيلوبايت
64 جيبي بايت 392,192 كيلوبايت
80 جيبي بايت 410,624 كيلوبايت
128 جيبي بايت 450,560 كيلوبايت
160 جيجابايت 468,992 كيلوبايت
192 جيجابايت 484,352 كيلوبايت
256 غيغابايت 508,928 كيلوبايت
384 جيجابايت 542,720 كيلوبايت
432 جيجابايت 552,960 كيلوبايت
672 جيبي بايت 590,848 كيلوبايت

max_prepared_transactions

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المعاملات المعدة في وقت واحد. عند تشغيل خادم نسخة متماثلة، يجب تعيين هذه المعلمة إلى نفس القيمة أو أعلى من على الخادم الأساسي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0-262143
نوع المعلمة ثابت
Documentation max_prepared_transactions

max_stack_depth

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعمق المكدس، بالكيلو بايت.
نوع البيانات العدد الصحيح
القيمة الافتراضية 2048
القيم المسموح بها 2048
نوع المعلمة للقراءة فقط
Documentation max_stack_depth

min_dynamic_shared_memory

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف مقدار الذاكرة المشتركة الديناميكية المحجوزة عند بدء التشغيل.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0
نوع المعلمة للقراءة فقط
Documentation min_dynamic_shared_memory

shared_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين عدد المخازن المؤقتة للذاكرة المشتركة المستخدمة من قبل الخادم. الوحدة هي 8 كيلوبايت. القيم المسموح بها داخل نطاق 10٪ - 75٪ من الذاكرة المتوفرة.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 16-1073741823
نوع المعلمة ثابت
Documentation shared_buffers

الوصف

shared_buffers تحدد معلمة التكوين مقدار ذاكرة النظام المخصصة لقاعدة بيانات PostgreSQL لتخزين البيانات مؤقتا. إنه بمثابة تجمع ذاكرة مركزي يمكن الوصول إليه من قبل جميع عمليات قاعدة البيانات.

عند الحاجة إلى البيانات، تتحقق عملية قاعدة البيانات أولا من المخزن المؤقت المشترك. في حالة وجود البيانات المطلوبة، يتم استردادها بسرعة وتجاوز قراءة القرص التي تستغرق وقتا أطول. تعمل المخازن المؤقتة المشتركة كوسيط بين عمليات قاعدة البيانات والقرص ، وتقلل بشكل فعال من عدد عمليات الإدخال / الإخراج المطلوبة.

ملاحظات خاصة ب Azure

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

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة shared_buffers وفقا للقيم الموجودة في الصيغ التالية.

بالنسبة للأجهزة الظاهرية التي تصل إلى 2 غيغابايت من الذاكرة، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 16384.

بالنسبة للأجهزة الظاهرية التي تزيد عن 2 غيغابايت، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 32768.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة shared_buffers
2 جيبي بايت 32768
4 جيجابيت 131072
8 جيجابيت 262144
16 جيجابيت 524288
32 غيغابايت 1048576
48 جيبي بايت 1572864
64 جيبي بايت 2097152
80 جيبي بايت 2621440
128 جيبي بايت 4194304
160 جيجابايت 5242880
192 جيجابايت 6291456
256 غيغابايت 8388608
384 جيجابايت 12582912
432 جيجابايت 14155776
672 جيبي بايت 22020096

shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة المستخدمة لمنطقة الذاكرة المشتركة الرئيسية.
نوع البيانات التعداد
القيمة الافتراضية mmap
القيم المسموح بها mmap
نوع المعلمة للقراءة فقط
Documentation shared_memory_type

temp_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المخازن المؤقتة المستخدمة من قبل كل جلسة عمل قاعدة بيانات.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 100-1073741823
نوع المعلمة ديناميكي
Documentation temp_buffers

work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين مقدار الذاكرة التي سيتم استخدامها بواسطة عمليات الفرز الداخلية وجداول التجزئة قبل الكتابة إلى ملفات القرص المؤقتة.
نوع البيانات العدد الصحيح
القيمة الافتراضية 4096
القيم المسموح بها 4096-2097151
نوع المعلمة ديناميكي
Documentation work_mem

الوصف

تتحكم المعلمة work_mem في PostgreSQL في مقدار الذاكرة المخصصة لعمليات داخلية معينة داخل منطقة الذاكرة الخاصة لكل جلسة قاعدة بيانات. ومن الأمثلة على هذه العمليات الفرز والتجزئة.

على عكس المخازن المؤقتة المشتركة، الموجودة في منطقة الذاكرة المشتركة، work_mem يتم تخصيصها في مساحة ذاكرة خاصة لكل جلسة أو لكل استعلام. من خلال تعيين حجم مناسب work_mem ، يمكنك تحسين كفاءة هذه العمليات بشكل كبير وتقليل الحاجة إلى كتابة بيانات مؤقتة على القرص.

النقاط الرئيسية

  • ذاكرة الاتصال الخاصة: work_mem هي جزء من الذاكرة الخاصة التي تستخدمها كل جلسة عمل قاعدة بيانات. تختلف هذه الذاكرة عن منطقة الذاكرة المشتركة التي shared_buffers تستخدمها.
  • الاستخدام الخاص بالاستعلام: لا تستخدم work_memجميع الجلسات أو الاستعلامات . من غير المحتمل أن تتطلب SELECT 1الاستعلامات البسيطة مثل work_mem . ومع ذلك ، يمكن أن تستهلك الاستعلامات المعقدة التي تتضمن عمليات مثل الفرز أو التجزئة جزءا واحدا أو عدة أجزاء من work_mem.
  • العمليات المتوازية: بالنسبة للاستعلامات التي تمتد عبر نهايات خلفية متوازية متعددة، يمكن أن تستخدم كل واجهة خلفية جزءا واحدا أو عدة أجزاء من work_mem.

مراقبة وضبط work_mem

من الضروري مراقبة أداء نظامك باستمرار وضبطه work_mem حسب الضرورة، في المقام الأول إذا كانت أوقات تنفيذ الاستعلام المتعلقة بعمليات الفرز أو التجزئة بطيئة. فيما يلي طرق لمراقبة الأداء باستخدام الأدوات المتوفرة في مدخل Microsoft Azure:

  • إحصاءات أداء الاستعلام: تحقق من علامة التبويب أهم الاستعلامات حسب الملفات المؤقتة لتحديد الاستعلامات التي تنشئ ملفات مؤقتة. يشير هذا الوضع إلى الحاجة المحتملة للزيادة work_mem.
  • أدلة استكشاف الأخطاء وإصلاحها: استخدم علامة التبويب الملفات المؤقتة العالية في أدلة استكشاف الأخطاء وإصلاحها لتحديد الاستعلامات التي بها مشكلات.
تعديل الحبوب

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

  • مستوى المستخدم: إذا كان مستخدم معين يشارك بشكل أساسي في مهام التجميع أو إعداد التقارير، والتي تتطلب ذاكرة مكثفة، ففكر في work_mem تخصيص القيمة لهذا المستخدم. استخدم الأمر ALTER ROLE لتحسين أداء عمليات المستخدم.

  • مستوى الوظيفة / الإجراء: إذا كانت وظائف أو إجراءات معينة تنشئ ملفات مؤقتة كبيرة ، فقد تكون زيادة القيمة work_mem على مستوى الوظيفة أو الإجراء المحدد مفيدة. استخدم الأمر ALTER FUNCTION or ALTER PROCEDURE لتخصيص المزيد من الذاكرة على وجه التحديد لهذه العمليات.

  • مستوى قاعدة البيانات: قم بالتغيير work_mem على مستوى قاعدة البيانات إذا كانت قواعد بيانات معينة فقط تنشئ أعدادا كبيرة من الملفات المؤقتة.

  • المستوى العالمي: إذا كشف تحليل نظامك أن معظم الاستعلامات تنشئ ملفات مؤقتة صغيرة ، بينما يقوم عدد قليل فقط بإنشاء ملفات كبيرة ، فقد يكون من الحكمة زيادة القيمة work_mem بشكل عام. يسهل هذا الإجراء معالجة معظم الاستعلامات في الذاكرة، بحيث يمكنك تجنب العمليات المستندة إلى القرص وتحسين الكفاءة. ومع ذلك ، كن حذرا دائما وراقب استخدام الذاكرة على الخادم الخاص بك للتأكد من قدرته على التعامل مع القيمة المتزايدة work_mem .

تحديد الحد الأدنى لقيمة work_mem لعمليات الفرز

للعثور على الحد الأدنى work_mem للقيمة لاستعلام معين، خاصة تلك التي تقوم بإنشاء ملفات قرص مؤقتة أثناء عملية الفرز، ابدأ بالنظر في حجم الملف المؤقت الذي تم إنشاؤه أثناء تنفيذ الاستعلام. على سبيل المثال، إذا كان الاستعلام ينشئ ملفا مؤقتا بحجم 20 ميغابايت:

  1. اتصل بقاعدة البيانات الخاصة بك باستخدام psql أو عميل PostgreSQL المفضل لديك.
  2. قم بتعيين قيمة أولية work_mem أعلى قليلا من 20 ميغابايت لحساب الرؤوس الإضافية عند المعالجة في الذاكرة. استخدم أمرا مثل: SET work_mem TO '25MB'.
  3. قم بالتشغيل EXPLAIN ANALYZE على الاستعلام الذي به مشكلات في نفس الجلسة.
  4. راجع الإخراج ل "Sort Method: quicksort Memory: xkB". إذا أشار "external merge Disk: xkB"، فقم برفع القيمة work_mem بشكل تدريجي وأعد الاختبار حتى "quicksort Memory" تظهر. ظهور "quicksort Memory" الإشارات التي تشير إلى أن الاستعلام يعمل الآن في الذاكرة.
  5. بعد تحديد القيمة من خلال هذه الطريقة ، يمكنك تطبيقها إما بشكل عام أو على مستويات أكثر دقة (كما هو موضح سابقا) لتناسب احتياجاتك التشغيلية.

autovacuum_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها من قبل كل عملية عامل إخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية -1
القيم المسموح بها -1-2097151
نوع المعلمة ديناميكي
Documentation autovacuum_work_mem

dynamic_shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة الديناميكية المستخدمة.
نوع البيانات التعداد
القيمة الافتراضية posix
القيم المسموح بها posix
نوع المعلمة للقراءة فقط
Documentation dynamic_shared_memory_type

hash_mem_multiplier

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف متعدد work_mem لاستخدامه لجداول التجزئة.
نوع البيانات عددي
القيمة الافتراضية 1
القيم المسموح بها 1-1000
نوع المعلمة ديناميكي
Documentation hash_mem_multiplier

huge_pages

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تمكين/تعطيل استخدام صفحات الذاكرة الضخمة. لا ينطبق هذا الإعداد على الخوادم التي تحتوي على أقل من 4 vCores.
نوع البيانات التعداد
القيمة الافتراضية try
القيم المسموح بها on,off,try
نوع المعلمة ثابت
Documentation huge_pages

الوصف

الصفحات الضخمة هي ميزة تسمح بإدارة الذاكرة في كتل أكبر. يمكنك عادة إدارة الكتل التي يصل حجمها إلى 2 ميغابايت، على عكس الصفحات القياسية التي تبلغ سعتها 4 كيلوبايت.

يمكن أن يوفر استخدام الصفحات الضخمة مزايا أداء تقوم بتفريغ وحدة المعالجة المركزية بشكل فعال:

  • إنها تقلل من النفقات العامة المرتبطة بمهام إدارة الذاكرة مثل عدد أقل من الأخطاء في المخزن المؤقت للترجمة (TLB).
  • أنها تقصر الوقت اللازم لإدارة الذاكرة.

على وجه التحديد ، في PostgreSQL ، يمكنك استخدام صفحات ضخمة فقط لمنطقة الذاكرة المشتركة. يتم تخصيص جزء كبير من منطقة الذاكرة المشتركة للمخازن المؤقتة المشتركة.

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

Recommendations

  • بالنسبة للخوادم التي تحتوي على موارد ذاكرة كبيرة، تجنب تعطيل الصفحات الضخمة. قد يؤدي تعطيل الصفحات الضخمة إلى الإضرار بالأداء.
  • إذا بدأت بخادم أصغر لا يدعم الصفحات الضخمة ولكنك تتوقع التوسع إلى خادم يدعم ذلك، فاحتفظ بالإعداد huge_pages للانتقال TRY السلس والأداء الأمثل.

ملاحظات خاصة ب Azure

بالنسبة للخوادم التي تحتوي على أربعة أو أكثر من vCores ، يتم تخصيص صفحات ضخمة تلقائيا من نظام التشغيل الأساسي. الميزة غير متوفرة للخوادم التي تحتوي على أقل من أربعة نواة افتراضية. يتم ضبط عدد الصفحات الضخمة تلقائيا في حالة تغيير أي إعدادات للذاكرة المشتركة، بما في ذلك التعديلات على shared_buffers.

logical_decoding_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في فك التشفير المنطقي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 65536
القيم المسموح بها 64-2147483647
نوع المعلمة ديناميكي
Documentation logical_decoding_work_mem

maintenance_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في عمليات الصيانة مثل فراغ، إنشاء فهرس.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 1024-2097151
نوع المعلمة ديناميكي
Documentation maintenance_work_mem

الوصف

maintenance_work_mem هي معلمة تكوين في PostgreSQL. يتحكم في مقدار الذاكرة المخصصة لعمليات الصيانة، مثل VACUUM، CREATE INDEXو.ALTER TABLE على عكس work_mem، الذي يؤثر على تخصيص الذاكرة لعمليات الاستعلام ، maintenance_work_mem يتم حجزه للمهام التي تحافظ على بنية قاعدة البيانات وتحسينها.

! [ملاحظة] قد يؤدي الضبط maintenance_work_mem على القيم شديدة العدوانية إلى حدوث خطأ في نفاد الذاكرة بشكل دوري في النظام. من المهم للغاية فهم مقدار الذاكرة المتوفرة على الخادم ، وعدد العمليات المتزامنة التي يمكن أن تخصص الذاكرة للمهام الموضحة سابقا ، قبل إجراء تغييرات على هذه المعلمة.

النقاط الرئيسية

  • غطاء الذاكرة الفراغية: إذا كنت ترغب في تسريع تنظيف المجموعات الميتة عن طريق الزيادة maintenance_work_mem، فكن على دراية بأن VACUUM لديها قيودا مضمنة لجمع معرفات المجموعات الميتة. يمكنه استخدام ما يصل إلى 1 جيجابايت فقط من الذاكرة لهذه العملية.
  • فصل الذاكرة للتفريغ التلقائي: يمكنك استخدام الإعداد autovacuum_work_mem للتحكم في الذاكرة التي تستخدمها عمليات التفريغ التلقائي بشكل مستقل. يعمل هذا الإعداد كمجموعة فرعية من maintenance_work_mem. يمكنك تحديد مقدار استخدام التفريغ التلقائي للذاكرة دون التأثير على تخصيص الذاكرة لمهام الصيانة الأخرى وعمليات تعريف البيانات.

ملاحظات خاصة ب Azure

يتم حساب القيمة الافتراضية لمعلمة maintenance_work_mem الخادم عند توفير مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن، استنادا إلى اسم المنتج الذي تحدده لحسابه. لن يكون لأي تغييرات لاحقة في تحديد المنتج على الحساب الذي يدعم الخادم المرن أي تأثير على القيمة الافتراضية لمعلمة maintenance_work_mem الخادم لهذا المثيل.

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة maintenance_work_mem وفقا للقيم الموجودة في الصيغة التالية.

الصيغة المستخدمة لحساب قيمة maintenance_work_mem هي (long)(82.5 * ln(memoryGiB) + 40) * 1024.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة maintenance_work_mem
2 جيبي بايت 99,328 كيلوبايت
4 جيجابيت 157,696 كيلوبايت
8 جيجابيت 216,064 كيلوبايت
16 جيجابيت 274,432 كيلوبايت
32 غيغابايت 332,800 كيلوبايت
48 جيبي بايت 367,616 كيلوبايت
64 جيبي بايت 392,192 كيلوبايت
80 جيبي بايت 410,624 كيلوبايت
128 جيبي بايت 450,560 كيلوبايت
160 جيجابايت 468,992 كيلوبايت
192 جيجابايت 484,352 كيلوبايت
256 غيغابايت 508,928 كيلوبايت
384 جيجابايت 542,720 كيلوبايت
432 جيجابايت 552,960 كيلوبايت
672 جيبي بايت 590,848 كيلوبايت

max_prepared_transactions

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المعاملات المعدة في وقت واحد. عند تشغيل خادم نسخة متماثلة، يجب تعيين هذه المعلمة إلى نفس القيمة أو أعلى من على الخادم الأساسي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0-262143
نوع المعلمة ثابت
Documentation max_prepared_transactions

max_stack_depth

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعمق المكدس، بالكيلو بايت.
نوع البيانات العدد الصحيح
القيمة الافتراضية 2048
القيم المسموح بها 2048
نوع المعلمة للقراءة فقط
Documentation max_stack_depth

shared_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين عدد المخازن المؤقتة للذاكرة المشتركة المستخدمة من قبل الخادم. الوحدة هي 8 كيلوبايت. القيم المسموح بها داخل نطاق 10٪ - 75٪ من الذاكرة المتوفرة.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 16-1073741823
نوع المعلمة ثابت
Documentation shared_buffers

الوصف

shared_buffers تحدد معلمة التكوين مقدار ذاكرة النظام المخصصة لقاعدة بيانات PostgreSQL لتخزين البيانات مؤقتا. إنه بمثابة تجمع ذاكرة مركزي يمكن الوصول إليه من قبل جميع عمليات قاعدة البيانات.

عند الحاجة إلى البيانات، تتحقق عملية قاعدة البيانات أولا من المخزن المؤقت المشترك. في حالة وجود البيانات المطلوبة، يتم استردادها بسرعة وتجاوز قراءة القرص التي تستغرق وقتا أطول. تعمل المخازن المؤقتة المشتركة كوسيط بين عمليات قاعدة البيانات والقرص ، وتقلل بشكل فعال من عدد عمليات الإدخال / الإخراج المطلوبة.

ملاحظات خاصة ب Azure

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

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة shared_buffers وفقا للقيم الموجودة في الصيغ التالية.

بالنسبة للأجهزة الظاهرية التي تصل إلى 2 غيغابايت من الذاكرة، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 16384.

بالنسبة للأجهزة الظاهرية التي تزيد عن 2 غيغابايت، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 32768.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة shared_buffers
2 جيبي بايت 32768
4 جيجابيت 131072
8 جيجابيت 262144
16 جيجابيت 524288
32 غيغابايت 1048576
48 جيبي بايت 1572864
64 جيبي بايت 2097152
80 جيبي بايت 2621440
128 جيبي بايت 4194304
160 جيجابايت 5242880
192 جيجابايت 6291456
256 غيغابايت 8388608
384 جيجابايت 12582912
432 جيجابايت 14155776
672 جيبي بايت 22020096

shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة المستخدمة لمنطقة الذاكرة المشتركة الرئيسية.
نوع البيانات التعداد
القيمة الافتراضية mmap
القيم المسموح بها mmap
نوع المعلمة للقراءة فقط
Documentation shared_memory_type

temp_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المخازن المؤقتة المستخدمة من قبل كل جلسة عمل قاعدة بيانات.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 100-1073741823
نوع المعلمة ديناميكي
Documentation temp_buffers

work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين مقدار الذاكرة التي سيتم استخدامها بواسطة عمليات الفرز الداخلية وجداول التجزئة قبل الكتابة إلى ملفات القرص المؤقتة.
نوع البيانات العدد الصحيح
القيمة الافتراضية 4096
القيم المسموح بها 4096-2097151
نوع المعلمة ديناميكي
Documentation work_mem

الوصف

تتحكم المعلمة work_mem في PostgreSQL في مقدار الذاكرة المخصصة لعمليات داخلية معينة داخل منطقة الذاكرة الخاصة لكل جلسة قاعدة بيانات. ومن الأمثلة على هذه العمليات الفرز والتجزئة.

على عكس المخازن المؤقتة المشتركة، الموجودة في منطقة الذاكرة المشتركة، work_mem يتم تخصيصها في مساحة ذاكرة خاصة لكل جلسة أو لكل استعلام. من خلال تعيين حجم مناسب work_mem ، يمكنك تحسين كفاءة هذه العمليات بشكل كبير وتقليل الحاجة إلى كتابة بيانات مؤقتة على القرص.

النقاط الرئيسية

  • ذاكرة الاتصال الخاصة: work_mem هي جزء من الذاكرة الخاصة التي تستخدمها كل جلسة عمل قاعدة بيانات. تختلف هذه الذاكرة عن منطقة الذاكرة المشتركة التي shared_buffers تستخدمها.
  • الاستخدام الخاص بالاستعلام: لا تستخدم work_memجميع الجلسات أو الاستعلامات . من غير المحتمل أن تتطلب SELECT 1الاستعلامات البسيطة مثل work_mem . ومع ذلك ، يمكن أن تستهلك الاستعلامات المعقدة التي تتضمن عمليات مثل الفرز أو التجزئة جزءا واحدا أو عدة أجزاء من work_mem.
  • العمليات المتوازية: بالنسبة للاستعلامات التي تمتد عبر نهايات خلفية متوازية متعددة، يمكن أن تستخدم كل واجهة خلفية جزءا واحدا أو عدة أجزاء من work_mem.

مراقبة وضبط work_mem

من الضروري مراقبة أداء نظامك باستمرار وضبطه work_mem حسب الضرورة، في المقام الأول إذا كانت أوقات تنفيذ الاستعلام المتعلقة بعمليات الفرز أو التجزئة بطيئة. فيما يلي طرق لمراقبة الأداء باستخدام الأدوات المتوفرة في مدخل Microsoft Azure:

  • إحصاءات أداء الاستعلام: تحقق من علامة التبويب أهم الاستعلامات حسب الملفات المؤقتة لتحديد الاستعلامات التي تنشئ ملفات مؤقتة. يشير هذا الوضع إلى الحاجة المحتملة للزيادة work_mem.
  • أدلة استكشاف الأخطاء وإصلاحها: استخدم علامة التبويب الملفات المؤقتة العالية في أدلة استكشاف الأخطاء وإصلاحها لتحديد الاستعلامات التي بها مشكلات.
تعديل الحبوب

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

  • مستوى المستخدم: إذا كان مستخدم معين يشارك بشكل أساسي في مهام التجميع أو إعداد التقارير، والتي تتطلب ذاكرة مكثفة، ففكر في work_mem تخصيص القيمة لهذا المستخدم. استخدم الأمر ALTER ROLE لتحسين أداء عمليات المستخدم.

  • مستوى الوظيفة / الإجراء: إذا كانت وظائف أو إجراءات معينة تنشئ ملفات مؤقتة كبيرة ، فقد تكون زيادة القيمة work_mem على مستوى الوظيفة أو الإجراء المحدد مفيدة. استخدم الأمر ALTER FUNCTION or ALTER PROCEDURE لتخصيص المزيد من الذاكرة على وجه التحديد لهذه العمليات.

  • مستوى قاعدة البيانات: قم بالتغيير work_mem على مستوى قاعدة البيانات إذا كانت قواعد بيانات معينة فقط تنشئ أعدادا كبيرة من الملفات المؤقتة.

  • المستوى العالمي: إذا كشف تحليل نظامك أن معظم الاستعلامات تنشئ ملفات مؤقتة صغيرة ، بينما يقوم عدد قليل فقط بإنشاء ملفات كبيرة ، فقد يكون من الحكمة زيادة القيمة work_mem بشكل عام. يسهل هذا الإجراء معالجة معظم الاستعلامات في الذاكرة، بحيث يمكنك تجنب العمليات المستندة إلى القرص وتحسين الكفاءة. ومع ذلك ، كن حذرا دائما وراقب استخدام الذاكرة على الخادم الخاص بك للتأكد من قدرته على التعامل مع القيمة المتزايدة work_mem .

تحديد الحد الأدنى لقيمة work_mem لعمليات الفرز

للعثور على الحد الأدنى work_mem للقيمة لاستعلام معين، خاصة تلك التي تقوم بإنشاء ملفات قرص مؤقتة أثناء عملية الفرز، ابدأ بالنظر في حجم الملف المؤقت الذي تم إنشاؤه أثناء تنفيذ الاستعلام. على سبيل المثال، إذا كان الاستعلام ينشئ ملفا مؤقتا بحجم 20 ميغابايت:

  1. اتصل بقاعدة البيانات الخاصة بك باستخدام psql أو عميل PostgreSQL المفضل لديك.
  2. قم بتعيين قيمة أولية work_mem أعلى قليلا من 20 ميغابايت لحساب الرؤوس الإضافية عند المعالجة في الذاكرة. استخدم أمرا مثل: SET work_mem TO '25MB'.
  3. قم بالتشغيل EXPLAIN ANALYZE على الاستعلام الذي به مشكلات في نفس الجلسة.
  4. راجع الإخراج ل "Sort Method: quicksort Memory: xkB". إذا أشار "external merge Disk: xkB"، فقم برفع القيمة work_mem بشكل تدريجي وأعد الاختبار حتى "quicksort Memory" تظهر. ظهور "quicksort Memory" الإشارات التي تشير إلى أن الاستعلام يعمل الآن في الذاكرة.
  5. بعد تحديد القيمة من خلال هذه الطريقة ، يمكنك تطبيقها إما بشكل عام أو على مستويات أكثر دقة (كما هو موضح سابقا) لتناسب احتياجاتك التشغيلية.

autovacuum_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها من قبل كل عملية عامل إخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية -1
القيم المسموح بها -1-2097151
نوع المعلمة ديناميكي
Documentation autovacuum_work_mem

dynamic_shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة الديناميكية المستخدمة.
نوع البيانات التعداد
القيمة الافتراضية posix
القيم المسموح بها posix
نوع المعلمة للقراءة فقط
Documentation dynamic_shared_memory_type

hash_mem_multiplier

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف متعدد work_mem لاستخدامه لجداول التجزئة.
نوع البيانات عددي
القيمة الافتراضية 1
القيم المسموح بها 1-1000
نوع المعلمة ديناميكي
Documentation hash_mem_multiplier

huge_pages

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تمكين/تعطيل استخدام صفحات الذاكرة الضخمة. لا ينطبق هذا الإعداد على الخوادم التي تحتوي على أقل من 4 vCores.
نوع البيانات التعداد
القيمة الافتراضية try
القيم المسموح بها on,off,try
نوع المعلمة ثابت
Documentation huge_pages

الوصف

الصفحات الضخمة هي ميزة تسمح بإدارة الذاكرة في كتل أكبر. يمكنك عادة إدارة الكتل التي يصل حجمها إلى 2 ميغابايت، على عكس الصفحات القياسية التي تبلغ سعتها 4 كيلوبايت.

يمكن أن يوفر استخدام الصفحات الضخمة مزايا أداء تقوم بتفريغ وحدة المعالجة المركزية بشكل فعال:

  • إنها تقلل من النفقات العامة المرتبطة بمهام إدارة الذاكرة مثل عدد أقل من الأخطاء في المخزن المؤقت للترجمة (TLB).
  • أنها تقصر الوقت اللازم لإدارة الذاكرة.

على وجه التحديد ، في PostgreSQL ، يمكنك استخدام صفحات ضخمة فقط لمنطقة الذاكرة المشتركة. يتم تخصيص جزء كبير من منطقة الذاكرة المشتركة للمخازن المؤقتة المشتركة.

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

Recommendations

  • بالنسبة للخوادم التي تحتوي على موارد ذاكرة كبيرة، تجنب تعطيل الصفحات الضخمة. قد يؤدي تعطيل الصفحات الضخمة إلى الإضرار بالأداء.
  • إذا بدأت بخادم أصغر لا يدعم الصفحات الضخمة ولكنك تتوقع التوسع إلى خادم يدعم ذلك، فاحتفظ بالإعداد huge_pages للانتقال TRY السلس والأداء الأمثل.

ملاحظات خاصة ب Azure

بالنسبة للخوادم التي تحتوي على أربعة أو أكثر من vCores ، يتم تخصيص صفحات ضخمة تلقائيا من نظام التشغيل الأساسي. الميزة غير متوفرة للخوادم التي تحتوي على أقل من أربعة نواة افتراضية. يتم ضبط عدد الصفحات الضخمة تلقائيا في حالة تغيير أي إعدادات للذاكرة المشتركة، بما في ذلك التعديلات على shared_buffers.

maintenance_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في عمليات الصيانة مثل فراغ، إنشاء فهرس.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 1024-2097151
نوع المعلمة ديناميكي
Documentation maintenance_work_mem

الوصف

maintenance_work_mem هي معلمة تكوين في PostgreSQL. يتحكم في مقدار الذاكرة المخصصة لعمليات الصيانة، مثل VACUUM، CREATE INDEXو.ALTER TABLE على عكس work_mem، الذي يؤثر على تخصيص الذاكرة لعمليات الاستعلام ، maintenance_work_mem يتم حجزه للمهام التي تحافظ على بنية قاعدة البيانات وتحسينها.

! [ملاحظة] قد يؤدي الضبط maintenance_work_mem على القيم شديدة العدوانية إلى حدوث خطأ في نفاد الذاكرة بشكل دوري في النظام. من المهم للغاية فهم مقدار الذاكرة المتوفرة على الخادم ، وعدد العمليات المتزامنة التي يمكن أن تخصص الذاكرة للمهام الموضحة سابقا ، قبل إجراء تغييرات على هذه المعلمة.

النقاط الرئيسية

  • غطاء الذاكرة الفراغية: إذا كنت ترغب في تسريع تنظيف المجموعات الميتة عن طريق الزيادة maintenance_work_mem، فكن على دراية بأن VACUUM لديها قيودا مضمنة لجمع معرفات المجموعات الميتة. يمكنه استخدام ما يصل إلى 1 جيجابايت فقط من الذاكرة لهذه العملية.
  • فصل الذاكرة للتفريغ التلقائي: يمكنك استخدام الإعداد autovacuum_work_mem للتحكم في الذاكرة التي تستخدمها عمليات التفريغ التلقائي بشكل مستقل. يعمل هذا الإعداد كمجموعة فرعية من maintenance_work_mem. يمكنك تحديد مقدار استخدام التفريغ التلقائي للذاكرة دون التأثير على تخصيص الذاكرة لمهام الصيانة الأخرى وعمليات تعريف البيانات.

ملاحظات خاصة ب Azure

يتم حساب القيمة الافتراضية لمعلمة maintenance_work_mem الخادم عند توفير مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن، استنادا إلى اسم المنتج الذي تحدده لحسابه. لن يكون لأي تغييرات لاحقة في تحديد المنتج على الحساب الذي يدعم الخادم المرن أي تأثير على القيمة الافتراضية لمعلمة maintenance_work_mem الخادم لهذا المثيل.

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة maintenance_work_mem وفقا للقيم الموجودة في الصيغة التالية.

الصيغة المستخدمة لحساب قيمة maintenance_work_mem هي (long)(82.5 * ln(memoryGiB) + 40) * 1024.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة maintenance_work_mem
2 جيبي بايت 99,328 كيلوبايت
4 جيجابيت 157,696 كيلوبايت
8 جيجابيت 216,064 كيلوبايت
16 جيجابيت 274,432 كيلوبايت
32 غيغابايت 332,800 كيلوبايت
48 جيبي بايت 367,616 كيلوبايت
64 جيبي بايت 392,192 كيلوبايت
80 جيبي بايت 410,624 كيلوبايت
128 جيبي بايت 450,560 كيلوبايت
160 جيجابايت 468,992 كيلوبايت
192 جيجابايت 484,352 كيلوبايت
256 غيغابايت 508,928 كيلوبايت
384 جيجابايت 542,720 كيلوبايت
432 جيجابايت 552,960 كيلوبايت
672 جيبي بايت 590,848 كيلوبايت

max_prepared_transactions

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المعاملات المعدة في وقت واحد. عند تشغيل خادم نسخة متماثلة، يجب تعيين هذه المعلمة إلى نفس القيمة أو أعلى من على الخادم الأساسي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0-262143
نوع المعلمة ثابت
Documentation max_prepared_transactions

max_stack_depth

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعمق المكدس، بالكيلو بايت.
نوع البيانات العدد الصحيح
القيمة الافتراضية 2048
القيم المسموح بها 2048
نوع المعلمة للقراءة فقط
Documentation max_stack_depth

shared_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين عدد المخازن المؤقتة للذاكرة المشتركة المستخدمة من قبل الخادم. الوحدة هي 8 كيلوبايت. القيم المسموح بها داخل نطاق 10٪ - 75٪ من الذاكرة المتوفرة.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 16-1073741823
نوع المعلمة ثابت
Documentation shared_buffers

الوصف

shared_buffers تحدد معلمة التكوين مقدار ذاكرة النظام المخصصة لقاعدة بيانات PostgreSQL لتخزين البيانات مؤقتا. إنه بمثابة تجمع ذاكرة مركزي يمكن الوصول إليه من قبل جميع عمليات قاعدة البيانات.

عند الحاجة إلى البيانات، تتحقق عملية قاعدة البيانات أولا من المخزن المؤقت المشترك. في حالة وجود البيانات المطلوبة، يتم استردادها بسرعة وتجاوز قراءة القرص التي تستغرق وقتا أطول. تعمل المخازن المؤقتة المشتركة كوسيط بين عمليات قاعدة البيانات والقرص ، وتقلل بشكل فعال من عدد عمليات الإدخال / الإخراج المطلوبة.

ملاحظات خاصة ب Azure

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

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة shared_buffers وفقا للقيم الموجودة في الصيغ التالية.

بالنسبة للأجهزة الظاهرية التي تصل إلى 2 غيغابايت من الذاكرة، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 16384.

بالنسبة للأجهزة الظاهرية التي تزيد عن 2 غيغابايت، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 32768.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة shared_buffers
2 جيبي بايت 32768
4 جيجابيت 131072
8 جيجابيت 262144
16 جيجابيت 524288
32 غيغابايت 1048576
48 جيبي بايت 1572864
64 جيبي بايت 2097152
80 جيبي بايت 2621440
128 جيبي بايت 4194304
160 جيجابايت 5242880
192 جيجابايت 6291456
256 غيغابايت 8388608
384 جيجابايت 12582912
432 جيجابايت 14155776
672 جيبي بايت 22020096

shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة المستخدمة لمنطقة الذاكرة المشتركة الرئيسية.
نوع البيانات التعداد
القيمة الافتراضية mmap
القيم المسموح بها mmap
نوع المعلمة للقراءة فقط
Documentation shared_memory_type

temp_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المخازن المؤقتة المستخدمة من قبل كل جلسة عمل قاعدة بيانات.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 100-1073741823
نوع المعلمة ديناميكي
Documentation temp_buffers

work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين مقدار الذاكرة التي سيتم استخدامها بواسطة عمليات الفرز الداخلية وجداول التجزئة قبل الكتابة إلى ملفات القرص المؤقتة.
نوع البيانات العدد الصحيح
القيمة الافتراضية 4096
القيم المسموح بها 4096-2097151
نوع المعلمة ديناميكي
Documentation work_mem

الوصف

تتحكم المعلمة work_mem في PostgreSQL في مقدار الذاكرة المخصصة لعمليات داخلية معينة داخل منطقة الذاكرة الخاصة لكل جلسة قاعدة بيانات. ومن الأمثلة على هذه العمليات الفرز والتجزئة.

على عكس المخازن المؤقتة المشتركة، الموجودة في منطقة الذاكرة المشتركة، work_mem يتم تخصيصها في مساحة ذاكرة خاصة لكل جلسة أو لكل استعلام. من خلال تعيين حجم مناسب work_mem ، يمكنك تحسين كفاءة هذه العمليات بشكل كبير وتقليل الحاجة إلى كتابة بيانات مؤقتة على القرص.

النقاط الرئيسية

  • ذاكرة الاتصال الخاصة: work_mem هي جزء من الذاكرة الخاصة التي تستخدمها كل جلسة عمل قاعدة بيانات. تختلف هذه الذاكرة عن منطقة الذاكرة المشتركة التي shared_buffers تستخدمها.
  • الاستخدام الخاص بالاستعلام: لا تستخدم work_memجميع الجلسات أو الاستعلامات . من غير المحتمل أن تتطلب SELECT 1الاستعلامات البسيطة مثل work_mem . ومع ذلك ، يمكن أن تستهلك الاستعلامات المعقدة التي تتضمن عمليات مثل الفرز أو التجزئة جزءا واحدا أو عدة أجزاء من work_mem.
  • العمليات المتوازية: بالنسبة للاستعلامات التي تمتد عبر نهايات خلفية متوازية متعددة، يمكن أن تستخدم كل واجهة خلفية جزءا واحدا أو عدة أجزاء من work_mem.

مراقبة وضبط work_mem

من الضروري مراقبة أداء نظامك باستمرار وضبطه work_mem حسب الضرورة، في المقام الأول إذا كانت أوقات تنفيذ الاستعلام المتعلقة بعمليات الفرز أو التجزئة بطيئة. فيما يلي طرق لمراقبة الأداء باستخدام الأدوات المتوفرة في مدخل Microsoft Azure:

  • إحصاءات أداء الاستعلام: تحقق من علامة التبويب أهم الاستعلامات حسب الملفات المؤقتة لتحديد الاستعلامات التي تنشئ ملفات مؤقتة. يشير هذا الوضع إلى الحاجة المحتملة للزيادة work_mem.
  • أدلة استكشاف الأخطاء وإصلاحها: استخدم علامة التبويب الملفات المؤقتة العالية في أدلة استكشاف الأخطاء وإصلاحها لتحديد الاستعلامات التي بها مشكلات.
تعديل الحبوب

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

  • مستوى المستخدم: إذا كان مستخدم معين يشارك بشكل أساسي في مهام التجميع أو إعداد التقارير، والتي تتطلب ذاكرة مكثفة، ففكر في work_mem تخصيص القيمة لهذا المستخدم. استخدم الأمر ALTER ROLE لتحسين أداء عمليات المستخدم.

  • مستوى الوظيفة / الإجراء: إذا كانت وظائف أو إجراءات معينة تنشئ ملفات مؤقتة كبيرة ، فقد تكون زيادة القيمة work_mem على مستوى الوظيفة أو الإجراء المحدد مفيدة. استخدم الأمر ALTER FUNCTION or ALTER PROCEDURE لتخصيص المزيد من الذاكرة على وجه التحديد لهذه العمليات.

  • مستوى قاعدة البيانات: قم بالتغيير work_mem على مستوى قاعدة البيانات إذا كانت قواعد بيانات معينة فقط تنشئ أعدادا كبيرة من الملفات المؤقتة.

  • المستوى العالمي: إذا كشف تحليل نظامك أن معظم الاستعلامات تنشئ ملفات مؤقتة صغيرة ، بينما يقوم عدد قليل فقط بإنشاء ملفات كبيرة ، فقد يكون من الحكمة زيادة القيمة work_mem بشكل عام. يسهل هذا الإجراء معالجة معظم الاستعلامات في الذاكرة، بحيث يمكنك تجنب العمليات المستندة إلى القرص وتحسين الكفاءة. ومع ذلك ، كن حذرا دائما وراقب استخدام الذاكرة على الخادم الخاص بك للتأكد من قدرته على التعامل مع القيمة المتزايدة work_mem .

تحديد الحد الأدنى لقيمة work_mem لعمليات الفرز

للعثور على الحد الأدنى work_mem للقيمة لاستعلام معين، خاصة تلك التي تقوم بإنشاء ملفات قرص مؤقتة أثناء عملية الفرز، ابدأ بالنظر في حجم الملف المؤقت الذي تم إنشاؤه أثناء تنفيذ الاستعلام. على سبيل المثال، إذا كان الاستعلام ينشئ ملفا مؤقتا بحجم 20 ميغابايت:

  1. اتصل بقاعدة البيانات الخاصة بك باستخدام psql أو عميل PostgreSQL المفضل لديك.
  2. قم بتعيين قيمة أولية work_mem أعلى قليلا من 20 ميغابايت لحساب الرؤوس الإضافية عند المعالجة في الذاكرة. استخدم أمرا مثل: SET work_mem TO '25MB'.
  3. قم بالتشغيل EXPLAIN ANALYZE على الاستعلام الذي به مشكلات في نفس الجلسة.
  4. راجع الإخراج ل "Sort Method: quicksort Memory: xkB". إذا أشار "external merge Disk: xkB"، فقم برفع القيمة work_mem بشكل تدريجي وأعد الاختبار حتى "quicksort Memory" تظهر. ظهور "quicksort Memory" الإشارات التي تشير إلى أن الاستعلام يعمل الآن في الذاكرة.
  5. بعد تحديد القيمة من خلال هذه الطريقة ، يمكنك تطبيقها إما بشكل عام أو على مستويات أكثر دقة (كما هو موضح سابقا) لتناسب احتياجاتك التشغيلية.

autovacuum_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها من قبل كل عملية عامل إخلاء تلقائي.
نوع البيانات العدد الصحيح
القيمة الافتراضية -1
القيم المسموح بها -1-2097151
نوع المعلمة ديناميكي
Documentation autovacuum_work_mem

dynamic_shared_memory_type

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تحديد تنفيذ الذاكرة المشتركة الديناميكية المستخدمة.
نوع البيانات التعداد
القيمة الافتراضية posix
القيم المسموح بها posix
نوع المعلمة للقراءة فقط
Documentation dynamic_shared_memory_type

huge_pages

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تمكين/تعطيل استخدام صفحات الذاكرة الضخمة. لا ينطبق هذا الإعداد على الخوادم التي تحتوي على أقل من 4 vCores.
نوع البيانات التعداد
القيمة الافتراضية try
القيم المسموح بها on,off,try
نوع المعلمة ثابت
Documentation huge_pages

الوصف

الصفحات الضخمة هي ميزة تسمح بإدارة الذاكرة في كتل أكبر. يمكنك عادة إدارة الكتل التي يصل حجمها إلى 2 ميغابايت، على عكس الصفحات القياسية التي تبلغ سعتها 4 كيلوبايت.

يمكن أن يوفر استخدام الصفحات الضخمة مزايا أداء تقوم بتفريغ وحدة المعالجة المركزية بشكل فعال:

  • إنها تقلل من النفقات العامة المرتبطة بمهام إدارة الذاكرة مثل عدد أقل من الأخطاء في المخزن المؤقت للترجمة (TLB).
  • أنها تقصر الوقت اللازم لإدارة الذاكرة.

على وجه التحديد ، في PostgreSQL ، يمكنك استخدام صفحات ضخمة فقط لمنطقة الذاكرة المشتركة. يتم تخصيص جزء كبير من منطقة الذاكرة المشتركة للمخازن المؤقتة المشتركة.

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

Recommendations

  • بالنسبة للخوادم التي تحتوي على موارد ذاكرة كبيرة، تجنب تعطيل الصفحات الضخمة. قد يؤدي تعطيل الصفحات الضخمة إلى الإضرار بالأداء.
  • إذا بدأت بخادم أصغر لا يدعم الصفحات الضخمة ولكنك تتوقع التوسع إلى خادم يدعم ذلك، فاحتفظ بالإعداد huge_pages للانتقال TRY السلس والأداء الأمثل.

ملاحظات خاصة ب Azure

بالنسبة للخوادم التي تحتوي على أربعة أو أكثر من vCores ، يتم تخصيص صفحات ضخمة تلقائيا من نظام التشغيل الأساسي. الميزة غير متوفرة للخوادم التي تحتوي على أقل من أربعة نواة افتراضية. يتم ضبط عدد الصفحات الضخمة تلقائيا في حالة تغيير أي إعدادات للذاكرة المشتركة، بما في ذلك التعديلات على shared_buffers.

maintenance_work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى للذاكرة لاستخدامها في عمليات الصيانة مثل فراغ، إنشاء فهرس.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 1024-2097151
نوع المعلمة ديناميكي
Documentation maintenance_work_mem

الوصف

maintenance_work_mem هي معلمة تكوين في PostgreSQL. يتحكم في مقدار الذاكرة المخصصة لعمليات الصيانة، مثل VACUUM، CREATE INDEXو.ALTER TABLE على عكس work_mem، الذي يؤثر على تخصيص الذاكرة لعمليات الاستعلام ، maintenance_work_mem يتم حجزه للمهام التي تحافظ على بنية قاعدة البيانات وتحسينها.

! [ملاحظة] قد يؤدي الضبط maintenance_work_mem على القيم شديدة العدوانية إلى حدوث خطأ في نفاد الذاكرة بشكل دوري في النظام. من المهم للغاية فهم مقدار الذاكرة المتوفرة على الخادم ، وعدد العمليات المتزامنة التي يمكن أن تخصص الذاكرة للمهام الموضحة سابقا ، قبل إجراء تغييرات على هذه المعلمة.

النقاط الرئيسية

  • غطاء الذاكرة الفراغية: إذا كنت ترغب في تسريع تنظيف المجموعات الميتة عن طريق الزيادة maintenance_work_mem، فكن على دراية بأن VACUUM لديها قيودا مضمنة لجمع معرفات المجموعات الميتة. يمكنه استخدام ما يصل إلى 1 جيجابايت فقط من الذاكرة لهذه العملية.
  • فصل الذاكرة للتفريغ التلقائي: يمكنك استخدام الإعداد autovacuum_work_mem للتحكم في الذاكرة التي تستخدمها عمليات التفريغ التلقائي بشكل مستقل. يعمل هذا الإعداد كمجموعة فرعية من maintenance_work_mem. يمكنك تحديد مقدار استخدام التفريغ التلقائي للذاكرة دون التأثير على تخصيص الذاكرة لمهام الصيانة الأخرى وعمليات تعريف البيانات.

ملاحظات خاصة ب Azure

يتم حساب القيمة الافتراضية لمعلمة maintenance_work_mem الخادم عند توفير مثيل قاعدة بيانات Azure لخادم PostgreSQL المرن، استنادا إلى اسم المنتج الذي تحدده لحسابه. لن يكون لأي تغييرات لاحقة في تحديد المنتج على الحساب الذي يدعم الخادم المرن أي تأثير على القيمة الافتراضية لمعلمة maintenance_work_mem الخادم لهذا المثيل.

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة maintenance_work_mem وفقا للقيم الموجودة في الصيغة التالية.

الصيغة المستخدمة لحساب قيمة maintenance_work_mem هي (long)(82.5 * ln(memoryGiB) + 40) * 1024.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة maintenance_work_mem
2 جيبي بايت 99,328 كيلوبايت
4 جيجابيت 157,696 كيلوبايت
8 جيجابيت 216,064 كيلوبايت
16 جيجابيت 274,432 كيلوبايت
32 غيغابايت 332,800 كيلوبايت
48 جيبي بايت 367,616 كيلوبايت
64 جيبي بايت 392,192 كيلوبايت
80 جيبي بايت 410,624 كيلوبايت
128 جيبي بايت 450,560 كيلوبايت
160 جيجابايت 468,992 كيلوبايت
192 جيجابايت 484,352 كيلوبايت
256 غيغابايت 508,928 كيلوبايت
384 جيجابايت 542,720 كيلوبايت
432 جيجابايت 552,960 كيلوبايت
672 جيبي بايت 590,848 كيلوبايت

max_prepared_transactions

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المعاملات المعدة في وقت واحد. عند تشغيل خادم نسخة متماثلة، يجب تعيين هذه المعلمة إلى نفس القيمة أو أعلى من على الخادم الأساسي.
نوع البيانات العدد الصحيح
القيمة الافتراضية 0
القيم المسموح بها 0-262143
نوع المعلمة ثابت
Documentation max_prepared_transactions

max_stack_depth

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعمق المكدس، بالكيلو بايت.
نوع البيانات العدد الصحيح
القيمة الافتراضية 2048
القيم المسموح بها 2048
نوع المعلمة للقراءة فقط
Documentation max_stack_depth

shared_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين عدد المخازن المؤقتة للذاكرة المشتركة المستخدمة من قبل الخادم. الوحدة هي 8 كيلوبايت. القيم المسموح بها داخل نطاق 10٪ - 75٪ من الذاكرة المتوفرة.
نوع البيانات العدد الصحيح
القيمة الافتراضية يعتمد على الموارد (vCores أو RAM أو مساحة القرص) المخصصة للخادم.
القيم المسموح بها 16-1073741823
نوع المعلمة ثابت
Documentation shared_buffers

الوصف

shared_buffers تحدد معلمة التكوين مقدار ذاكرة النظام المخصصة لقاعدة بيانات PostgreSQL لتخزين البيانات مؤقتا. إنه بمثابة تجمع ذاكرة مركزي يمكن الوصول إليه من قبل جميع عمليات قاعدة البيانات.

عند الحاجة إلى البيانات، تتحقق عملية قاعدة البيانات أولا من المخزن المؤقت المشترك. في حالة وجود البيانات المطلوبة، يتم استردادها بسرعة وتجاوز قراءة القرص التي تستغرق وقتا أطول. تعمل المخازن المؤقتة المشتركة كوسيط بين عمليات قاعدة البيانات والقرص ، وتقلل بشكل فعال من عدد عمليات الإدخال / الإخراج المطلوبة.

ملاحظات خاصة ب Azure

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

في كل مرة تقوم فيها بتغيير المنتج المعين إلى مثيل، يجب عليك أيضا ضبط قيمة المعلمة shared_buffers وفقا للقيم الموجودة في الصيغ التالية.

بالنسبة للأجهزة الظاهرية التي تصل إلى 2 غيغابايت من الذاكرة، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 16384.

بالنسبة للأجهزة الظاهرية التي تزيد عن 2 غيغابايت، فإن الصيغة المستخدمة لحساب قيمة هي shared_buffersmemoryGib * 32768.

استنادا إلى الصيغة السابقة، يسرد الجدول التالي القيم التي سيتم تعيين معلمة الخادم هذه إليها اعتمادا على مقدار الذاكرة المتوفرة:

حجم الذاكرة shared_buffers
2 جيبي بايت 32768
4 جيجابيت 131072
8 جيجابيت 262144
16 جيجابيت 524288
32 غيغابايت 1048576
48 جيبي بايت 1572864
64 جيبي بايت 2097152
80 جيبي بايت 2621440
128 جيبي بايت 4194304
160 جيجابايت 5242880
192 جيجابايت 6291456
256 غيغابايت 8388608
384 جيجابايت 12582912
432 جيجابايت 14155776
672 جيبي بايت 22020096

temp_buffers

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين الحد الأقصى لعدد المخازن المؤقتة المستخدمة من قبل كل جلسة عمل قاعدة بيانات.
نوع البيانات العدد الصحيح
القيمة الافتراضية 1024
القيم المسموح بها 100-1073741823
نوع المعلمة ديناميكي
Documentation temp_buffers

work_mem

Attribute Value
الفئة استخدام الموارد / الذاكرة
الوصف تعيين مقدار الذاكرة التي سيتم استخدامها بواسطة عمليات الفرز الداخلية وجداول التجزئة قبل الكتابة إلى ملفات القرص المؤقتة.
نوع البيانات العدد الصحيح
القيمة الافتراضية 4096
القيم المسموح بها 4096-2097151
نوع المعلمة ديناميكي
Documentation work_mem

الوصف

تتحكم المعلمة work_mem في PostgreSQL في مقدار الذاكرة المخصصة لعمليات داخلية معينة داخل منطقة الذاكرة الخاصة لكل جلسة قاعدة بيانات. ومن الأمثلة على هذه العمليات الفرز والتجزئة.

على عكس المخازن المؤقتة المشتركة، الموجودة في منطقة الذاكرة المشتركة، work_mem يتم تخصيصها في مساحة ذاكرة خاصة لكل جلسة أو لكل استعلام. من خلال تعيين حجم مناسب work_mem ، يمكنك تحسين كفاءة هذه العمليات بشكل كبير وتقليل الحاجة إلى كتابة بيانات مؤقتة على القرص.

النقاط الرئيسية

  • ذاكرة الاتصال الخاصة: work_mem هي جزء من الذاكرة الخاصة التي تستخدمها كل جلسة عمل قاعدة بيانات. تختلف هذه الذاكرة عن منطقة الذاكرة المشتركة التي shared_buffers تستخدمها.
  • الاستخدام الخاص بالاستعلام: لا تستخدم work_memجميع الجلسات أو الاستعلامات . من غير المحتمل أن تتطلب SELECT 1الاستعلامات البسيطة مثل work_mem . ومع ذلك ، يمكن أن تستهلك الاستعلامات المعقدة التي تتضمن عمليات مثل الفرز أو التجزئة جزءا واحدا أو عدة أجزاء من work_mem.
  • العمليات المتوازية: بالنسبة للاستعلامات التي تمتد عبر نهايات خلفية متوازية متعددة، يمكن أن تستخدم كل واجهة خلفية جزءا واحدا أو عدة أجزاء من work_mem.

مراقبة وضبط work_mem

من الضروري مراقبة أداء نظامك باستمرار وضبطه work_mem حسب الضرورة، في المقام الأول إذا كانت أوقات تنفيذ الاستعلام المتعلقة بعمليات الفرز أو التجزئة بطيئة. فيما يلي طرق لمراقبة الأداء باستخدام الأدوات المتوفرة في مدخل Microsoft Azure:

  • إحصاءات أداء الاستعلام: تحقق من علامة التبويب أهم الاستعلامات حسب الملفات المؤقتة لتحديد الاستعلامات التي تنشئ ملفات مؤقتة. يشير هذا الوضع إلى الحاجة المحتملة للزيادة work_mem.
  • أدلة استكشاف الأخطاء وإصلاحها: استخدم علامة التبويب الملفات المؤقتة العالية في أدلة استكشاف الأخطاء وإصلاحها لتحديد الاستعلامات التي بها مشكلات.
تعديل الحبوب

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

  • مستوى المستخدم: إذا كان مستخدم معين يشارك بشكل أساسي في مهام التجميع أو إعداد التقارير، والتي تتطلب ذاكرة مكثفة، ففكر في work_mem تخصيص القيمة لهذا المستخدم. استخدم الأمر ALTER ROLE لتحسين أداء عمليات المستخدم.

  • مستوى الوظيفة / الإجراء: إذا كانت وظائف أو إجراءات معينة تنشئ ملفات مؤقتة كبيرة ، فقد تكون زيادة القيمة work_mem على مستوى الوظيفة أو الإجراء المحدد مفيدة. استخدم الأمر ALTER FUNCTION or ALTER PROCEDURE لتخصيص المزيد من الذاكرة على وجه التحديد لهذه العمليات.

  • مستوى قاعدة البيانات: قم بالتغيير work_mem على مستوى قاعدة البيانات إذا كانت قواعد بيانات معينة فقط تنشئ أعدادا كبيرة من الملفات المؤقتة.

  • المستوى العالمي: إذا كشف تحليل نظامك أن معظم الاستعلامات تنشئ ملفات مؤقتة صغيرة ، بينما يقوم عدد قليل فقط بإنشاء ملفات كبيرة ، فقد يكون من الحكمة زيادة القيمة work_mem بشكل عام. يسهل هذا الإجراء معالجة معظم الاستعلامات في الذاكرة، بحيث يمكنك تجنب العمليات المستندة إلى القرص وتحسين الكفاءة. ومع ذلك ، كن حذرا دائما وراقب استخدام الذاكرة على الخادم الخاص بك للتأكد من قدرته على التعامل مع القيمة المتزايدة work_mem .

تحديد الحد الأدنى لقيمة work_mem لعمليات الفرز

للعثور على الحد الأدنى work_mem للقيمة لاستعلام معين، خاصة تلك التي تقوم بإنشاء ملفات قرص مؤقتة أثناء عملية الفرز، ابدأ بالنظر في حجم الملف المؤقت الذي تم إنشاؤه أثناء تنفيذ الاستعلام. على سبيل المثال، إذا كان الاستعلام ينشئ ملفا مؤقتا بحجم 20 ميغابايت:

  1. اتصل بقاعدة البيانات الخاصة بك باستخدام psql أو عميل PostgreSQL المفضل لديك.
  2. قم بتعيين قيمة أولية work_mem أعلى قليلا من 20 ميغابايت لحساب الرؤوس الإضافية عند المعالجة في الذاكرة. استخدم أمرا مثل: SET work_mem TO '25MB'.
  3. قم بالتشغيل EXPLAIN ANALYZE على الاستعلام الذي به مشكلات في نفس الجلسة.
  4. راجع الإخراج ل "Sort Method: quicksort Memory: xkB". إذا أشار "external merge Disk: xkB"، فقم برفع القيمة work_mem بشكل تدريجي وأعد الاختبار حتى "quicksort Memory" تظهر. ظهور "quicksort Memory" الإشارات التي تشير إلى أن الاستعلام يعمل الآن في الذاكرة.
  5. بعد تحديد القيمة من خلال هذه الطريقة ، يمكنك تطبيقها إما بشكل عام أو على مستويات أكثر دقة (كما هو موضح سابقا) لتناسب احتياجاتك التشغيلية.