معلمات الخادم
هناك العديد من معلمات الخادم التي تؤثر على سلوك Hyperscale (Citus) ، سواء من PostgreSQL القياسي ، أو خاصة ب Hyperscale (Citus). يمكن تعيين هذه المعلمات في مدخل Azure لمجموعة خوادم Hyperscale (Citus). ضمن الفئة الإعدادات، اختر معلمات عقدة العامل أو معلمات عقدةالمنسق. تسمح لك هذه الصفحات بتعيين معلمات لجميع عقد العاملين، أو لعقدة المنسق فقط.
معلمات المقياس الفائق (Citus)
ملاحظة
قد لا تقدم مجموعات خوادم Hyperscale (Citus) التي تقوم بتشغيل إصدارات أقدم من Citus Engine كافة المعلمات المدرجة أدناه.
تكوين عام
citus.use_secondary_nodes (إينوم)
يضبط النهج المراد استخدامه عند اختيار العقد لاستعلامات SELECT. إذا تم تعيينه على "دائما" ، فسيقوم المخطط بالاستعلام فقط عن العقد التي تم وضع علامة عليها على أنها noderole "ثانوية" في pg_dist_node.
القيم المدعومة لهذا التعداد هي:
- أبدا: (افتراضي) تحدث جميع عمليات القراءة على العقد الأساسية.
- دوما: يتم تشغيل عمليات القراءة مقابل العقد الثانوية بدلا من ذلك، ويتم تعطيل إدراج/تحديث العبارات.
citus.cluster_name (نص)
يبلغ مخطط عقدة المنسق الذي يقوم بتجميعه الذي ينسقه. بمجرد تعيين cluster_name، سيقوم المخطط بالاستعلام عن عقد العامل في هذه المجموعة وحدها.
citus.enable_version_checks (منطقي)
تتطلب ترقية إصدار Hyperscale (Citus) إعادة تشغيل الخادم (لالتقاط المكتبة المشتركة الجديدة)، متبوعا بالأمر ALTER EXTENSION UPDATE . قد يؤدي الفشل في تنفيذ كلتا الخطوتين إلى حدوث أخطاء أو أعطال. وبالتالي ، يقوم Hyperscale (Citus) بالتحقق من صحة إصدار الشفرة وإصدار مطابقة الإضافة ، والأخطاء إذا لم يفعلوا ذلك.
هذه القيمة افتراضية إلى true، وتكون فعالة على المنسق. في حالات نادرة، قد تتطلب عمليات الترقية المعقدة تعيين هذه المعلمة إلى false، وبالتالي تعطيل التحقق.
citus.log_distributiond_deadlock_detection (منطقي)
ما إذا كنت تريد تسجيل المعالجة المتعلقة بالكشف عن حالة توقف تام الموزعة في سجل الخادم. معّدة افتراضيًا على خطأ.
citus.distributed_deadlock_detection_factor (نقطة عائمة)
يضبط وقت الانتظار قبل التحقق من حالات الجمود الموزعة. على وجه الخصوص ، سيكون وقت الانتظار هو هذه القيمة مضروبة في إعداد deadlock_timeout PostgreSQL. القيمة الافتراضية هي 2. قيمة -1 تعطيل الكشف عن حالة توقف تام موزعة.
citus.node_connection_timeout (عدد صحيح)
يحدد citus.node_connection_timeout GUC الحد الأقصى للمدة (بالمللي ثانية) لانتظار إنشاء الاتصال. يثير Hyperscale (Citus) خطأ إذا انقضت المهلة قبل تأسيس اتصال عامل واحد على الأقل. يؤثر هذا GUC على الاتصالات من المنسق إلى العمال ، والعمال إلى بعضهم البعض.
- الافتراضي: خمس ثوان
- الحد الأدنى: 10 مللي ثانية
- الحد الأقصى: ساعة واحدة
-- set to 30 seconds
ALTER DATABASE foo
SET citus.node_connection_timeout = 30000;
citus.log_remote_commands (منطقي)
سجل كافة الأوامر التي يرسلها المنسق إلى العقد العاملة. على سبيل المثال:
-- reveal the per-shard queries behind the scenes
SET citus.log_remote_commands TO on;
-- run a query on distributed table "github_users"
SELECT count(*) FROM github_users;
يكشف الناتج عن العديد من الاستعلامات التي تعمل على العمال بسبب الاستعلام الفردي count(*) على المنسق.
NOTICE: issuing SELECT count(*) AS count FROM public.github_events_102040 github_events WHERE true
DETAIL: on server citus@private-c.demo.postgres.database.azure.com:5432 connectionId: 1
NOTICE: issuing SELECT count(*) AS count FROM public.github_events_102041 github_events WHERE true
DETAIL: on server citus@private-c.demo.postgres.database.azure.com:5432 connectionId: 1
NOTICE: issuing SELECT count(*) AS count FROM public.github_events_102042 github_events WHERE true
DETAIL: on server citus@private-c.demo.postgres.database.azure.com:5432 connectionId: 1
... etc, one for each of the 32 shards
إحصائيات الاستعلام
citus.stat_statements_purge_interval (عدد صحيح)
يضبط التردد الذي يزيل به خفي الصيانة السجلات من citus_stat_statements التي لا مثيل لها في pg_stat_statements. تقوم قيمة التكوين هذه بتعيين الفاصل الزمني بين عمليات التطهير بالثواني، مع قيمة افتراضية تبلغ 10. قيمة 0 تعطل عمليات التطهير.
SET citus.stat_statements_purge_interval TO 5;
هذه المعلمة فعالة على المنسق ويمكن تغييرها في وقت التشغيل.
citus.stat_statements_max (عدد صحيح)
الحد الأقصى لعدد الصفوف المراد تخزينها في citus_stat_statements. يتم الإعداد الافتراضي إلى 50000، ويمكن تغييره إلى أي قيمة في النطاق 1000 - 10000000. يتطلب كل صف 140 بايت من التخزين ، لذا فإن الإعداد stat_statements_max إلى قيمته القصوى البالغة 10 ملايين سيستهلك 1.4 غيغابايت من الذاكرة.
لن يصبح تغيير GUC هذا ساري المفعول حتى تتم إعادة تشغيل PostgreSQL.
citus.stat_statements_track (إينوم)
يتطلب تسجيل الإحصائيات موارد إضافية لوحدة citus_stat_statements المعالجة المركزية.
عندما تواجه قاعدة البيانات تحميلا، قد يرغب المسؤول في تعطيل تتبع العبارات. يمكن ل GUC تشغيل التتبع citus.stat_statements_track وإيقاف تشغيله.
- الكل: (افتراضي) تتبع جميع العبارات.
- اي: تعطيل التتبع.
تحميل البيانات
citus.multi_shard_commit_protocol (إينوم)
يضبط بروتوكول الالتزام لاستخدامه عند إجراء COPY على جدول تجزئة موزع. في كل موضع شظية فردي، يتم تنفيذ COPY في كتلة معاملة لضمان عدم استيعاب أي بيانات في حالة حدوث خطأ أثناء COPY. ومع ذلك ، هناك حالة فشل معينة ينجح فيها COPY في جميع المواضع ، ولكن يحدث فشل (الأجهزة) قبل تنفيذ جميع المعاملات. يمكن استخدام هذه المعلمة لمنع فقدان البيانات في هذه الحالة عن طريق الاختيار بين بروتوكولات الالتزام التالية:
- 2pc: (افتراضي) يتم إعداد المعاملات التي يتم فيها تنفيذ COPY على مواضع الشظايا أولا باستخدام التزام PostgreSQL على مرحلتين ثم يتم ارتكابها. يمكن استرداد الالتزامات الفاشلة يدويا أو إجهاضها باستخدام COMMIT PREPARED أو ROLLBACK READY ، على التوالي. عند استخدام 2pc ، يجب زيادة max_prepared_transactions على جميع العمال ، عادة إلى نفس قيمة max_connections.
- 1 قطعة: يتم تنفيذ المعاملات التي يتم فيها إجراء COPY على مواضع الشظايا في جولة واحدة. قد تفقد البيانات إذا فشل الالتزام بعد نجاح COPY في جميع المواضع (نادرة).
citus.shard_replication_factor (عدد صحيح)
يضبط عامل النسخ المتماثل للشظايا أي عدد العقد التي سيتم وضع الشظايا عليها، والإعدادات الافتراضية إلى 1. يمكن تعيين هذه المعلمة في وقت التشغيل وهي فعالة على المنسق. تعتمد القيمة المثالية لهذه المعلمة على حجم الكتلة ومعدل فشل العقدة. على سبيل المثال، قد ترغب في زيادة عامل النسخ المتماثل هذا إذا قمت بتشغيل مجموعات كبيرة ومراقبة فشل العقدة على أساس أكثر تكرارا.
تكوين المخطط
citus.local_table_join_policy (إينوم)
يحدد GUC هذا كيفية نقل Hyperscale (Citus) للبيانات عند إجراء اتصال بين الجداول المحلية والموزعة. يمكن أن يساعد تخصيص نهج الانضمام في تقليل كمية البيانات المرسلة بين عقد العاملين.
سيرسل Hyperscale (Citus) إما الجداول المحلية أو الموزعة إلى العقد حسب الضرورة لدعم الانضمام. يشار إلى نسخ بيانات الجدول باسم "التحويل". إذا تم تحويل جدول محلي ، إرساله إلى أي عمال يحتاجون إلى بياناته لتنفيذ الانضمام. إذا تم تحويل جدول موزع ، تجميعه في المنسق لدعم الانضمام. سيرسل مخطط Citus الصفوف الضرورية فقط لإجراء تحويل.
هناك أربعة أوضاع متاحة للتعبير عن تفضيل التحويل:
- تلقائي: (افتراضي) سيقوم Citus بتحويل جميع الجداول المحلية أو كافة الجداول الموزعة لدعم صلات الجداول المحلية والموزعة. يقرر Citus أي تحويل باستخدام الاستدلال. سيقوم بتحويل الجداول الموزعة إذا تم ضمها باستخدام عامل تصفية ثابت على فهرس فريد (مثل مفتاح أساسي). يضمن التحويل نقل بيانات أقل بين العمال.
- أبدا: لن تسمح Citus بالصلات بين الجداول المحلية والموزعة.
- يفضل المحلية: سيفضل Citus تحويل الجداول المحلية لدعم روابط الجداول المحلية والموزعة.
- يفضل توزيعها: سيفضل Citus تحويل الجداول الموزعة لدعم روابط الجداول المحلية والموزعة. إذا كانت الجداول الموزعة ضخمة، فقد يؤدي استخدام هذا الخيار إلى نقل الكثير من البيانات بين العمال.
على سبيل المثال، افترض citus_table أنه جدول موزع موزع حسب العمود x، وهذا postgres_table جدول محلي:
CREATE TABLE citus_table(x int primary key, y int);
SELECT create_distributed_table('citus_table', 'x');
CREATE TABLE postgres_table(x int, y int);
-- even though the join is on primary key, there isn't a constant filter
-- hence postgres_table will be sent to worker nodes to support the join
SELECT * FROM citus_table JOIN postgres_table USING (x);
-- there is a constant filter on a primary key, hence the filtered row
-- from the distributed table will be pulled to coordinator to support the join
SELECT * FROM citus_table JOIN postgres_table USING (x) WHERE citus_table.x = 10;
SET citus.local_table_join_policy to 'prefer-distributed';
-- since we prefer distributed tables, citus_table will be pulled to coordinator
-- to support the join. Note that citus_table can be huge.
SELECT * FROM citus_table JOIN postgres_table USING (x);
SET citus.local_table_join_policy to 'prefer-local';
-- even though there is a constant filter on primary key for citus_table
-- postgres_table will be sent to necessary workers because we are using 'prefer-local'.
SELECT * FROM citus_table JOIN postgres_table USING (x) WHERE citus_table.x = 10;
citus.limit_clause_row_fetch_count (عدد صحيح)
يضبط عدد الصفوف المراد جلبها لكل مهمة لتحسين جملة الحد. في بعض الحالات، قد تحتاج الاستعلامات المحددة ذات الجمل المحددة إلى جلب جميع الصفوف من كل مهمة لإنشاء نتائج. في هذه الحالات، وحيث ينتج عن التقريب نتائج ذات مغزى، تقوم قيمة التكوين هذه بتعيين عدد الصفوف المراد جلبها من كل شظية. يتم تعطيل تقريب الحد بشكل افتراضي ويتم تعيين هذه المعلمة إلى -1. يمكن تعيين هذه القيمة في وقت التشغيل وهي فعالة على المنسق.
citus.count_distinct_error_rate (نقطة عائمة)
يمكن ل Hyperscale (Citus) حساب العدد التقريبي (المتميز) باستخدام ملحق postgresql-hll. يقوم إدخال التكوين هذا بتعيين معدل الخطأ المطلوب عند حساب العدد (متميز). 0.0 ، وهو الافتراضي ، يعطل التقريب للعد (متميز) ؛ ولا يوفر الإصدار 1.0 أي ضمانات بشأن دقة النتائج. نوصي بتعيين هذه المعلمة إلى 0.005 للحصول على أفضل النتائج. يمكن تعيين هذه القيمة في وقت التشغيل وهي فعالة على المنسق.
citus.task_assignment_policy (إينوم)
ملاحظة
لا ينطبق GUC هذا إلا عندما يكون shard_replication_factor أكبر من واحد ، أو للاستفسارات ضد reference_tables.
يضبط النهج المراد استخدامه عند تعيين المهام للعمال. يقوم المنسق بتعيين المهام للعمال بناء على مواقع الشظايا. تحدد قيمة التكوين هذه النهج المطلوب استخدامه عند إجراء هذه المهام. حاليا، هناك ثلاثة نهج محتملة لتعيين المهام يمكن استخدامها.
- لهم: سياسة الجشع هي الافتراضية وتهدف إلى توزيع المهام بالتساوي بين العمال.
- جولة روبن: تقوم سياسة روبن المستديرة بتعيين المهام للعمال بطريقة روبن مستديرة بالتناوب بين النسخ المتماثلة المختلفة. تتيح هذه السياسة استخداما أفضل للمجموعات عندما يكون عدد الشظايا لجدول ما منخفضا مقارنة بعدد العمال.
- النسخة المتماثلة الأولى: يقوم نهج النسخ المتماثل الأول بتعيين المهام استنادا إلى ترتيب إدراج المواضع (النسخ المتماثلة) للشظايا. بمعنى آخر ، يتم تعيين استعلام الجزء الخاص بالشظية إلى العامل الذي يحتوي على أول نسخة طبق الأصل من هذا الشظية. تتيح لك هذه الطريقة الحصول على ضمانات قوية حول الشظايا التي سيتم استخدامها في أي عقد (أي ضمانات إقامة أقوى للذاكرة).
يمكن تعيين هذه المعلمة في وقت التشغيل وهي فعالة على المنسق.
نقل البيانات الوسيط
citus.max_intermediate_result_size (عدد صحيح)
الحد الأقصى للحجم بالكيلوبايت للنتائج الوسيطة ل CTEs التي يتعذر دفعها لأسفل إلى عقد العامل للتنفيذ وللاستعلامات الفرعية المعقدة. الافتراضي هو 1 غيغابايت ، وقيمة -1 تعني عدم وجود حد. سيتم إلغاء الاستعلامات التي تتجاوز الحد الأقصى وستنتج رسالة خطأ.
تكوين المنفذ
عام
citus.all_modifications_commutative
يفرض Hyperscale (Citus) قواعد التبديل ويكتسب الأقفال المناسبة لعمليات التعديل من أجل ضمان صحة السلوك. على سبيل المثال، يفترض أن عبارة INSERT تنتقل مع عبارة INSERT أخرى، ولكن ليس مع عبارة UPDATE أو DELETE. وبالمثل ، فإنه يفترض أن عبارة UPDATE أو DELETE لا تنتقل مع عبارة UPDATE أو DELETE أخرى. يعني هذا الاحتياط أن التحديثات و DELETEs تتطلب Hyperscale (Citus) للحصول على أقفال أقوى.
إذا كان لديك عبارات UPDATE تبادلية مع INSERTs أو UPDATEs أخرى، فيمكنك تخفيف افتراضات التبديل هذه عن طريق تعيين هذه المعلمة إلى true. عندما يتم تعيين هذه المعلمة إلى true، تعتبر جميع الأوامر تبادلية وتطالب بتأمين مشترك، مما يؤدي إلى تحسين الإنتاجية الإجمالية. يمكن تعيين هذه المعلمة في وقت التشغيل وهي فعالة على المنسق.
citus.remote_task_check_interval (عدد صحيح)
يضبط التردد الذي يتحقق فيه Hyperscale (Citus) من حالات المهام التي يديرها منفذ تعقب المهام. يتم تعيينه افتراضيا إلى 10 مللي ثانية. يعين المنسق المهام للعمال، ثم يتحقق معهم بانتظام من تقدم كل مهمة. تقوم قيمة التكوين هذه بتعيين الفاصل الزمني بين عمليتي تحقق لاحقتين. هذه المعلمة فعالة على المنسق ويمكن تعيينها في وقت التشغيل.
citus.task_executor_type (إينوم)
يحتوي Hyperscale (Citus) على ثلاثة أنواع من المنفذين لتشغيل استعلامات SELECT الموزعة. يمكن تحديد المنفذ المطلوب عن طريق تعيين معلمة التكوين هذه. القيم المقبولة لهذه المعلمة هي:
- التكيف: الافتراضي. إنه مثالي للاستجابات السريعة للاستعلامات التي تتضمن تجميعات ووصلات مشتركة تمتد عبر شظايا متعددة.
- تعقب المهام: يعد منفذ تعقب المهام مناسبا تماما للاستعلامات المعقدة طويلة الأمد التي تتطلب خلط البيانات عبر عقد العمال وإدارة الموارد بكفاءة.
- في الوقت الفعلي: (مهمل) يخدم غرضا مشابها للمنفذ التكيفي ، ولكنه أقل مرونة ويمكن أن يسبب المزيد من ضغط الاتصال على عقد العاملين.
يمكن تعيين هذه المعلمة في وقت التشغيل وهي فعالة على المنسق.
citus.multi_task_query_log_level (enum) {#multi_task_logging}
تعيين مستوى سجل لأي استعلام يقوم بإنشاء أكثر من مهمة واحدة (أي أنه يضرب أكثر من شظية واحدة). يعد التسجيل مفيدا أثناء ترحيل التطبيقات متعددة المستأجرين، حيث يمكنك اختيار الخطأ أو التحذير من هذه الاستعلامات، للعثور عليها وإضافة عامل تصفية tenant_id إليها. يمكن تعيين هذه المعلمة في وقت التشغيل وهي فعالة على المنسق. القيمة الافتراضية لهذه المعلمة هي "إيقاف".
القيم المدعومة لهذا التعداد هي:
- قباله: إيقاف تشغيل تسجيل أي استعلامات تنشئ مهام متعددة (أي تمتد على شظايا متعددة)
- تصحيح: سجل البيان على مستوى خطورة التصحيح.
- سجل: سجل البيان على مستوى خطورة LOG. سيتضمن سطر السجل استعلام SQL الذي تم تشغيله.
- لاحظ: يسجل البيان على مستوى خطورة إشعار.
- تحذير: سجل البيان على مستوى خطورة التحذير.
- خطأ: يسجل العبارة على مستوى خطورة الخطأ.
قد يكون من المفيد استخدامه error أثناء اختبار التطوير ، ومستوى سجل أقل مثل log أثناء نشر الإنتاج الفعلي.
سيؤدي الاختيار log إلى ظهور استعلامات متعددة المهام في سجلات قاعدة البيانات مع عرض الاستعلام نفسه بعد "STATEMENT".
LOG: multi-task query about to be executed
HINT: Queries are split to multiple tasks if they have to be split into several queries on the workers.
STATEMENT: select * from foo;
citus.propagate_set_commands (إينوم)
يحدد أوامر SET التي يتم نشرها من المنسق إلى العمال. القيمة الافتراضية لهذه المعلمة هي "لا شيء".
القيم المدعومة هي:
- لا شيء: لا يتم نشر أوامر SET.
- محلي: يتم نشر أوامر SET LOCAL فقط.
citus.enable_repartition_joins (منطقي)
عادة، محاولة إجراء إعادة تقسيم ينضم مع المنفذ التكيفي سوف تفشل مع رسالة خطأ. ومع ذلك ، فإن الإعداد citus.enable_repartition_joins إلى true يسمح ل Hyperscale (Citus) بالتبديل مؤقتا إلى منفذ تعقب المهام لتنفيذ الانضمام. القيمة الافتراضية كاذبة.
citus.enable_repartitioned_insert_select (منطقي)
بشكل افتراضي ، إدراج في ... ستحاول عبارة SELECT التي لا يمكن دفعها لأسفل إعادة تقسيم الصفوف من عبارة SELECT ونقلها بين العمال لإدراجها. ومع ذلك ، إذا كان الجدول المستهدف يحتوي على الكثير من الشظايا ، فمن المحتمل ألا تؤدي إعادة التقسيم بشكل جيد. النفقات العامة لمعالجة الفواصل الزمنية للشظايا عند تحديد كيفية تقسيم النتائج كبيرة جدا.
يمكن تعطيل إعادة التقسيم يدويا عن طريق الإعداد citus.enable_repartitioned_insert_select إلى false.
citus.enable_binary_protocol (منطقي)
يؤدي تعيين هذه المعلمة إلى true إلى إرشاد عقدة المنسق لاستخدام تنسيق التسلسل الثنائي الخاص ب PostgreSQL (عند الاقتضاء) لنقل البيانات مع العمال. لا تدعم بعض أنواع الأعمدة التسلسل الثنائي.
يعد تمكين هذه المعلمة مفيدا في الغالب عندما يتعين على العمال إرجاع كميات كبيرة من البيانات. ومن الأمثلة على ذلك عندما يتم طلب العديد من الصفوف، أو تحتوي الصفوف على العديد من الأعمدة، أو تستخدم أنواعا واسعة مثل hll ملحق postgresql-hll.
القيمة الافتراضية صحيحة لإصدارات Postgres 14 والإصدارات الأحدث. بالنسبة للإصدارات 13 والإصدارات الأقل من Postgres ، يكون الإعداد الافتراضي خاطئا ، مما يعني أن جميع النتائج يتم ترميزها ونقلها بتنسيق نصي.
citus.max_adaptive_executor_pool_size (عدد صحيح)
Max_adaptive_executor_pool_size يحد من اتصالات العمال من جلسة العمل الحالية. هذا GUC مفيد من أجل:
- منع خلفية واحدة من الحصول على جميع موارد العمال
- توفير إدارة الأولويات: تعيين جلسات ذات أولوية منخفضة ذات max_adaptive_executor_pool_size منخفضة، وجلسات ذات أولوية عالية ذات قيم أعلى
القيمة الافتراضية هي 16.
citus.executor_slow_start_interval (عدد صحيح)
وقت الانتظار بالمللي ثانية بين فتح الاتصالات بنفس عقدة العامل.
عندما تستغرق المهام الفردية لاستعلام متعدد الشظايا بعض الوقت ، يمكن الانتهاء منها غالبا عبر اتصال واحد (غالبا ما يكون مخبأ بالفعل). لتجنب فتح المزيد من الاتصالات بشكل زائد عن الحاجة، ينتظر المنفذ بين محاولات الاتصال لعدد المللي ثانية الذي تم تكوينه. في نهاية الفاصل الزمني ، يزيد من عدد الاتصالات المسموح بفتحها في المرة القادمة.
بالنسبة للاستعلامات الطويلة (تلك التي تستغرق >500 مللي ثانية) ، قد تضيف البداية البطيئة زمن انتقال ، ولكن بالنسبة للاستعلامات القصيرة ، يكون أسرع. القيمة الافتراضية هي 10 مللي ثانية.
citus.max_cached_conns_per_worker (عدد صحيح)
تفتح كل واجهة خلفية اتصالات بالعمال للاستعلام عن الشظايا. في نهاية المعاملة، يتم الاحتفاظ بعدد الاتصالات الذي تم تكوينه مفتوحا لتسريع الأوامر اللاحقة. ستؤدي زيادة هذه القيمة إلى تقليل زمن انتقال الاستعلامات متعددة الشارد ، ولكنها ستزيد أيضا من النفقات العامة على العمال.
القيمة الافتراضية هي 1. قد تكون القيمة الأكبر مثل 2 مفيدة للمجموعات التي تستخدم عددا صغيرا من الجلسات المتزامنة ، ولكن ليس من الحكمة الذهاب إلى أبعد من ذلك بكثير (على سبيل المثال ، سيكون 16 مرتفعا جدا).
citus.force_max_query_parallelization (منطقي)
يحاكي المنفذ المهمل وغير الموجود الآن في الوقت الفعلي. يستخدم هذا لفتح أكبر عدد ممكن من الاتصالات لزيادة موازاة الاستعلام.
عند تمكين GUC هذا ، سيجبر Citus المنفذ التكيفي على استخدام أكبر عدد ممكن من الاتصالات أثناء تنفيذ استعلام موزع متواز. إذا لم يتم تمكينه، فقد يختار المنفذ استخدام اتصالات أقل لتحسين معدل نقل تنفيذ الاستعلام الإجمالي. داخليا ، سيؤدي تعيين هذا true إلى استخدام اتصال واحد لكل مهمة.
أحد الأماكن التي يكون فيها هذا مفيدا هو في معاملة يكون استعلامها الأول خفيف الوزن ويتطلب عددا قليلا من الاتصالات ، بينما يستفيد الاستعلام اللاحق من المزيد من الاتصالات. تقرر Citus عدد الاتصالات التي يجب استخدامها في المعاملة استنادا إلى البيان الأول ، والذي يمكن أن يخنق الاستعلامات الأخرى ما لم نستخدم GUC لتقديم تلميح.
BEGIN;
-- add this hint
SET citus.force_max_query_parallelization TO ON;
-- a lightweight query that doesn't require many connections
SELECT count(*) FROM table WHERE filter = x;
-- a query that benefits from more connections, and can obtain
-- them since we forced max parallelization above
SELECT ... very .. complex .. SQL;
COMMIT;
القيمة الافتراضية كاذبة.
تكوين منفذ تعقب المهام
citus.task_tracker_delay (عدد صحيح)
تقوم هذه المعلمة بتعيين وقت سكون متعقب المهام بين جولات إدارة المهام والإعدادات الافتراضية إلى 200 مللي ثانية. تستيقظ عملية تعقب المهام بانتظام ، وتمشي فوق جميع المهام الموكلة إليها ، وتقوم بجدولة هذه المهام وتنفيذها. بعد ذلك، ينام متعقب المهام لفترة زمنية قبل المشي فوق هذه المهام مرة أخرى. تحدد قيمة التكوين هذه طول فترة النوم هذه. هذه المعلمة فعالة على العمال ويجب تغييرها في ملف postgresql.conf. بعد تحرير ملف التكوين ، يمكن للمستخدمين إرسال إشارة SIGHUP أو إعادة تشغيل الخادم حتى يصبح التغيير ساري المفعول.
يمكن تقليل هذه المعلمة لتقليص التأخير الناجم عن منفذ تعقب المهام عن طريق تقليل الفجوة الزمنية بين جولات الإدارة. يعد تقليل التأخير مفيدا في الحالات التي تكون فيها استعلامات الشظايا قصيرة وبالتالي تحديث حالتها بانتظام.
citus.max_assign_task_batch_size (عدد صحيح)
يقوم منفذ تعقب المهام على المنسق بتعيين المهام بشكل متزامن على دفعات إلى الخفي على العمال. تقوم هذه المعلمة بتعيين الحد الأقصى لعدد المهام التي يجب تعيينها في دفعة واحدة. يتيح اختيار حجم دفعة أكبر تعيين المهام بشكل أسرع. ومع ذلك ، إذا كان عدد العمال كبيرا ، فقد يستغرق الأمر وقتا أطول لجميع العمال للحصول على المهام. يمكن تعيين هذه المعلمة في وقت التشغيل وهي فعالة على المنسق.
citus.max_running_tasks_per_node (عدد صحيح)
يقوم متعقب المهام بجدولة وتنفيذ المهام الموكلة إليه حسب الاقتضاء. تقوم قيمة التكوين هذه بتعيين الحد الأقصى لعدد المهام التي سيتم تنفيذها بشكل متزامن على عقدة واحدة في أي وقت معين ويتم تعيينها افتراضيا إلى 8.
يضمن الحد الأقصى عدم وجود العديد من المهام التي تصل إلى القرص في نفس الوقت ، ويساعد في تجنب نزاع الإدخال / الإخراج على القرص. إذا تم تقديم استفساراتك من الذاكرة أو محركات الأقراص ذات الحالة الصلبة ، فيمكنك زيادة max_running_tasks_per_node دون قلق كبير.
citus.partition_buffer_size (عدد صحيح)
يضبط حجم المخزن المؤقت لاستخدامه لعمليات القسم والإعدادات الافتراضية إلى 8 ميغابايت. يسمح Hyperscale (Citus) بإعادة تقسيم بيانات الجدول إلى ملفات متعددة عند ضم جدولين كبيرين. بعد ملء هذا المخزن المؤقت للقسم، يتم مسح البيانات المعاد تقسيمها إلى ملفات على القرص. يمكن تعيين إدخال التكوين هذا في وقت التشغيل وهو فعال على العمال.
شرح المخرجات
citus.explain_all_tasks (منطقي)
بشكل افتراضي، يعرض Hyperscale (Citus) مخرجات مهمة واحدة عشوائية عند تشغيل EXPLAIN على استعلام موزع. في معظم الحالات ، سيكون إخراج الشرح مشابها عبر المهام. في بعض الأحيان ، سيتم تخطيط بعض المهام بشكل مختلف أو يكون لها أوقات تنفيذ أعلى بكثير. في هذه الحالات ، قد يكون من المفيد تمكين هذه المعلمة ، وبعد ذلك سيتضمن إخراج EXPLAIN جميع المهام. قد يؤدي شرح جميع المهام إلى أن يستغرق EXPLAIN وقتا أطول.
citus.explain_analyze_sort_method (إينوم)
يحدد طريقة فرز المهام في مخرجات EXPLAIN ANALYZE. وتكون القيمة الافتراضية لـ citus.explain_analyze_sort_method هي execution-time.
القيم المدعومة هي:
- وقت التنفيذ: فرز حسب وقت التنفيذ.
- taskId: فرز حسب معرف المهمة.
معلمات PostgreSQL
- DateStyle - لتعيين تنسيق العرض لقيم التاريخ والوقت
- IntervalStyle - لتعيين تنسيق العرض لقيم الفاصل الزمني
- TimeZone - لتعيين المنطقة الزمنية لعرض الطوابع الزمنية وتفسيرها
- application_name - لتعيين اسم التطبيق المراد الإبلاغ عنه في الإحصاءات والسجلات
- array_nulls - تمكين إدخال عناصر NULL في المصفوفات
- autovacuum - يبدأ عملية autovacuum الفرعية
- autovacuum_analyze_scale_factor - عدد عمليات الإدراج أو التحديث أو الحذف قبل تحليلها كجزء صغير من التكرارات
- autovacuum_analyze_threshold - الحد الأدنى لعدد عمليات الإدراج أو التحديث أو الحذف قبل التحليل
- autovacuum_naptime - وقت النوم بين تشغيل التفريغ التلقائي
- autovacuum_vacuum_cost_delay - تأخير تكلفة الفراغ بالمللي ثانية ، للفراغ التلقائي
- autovacuum_vacuum_cost_limit - كمية تكلفة الفراغ المتاحة قبل القيلولة ، للفراغ التلقائي
- autovacuum_vacuum_scale_factor - عدد تحديثات tuple أو حذفها قبل التفريغ كجزء صغير من reltuples
- autovacuum_vacuum_threshold - الحد الأدنى لعدد تحديثات tuple أو حذفها قبل التفريغ
- autovacuum_work_mem - لتعيين الذاكرة القصوى لاستخدامها من قبل كل عملية عامل التفريغ التلقائي
- backend_flush_after - يتم مسح عدد الصفحات التي يتم بعدها مسح عمليات الكتابة التي تم إجراؤها مسبقا إلى القرص
- backslash_quote - يحدد ما إذا كان "'" مسموحا به في حروف السلسلة
- bgwriter_delay - وقت نوم كاتب الخلفية بين الجولات
- bgwriter_flush_after - يتم بعد ذلك مسح عدد الصفحات التي تم إجراؤها مسبقا على القرص
- bgwriter_lru_maxpages - الحد الأقصى لعدد صفحات LRU لكاتب الخلفية للمسح لكل جولة
- bgwriter_lru_multiplier - أضعاف متوسط استخدام المخزن المؤقت مجانا لكل جولة
- bytea_output - لتعيين تنسيق الإخراج للبايت
- check_function_bodies - يتحقق من أجسام الوظائف أثناء إنشاء وظيفة
- checkpoint_completion_target - الوقت المستغرق في تنظيف المخازن المؤقتة القذرة أثناء نقطة التفتيش ، كجزء صغير من الفاصل الزمني لنقطة التفتيش
- checkpoint_timeout - لتعيين الحد الأقصى للوقت بين نقاط تفتيش WAL التلقائية
- checkpoint_warning - تمكين التحذيرات إذا تم ملء شرائح نقاط التفتيش بشكل متكرر أكثر من ذلك
- client_encoding - لتعيين ترميز مجموعة أحرف العميل
- client_min_messages - تعيين مستويات الرسائل التي يتم إرسالها إلى العميل
- commit_delay - لتعيين التأخير بالميكروثانية بين تنفيذ المعاملة ومسح WAL إلى القرص
- commit_siblings - يحدد الحد الأدنى للمعاملات المفتوحة المتزامنة قبل إجراء commit_delay
- constraint_exclusion - تمكين المخطط من استخدام القيود لتحسين الاستعلامات
- cpu_index_tuple_cost - يحدد تقدير المخطط لتكلفة معالجة كل إدخال فهرس أثناء فحص الفهرس
- cpu_operator_cost - يحدد تقدير المخطط لتكلفة معالجة كل استدعاء مشغل أو وظيفة
- cpu_tuple_cost - يحدد تقدير المخطط لتكلفة معالجة كل مجموعة (صف)
- cursor_tuple_fraction - تعيين تقدير المخطط لجزء صفوف المؤشر التي سيتم استردادها
- deadlock_timeout - لتعيين مقدار الوقت، بالمللي ثانية، للانتظار على القفل قبل التحقق من حالة الجمود
- debug_pretty_print - المسافات البادئة تحليل وتخطيط عرض شجرة
- debug_print_parse - يسجل شجرة تحليل كل استعلام
- debug_print_plan - يسجل خطة تنفيذ كل استعلام
- debug_print_rewritten - يسجل شجرة التحليل المعاد كتابتها لكل استعلام
- default_statistics_target - لتعيين هدف الإحصاءات الافتراضي
- default_tablespace - لتعيين مساحة الجدول الافتراضية لإنشاء جداول وفهارس في
- default_text_search_config - لتعيين تكوين البحث النصي الافتراضي
- default_transaction_deferrable - لتعيين الحالة الافتراضية القابلة للتأجيل للمعاملات الجديدة
- default_transaction_isolation - يحدد مستوى عزل المعاملة لكل معاملة جديدة
- default_transaction_read_only - لتعيين الحالة الافتراضية للقراءة فقط للمعاملات الجديدة
- default_with_oids - إنشاء جداول جديدة باستخدام OIDs بشكل افتراضي
- effective_cache_size - لتعيين افتراض المخطط حول حجم ذاكرة التخزين المؤقت للقرص
- enable_bitmapscan - تمكين المخطط من استخدام خطط المسح الضوئي للصورة النقطية
- enable_gathermerge - تمكين استخدام المخطط لخطط دمج التجميع
- enable_hashagg - تمكين المخطط من استخدام خطط التجميع المجزأة
- enable_hashjoin - تمكين المخطط من استخدام خطط الانضمام التجزئة
- enable_indexonlyscan - تمكين المخطط من استخدام خطط المسح الضوئي للفهرس فقط
- enable_indexscan - تمكين المخطط من استخدام خطط فحص الفهرس
- enable_material - تمكين المخطط من استخدام التجسيد
- enable_mergejoin - تمكين المخطط من استخدام خطط الانضمام إلى الدمج
- enable_nestloop - تمكين المخطط من استخدام خطط الانضمام إلى الحلقة المتداخلة
- enable_seqscan - تمكين المخطط من استخدام خطط المسح المتسلسل
- enable_sort - تمكين المخطط من استخدام خطوات الفرز الصريحة
- enable_tidscan - تمكين المخطط من استخدام خطط فحص TID
- escape_string_warning - يحذر من الهروب من الشرطة المائلة العكسية في حروف السلسلة العادية
- exit_on_error - إنهاء الجلسة عند حدوث أي خطأ
- extra_float_digits - لتعيين عدد الأرقام المعروضة لقيم النقطة العائمة
- force_parallel_mode - فرض استخدام مرافق الاستعلام المتوازية
- from_collapse_limit - لتعيين حجم قائمة FROM-list الذي لا يتم بعده طي الاستعلامات الفرعية
- geqo - تمكين تحسين الاستعلام الجيني
- geqo_effort - GEQO: يتم استخدام الجهد لتعيين الإعداد الافتراضي لمعلمات GEQO الأخرى
- geqo_generations - GEQO: عدد تكرارات الخوارزمية
- geqo_pool_size - GEQO: عدد الأفراد في السكان
- geqo_seed - GEQO: بذور لاختيار المسار العشوائي
- geqo_selection_bias - GEQO: الضغط الانتقائي داخل السكان
- geqo_threshold - يحدد عتبة عناصر FROM التي يتم استخدام GEQO بعدها
- gin_fuzzy_search_limit - تعيين الحد الأقصى للنتيجة المسموح بها للبحث الدقيق بواسطة GIN
- gin_pending_list_limit - تعيين الحد الأقصى لحجم القائمة المعلقة لمؤشر GIN
- idle_in_transaction_session_timeout - يحدد الحد الأقصى للمدة المسموح بها لأي معاملة خاملة
- join_collapse_limit - لتعيين حجم قائمة FROM-list الذي لا يتم بعده تسطيح إنشاءات JOIN
- lc_monetary - لتعيين الإعدادات المحلية لتنسيق المبالغ النقدية
- lc_numeric - لتعيين الإعدادات المحلية لتنسيق الأرقام
- lo_compat_privileges - تمكين وضع التوافق مع الإصدارات السابقة للتحقق من الامتيازات على الكائنات الكبيرة
- lock_timeout - لتعيين الحد الأقصى للمدة المسموح بها (بالمللي ثانية) لأي انتظار للقفل. 0 يوقف تشغيل هذا
- log_autovacuum_min_duration - يحدد الحد الأدنى لوقت التنفيذ الذي سيتم تسجيل إجراءات التفريغ التلقائي فوقه
- log_checkpoints - يسجل كل نقطة تفتيش
- log_connections - يسجل كل اتصال ناجح
- log_destination - تعيين الوجهة لإخراج سجل الخادم
- log_disconnections - سجلات نهاية الجلسة، بما في ذلك المدة
- log_duration - يسجل مدة كل كشف حساب SQL مكتمل
- log_error_verbosity - يضبط الإسهاب في الرسائل المسجلة
- log_lock_waits - سجلات قفل طويل ينتظر
- log_min_duration_statement - لتعيين الحد الأدنى لوقت التنفيذ (بالمللي ثانية) الذي سيتم تسجيل البيانات فوقه. -1 تعطيل تسجيل فترات كشف الحساب
- log_min_error_statement - يؤدي إلى تسجيل جميع العبارات التي تولد خطأ عند هذا المستوى أو أعلى منه
- log_min_messages - لتعيين مستويات الرسالة التي تم تسجيلها
- log_replication_commands - يسجل كل أمر نسخ متماثل
- log_statement - لتعيين نوع العبارات المسجلة
- log_statement_stats - لكل استعلام، يكتب إحصائيات الأداء التراكمي إلى سجل الخادم
- log_temp_files - يسجل استخدام ملفات مؤقتة أكبر من هذا العدد من الكيلوبايت
- maintenance_work_mem - لتعيين الذاكرة القصوى لاستخدامها في عمليات الصيانة
- max_parallel_workers - يحدد الحد الأقصى لعدد العمال المتوازيين الذين يمكن أن يكونوا نشطين في وقت واحد
- max_parallel_workers_per_gather - لتعيين الحد الأقصى لعدد العمليات المتوازية لكل عقدة تنفيذية
- max_pred_locks_per_page - لتعيين الحد الأقصى لعدد المجموعات المقفلة بالمسند لكل صفحة
- max_pred_locks_per_relation - لتعيين الحد الأقصى لعدد الصفحات والمجموعات المقفلة بالمسند لكل علاقة
- max_standby_archive_delay - تعيين الحد الأقصى للتأخير قبل إلغاء الاستعلامات عندما يقوم خادم استعداد ساخن بمعالجة بيانات WAL المؤرشفة
- max_standby_streaming_delay - تعيين الحد الأقصى للتأخير قبل إلغاء الاستعلامات عندما يقوم خادم استعداد ساخن بمعالجة بيانات WAL المتدفقة
- max_sync_workers_per_subscription - الحد الأقصى لعدد عمال مزامنة الجدول لكل اشتراك
- max_wal_size - لتعيين حجم WAL الذي يؤدي إلى تشغيل نقطة تفتيش
- min_parallel_index_scan_size - تعيين الحد الأدنى لكمية بيانات الفهرس لإجراء فحص متوازي
- min_wal_size - لتعيين الحد الأدنى للحجم لتقليص WAL إلى
- operator_precedence_warning - يصدر تحذيرا للتركيبات التي غيرت المعنى منذ PostgreSQL 9.4
- parallel_setup_cost - يحدد تقدير المخطط لتكلفة بدء عمليات العامل للاستعلام المتوازي
- parallel_tuple_cost - يحدد تقدير المخطط لتكلفة تمرير كل مجموعة (صف) من العامل إلى الواجهة الخلفية الرئيسية
- pg_stat_statements.save - يحفظ إحصائيات pg_stat_statements عبر عمليات إيقاف تشغيل الخادم
- pg_stat_statements.track - يحدد العبارات التي يتم تتبعها بواسطة pg_stat_statements
- pg_stat_statements.track_utility - يحدد ما إذا كانت أوامر الأداة المساعدة يتم تعقبها بواسطة pg_stat_statements
- quote_all_identifiers - عند إنشاء شظايا SQL ، يقتبس جميع المعرفات
- random_page_cost - لتعيين تقدير المخطط لتكلفة صفحة القرص التي تم جلبها بشكل غير متسلسل
- row_security - تمكين أمان الصف
- search_path - تعيين ترتيب البحث في المخطط للأسماء غير المؤهلة للمخطط
- seq_page_cost - لتعيين تقدير المخطط لتكلفة صفحة القرص التي يتم جلبها بالتتابع
- session_replication_role - تعيين سلوك الجلسة للمشغلات وإعادة كتابة القواعد
- standard_conforming_strings - الأسباب '...' سلاسل لعلاج الشرطة المائلة الخلفية حرفيا
- statement_timeout - لتعيين الحد الأقصى للمدة المسموح بها (بالمللي ثانية) لأي عبارة. 0 يوقف تشغيل هذا
- synchronize_seqscans - تمكين عمليات الفحص المتسلسلة المتزامنة
- synchronous_commit - لتعيين مستوى مزامنة المعاملة الحالية
- tcp_keepalives_count - الحد الأقصى لعدد عمليات إعادة إرسال TCP المحفوظة
- tcp_keepalives_idle - الوقت بين إصدار TCP المحفوظات.
- tcp_keepalives_interval - الوقت بين عمليات إعادة إرسال TCP المحفوظة
- temp_buffers - لتعيين الحد الأقصى لعدد المخازن المؤقتة المستخدمة في كل جلسة عمل لقاعدة البيانات
- temp_tablespaces - لتعيين مساحة (مساحات) الجداول لاستخدامها في الجداول المؤقتة وفرز الملفات
- track_activities - يجمع معلومات حول تنفيذ الأوامر
- track_counts - يجمع إحصاءات عن نشاط قاعدة البيانات
- track_functions - يجمع إحصاءات على مستوى الوظيفة عن نشاط قاعدة البيانات
- track_io_timing - يجمع إحصائيات التوقيت لنشاط الإدخال/الإخراج في قاعدة البيانات
- transform_null_equals - يعامل "expr = NULL" على أنه "expr IS NULL"
- vacuum_cost_delay - تأخير تكلفة الفراغ بالمللي ثانية
- vacuum_cost_limit - كمية تكلفة الفراغ المتاحة قبل القيلولة
- vacuum_cost_page_dirty - تكلفة الفراغ لصفحة محشورة بالفراغ
- vacuum_cost_page_hit - تكلفة الفراغ لصفحة موجودة في ذاكرة التخزين المؤقت العازلة
- vacuum_cost_page_miss - تكلفة التفريغ لصفحة غير موجودة في ذاكرة التخزين المؤقت العازلة
- vacuum_defer_cleanup_age - عدد المعاملات التي يجب من خلالها تأجيل التنظيف بالمكنسة الكهربائية والتنظيف الساخن، إن وجدت.
- vacuum_freeze_min_age - الحد الأدنى للسن الذي يجب أن تجمد فيه VACUUM صف طاولة
- vacuum_freeze_table_age - العمر الذي يجب أن يقوم فيه VACUUM بمسح الجدول بأكمله لتجميد المجموعات
- vacuum_multixact_freeze_min_age - الحد الأدنى للسن الذي يجب أن يقوم فيه VACUUM بتجميد MultiXactId في صف جدول
- vacuum_multixact_freeze_table_age - عمر متعدد الأكساكت يجب أن يقوم فيه VACUUM بمسح الجدول بأكمله لتجميد التوليفات
- wal_receiver_status_interval - لتعيين الحد الأقصى للفاصل الزمني بين تقارير حالة مستقبل WAL إلى الأساسي
- wal_writer_delay - الوقت بين تدفق WAL الذي تم إجراؤه في كاتب WAL
- wal_writer_flush_after - مقدار WAL الذي كتبه كاتب WAL والذي يؤدي إلى تدفق
- work_mem - لتعيين مقدار الذاكرة التي سيتم استخدامها بواسطة عمليات الفرز الداخلية وجداول التجزئة قبل الكتابة إلى ملفات القرص المؤقتة
- xmlbinary - يضبط كيفية ترميز القيم الثنائية في XML
- xmloption - يحدد ما إذا كانت بيانات XML في عمليات التحليل والتسلسل الضمنية تعتبر مستندات أو أجزاء محتوى
الخطوات التالية
- شكل آخر من أشكال التكوين ، إلى جانب معلمات الخادم ، هي خيارات تكوين الموارد في مجموعة خوادم Hyperscale (Citus).
- تحتوي قاعدة بيانات PostgreSQL الأساسية أيضا على معلمات التكوين.