الانتقال إلى المحتوى الرئيسي

نظرة عامة

توجد عدة طرق لتشغيل تعليمات SQL بإعدادات محددة. تُضبط الإعدادات على شكل طبقات، وتتجاوز كل طبقة لاحقة القيم السابقة لكل إعداد.

ترتيب الأولوية

ترتيب الأولوية لتحديد الإعداد هو:
  1. تطبيق إعداد على مستخدم مباشرةً، أو ضمن ملف تعريف الإعدادات
    • SQL (مُوصى به)
    • إضافة ملف XML أو YAML واحد أو أكثر إلى /etc/clickhouse-server/users.d
  2. إعدادات الجلسة
    • أرسل SET setting=value من وحدة تحكم SQL في ClickHouse Cloud أو من clickhouse client في الوضع التفاعلي. وبالمثل، يمكنك استخدام جلسات ClickHouse عبر بروتوكول HTTP. للقيام بذلك، عليك تحديد معلمة HTTP ‏session_id.
  3. إعدادات الاستعلام
    • عند تشغيل clickhouse client في الوضع غير التفاعلي، عيّن معلمة بدء التشغيل --setting=value.
    • عند استخدام واجهة برمجة تطبيقات HTTP، مرِّر معلمات CGI (URL?setting_1=value&setting_2=value...).
    • عرّف الإعدادات في عبارة SETTINGS في استعلام SELECT. لا تُطبَّق قيمة الإعداد إلا على ذلك الاستعلام وتُعاد إلى القيمة الافتراضية أو السابقة بعد تنفيذ الاستعلام.

إعادة إعداد إلى قيمته الافتراضية

إذا غيّرت إعدادًا وأردت إعادته إلى قيمته الافتراضية، فاضبط القيمة على DEFAULT. وتكون الصياغة كما يلي:
SET setting_name = DEFAULT
على سبيل المثال، القيمة الافتراضية لـ async_insert هي 0. لنفترض أنك غيّرت قيمتها إلى 1:
SET async_insert = 1;

SELECT value FROM system.settings where name='async_insert';
الناتج هو:
┌─value──┐
│ 1      │
└────────┘
يضبط الأمر التالي قيمته مجددًا إلى 0:
SET async_insert = DEFAULT;

SELECT value FROM system.settings where name='async_insert';
عاد الإعداد الآن إلى قيمته الافتراضية:
┌─value───┐
│ 0       │
└─────────┘

الإعدادات المخصصة

بالإضافة إلى الإعدادات الشائعة، يمكن للمستخدمين تعريف إعدادات مخصصة. تتيح لك الإعدادات المخصصة تمرير معلمات خاصة بالجلسة يمكن الإشارة إليها داخل الاستعلامات أو السياسات أو الدوال. ويكون ذلك مفيدًا عندما تحتاج إلى:
  • تصفية البيانات استنادًا إلى هوية المستخدم أو المؤسسة
  • تطبيق منطق أعمال مختلف بحسب السياق
  • الاحتفاظ بمعلومات ذات حالة عبر الاستعلامات داخل الجلسة
يجب أن يبدأ اسم الإعداد المخصص بإحدى البادئات المحددة مسبقًا ضمن قائمة تحددها أنت. ويمكن تحديد قائمة البادئات باستخدام إعداد الخادم custom_settings_prefixes، والمُعرَّف في ملف تكوين الخادم لديك. في المثال أدناه، تم اختيار SQL_ كبادئة مخصصة:
<custom_settings_prefixes>SQL_</custom_settings_prefixes>
في ClickHouse Cloud، لا يمكن تحديد بادئة مخصّصة. تبدأ جميع إعدادات المستخدم المخصّصة بالبادئة SQL_.
لتعريف إعداد مخصّص، استخدم الأمر SET:
SET SQL_a = 123;
للحصول على القيمة الحالية لإعداد مخصّص، استخدم الدالة getSetting():
SELECT getSetting('SQL_a');

أمثلة

تضبط هذه الأمثلة جميعها قيمة الإعداد async_insert على 1، وتوضح كيفية الاطلاع على الإعدادات في نظام يعمل.

استخدام SQL لتعيين إعداد لمستخدم مباشرةً

ينشئ هذا المستخدم ingester مع الإعداد async_inset = 1:
CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
SETTINGS async_insert = 1

افحص ملف تعريف الإعدادات وإسناده

SHOW ACCESS
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐
│ ...                                                                                │
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS async_insert = true  │
│ ...                                                                                │
└────────────────────────────────────────────────────────────────────────────────────┘

استخدام SQL لإنشاء ملف تعريف الإعدادات وتعيينه لمستخدم

يؤدي هذا إلى إنشاء ملف التعريف log_ingest مع الإعداد async_inset = 1:
CREATE
SETTINGS PROFILE log_ingest SETTINGS async_insert = 1
يؤدي هذا إلى إنشاء المستخدم ingester وإسناد ملف تعريف الإعدادات log_ingest إليه:
CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
SETTINGS PROFILE log_ingest

استخدام XML لإنشاء ملف تعريف الإعدادات ومستخدم

/etc/clickhouse-server/users.d/users.xml
<clickhouse>
    <profiles>
        <log_ingest>
            <async_insert>1</async_insert>
        </log_ingest>
    </profiles>

    <users>
        <ingester>
            <password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>
            <profile>log_ingest</profile>
        </ingester>
        <default replace="true">
            <password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>
            <access_management>1</access_management>
            <named_collection_control>1</named_collection_control>
        </default>
    </users>
</clickhouse>

افحص ملف تعريف الإعدادات والتعيين

SHOW ACCESS
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐
│ CREATE USER default IDENTIFIED WITH sha256_password                                │
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS PROFILE log_ingest   │
│ CREATE SETTINGS PROFILE default                                                    │
│ CREATE SETTINGS PROFILE log_ingest SETTINGS async_insert = true                    │
│ CREATE SETTINGS PROFILE readonly SETTINGS readonly = 1                             │
│ ...                                                                                │
└────────────────────────────────────────────────────────────────────────────────────┘

تعيين إعداد لجلسة

SET async_insert =1;
SELECT value FROM system.settings where name='async_insert';
┌─value──┐
│ 1      │
└────────┘

تعيين إعداد أثناء تنفيذ استعلام

INSERT INTO YourTable
SETTINGS async_insert=1
VALUES (...)

انظر أيضًا

آخر تعديل في ٢٩ يونيو ٢٠٢٦