ClickHouse/docs/tr/sql-reference/statements/misc.md
2020-10-13 20:23:29 +03:00

14 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true 72537a2d52 41 Diğer

Çeşitli Sorgular

ATTACH

Bu sorgu tam olarak aynıdır CREATE, ama

  • Kelime yerine CREATE kelime kullanır ATTACH.
  • Sorgu diskte veri oluşturmaz, ancak verilerin zaten uygun yerlerde olduğunu ve yalnızca tablo hakkında bilgi sunucuya eklediğini varsayar. Bir ekleme sorgusu çalıştırdıktan sonra, sunucu tablonun varlığı hakkında bilgi sahibi olacaktır.

Tablo daha önce ayrılmış olsaydı (DETACH), yapısının bilindiği anlamına gelir, yapıyı tanımlamadan steno kullanabilirsiniz.

ATTACH TABLE [IF NOT EXISTS] [db.]name [ON CLUSTER cluster]

Bu sorgu, sunucu başlatılırken kullanılır. Sunucu, tablo meta verilerini dosyalar olarak depolar ATTACH başlangıçta çalıştığı sorgular (sunucuda açıkça oluşturulan sistem tabloları hariç).

CHECK TABLE

Tablodaki verilerin bozuk olup olmadığını denetler.

CHECK TABLE [db.]name

Bu CHECK TABLE sorgu, gerçek dosya boyutlarını sunucuda depolanan beklenen değerlerle karşılaştırır. Dosya boyutları depolanan değerlerle eşleşmiyorsa, verilerin bozuk olduğu anlamına gelir. Bu, örneğin, sorgu yürütme sırasında bir sistem çökmesine neden olabilir.

Sorgu yanıtı içerir result tek satırlı sütun. Satır bir değere sahiptir Boeanoleanean tür:

  • 0-tablodaki veriler bozuk.
  • 1 - veri bütünlüğünü korur.

Bu CHECK TABLE sorgu Aşağıdaki tablo motorlarını destekler:

Başka bir tablo motorları ile tablolar üzerinde gerçekleştirilen bir özel duruma neden olur.

Motor fromlardan *Log aile başarısızlık otomatik veri kurtarma sağlamaz. Kullan... CHECK TABLE veri kaybını zamanında izlemek için sorgu.

İçin MergeTree aile motorları, CHECK TABLE sorgu, yerel sunucudaki bir tablonun her bir veri bölümü için bir kontrol durumunu gösterir.

Veri bozuksa

Tablo bozuksa, bozuk olmayan verileri başka bir tabloya kopyalayabilirsiniz. Bunu yapmak için :

  1. Bozuk tablo ile aynı yapıya sahip yeni bir tablo oluşturun. Bunu yapmak için sorguyu yürütün CREATE TABLE <new_table_name> AS <damaged_table_name>.
  2. Ayarla... max_threads bir sonraki sorguyu tek bir iş parçacığında işlemek için 1 değeri. Bunu yapmak için sorguyu çalıştırın SET max_threads = 1.
  3. Sorgu yürütme INSERT INTO <new_table_name> SELECT * FROM <damaged_table_name>. Bu istek bozuk olmayan verileri bozuk tablodan başka bir tabloya kopyalar. Yalnızca bozuk parçadan önceki veriler kopyalanır.
  4. Yeniden Başlat clickhouse-client sıfırlamak için max_threads değer.

DESCRIBE TABLE

DESC|DESCRIBE TABLE [db.]table [INTO OUTFILE filename] [FORMAT format]

Aşağıdaki döndürür String sütun tipi:

  • name — Column name.
  • type— Column type.
  • default_type — Clause that is used in varsayılan ifade (DEFAULT, MATERIALIZED veya ALIAS). Varsayılan ifade belirtilmemişse, sütun boş bir dize içerir.
  • default_expression — Value specified in the DEFAULT yan.
  • comment_expression — Comment text.

İç içe veri yapıları çıktı “expanded” biçimli. Her sütun ayrı ayrı gösterilir, bir noktadan sonra adı ile.

DETACH

Hakkında bilgi siler name sunucudan tablo. Sunucu, tablonun varlığını bilmeyi durdurur.

DETACH TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]

Bu tablonun veri veya meta verileri silmez. Bir sonraki sunucu lansmanında, sunucu meta verileri okuyacak ve tablo hakkında tekrar bilgi edinecektir. Benzer şekilde, bir “detached” tablo kullanılarak yeniden eklenebilir ATTACH sorgu (bunlar için depolanan meta verilere sahip olmayan sistem tabloları hariç).

Hiç yok... DETACH DATABASE sorgu.

DROP

Bu sorgu iki türü vardır: DROP DATABASE ve DROP TABLE.

DROP DATABASE [IF EXISTS] db [ON CLUSTER cluster]

İçindeki tüm tabloları siler db veritabanı, daha sonra siler db veritabanı kendisi. Eğer IF EXISTS belirtilen, veritabanı yoksa bir hata döndürmez.

DROP [TEMPORARY] TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]

Tabloyu siler. Eğer IF EXISTS belirtilmişse, tablo yoksa veya veritabanı yoksa bir hata döndürmez.

DROP DICTIONARY [IF EXISTS] [db.]name

Sözlük Delets. Eğer IF EXISTS belirtilmişse, tablo yoksa veya veritabanı yoksa bir hata döndürmez.

DROP USER

Bir kullanıcıyı siler.

Sözdizimi

DROP USER [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

DROP ROLE

Bir rolü siler.

Silinen rol, verildiği tüm varlıklardan iptal edilir.

Sözdizimi

DROP ROLE [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

DROP ROW POLICY

Bir satır ilkesi siler.

Silinen satır ilkesi, atandığı tüm varlıklardan iptal edilir.

Sözdizimi

DROP [ROW] POLICY [IF EXISTS] name [,...] ON [database.]table [,...] [ON CLUSTER cluster_name]

DROP QUOTA

Bir kota siler.

Silinen kota, atandığı tüm varlıklardan iptal edilir.

Sözdizimi

DROP QUOTA [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

DROP SETTINGS PROFILE

Bir kota siler.

Silinen kota, atandığı tüm varlıklardan iptal edilir.

Sözdizimi

DROP [SETTINGS] PROFILE [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

EXISTS

EXISTS [TEMPORARY] [TABLE|DICTIONARY] [db.]name [INTO OUTFILE filename] [FORMAT format]

Bir tek döndürür UInt8- tek değeri içeren sütun yazın 0 tablo veya veritabanı yoksa veya 1 tablo belirtilen veritabanında varsa.

KILL QUERY

KILL QUERY [ON CLUSTER cluster]
  WHERE <where expression to SELECT FROM system.processes query>
  [SYNC|ASYNC|TEST]
  [FORMAT format]

Şu anda çalışan sorguları zorla sonlandırmaya çalışır. Sonlandırılacak sorgular sistemden seçilir.tanımlanan kriterleri kullanarak işlemler tablosu WHERE fıkra ofsı KILL sorgu.

Örnekler:

-- Forcibly terminates all queries with the specified query_id:
KILL QUERY WHERE query_id='2-857d-4a57-9ee0-327da5d60a90'

-- Synchronously terminates all queries run by 'username':
KILL QUERY WHERE user='username' SYNC

Salt okunur kullanıcılar yalnızca kendi sorgularını durdurabilir.

Varsayılan olarak, sorguların zaman uyumsuz sürümü kullanılır (ASYNC), sorguların durduğuna dair onay beklemez.

Senkron versiyonu (SYNC) tüm sorguların durmasını bekler ve durduğunda her işlem hakkında bilgi görüntüler. Yanıt içerir kill_status aşağıdaki değerleri alabilen sütun:

  1. finished The query was terminated successfully.
  2. waiting Waiting for the query to end after sending it a signal to terminate.
  3. The other values explain why the query can't be stopped.

Bir test sorgusu (TEST) yalnızca kullanıcının haklarını denetler ve durdurulacak sorguların bir listesini görüntüler.

KILL MUTATION

KILL MUTATION [ON CLUSTER cluster]
  WHERE <where expression to SELECT FROM system.mutations query>
  [TEST]
  [FORMAT format]

İptal etmek ve kaldırmak için çalışır mutasyonlar şu anda yürütülüyor. İptal etmek için mutationsasyonlar seçilir system.mutations tablo tarafından belirtilen filtreyi kullanarak WHERE fıkra ofsı KILL sorgu.

Bir test sorgusu (TEST) yalnızca kullanıcının haklarını denetler ve durdurulacak sorguların bir listesini görüntüler.

Örnekler:

-- Cancel and remove all mutations of the single table:
KILL MUTATION WHERE database = 'default' AND table = 'table'

-- Cancel the specific mutation:
KILL MUTATION WHERE database = 'default' AND table = 'table' AND mutation_id = 'mutation_3.txt'

The query is useful when a mutation is stuck and cannot finish (e.g. if some function in the mutation query throws an exception when applied to the data contained in the table).

Mutasyon tarafından yapılan değişiklikler geri alınmaz.

OPTIMIZE

OPTIMIZE TABLE [db.]name [ON CLUSTER cluster] [PARTITION partition | PARTITION ID 'partition_id'] [FINAL] [DEDUPLICATE]

Bu sorgu, bir tablo altyapısı ile tablolar için veri parçaları planlanmamış birleştirme başlatmaya çalışır. MergeTree aile.

Bu OPTMIZE sorgu için de desteklenmektedir MaterializedView ve... Arabellek motorlar. Diğer tablo motorları desteklenmiyor.

Ne zaman OPTIMIZE ile kullanılır ReplicatedMergeTree Tablo motorları ailesi, ClickHouse birleştirme için bir görev oluşturur ve tüm düğümlerde yürütülmeyi bekler (eğer replication_alter_partitions_sync ayar etkinse) ' dir.

  • Eğer OPTIMIZE herhangi bir nedenle bir birleştirme gerçekleştirmez, müşteriye bildirmez. Bildirimleri etkinleştirmek için optimize_throw_if_noop ayar.
  • Belirtir aseniz bir PARTITION, sadece belirtilen bölüm optimize edilmiştir. Bölüm ifadesi nasıl ayarlanır.
  • Belirtir specifyseniz FINAL, optimizasyon, tüm veriler zaten bir parçada olsa bile gerçekleştirilir.
  • Belirtir specifyseniz DEDUPLICATE, sonra tamamen aynı satırlar tekilleştirilecektir (tüm sütunlar karşılaştırılır), sadece MergeTree motoru için anlamlıdır.

!!! warning "Uyarıcı" OPTIMIZE Düzelt canemiyorum “Too many parts” hatasız.

RENAME

Bir veya daha fazla tabloyu yeniden adlandırır.

RENAME TABLE [db11.]name11 TO [db12.]name12, [db21.]name21 TO [db22.]name22, ... [ON CLUSTER cluster]

Tüm tablolar genel kilitleme altında yeniden adlandırılır. Tabloları yeniden adlandırma hafif bir işlemdir. İÇİN'DEN sonra başka bir veritabanı belirttiyseniz, tablo bu veritabanına taşınacaktır. Ancak, veritabanlarına sahip dizinlerin aynı dosya sisteminde bulunması gerekir (aksi takdirde bir hata döndürülür).

SET

SET param = value

Atıyor value to the param ayar geçerli oturum için. Değiştiremezsiniz sunucu ayarları bu şekilde.

Belirtilen ayarlar profilindeki tüm değerleri tek bir sorguda da ayarlayabilirsiniz.

SET profile = 'profile-name-from-the-settings-file'

Daha fazla bilgi için, bkz. Ayarlar.

SET ROLE

Geçerli kullanıcı için rolleri etkinleştirir.

Sözdizimi

SET ROLE {DEFAULT | NONE | role [,...] | ALL | ALL EXCEPT role [,...]}

SET DEFAULT ROLE

Varsayılan rolleri bir kullanıcıya ayarlar.

Varsayılan roller kullanıcı girişinde otomatik olarak etkinleştirilir. Varsayılan olarak yalnızca önceden verilen rolleri ayarlayabilirsiniz. Rol bir kullanıcıya verilmezse, ClickHouse bir istisna atar.

Sözdizimi

SET DEFAULT ROLE {NONE | role [,...] | ALL | ALL EXCEPT role [,...]} TO {user|CURRENT_USER} [,...]

Örnekler

Bir kullanıcıya birden çok varsayılan rol ayarlama:

SET DEFAULT ROLE role1, role2, ... TO user

Verilen tüm rolleri bir kullanıcıya varsayılan olarak ayarlayın:

SET DEFAULT ROLE ALL TO user

Bir kullanıcıdan varsayılan rolleri temizleme:

SET DEFAULT ROLE NONE TO user

Verilen tüm rolleri bazıları hariç varsayılan olarak ayarlayın:

SET DEFAULT ROLE ALL EXCEPT role1, role2 TO user

TRUNCATE

TRUNCATE TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]

Bir tablodaki tüm verileri kaldırır. Fık thera ne zaman IF EXISTS tablo yoksa, sorgu bir hata döndürür.

Bu TRUNCATE sorgu için desteklenmiyor Görünüm, Dosya, URL ve Boş masa motorları.

USE

USE db

Oturum için geçerli veritabanını ayarlamanızı sağlar. Geçerli veritabanı, veritabanı sorguda tablo adından önce bir nokta ile açıkça tanımlanmamışsa, tabloları aramak için kullanılır. Bir oturum kavramı olmadığından, bu sorgu HTTP protokolünü kullanırken yapılamaz.

Orijinal makale