ClickHouse/docs/fa/sql_reference/statements/alter.md
2020-04-04 12:15:31 +03:00

38 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 36 ALTER

ALTER

این ALTER پرسوجو فقط برای پشتیبانی *MergeTree جداول و همچنین MergeوDistributed. پرس و جو دارای چندین تغییرات.

دستکاری ستون

تغییر ساختار جدول.

ALTER TABLE [db].name [ON CLUSTER cluster] ADD|DROP|CLEAR|COMMENT|MODIFY COLUMN ...

در پرس و جو, مشخص یک لیست از یک یا چند اقدامات کاما از هم جدا. هر عمل یک عملیات بر روی یک ستون است.

اقدامات زیر پشتیبانی می شوند:

این اقدامات در زیر توضیح داده شده است.

ADD COLUMN

ADD COLUMN [IF NOT EXISTS] name [type] [default_expr] [codec] [AFTER name_after]

یک ستون جدید به جدول با مشخص اضافه می کند name, type, codec و default_expr (نگاه کنید به بخش عبارتهای پیشفرض).

اگر IF NOT EXISTS بند گنجانده شده است, پرس و جو یک خطا بازگشت نیست اگر ستون در حال حاضر وجود دارد. اگر شما مشخص کنید AFTER name_after (نام ستون دیگر), ستون پس از یک مشخص شده در لیست ستون جدول اضافه. در غیر این صورت, ستون به پایان جدول اضافه. توجه داشته باشید که هیچ راهی برای اضافه کردن یک ستون به ابتدای جدول وجود دارد. برای زنجیره ای از اقدامات, name_after می تواند نام یک ستون است که در یکی از اقدامات قبلی اضافه شده است.

اضافه کردن یک ستون فقط تغییر ساختار جدول, بدون انجام هر گونه اقدامات با داده. داده ها بر روی دیسک پس از ظاهر نمی شود ALTER. اگر داده ها برای یک ستون از دست رفته در هنگام خواندن از جدول, این است که در با مقادیر پیش فرض پر (با انجام عبارت پیش فرض اگر یکی وجود دارد, و یا با استفاده از صفر یا رشته های خالی). ستون بر روی دیسک به نظر می رسد پس از ادغام قطعات داده (دیدن ادغام).

این رویکرد به ما اجازه می دهد برای تکمیل ALTER پرس و جو فورا, بدون افزایش حجم داده های قدیمی.

مثال:

ALTER TABLE visits ADD COLUMN browser String AFTER user_id

DROP COLUMN

DROP COLUMN [IF EXISTS] name

ستون را با نام حذف می کند name. اگر IF EXISTS بند مشخص شده است, پرس و جو یک خطا بازگشت نیست اگر ستون وجود ندارد.

حذف داده ها از سیستم فایل. از این حذف تمام فایل های پرس و جو تقریبا بلافاصله تکمیل شده است.

مثال:

ALTER TABLE visits DROP COLUMN browser

CLEAR COLUMN

CLEAR COLUMN [IF EXISTS] name IN PARTITION partition_name

بازنشانی تمام داده ها در یک ستون برای یک پارتیشن مشخص. اطلاعات بیشتر در مورد تنظیم نام پارتیشن در بخش نحوه مشخص کردن عبارت پارتیشن.

اگر IF EXISTS بند مشخص شده است, پرس و جو یک خطا بازگشت نیست اگر ستون وجود ندارد.

مثال:

ALTER TABLE visits CLEAR COLUMN browser IN PARTITION tuple()

COMMENT COLUMN

COMMENT COLUMN [IF EXISTS] name 'comment'

می افزاید: نظر به ستون. اگر IF EXISTS بند مشخص شده است, پرس و جو یک خطا بازگشت نیست اگر ستون وجود ندارد.

هر ستون می تواند یک نظر داشته باشد. اگر یک نظر در حال حاضر برای ستون وجود دارد, یک نظر جدید رونویسی نظر قبلی.

نظرات در ذخیره می شود comment_expression ستون توسط DESCRIBE TABLE پرس و جو.

مثال:

ALTER TABLE visits COMMENT COLUMN browser 'The table shows the browser used for accessing the site.'

MODIFY COLUMN

MODIFY COLUMN [IF EXISTS] name [type] [default_expr] [TTL]

این پرسوجو تغییر میکند name ویژگیهای ستون:

  • نوع

  • عبارت پیشفرض

  • TTL

    For examples of columns TTL modifying, see [Column TTL](../engines/table_engines/mergetree_family/mergetree.md#mergetree-column-ttl).
    

اگر IF EXISTS بند مشخص شده است, پرس و جو یک خطا بازگشت نیست اگر ستون وجود ندارد.

هنگام تغییر نوع, ارزش ها به عنوان اگر تبدیل نوع توابع به کار گرفته شد. اگر تنها عبارت پیش فرض تغییر می کند, پرس و جو می کند هر چیزی پیچیده نیست, و تقریبا بلافاصله تکمیل.

مثال:

ALTER TABLE visits MODIFY COLUMN browser Array(String)

Changing the column type is the only complex action it changes the contents of files with data. For large tables, this may take a long time.

چندین مرحله پردازش وجود دارد:

  • تهیه فایل های موقت (جدید) با داده های اصلاح شده.
  • تغییر نام فایل های قدیمی.
  • تغییر نام فایل های موقت (جدید) به نام های قدیمی.
  • حذف فایل های قدیمی.

فقط مرحله اول زمان طول می کشد. در صورتی که یک شکست در این مرحله وجود دارد, داده ها تغییر نکرده است. در صورتی که یک شکست در یکی از مراحل پی در پی وجود دارد, داده ها را می توان به صورت دستی ترمیم. استثنا است اگر فایل های قدیمی از سیستم فایل حذف شد اما داده ها را برای فایل های جدید را به دیسک نوشته شده است و از دست داده بود.

این ALTER پرس و جو برای تغییر ستون تکرار شده است. دستورالعمل ها در باغ وحش ذخیره می شوند و سپس هر ماکت اعمال می شود. همه ALTER نمایش داده شد در همان جهت اجرا شود. پرس و جو منتظر اقدامات مناسب برای در کپی دیگر تکمیل شود. با این حال, پرس و جو برای تغییر ستون در یک جدول تکرار می تواند قطع, و تمام اقدامات غیر همزمان انجام خواهد شد.

تغییر محدودیت پرس و جو

این ALTER پرس و جو به شما امکان ایجاد و حذف عناصر جداگانه (ستون) در ساختارهای داده های تو در تو, اما نه کل ساختارهای داده تو در تو. برای اضافه کردن یک ساختار داده های تو در تو, شما می توانید ستون با یک نام مانند اضافه name.nested_name و نوع Array(T). ساختار داده های تو در تو معادل ستون های چندگانه با یک نام است که پیشوند مشابه قبل از نقطه است.

هیچ پشتیبانی برای حذف ستون ها در کلید اصلی یا کلید نمونه برداری (ستون هایی که در استفاده می شود) وجود ندارد. ENGINE عبارت). تغییر نوع ستون که در کلید اصلی گنجانده شده است تنها ممکن است اگر این تغییر باعث نمی شود داده ها به اصلاح شود (مثلا, شما مجاز به اضافه کردن مقادیر به شمارشی و یا برای تغییر یک نوع از DateTime به UInt32).

اگر ALTER پرس و جو برای ایجاد تغییرات جدول مورد نیاز کافی نیست شما می توانید یک جدول جدید ایجاد کنید و داده ها را با استفاده از داده ها کپی کنید INSERT SELECT پرس و جو, سپس جداول با استفاده از تغییر RENAME پرس و جو و حذف جدول قدیمی. شما می توانید از تاتر-کپی به عنوان یک جایگزین برای INSERT SELECT پرس و جو.

این ALTER بلوک پرس و جو همه می خواند و می نویسد برای جدول. به عبارت دیگر, اگر طولانی SELECT در حال اجرا است در زمان ALTER پرس و جو ALTER پرس و جو منتظر خواهد ماند تا کامل شود. همزمان, تمام نمایش داده شد جدید به همان جدول صبر کنید در حالی که این ALTER در حال اجرا است.

برای جداول که داده های خود را ذخیره کنید (مانند Merge و Distributed), ALTER فقط ساختار جدول را تغییر می دهد و ساختار جداول تابع را تغییر نمی دهد. مثلا, زمانی که در حال اجرا را تغییر دهید برای یک Distributed جدول, شما همچنین نیاز به اجرا ALTER برای جداول در تمام سرور از راه دور.

دستکاری با عبارات کلیدی

دستور زیر پشتیبانی می شود:

MODIFY ORDER BY new_expression

این فقط برای جداول در کار می کند MergeTree خانواده (از جمله تکرار جدول). فرمان تغییر کلید مرتب سازی از جدول به new_expression (بیان و یا یک تاپل از عبارات). کلید اصلی یکسان باقی می ماند.

فرمان سبک وزن به این معنا است که تنها ابرداده را تغییر می دهد. برای حفظ اموال که بخش داده ها ردیف ها توسط عبارت کلیدی مرتب سازی شما می توانید عبارات حاوی ستون های موجود اضافه کنید دستور داد به کلید مرتب سازی (فقط ستون اضافه شده توسط ADD COLUMN فرمان در همان ALTER پرسوجو).

دستکاری با شاخص های پرش داده

این فقط برای جداول در کار می کند *MergeTree خانواده (از جمله تکرار جدول). عملیات زیر در دسترس هستند:

  • ALTER TABLE [db].name ADD INDEX name expression TYPE type GRANULARITY value AFTER name [AFTER name2] - می افزاید توضیحات شاخص به ابرداده جداول .

  • ALTER TABLE [db].name DROP INDEX name - حذف شرح شاخص از ابرداده جداول و حذف فایل های شاخص از دیسک.

این دستورات سبک وزن هستند به این معنا که فقط فراداده را تغییر می دهند یا فایل ها را حذف می کنند. همچنین تکرار میشوند (همگامسازی فرادادههای شاخص از طریق باغ وحش).

دستکاری با محدودیت

مشاهده بیشتر در قیدها

محدودیت ها می توانند با استفاده از نحو زیر اضافه یا حذف شوند:

ALTER TABLE [db].name ADD CONSTRAINT constraint_name CHECK expression;
ALTER TABLE [db].name DROP CONSTRAINT constraint_name;

نمایش داده شد اضافه خواهد شد و یا حذف ابرداده در مورد محدودیت از جدول به طوری که بلافاصله پردازش شده است.

بررسی قید اعدام نخواهد شد در داده های موجود اگر اضافه شد.

همه تغییرات در جداول تکرار در حال پخش به باغ وحش بنابراین خواهد شد در دیگر کپی اعمال می شود.

دستکاری با پارتیشن ها و قطعات

عملیات زیر را با پارتیشن ها در دسترس هستند:

  • DETACH PARTITION Moves a partition to the detached دایرکتوری و فراموش کرده ام.
  • DROP PARTITION Deletes a partition.
  • ATTACH PART|PARTITION Adds a part or partition from the detached دایرکتوری به جدول.
  • REPLACE PARTITION - پارتیشن داده ها را از یک جدول به دیگری کپی می کند.
  • ATTACH PARTITION FROM Copies the data partition from one table to another and adds.
  • REPLACE PARTITION - پارتیشن داده ها را از یک جدول به دیگری کپی می کند و جایگزین می شود.
  • MOVE PARTITION TO TABLE (#تغییر_موف_ قابل تنظیم-پارتیشن) - پارتیشن داده را از یک جدول به دیگری حرکت دهید.
  • CLEAR COLUMN IN PARTITION - بازنشانی ارزش یک ستون مشخص شده در یک پارتیشن.
  • CLEAR INDEX IN PARTITION - بازنشانی شاخص ثانویه مشخص شده در یک پارتیشن.
  • FREEZE PARTITION Creates a backup of a partition.
  • FETCH PARTITION Downloads a partition from another server.
  • MOVE PARTITION|PART Move partition/data part to another disk or volume.

جدا پارتیشن {#alter_detach-پارتیشن}

ALTER TABLE table_name DETACH PARTITION partition_expr

تمام داده ها را برای پارتیشن مشخص شده به detached فهرست راهنما. سرور فراموش در مورد پارتیشن داده جدا به عنوان اگر وجود ندارد. سرور نمی خواهد در مورد این داده ها می دانم تا زمانی که شما را به ATTACH پرس و جو.

مثال:

ALTER TABLE visits DETACH PARTITION 201901

اطلاعات بیشتر در مورد تنظیم بیان پارتیشن در یک بخش نحوه مشخص کردن عبارت پارتیشن.

پس از پرس و جو اجرا شده است, شما می توانید هر کاری که می خواهید با داده ها در انجام detached directory — delete it from the file system, or just leave it.

This query is replicated it moves the data to the detached دایرکتوری در تمام کپی. توجه داشته باشید که شما می توانید این پرس و جو تنها در یک ماکت رهبر را اجرا کند. برای پیدا کردن اگر یک ماکت یک رهبر است, انجام SELECT پرسوجو به سیستم.تکرار جدول متناوبا, راحت تر به یک است DETACH پرس و جو در تمام کپی - همه کپی پرتاب یک استثنا, به جز ماکت رهبر.

DROP PARTITION

ALTER TABLE table_name DROP PARTITION partition_expr

پارتیشن مشخص شده را از جدول حذف می کند. این برچسب ها پرس و جو پارتیشن به عنوان غیر فعال و حذف داده ها به طور کامل, حدود در 10 دقیقه.

اطلاعات بیشتر در مورد تنظیم بیان پارتیشن در یک بخش نحوه مشخص کردن عبارت پارتیشن.

The query is replicated it deletes data on all replicas.

DROP DETACHED PARTITION|PART

ALTER TABLE table_name DROP DETACHED PARTITION|PART partition_expr

بخش مشخص شده یا تمام قسمت های پارتیشن مشخص شده را از بین می برد detached. اطلاعات بیشتر در مورد تنظیم بیان پارتیشن در یک بخش نحوه مشخص کردن عبارت پارتیشن.

ATTACH PARTITION|PART

ALTER TABLE table_name ATTACH PARTITION|PART partition_expr

می افزاید داده ها به جدول از detached فهرست راهنما. ممکن است که به اضافه کردن داده ها برای کل پارتیشن و یا برای یک بخش جداگانه. مثالها:

ALTER TABLE visits ATTACH PARTITION 201901;
ALTER TABLE visits ATTACH PART 201901_2_2_0;

اطلاعات بیشتر در مورد تنظیم بیان پارتیشن در یک بخش نحوه مشخص کردن عبارت پارتیشن.

این پرس و جو تکرار شده است. چک المثنی-ابتکار چه داده ها در وجود دارد detached فهرست راهنما. اگر داده وجود دارد, پرس و جو چک یکپارچگی خود را. اگر همه چیز درست است, پرس و جو می افزاید: داده ها به جدول. همه کپی دیگر دانلود داده ها از ماکت-مبتکر.

بنابراین شما می توانید داده ها را به detached دایرکتوری در یک ماکت, و استفاده از ALTER ... ATTACH پرس و جو برای اضافه کردن به جدول در تمام کپی.

ATTACH PARTITION FROM

ALTER TABLE table2 ATTACH PARTITION partition_expr FROM table1

این پرس و جو پارتیشن داده را از table1 به table2 می افزاید داده ها به لیست موجود در table2. توجه داشته باشید که داده ها از حذف نمی شود table1.

برای پرس و جو به اجرا با موفقیت, شرایط زیر باید رعایت شود:

  • هر دو جدول باید همان ساختار دارند.
  • هر دو جدول باید کلید پارتیشن همان.

REPLACE PARTITION

ALTER TABLE table2 REPLACE PARTITION partition_expr FROM table1

این پرس و جو پارتیشن داده را از table1 به table2 و جایگزین پارتیشن موجود در table2. توجه داشته باشید که داده ها از حذف نمی شود table1.

برای پرس و جو به اجرا با موفقیت, شرایط زیر باید رعایت شود:

  • هر دو جدول باید همان ساختار دارند.
  • هر دو جدول باید کلید پارتیشن همان.

MOVE PARTITION TO TABLE

ALTER TABLE table_source MOVE PARTITION partition_expr TO TABLE table_dest

این پرس و جو انتقال پارتیشن داده ها از table_source به table_dest با حذف داده ها از table_source.

برای پرس و جو به اجرا با موفقیت, شرایط زیر باید رعایت شود:

  • هر دو جدول باید همان ساختار دارند.
  • هر دو جدول باید کلید پارتیشن همان.
  • هر دو جدول باید همان خانواده موتور باشد. (تکرار و یا غیر تکرار)
  • هر دو جدول باید سیاست ذخیره سازی همان.

CLEAR COLUMN IN PARTITION

ALTER TABLE table_name CLEAR COLUMN column_name IN PARTITION partition_expr

بازنشانی تمام مقادیر در ستون مشخص شده در یک پارتیشن. اگر DEFAULT بند هنگام ایجاد یک جدول تعیین شد, این پرس و جو مجموعه مقدار ستون به یک مقدار پیش فرض مشخص.

مثال:

ALTER TABLE visits CLEAR COLUMN hour in PARTITION 201902

FREEZE PARTITION

ALTER TABLE table_name FREEZE [PARTITION partition_expr]

این پرس و جو یک نسخه پشتیبان تهیه محلی از یک پارتیشن مشخص شده ایجاد می کند. اگر PARTITION بند حذف شده است, پرس و جو ایجاد پشتیبان گیری از تمام پارتیشن در یک بار.

!!! note "یادداشت" تمامی مراحل پشتیبان گیری بدون توقف سرور انجام می شود.

توجه داشته باشید که برای جداول قدیمی مدل دهید شما می توانید پیشوند نام پارتیشن را مشخص کنید (به عنوان مثال, 2019)- سپس پرس و جو پشتیبان گیری برای تمام پارتیشن مربوطه ایجاد می کند. اطلاعات بیشتر در مورد تنظیم بیان پارتیشن در یک بخش نحوه مشخص کردن عبارت پارتیشن.

در زمان اجرای, برای یک تصویر لحظهای داده, پرس و جو ایجاد لینک به داده های جدول. پیوندهای سخت در دایرکتوری قرار می گیرند /var/lib/clickhouse/shadow/N/... کجا:

  • /var/lib/clickhouse/ است دایرکتوری محل کلیک کار مشخص شده در پیکربندی.
  • N تعداد افزایشی از نسخه پشتیبان تهیه شده است.

!!! note "یادداشت" در صورت استفاده مجموعه ای از دیسک برای ذخیره سازی داده ها در یک جدول این shadow/N دایرکتوری به نظر می رسد در هر دیسک, ذخیره سازی قطعات داده که توسط همسان PARTITION اصطلاح.

همان ساختار دایرکتوری ها در داخل پشتیبان به عنوان داخل ایجاد شده است /var/lib/clickhouse/. پرس و جو انجام می شود chmod برای همه پروندهها نوشتن رو ممنوع کردم

پس از ایجاد نسخه پشتیبان تهیه, شما می توانید داده ها را از کپی /var/lib/clickhouse/shadow/ به سرور از راه دور و سپس از سرور محلی حذف کنید. توجه داشته باشید که ALTER t FREEZE PARTITION پرس و جو تکرار نشده است. این یک نسخه پشتیبان تهیه محلی تنها بر روی سرور محلی ایجاد می کند.

پرس و جو ایجاد نسخه پشتیبان تهیه تقریبا بلافاصله (اما برای اولین بار برای نمایش داده شد در حال حاضر به جدول مربوطه منتظر را به پایان برساند در حال اجرا).

ALTER TABLE t FREEZE PARTITION نسخه تنها داده, ابرداده جدول نیست. برای تهیه نسخه پشتیبان از فراداده های جدول فایل را کپی کنید /var/lib/clickhouse/metadata/database/table.sql

برای بازیابی اطلاعات از یک نسخه پشتیبان تهیه زیر را انجام دهید:

  1. ایجاد جدول اگر وجود ندارد. برای مشاهده پرس و جو, استفاده از .پرونده جدید ATTACH در این با CREATE).
  2. رونوشت داده از data/database/table/ دایرکتوری در داخل پشتیبان گیری به /var/lib/clickhouse/data/database/table/detached/ فهرست راهنما.
  3. بدو ALTER TABLE t ATTACH PARTITION نمایش داده شد برای اضافه کردن داده ها به یک جدول.

بازگرداندن از یک نسخه پشتیبان تهیه می کند نیاز به متوقف کردن سرور نیست.

برای کسب اطلاعات بیشتر در مورد پشتیبان گیری و بازیابی اطلاعات, دیدن پشتیبان گیری داده ها بخش.

CLEAR INDEX IN PARTITION

ALTER TABLE table_name CLEAR INDEX index_name IN PARTITION partition_expr

پرس و جو کار می کند شبیه به CLEAR COLUMN, اما بازنشانی شاخص به جای یک داده ستون.

FETCH PARTITION

ALTER TABLE table_name FETCH PARTITION partition_expr FROM 'path-in-zookeeper'

دانلود یک پارتیشن از سرور دیگر. این پرس و جو تنها برای جداول تکرار کار می کند.

پرس و جو می کند به شرح زیر است:

  1. پارتیشن را از سفال مشخص شده دانلود کنید. داخل path-in-zookeeper شما باید یک مسیر به سفال در باغ وحش را مشخص کنید.
  2. سپس پرس و جو داده های دانلود شده را به detached دایرکتوری از table_name جدول استفاده از ATTACH PARTITION|PART پرسوجو برای افزودن داده به جدول.

به عنوان مثال:

ALTER TABLE users FETCH PARTITION 201902 FROM '/clickhouse/tables/01-01/visits';
ALTER TABLE users ATTACH PARTITION 201902;

توجه داشته باشید که:

  • این ALTER ... FETCH PARTITION پرس و جو تکرار نشده است. این پارتیشن را به detached دایرکتوری تنها بر روی سرور محلی.
  • این ALTER TABLE ... ATTACH پرس و جو تکرار شده است. این می افزاید: داده ها به تمام کپی. داده ها به یکی از کپی ها از detached فهرست راهنما, و به دیگران - از کپی همسایه.

قبل از دانلود, سیستم چک اگر پارتیشن وجود دارد و ساختار جدول مسابقات. ماکت مناسب ترین به طور خودکار از کپی سالم انتخاب شده است.

اگر چه پرس و جو نامیده می شود ALTER TABLE, این ساختار جدول را تغییر دهید و بلافاصله داده های موجود در جدول را تغییر دهید.

MOVE PARTITION|PART

پارتیشن ها یا قطعات داده را به حجم یا دیسک دیگری منتقل می کند MergeTree- جدول موتور . ببینید با استفاده از دستگاه های بلوک های متعدد برای ذخیره سازی داده ها.

ALTER TABLE table_name MOVE PARTITION|PART partition_expr TO DISK|VOLUME 'disk_name'

این ALTER TABLE t MOVE پرسوجو:

  • تکرار نشده, به دلیل کپی های مختلف می توانید سیاست های ذخیره سازی مختلف دارند.
  • بازگرداندن خطا در صورتی که دیسک یا حجم مشخص پیکربندی نشده است. پرس و جو نیز یک خطا را برمی گرداند اگر شرایط در حال حرکت داده, که مشخص شده در سیاست ذخیره سازی, نمی توان اعمال کرد.
  • می توانید یک خطا در مورد بازگشت, زمانی که داده ها به نقل مکان کرد در حال حاضر توسط یک فرایند پس زمینه نقل مکان کرد, همزمان ALTER TABLE t MOVE پرس و جو و یا به عنوان یک نتیجه از ادغام داده های پس زمینه. کاربر باید هر گونه اقدامات اضافی در این مورد انجام نمی.

مثال:

ALTER TABLE hits MOVE PART '20190301_14343_16206_438' TO VOLUME 'slow'
ALTER TABLE hits MOVE PARTITION '2019-09-01' TO DISK 'fast_ssd'

نحوه تنظیم بیان پارتیشن

شما می توانید بیان پارتیشن را مشخص کنید ALTER ... PARTITION نمایش داده شد به روش های مختلف:

  • به عنوان یک مقدار از partition ستون از system.parts جدول به عنوان مثال, ALTER TABLE visits DETACH PARTITION 201901.
  • به عنوان بیان از ستون جدول. ثابت ها و عبارات ثابت پشتیبانی می شوند. به عنوان مثال, ALTER TABLE visits DETACH PARTITION toYYYYMM(toDate('2019-01-25')).
  • با استفاده از شناسه پارتیشن. شناسه پارتیشن شناسه رشته پارتیشن (انسان قابل خواندن در صورت امکان) است که به عنوان نام پارتیشن در فایل سیستم و در باغ وحش استفاده می شود. شناسه پارتیشن باید در PARTITION ID بند, در یک نقل قول واحد. به عنوان مثال, ALTER TABLE visits DETACH PARTITION ID '201901'.
  • در ALTER ATTACH PART و DROP DETACHED PART پرس و جو, برای مشخص کردن نام یک بخش, استفاده از رشته تحت اللفظی با ارزش از name ستون از سیستم.قطعات مجزا جدول به عنوان مثال, ALTER TABLE visits ATTACH PART '201901_1_1_0'.

استفاده از نقل قول در هنگام مشخص کردن پارتیشن بستگی به نوع بیان پارتیشن. برای مثال برای String نوع, شما باید برای مشخص کردن نام خود را در نقل قول ('). برای Date و Int* انواع بدون نقل قول مورد نیاز است.

برای جداول قدیمی به سبک, شما می توانید پارتیشن یا به عنوان یک عدد مشخص 201901 یا یک رشته '201901'. نحو برای جداول سبک جدید سختگیرانه تر با انواع است (شبیه به تجزیه کننده برای فرمت ورودی ارزش).

تمام قوانین فوق نیز برای درست است OPTIMIZE پرس و جو. اگر شما نیاز به مشخص کردن تنها پارتیشن در هنگام بهینه سازی یک جدول غیر تقسیم, تنظیم بیان PARTITION tuple(). به عنوان مثال:

OPTIMIZE TABLE table_not_partitioned PARTITION tuple() FINAL;

نمونه هایی از ALTER ... PARTITION نمایش داده شد در تست نشان داده شده است 00502_custom_partitioning_local و 00502_custom_partitioning_replicated_zookeeper.

دستکاری با جدول جدول

شما می توانید تغییر دهید جدول با درخواست فرم زیر:

ALTER TABLE table-name MODIFY TTL ttl-expression

همزمانی تغییر نمایش داده شد

برای جداول غیر قابل تکرار, همه ALTER نمایش داده شد همزمان انجام می شود. برای جداول تکرار, پرس و جو فقط می افزاید دستورالعمل برای اقدامات مناسب به ZooKeeper و اقدامات خود را در اسرع وقت انجام می شود. با این حال, پرس و جو می توانید صبر کنید برای این اقدامات در تمام کپی تکمیل شود.

برای ALTER ... ATTACH|DETACH|DROP نمایش داده شد, شما می توانید با استفاده از replication_alter_partitions_sync راه اندازی به راه اندازی انتظار. مقادیر ممکن: 0 do not wait; 1 only wait for own execution (default); 2 wait for all.

جهشها

جهش یک نوع پرس و جو را تغییر دهید که اجازه می دهد تا تغییر یا حذف ردیف در یک جدول. در مقایسه با استاندارد UPDATE و DELETE نمایش داده شد که برای تغییرات داده نقطه در نظر گرفته شده, جهش برای عملیات سنگین است که تغییر بسیاری از ردیف در یک جدول در نظر گرفته شده. پشتیبانی برای MergeTree خانواده از موتورهای جدول از جمله موتورهای با پشتیبانی تکرار.

جداول موجود برای جهش به عنوان (بدون تبدیل لازم), اما پس از جهش برای اولین بار است که به یک جدول اعمال, فرمت ابرداده خود را با نسخه های سرور قبلی ناسازگار می شود و سقوط به نسخه های قبلی غیر ممکن می شود.

دستورات در حال حاضر در دسترس:

ALTER TABLE [db.]table DELETE WHERE filter_expr

این filter_expr باید از نوع باشد UInt8. پرس و جو حذف ردیف در جدول که این عبارت طول می کشد یک مقدار غیر صفر.

ALTER TABLE [db.]table UPDATE column1 = expr1 [, ...] WHERE filter_expr

این filter_expr باید از نوع باشد UInt8. این پرس و جو به روز رسانی مقادیر ستون مشخص شده به ارزش عبارات مربوطه در ردیف که filter_expr طول می کشد یک مقدار غیر صفر. ارزش ها به نوع ستون با استفاده از قالبی CAST اپراتور. به روز رسانی ستون هایی که در محاسبه اولیه استفاده می شود و یا کلید پارتیشن پشتیبانی نمی شود.

ALTER TABLE [db.]table MATERIALIZE INDEX name IN PARTITION partition_name

پرس و جو بازسازی شاخص ثانویه name در پارتیشن partition_name.

یک پرس و جو می تواند شامل چندین دستورات جدا شده توسط کاما.

برای * جداول ادغام جهش اجرا با بازنویسی تمام قطعات داده. هیچ اتمیتی وجود ندارد - قطعات برای قطعات جهش یافته جایگزین می شوند به محض اینکه اماده باشند و SELECT پرس و جو است که شروع به اجرای در طول جهش داده ها از قطعات است که در حال حاضر همراه با داده ها از قطعات است که هنوز جهش یافته شده اند جهش را ببینید.

جهش ها به طور کامل توسط نظم خلقت خود دستور داده می شوند و به هر بخش به این ترتیب اعمال می شوند. جهش نیز تا حدی با درج دستور داد - داده هایی که به جدول وارد شد قبل از جهش ارسال خواهد شد جهش یافته و داده هایی که پس از که قرار داده شد جهش یافته نمی شود. توجه داشته باشید که جهش درج به هیچ وجه مسدود نیست.

یک جهش پرس و جو می گرداند بلافاصله پس از جهش مطلب اضافه شده است (در صورت تکرار جداول به باغ وحش برای nonreplicated جداول - به فایل سیستم). جهش خود را اجرا ناهمگام با استفاده از تنظیمات مشخصات سیستم. برای پیگیری پیشرفت جهش شما می توانید با استفاده از system.mutations جدول یک جهش است که با موفقیت ارسال شد ادامه خواهد داد برای اجرای حتی اگر سرور کلیک دوباره راه اندازی. هیچ راهی برای عقب انداختن جهش هنگامی که ارسال شده است وجود دارد, اما اگر جهش برای برخی از دلیل گیر می تواند با لغو KILL MUTATION پرس و جو.

مطالب برای جهش به پایان رسید حذف نمی حق دور (تعداد نوشته های حفظ شده توسط تعیین finished_mutations_to_keep پارامتر موتور ذخیره سازی). نوشته جهش قدیمی تر حذف می شوند.

مقاله اصلی