Tüm Ürünler
Search
Belge Merkezi

Hologres:Query Queue

Son Güncelleme:Oct 06, 2026

Hologres V3.0 ve sonraki sürümler, isteklerin sıralı işlenmesi, yük dengeleme ve kaynak yönetimi için Sorgu Kuyruğu özelliğini destekler. Bu özellik, özellikle yüksek eşzamanlılık senaryolarında sistem kararlılığını sağlar ve yanıt verimliliğini artırır.

Giriş

Varsayılan olarak Hologres örnekleri istekleri eşzamanlılık kontrolü olmadan işler. Motor koordinatörü istekler geldikçe kaynakları atar. Sorgu Kuyruğu özelliği ile SQL istekleri yapılandırılmış sınıflandırıcı kurallarıyla eşleştirilir ve belirli sorgu kuyruklarına yönlendirilir. Her kuyruk için maksimum eşzamanlılık değeri belirleyebilirsiniz. Bir kuyruk limitine ulaştığında yeni istekler beklemeye alınır; bu sayede kaynak tahsisi kontrollü bir şekilde yapılır ve aşırı yüklenme önlenir.

image

Önemli notlar

  • Genel amaçlı örneklerde sorgu kuyrukları ve optimize ediciler gibi yapılandırmalar örnek düzeyinde uygulanır. Sanal depo örneklerinde ise bu yapılandırmalar sanal depo düzeyinde geçerlidir. Bir örnekte birden fazla veritabanı bulunuyorsa sorgu kuyruğu ve optimize edici ayarları tüm veritabanlarına uygulanır.

  • Bu özellik yalnızca Hologres V3.0 veya sonraki sürümlere sahip genel amaçlı ve sanal depo örneklerinde kullanılabilir.

    Not

    Örneğiniz V2.2 veya önceki bir sürümdeyse örneği yükseltin veya yükseltme için çevrimiçi destek alın.

  • Hologres V3.0.10'dan itibaren bir sorgu kuyruğundaki tüm SQL sorgularını Serverless Computing kaynaklarına yönlendirebilirsiniz. Bu sorgu kuyruğu artık eşzamanlılık veya kuyruğa alma ayarlarıyla kısıtlanmaz.

  • Her genel amaçlı örnekte ve sanal depo örneğindeki her sanal depoda, eşzamanlılık veya maksimum kuyruk boyutuyla kısıtlanmayan default_queue adlı varsayılan bir sorgu kuyruğu bulunur.

    • default_queue için sınıflandırıcı oluşturamazsınız. Yalnızca özelliklerini yapılandırabilirsiniz.

    • default_queue diğer sorgu kuyruklarıyla eşleşemeyen tüm istekleri yönetir.

  • Her genel amaçlı örnek ve sanal depo örneğindeki her sanal depo, default_queue dahil olmak üzere en fazla 10 sorgu kuyruğunu destekler. Her sorgu kuyruğunda en fazla 10 sınıflandırıcı bulunabilir.

  • Salt okunur ikincil örnek için Sorgu Kuyruğunu bağımsız olarak etkinleştiremezsiniz. Ancak birincil örneğin sorgu kuyruğu kuralları ikincil örnek için de geçerlidir.

  • Yalnızca engine_type değeri HQE, PQE, SQE veya HiveQE olan sorgular sorgu kuyrukları tarafından eşleştirilir. Desteklenen sorgu türleri arasında SELECT, INSERT, UPDATE, DELETE ve COPY ile CTAS üzerinden INSERT işlemleri yer alır.

  • Fixed Plan ile hızlandırılan sorgular sorgu kuyruğuna girmez. Daha fazla bilgi için bkz. SQL çalıştırmalarını hızlandırmak için Fixed Plan kullanma.

  • Bir sınıflandırıcı yalnızca bir sorgu kuyruğuna ait olabilir ancak bir sorgu kuyruğunda birden fazla sınıflandırıcı bulunabilir.

Yordam

Sorgu kuyruğu oluşturma

  • Sözdizimi

    • Genel amaçlı örnek

      CALL hg_create_query_queue (query_queue_name, max_concurrency, max_queue_size);
    • Sanal depo örneği

      CALL hg_create_query_queue (warehouse_name, query_queue_name, max_concurrency, max_queue_size);
  • Parametre açıklaması

    • warehouse_name: İsteğe bağlı. Sanal deponun adı. Bu parametreyi belirtmezseniz sorgu kuyruğu varsayılan olarak mevcut bağlantının sanal deposunda oluşturulur.

      Not

      Bu parametre yalnızca sanal depo örnekleri için gereklidir.

    • query_queue_name: Gerekli. Sorgu kuyruğunun adı. Ad, mevcut örnek veya sanal depo içinde benzersiz olmalıdır.

    • max_concurrency: İsteğe bağlı. Maksimum eşzamanlılık sayısı. Varsayılan değer -1'dir ve bu değer eşzamanlılık sınırı olmadığını gösterir. Değer [-1, 2147483647) aralığında olmalıdır.

    • max_queue_size: İsteğe bağlı. Maksimum kuyruk boyutu. Bu parametre kuyruğa alınabilecek maksimum SQL deyimi sayısını belirtir. Varsayılan değer -1'dir ve bu değer kuyruk boyutunun sınırsız olduğunu gösterir. Değer [-1, 2147483647) aralığında olmalıdır.

    Not

    Sorgu kuyruğu oluştururken yukarıdaki özellikleri yapılandırabilirsiniz. Diğer özelliklerin ayarlanması hakkında bilgi için bkz. Sorgu kuyruğu özelliklerini ayarlama.

  • Örnekler

    • Genel amaçlı örnek

      -- Create a query queue named insert_queue and set the maximum concurrency to 10. The concurrency parameter does not require single quotation marks.
      CALL hg_create_query_queue ('insert_queue', 10);
    • Sanal depo örneği

      -- In the init_warehouse virtual warehouse, create a query queue named insert_queue and set the maximum concurrency to 10.
      CALL hg_create_query_queue ('init_warehouse', 'insert_queue', 10);

Sınıflandırıcı oluşturma

  • Sözdizimi

    • Genel amaçlı örnek

      CALL hg_create_classifier (query_queue_name, classifier_name, priority);
    • Sanal depo örneği

      CALL hg_create_classifier (warehouse_name, query_queue_name, classifier_name, priority);
  • Parametre açıklaması

    • warehouse_name: İsteğe bağlı. Sanal deponun adı. Bu parametreyi belirtmezseniz varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

      Not

      Bu parametre yalnızca sanal depo örnekleri için geçerlidir.

    • query_queue_name: Gerekli. Sınıflandırıcı oluşturmak istediğiniz sorgu kuyruğunun adı.

    • classifier_name: Gerekli. Sınıflandırıcının adı. Ad, mevcut örnek veya sanal depo içinde benzersiz olmalıdır.

    • priority: İsteğe bağlı. Sınıflandırıcının eşleştirme önceliği. Daha büyük değer daha yüksek öncelik anlamına gelir. Varsayılan değer 50 değeridir. Değer [1, 100] aralığında olmalıdır. Sınıflandırıcıyı oluştururken bu parametreyi belirtmezseniz daha sonra yapılandırabilirsiniz. Daha fazla bilgi için bkz. Sınıflandırıcı özelliklerini ayarlama.

      Not
      • Daha yüksek önceliğe sahip sınıflandırıcılar daha erken eşleştirilir.

      • Birden fazla sınıflandırıcı aynı önceliğe sahipse eşleştirme, sorgu kuyruğu ve sınıflandırıcı adlarının sözlük sırasına göre yapılır. Sözlük sırasına göre ilk gelen ada sahip sınıflandırıcı önce eşleştirilir. Örneğin queue_a(classifier_1), queue_b(classifier_1)'den daha yüksek önceliğe sahiptir.

  • Örnekler

    • Genel amaçlı örnek

      -- In the insert_queue query queue, create a classifier named classifier_insert with a matching priority of 20. Note that the priority parameter does not require single quotation marks.
      CALL hg_create_classifier ('insert_queue', 'classifier_insert', 20);
    • Sanal depo örneği

      -- In the insert_queue query queue of the init_warehouse virtual warehouse, create a classifier named classifier_insert with a matching priority of 20.
      CALL hg_create_classifier ('init_warehouse', 'insert_queue', 'classifier_insert', 20);

Sınıflandırıcı koşullarını yapılandırma

Sınıflandırıcı koşullarını yapılandırarak belirli SQL deyimlerini belirli sorgu kuyruklarına yönlendirebilirsiniz. Bir sorgu bir sınıflandırıcının koşulunu karşılıyorsa o sınıflandırıcının sorgu kuyruğuna yerleştirilir.

  • Sözdizimi

    • Genel amaçlı örnek

      CALL hg_set_classifier_rule_condition_value (query_queue_name, classifier_name, condition_name, condition_value);
    • Sanal depo örneği

      CALL hg_set_classifier_rule_condition_value (warehouse_name, query_queue_name, classifier_name, condition_name, condition_value);
  • Parametre açıklaması

    Ad

    Açıklama

    warehouse_name

    İsteğe bağlı. Sanal deponun adı. Bu parametreyi yapılandırmazsanız varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

    Not

    Bu parametreyi yalnızca sanal depo örnekleri için yapılandırmanız gerekir.

    query_queue_name

    Gerekli. Sorgu kuyruğunun adı.

    classifier_name

    Gerekli. Eşleştirme kuralı eklemek istediğiniz sınıflandırıcının adı.

    condition_name ve condition_value

    Gerekli. Desteklenen koşullar şunlardır:

    • user_name: Mevcut hesabın UID'si.

    • command_tag: İstek türü. Geçerli değerler: INSERT, SELECT, UPDATE ve DELETE.

      COPY işlemlerinin yürütme verimliliğini artırmak için Hologres, COPY işlemlerini INSERT kullanarak uygular. Bu nedenle INSERT işlemlerinin eşzamanlılığı sınırlandığında COPY işlemlerinin yazma eşzamanlılığı da etkilenir.

    • db_name: Veritabanı adı.

    • engine_type: İstek tarafından kullanılan motor. Geçerli değerler: HQE, PQE, SQE ve HiveQE. Hologres V3.1.18'den itibaren bu özelliği kullanmanızı öneririz.

    • digest: SQL parmak izi. SQL parmak izleri hakkında daha fazla bilgi için bkz. SQL parmak izleri.

    • application_name: Sorguyu başlatan uygulama. Bu özellik yalnızca Hologres V3.0.9 ve sonraki sürümlerde desteklenir.

    • storage_mode: Depolama modu. Geçerli değerler: hot ve cold. Hologres V3.1.18 veya V3.1.8'den itibaren bu özelliği kullanmanızı öneririz.

    • write_table: Sorgunun hedef tablosu. Format <db_name>.<schema_name>.<table_name> şeklindedir. Bu özellik yalnızca Hologres V3.1 ve sonraki sürümlerde desteklenir.

    • read_table: Sorgunun kaynak tablosu. Bu özellik yalnızca Hologres V3.1 ve sonraki sürümlerde desteklenir.

    Sınıflandırıcılar birden fazla koşulu destekler ve her koşul bir değer kümesini kabul edebilir. Hologres V3.1.18'den itibaren gelişmiş sınıflandırıcı kuralları desteklenir. Aşağıdaki hususlara dikkat edin:

    • Koşullar arasındaki ilişki:

      • VE mantığı: Bir sınıflandırıcıda birden fazla koşul bulunduğunda (örneğin user_name VE command_tag) bir sorgunun ilgili sınıflandırıcının kuyruğuna girmesi için tüm koşulları karşılaması gerekir.

      • VEYA mantığı: Bir "VEYA" ilişkisi elde etmek için (bir sorgunun birkaç kriterden herhangi birini karşılaması durumunda eşleşmesi) her biri bir koşula sahip birden fazla ayrı sınıflandırıcı oluşturun.

    • Bir koşul içindeki birden fazla değeri eşleştirme

      • Alt küme eşleşmesi (⊆): user_name, command_tag, db_name, digest, application_name gibi koşullar için sorgunun değerleri kabul edilebilir değerlerin alt kümesi olmalıdır.

      • Tam eşleşme (==): storage_mode için. Sorgunun değerleri kabul edilebilir değerlerle tam olarak eşleşmelidir.

      • Kesişim eşleşmesi (∩): engine_type, write_table, read_table için. Sorgu, kabul edilebilir değerlerle en az bir değeri paylaşmalıdır.

    Not
    • Filtre koşullarını tek tek yapılandırın. Koşul değeri büyük/küçük harfe duyarlıysa çift tırnak ("") içine alın.

    • Bir koşul bir değer kümesini kabul ediyorsa bunu birden çok kez ayarlayın. Örneğin bir sınıflandırıcının command_tag değeri SELECT veya INSERT olan istekleri eşleştirmesi gerekiyorsa kuralları ayarlamak için iki SQL deyimi yürütün.

  • Örnekler

    Aşağıdaki örneklerde sanal depo örneği kullanılmaktadır. Genel amaçlı bir örnek için ilk giriş parametresini atlayın. Varsayılan sanal depo init_warehouse için test_queue adlı bir sorgu kuyruğu oluşturun:

    CALL hg_create_query_queue ('init_warehouse', 'test_queue');
    • Örnek 1: Sorgu p4_123 veya p4_456 kullanıcısı tarafından gönderildiyse veya SQL parmak izi xxx veya yyy ise sorguyu test_queue sorgu kuyruğuna yönlendirin.

      -- Because an OR relationship is required between the user and SQL fingerprint properties, you must configure two classifiers.
      
      -- Create a classifier named classifier_user and attach it to the test_queue query queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_user');
      -- Set matching rules based on the user property. Queries from user "p4_123" or "p4_456" will hit this classifier.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_user', 'user_name', 'p4_123');
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_user', 'user_name', 'p4_456');
      
      -- Create a classifier named classifier_digest and attach it to the test_queue query queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_digest');
      -- Set matching rules based on the SQL fingerprint property. Queries with SQL fingerprint "xxx" or "yyy" will hit this classifier.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_user', 'digest', 'xxx');
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_user', 'digest', 'yyy');
    • Örnek 2: Sorgu xx_bi uygulaması tarafından başlatıldıysa ve hem soğuk hem de sıcak depolamaya erişiyorsa sorguyu test_queue sorgu kuyruğuna yönlendirin.

      -- Because an AND relationship is required between the application and storage class properties, define both properties within the same classifier.
      
      -- Create a classifier named classifier_3 and attach it to the test_queue query queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_3');
      -- Set a condition based on the application property.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'application_name', 'xx_bi');
      -- Set a condition based on the storage class. Set both "hot" and "cold" rules. A query must access both cold and hot storage to match.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'storage_mode', 'hot');
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'storage_mode', 'cold');
    • Örnek 3: Soğuk depolama verilerine erişen tüm istekleri test_queue sorgu kuyruğuna yönlendirin.

      -- Because the storage class value requires an exact match, requests that "access any cold storage data" must be split into the following two classifiers. The request only needs to match one of them.
      
      -- Create a classifier named classifier_cold_1 and attach it to the test_queue query queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_cold_1');
      -- Queries where storage_mode is only 'cold' enter this queue.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_cold_1', 'storage_mode', 'cold');
      
      -- Create a classifier named classifier_cold_2 and attach it to the test_queue query queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_cold_2');
      -- Queries where storage_mode includes both 'hot' and 'cold' enter this queue.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_cold_2', 'storage_mode', 'hot');
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_cold_2', 'storage_mode', 'cold');
    • Örnek 4: a tablosundan okuma yapan ve b tablosuna yazan tüm istekleri test_queue sorgu kuyruğuna yönlendirin.

      -- Because an AND relationship is required between the read table and write table properties, define both properties within the same classifier.
      
      -- Create a classifier named classifier_table and attach it to the test_queue query queue.
      CALL hg_create_classifier ('init_warehouse', 'test_queue', 'classifier_table');
      -- Set a matching rule based on the read table. A request matches this rule if it reads data from table a, regardless of whether it reads from other tables.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'read_table', 'db_name.schema_name.a');
      -- Set a matching rule based on the write table. A request that writes to table b matches this rule.
      CALL hg_set_classifier_rule_condition_value ('init_warehouse','test_queue', 'classifier_3', 'write_table', 'db_name.schema_name.b');

Gelişmiş yetenekler

Büyük sorguları kontrol etme

Büyük sorguların bir örnek üzerindeki etkisini kontrol etmek için yürütme süresini ve bellek yetersizliği (OOM) hatalarını yönetmek amacıyla sorgu kuyruklarını kullanın. Belirtilen yürütme süresini veya OOM eşiğini aşan sorgular için isteği durdurun veya Serverless Computing kaynaklarını kullanarak yeniden çalıştırın.

Not
  • Hologres V3.0 yalnızca SELECT sorgularının yeniden çalıştırılmasını destekler. V4.1, GUC parametresi hg_enable_query_queue_rerun_insert_overwrite_via_serverless etkinleştirildiğinde yerel INSERT OVERWRITE komutlarının yeniden çalıştırılmasına izin verir. Bir sorguyu yeniden çalıştırırken veri almak için FETCH kullanıyorsanız sorgu yalnızca FETCH herhangi bir veri alamadığında yapılandırılmış sorgu kuyruğunun sınıflandırıcı koşullarına göre yeniden çalıştırılır. Bu süreç sonuçların doğruluğunu sağlar.

  • Bir sorgunun gerçek yürütülmesi üç bölümden oluşur: optimization_cost (yürütme planı oluşturma), start_query_cost (sorguyu başlatma) ve get_next_cost (sorguyu yürütme). Daha fazla bilgi için bkz. Yavaş sorgu günlüklerini alma ve analiz etme. Sorgu Kuyruğu yalnızca get_next_cost bölümünün süresini dikkate alır. Kaynaklar veya kilitler için bekleme süresini dikkate almaz.

  • Yürütme süresini kontrol etme

    Yürütme süresini saniye (s) cinsinden ayarlamak için big_query_execution_time_threshold_sec parametresini yapılandırabilirsiniz. Varsayılan değer -1'dir ve bu değer sınır olmadığını gösterir. Değer [-1, 2147483647) aralığında olmalıdır. Aşağıdaki örneklerde yürütme süresine göre sorguların nasıl kontrol edileceği gösterilmektedir:

    • Senaryo 1: Yürütme süresini aşan sorguları sonlandırma

      select_queue kuyruğuna giren sorgular yerel kaynaklar kullanılarak yürütülür. Yürütme süresi 10 saniyeyi aşarsa sorgu otomatik olarak sonlandırılır.

      CALL hg_set_query_queue_property ('select_queue', 'big_query_execution_time_threshold_sec', '10');
    • Senaryo 2: Yürütme süresini aşan sorguları yeniden çalıştırma

      select_queue kuyruğuna giren sorgular yerel kaynaklar kullanılarak yürütülür. Yürütme süresi 10 saniyeyi aşarsa sorgu örnek kaynaklarında otomatik olarak sonlandırılır ve Serverless Computing kaynakları kullanılarak yeniden çalıştırılır.

      CALL hg_set_query_queue_property ('select_queue', 'big_query_execution_time_threshold_sec', '10');
      CALL hg_set_query_queue_property ('select_queue', 'enable_rerun_as_big_query_when_exceeded_execution_time_threshold', 'true');
      CALL hg_set_query_queue_property ('select_queue', 'rerun_big_query_on_computing_resource', 'serverless');
      Not
      • enable_rerun_as_big_query_when_exceeded_execution_time_threshold: Yürütme süresini aştığı için sonlandırılan bir SQL isteğinin başka kaynaklar kullanılarak yeniden çalıştırılıp çalıştırılmayacağını belirtir. Varsayılan değer false'tur.

      • rerun_big_query_on_computing_resource: SQL isteğini yeniden çalıştırmak için kullanılacak Serverless Computing kaynağının adını belirtir.

  • OOM hatalarına neden olan büyük sorguları yeniden çalıştırma

    select_queue kuyruğuna giren sorgular yerel kaynaklar kullanılarak yürütülür. Bir sorgu OOM hatasına neden olur ve tek bir worker'da 10 GB'tan fazla bellek kaplarsa sorgu Serverless Computing kaynakları kullanılarak yeniden çalıştırılır. big_query_mem_threshold_when_oom_gb parametresi OOM sorguları için bellek eşiğini kontrol eder. Varsayılan değer -1'dir ve bu değer sınır olmadığını gösterir. Değer [-1, 64) aralığında olmalıdır. Aşağıdaki kod bir örnek sağlar:

    CALL hg_set_query_queue_property ('select_queue', 'big_query_mem_threshold_when_oom_gb', '10');
    CALL hg_set_query_queue_property ('select_queue', 'enable_rerun_as_big_query_when_oom_exceeded_mem_threshold', 'true');
    CALL hg_set_query_queue_property ('select_queue', 'rerun_big_query_on_computing_resource', 'serverless');

Sorgu kuyruklarını yönetme

Sorgu kuyruğunu silme

  • Sözdizimi

    • Genel amaçlı örnek

      CALL hg_drop_query_queue (query_queue_name);
    • Sanal depo örneği

      CALL hg_drop_query_queue (warehouse_name, query_queue_name);
  • Parametre açıklaması

    • warehouse_name: İsteğe bağlı. Sanal deponun adı. Bu parametreyi belirtmezseniz varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

      Not

      Bu parametre yalnızca sanal depo örnekleri için geçerlidir.

    • query_queue_name: Gerekli. Sorgu kuyruğunun adı.

  • Örnekler

  • Genel amaçlı örnek

    -- Delete the insert_queue query queue.
    CALL hg_drop_query_queue ('insert_queue');
  • Sanal depo örneği

    -- In the init_warehouse virtual warehouse, delete the insert_queue query queue.
    CALL hg_drop_query_queue ('init_warehouse', 'insert_queue');

Sorgu kuyruğu özelliklerini silme

  • Sözdizimi

    • Genel amaçlı örnek

      CALL hg_remove_query_queue_property (query_queue_name, property_key);
    • Sanal depo örneği

      CALL hg_remove_query_queue_property (warehouse_name, query_queue_name, property_key);
  • Parametre açıklaması

    • warehouse_name: İsteğe bağlı. Sanal deponun adı. Bu parametreyi belirtmezseniz varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

      Not

      Bu parametre yalnızca sanal depo örnekleri için geçerlidir.

    • query_queue_name: Gerekli. Sorgu kuyruğunun adı.

    • property_key: Gerekli. Özelliğin adı. Desteklenen özellikler max_concurrency, max_queue_size ve queue_timeout_ms değerleridir. Özellikler hakkında daha fazla bilgi için bkz. Sorgu kuyruğu özelliklerini ayarlama.

  • Örnekler

    • Genel amaçlı örnek

      -- Delete the maximum concurrency property of the insert_queue query queue.
      CALL hg_remove_query_queue_property('insert_queue', 'max_concurrency');
      
      -- Delete the maximum queue size property of the insert_queue query queue.
      CALL hg_remove_query_queue_property('insert_queue', 'max_queue_size');
      
      -- Delete the maximum queue time property of the insert_queue query queue.
      CALL hg_remove_query_queue_property('insert_queue', 'queue_timeout_ms');
    • Sanal depo örneği

      -- In the init_warehouse virtual warehouse, delete the maximum concurrency property of the insert_queue query queue.
      CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'max_concurrency');
      
      -- In the init_warehouse virtual warehouse, delete the maximum queue size setting of the insert_queue query queue.
      CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'max_queue_size');
      
      -- In the init_warehouse virtual warehouse, delete the maximum queue time property of the insert_queue query queue.
      CALL hg_remove_query_queue_property('init_warehouse', 'insert_queue', 'queue_timeout_ms');

Sorgu kuyruğu meta verilerini görüntüleme

Sorgu kuyruklarının meta verileri hologres.hg_query_queues sistem tablosunda saklanır. Ana alanlar aşağıdaki tabloda açıklanmıştır:

Alan adı

Alan türü

Açıklama

warehouse_id

INT

Sanal depo kimliği.

Not

General-purpose örnekler için warehouse_id alanının değeri 0'dır.

warehouse_name

TEXT

Sanal deponun adı.

Not

General-purpose örnekler için warehouse_name boştur.

query_queue_name

TEXT

Sorgu kuyruğunun adı.

property_key

TEXT

Özellik adı.

property_value

TEXT

Özellik değeri.

Sorgu kuyruğu özelliklerini ayarlama

  • Sözdizimi

    • Genel amaçlı örnek

      CALL hg_set_query_queue_property (query_queue_name, property_key, property_value);
    • Sanal depo örneği

      CALL hg_set_query_queue_property (warehouse_name, query_queue_name, property_key, property_value);
  • Parametre açıklaması

    • warehouse_name: İsteğe bağlı. Sorgu kuyruğu özelliklerini yapılandırmak istediğiniz sanal deponun adı. Bu parametreyi belirtmezseniz varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

      Not

      Bu parametre yalnızca sanal depo örnekleri için gereklidir.

    • query_queue_name: Gerekli. Özelliklerini yapılandırmak istediğiniz sorgu kuyruğunun adı.

    • property_key ve property_value: Gerekli. Desteklenen özellikler aşağıda açıklanmıştır:

      • max_concurrency: Maksimum eşzamanlılık sayısı. Varsayılan değer -1'dir ve bu değer eşzamanlılık sınırı olmadığını gösterir. Değer [-1, 2147483647) aralığında olmalıdır.

      • max_queue_size: Maksimum kuyruk boyutu. Bu parametre kuyruğa alınabilecek maksimum SQL deyimi sayısını belirtir. Varsayılan değer -1'dir ve bu değer kuyruk boyutunun sınırsız olduğunu gösterir. Değer [-1, 2147483647) aralığında olmalıdır.

      • queue_timeout_ms: Milisaniye (ms) cinsinden maksimum kuyruk süresi. Bir sorgu kuyrukta bu değerden daha uzun süre beklerse sorgu otomatik olarak durdurulur. Varsayılan değer -1'dir ve bu değer kuyruk süresi için sınır olmadığını gösterir. Değer [-1, 2147483647) aralığında olmalıdır.

  • Örnekler

    • Genel amaçlı örnek

      -- Set the maximum concurrency of the insert_queue query queue to 15.
      CALL hg_set_query_queue_property('insert_queue', 'max_concurrency', '15');
      
      -- Set the maximum queue size of the insert_queue query queue to 15.
      CALL hg_set_query_queue_property('insert_queue', 'max_queue_size', '15');
      
      -- Set the maximum queue time of the insert_queue query queue to 3000 ms.
      CALL hg_set_query_queue_property('insert_queue', 'queue_timeout_ms', '3000');
    • Sanal depo örneği

      -- In the init_warehouse virtual warehouse, set the maximum concurrency of the insert_queue query queue to 15.
      CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'max_concurrency', '15');
      
      -- In the init_warehouse virtual warehouse, set the maximum queue size of the insert_queue query queue to 15.
      CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'max_queue_size', '15');
      
      -- In the init_warehouse virtual warehouse, set the maximum queue time of the insert_queue query queue to 3000 ms.
      CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'queue_timeout_ms', '3000');

Kuyruktaki istekleri temizleme

  • Sözdizimi

    • Genel amaçlı örnek

      CALL hg_clear_query_queue (query_queue_name);
    • Sanal depo örneği

      CALL hg_clear_query_queue (warehouse_name, query_queue_name);
  • Parametre açıklaması

    • warehouse_name: İsteğe bağlı. Sanal deponun adı. Bu parametreyi belirtmezseniz varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

      Not

      Bu parametre yalnızca sanal depo örnekleri için gereklidir.

    • query_queue_name: Gerekli. Sorgu kuyruğunun adı.

  • Örnekler

    • Genel amaçlı örnek

      -- Clear all queued requests in the select_queue query queue.
      CALL hg_clear_query_queue ('select_queue');
    • Sanal depo örneği

      -- In the init_warehouse virtual warehouse, clear all queued requests in the select_queue query queue.
      CALL hg_clear_query_queue ('init_warehouse', 'select_queue');

Sınıflandırıcı yönetimi

Sınıflandırıcıyı silme

  • Sözdizimi

    • Genel amaçlı örnek

      CALL hg_drop_classifier (query_queue_name, classifier_name);
    • Sanal depo örneği

      CALL hg_drop_classifier (warehouse_name, query_queue_name, classifier_name);
  • Parametre açıklaması

    • warehouse_name: İsteğe bağlı. Sanal deponun adı. Bu parametreyi belirtmezseniz varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

      Not

      Bu parametre yalnızca sanal depo örnekleri için gereklidir.

    • query_queue_name: Gerekli. Sınıflandırıcı oluşturmak istediğiniz sorgu kuyruğunun adı.

    • classifier_name: Gerekli. Sınıflandırıcının adı.

  • Örnekler

    • Genel amaçlı örnek

      -- In the insert_queue query queue, delete the classifier_insert classifier.
      CALL hg_drop_classifier ('insert_queue', 'classifier_insert');
    • Sanal depo örneği

      -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete the classifier_insert classifier.
      CALL hg_drop_classifier ('init_warehouse', 'insert_queue', 'classifier_insert');

Sınıflandırıcı özelliklerini kaldırma

  • Sözdizimi

    • Genel amaçlı örnek

      CALL hg_remove_classifier_property (query_queue_name, classifier_name, property_key);
    • Sanal depo örneği

      CALL hg_remove_classifier_property (warehouse_name, query_queue_name, classifier_name, property_key);
  • Parametre açıklaması

    • warehouse_name: İsteğe bağlı. Sanal deponun adı. Bu parametreyi belirtmezseniz varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

      Not

      Bu parametre yalnızca sanal depo örnekleri için gereklidir.

    • query_queue_name: Gerekli. Sorgu kuyruğunun adı.

    • classifier_name: Gerekli. Sınıflandırıcının adı.

    • property_key: Gerekli. Desteklenen özellik priority'dir. Sınıflandırıcı özellikleri hakkında daha fazla bilgi için bkz. Sınıflandırıcı özelliklerini ayarlama.

  • Örnekler

    • Genel amaçlı örnek

      -- In the insert_queue query queue, delete the priority property of the classifier_insert classifier.
      CALL hg_remove_classifier_property ('insert_queue', 'classifier_insert', 'priority');
    • Sanal depo örneği

      -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete the priority property of the classifier_insert classifier.
      CALL hg_remove_classifier_property ('init_warehouse', 'insert_queue', 'classifier_insert', 'priority');

Sınıflandırıcı özelliklerini ayarlama

  • Sözdizimi

    • Genel amaçlı örnek

      CALL hg_set_classifier_property (query_queue_name, classifier_name, property_key, property_value);
    • Sanal depo örneği

      CALL hg_set_classifier_property (warehouse_name, query_queue_name, classifier_name, property_key, property_value);
  • Parametre açıklaması

    • warehouse_name: İsteğe bağlı. Sanal deponun adı. Bu parametreyi belirtmezseniz varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

      Not

      Bu parametre yalnızca sanal depo örnekleri için gereklidir.

    • query_queue_name: Gerekli. Sorgu kuyruğunun adı.

    • classifier_name: Gerekli. Sınıflandırıcının adı.

    • property_key ve property_value: Gerekli. Desteklenen özellik aşağıda açıklanmıştır:

      priority: Sınıflandırıcının eşleştirme önceliği. Daha büyük değer daha yüksek öncelik anlamına gelir. Varsayılan değer 50'dir. Değer [1, 100] aralığında olmalıdır.

      Not
      • Daha yüksek önceliğe sahip sınıflandırıcılar daha erken eşleştirilir.

      • Birden fazla sınıflandırıcı aynı önceliğe sahipse eşleştirme, sorgu kuyruğu ve sınıflandırıcı adlarının sözlük sırasına göre yapılır. Sözlük sırasına göre ilk gelen ada sahip sınıflandırıcı önce eşleştirilir. Örneğin queue_a(classifier_1), queue_b(classifier_1)'den daha yüksek önceliğe sahiptir.

  • Örnekler

    • Genel amaçlı örnek

      -- In the insert_queue query queue, set the priority of the classifier_insert classifier to 30.
      CALL hg_set_classifier_property ('insert_queue', 'classifier_insert', 'priority', '30');
    • Sanal depo örneği

      -- In the insert_queue query queue of the init_warehouse virtual warehouse, set the priority of the classifier_insert classifier to 30.
      CALL hg_set_classifier_property ('init_warehouse', 'insert_queue', 'classifier_insert','priority', '30');

Sınıflandırıcı koşullarını kaldırma

  • Bir sınıflandırıcıdan bir koşulu (condition_name) kaldırma

    • Sözdizimi

      • Genel amaçlı örnek

        CALL hg_remove_classifier_rule_condition_value (query_queue_name, classifier_name, condition_name, condition_value);
      • Sanal depo örneği

        CALL hg_remove_classifier_rule_condition_value (warehouse_name, query_queue_name, classifier_name, condition_name, condition_value);
    • Parametre açıklaması

      • warehouse_name: İsteğe bağlı. Sanal deponun adı. Bu parametreyi belirtmezseniz varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

        Not

        Bu parametre yalnızca sanal depo örnekleri için gereklidir.

      • query_queue_name: Gerekli. Sorgu kuyruğunun adı.

      • classifier_name: Gerekli. Sınıflandırıcının adı.

      • condition_name ve condition_value: Gerekli. Kaldırılacak koşulun adı ve değeri. Desteklenen koşullar user_name, command_tag, db_name, engine_type, digest ve storage_mode değerleridir. Daha fazla bilgi için bkz. Sınıflandırıcı koşullarını yapılandırma.

    • Örnekler

      • Genel amaçlı örnek

        -- In the insert_queue query queue, delete the matching rule where command_tag is INSERT from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'command_tag', 'INSERT');
        
        -- In the insert_queue query queue, delete the matching rule where user_name is p4_12345 from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'user_name', 'p4_12345');
        
        -- In the insert_queue query queue, delete the matching rule where db_name is prd_db from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'db_name', 'prd_db');
        
        -- In the insert_queue query queue, delete the matching rule where engine_type is HQE from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'engine_type', 'HQE');
        
        -- In the insert_queue query queue, delete the matching rule where digest is md5edb3161000a003799a5d3f2656b70b4c from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'digest', 'md5edb3161000a003799a5d3f2656b70b4c');
        
        -- In the insert_queue query queue, delete the matching rule where storage_mode is hot from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('insert_queue', 'classifier_insert', 'storage_mode', 'hot');
      • Sanal depo örneği

        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete the matching rule where command_tag is INSERT from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'command_tag', 'INSERT');
        
        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete the matching rule where user_name is p4_12345 from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'user_name', 'p4_12345');
        
        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete the matching rule where db_name is prd_db from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'db_name', 'prd_db');
        
        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete the matching rule where engine_type is HQE from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'engine_type', 'HQE');
        
        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete the matching rule where digest is md5edb3161000a003799a5d3f2656b70b4c from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'digest', 'md5edb3161000a003799a5d3f2656b70b4c');
        
        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete the matching rule where storage_mode is hot from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition_value ('init_warehouse', 'insert_queue', 'classifier_insert', 'storage_mode', 'hot');
  • Bir sınıflandırıcı için tüm koşulları (condition_name) kaldırma

    • Sözdizimi

      • Genel amaçlı örnek

        CALL hg_remove_classifier_rule_condition (query_queue_name, classifier_name, condition_name);
      • Sanal depo örneği

        CALL hg_remove_classifier_rule_condition (warehouse_name, query_queue_name, classifier_name, condition_name);
    • Parametre açıklaması

      • warehouse_name: İsteğe bağlı. Sanal deponun adı. Bu parametreyi belirtmezseniz varsayılan olarak mevcut bağlantının sanal deposu kullanılır.

        Not

        Bu parametre yalnızca sanal depo örnekleri için gereklidir.

      • query_queue_name: Gerekli. Sorgu kuyruğunun adı.

      • classifier_name: Gerekli. Sınıflandırıcının adı.

      • condition_name: Gerekli. Silmek istediğiniz koşul özelliğinin adı. Desteklenen koşul özellikleri user_name, command_tag, db_name, engine_type, digest ve storage_mode değerleridir. Sınıflandırıcı eşleştirme kuralları için koşul özellikleri hakkında daha fazla bilgi için bkz. Sınıflandırıcı koşullarını yapılandırma.

    • Örnekler

      • Genel amaçlı örnek

        -- In the insert_queue query queue, delete all matching rules related to command_tag from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'command_tag');
        
        -- In the insert_queue query queue, delete all matching rules related to user_name from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'user_name');
        
        -- In the insert_queue query queue, delete all matching rules related to db_name from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'db_name');
        
        -- In the insert_queue query queue, delete all matching rules related to engine_type from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'engine_type');
        
        -- In the insert_queue query queue, delete all matching rules related to digest from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'digest');
        
        -- In the insert_queue query queue, delete all matching rules related to storage_mode from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('insert_queue', 'classifier_insert', 'storage_mode');
      • Sanal depo örneği

        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete all matching rules related to command_tag from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'command_tag');
        
        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete all matching rules related to user_name from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'user_name');
        
        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete all matching rules related to db_name from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'db_name');
        
        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete all matching rules related to engine_type from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'engine_type');
        
        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete all matching rules related to digest from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'digest');
        
        -- In the insert_queue query queue of the init_warehouse virtual warehouse, delete all matching rules related to storage_mode from the classifier_insert classifier.
        CALL hg_remove_classifier_rule_condition ('init_warehouse', 'insert_queue', 'classifier_insert', 'storage_mode');

Sınıflandırıcı meta verilerini görüntüleme

Sınıflandırıcıların meta verileri hologres.hg_classifiers sistem tablosunda saklanır. Ana alanlar aşağıdaki tabloda açıklanmıştır:

Alan

Alan türü

Açıklama

warehouse_id

INT

Sanal depo kimliği.

Not

Genel amaçlı örnekler için warehouse_id alanının değeri 0'dır.

warehouse_name

TEXT

Sanal deponun adı.

Not

Genel amaçlı örnekler için warehouse_name boştur.

query_queue_name

TEXT

Sorgu kuyruğunun adı.

classifier_name

TEXT

Sınıflandırıcının adı.

property_key

TEXT

Özellik adı.

property_value

TEXT

Özellik değeri.

Bir kuyruktaki sorguları Serverless Computing kaynaklarına yönlendirme

Hologres V3.0.10'dan itibaren belirli bir sorgu kuyruğundaki tüm sorguların Serverless Computing kaynakları tarafından yürütülmesini belirtebilirsiniz. Bu yapılandırıldıktan sonra kuyruktaki sorgular istek sırasına ve yapılandırılmış önceliğe göre Serverless kaynakları talep eder. Artık sorgu kuyruğunun eşzamanlılık yapılandırmasından veya kuyruğa alma mekanizmasından etkilenmezler. Daha fazla bilgi için bkz. Serverless Computing Kullanıcı Kılavuzu.

Not

Örneğinizin bulunduğu alanda Serverless Computing desteklenmiyorsa sorgular yine de yerel kaynaklar kullanılarak yürütülür.

  • Genel amaçlı örnek

    • Sözdizimi

      -- Set all queries in the target queue to run on Serverless resources.
      CALL hg_set_query_queue_property('<query_queue_name>', 'computing_resource', 'serverless');
      
      -- (Optional) Set the priority for queries in the target queue when using Serverless resources. Supported values are 1-5. The default is 3.
      CALL hg_set_query_queue_property('<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');
    • Parametre açıklaması

      • query_queue_name: Gerekli. Sorgu kuyruğunun adı.

      • priority: Öncelik. Varsayılan değer 3'tür. Değer [1, 5] aralığında olmalıdır.

    • Örnek

      -- Set all queries in the target queue to run on Serverless resources.
      CALL hg_set_query_queue_property('insert_queue', 'computing_resource', 'serverless');
      
      -- Set the priority to 2 for queries in the target queue when using Serverless resources.
      CALL hg_set_query_queue_property('insert_queue', 'query_priority_when_using_serverless_computing', '2');
  • Sanal depo örneği

    • Sözdizimi

      -- Set all queries in the target queue to run on Serverless resources.
      CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'computing_resource', 'serverless');
      
      -- (Optional) Set the priority for queries in the target queue when using Serverless resources. Supported values are 1-5. The default is 3.
      CALL hg_set_query_queue_property('<warehouse_name>', '<query_queue_name>', 'query_priority_when_using_serverless_computing', '<priority>');
    • Parametre açıklaması

      • warehouse_name: Gerekli. Sanal deponun adı.

      • query_queue_name: Gerekli. Sorgu kuyruğunun adı.

      • priority: Gerekli. Öncelik. Varsayılan değer 3'tür. Değer [1, 5] aralığında olmalıdır.

    • Örnek

      -- Set all queries in the target queue to run on Serverless resources.
      CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'computing_resource', 'serverless');
      
      -- Set the priority to 2 for queries in the target queue when using Serverless resources.
      CALL hg_set_query_queue_property('init_warehouse', 'insert_queue', 'query_priority_when_using_serverless_computing', '2');

Yaygın senaryolar

Bir SQL sorgusu için sorgu kuyruğunu görüntüleme

Belirli bir SQL deyiminin kullandığı sorgu kuyruğunu görüntülemek için EXPLAIN çalıştırın. Query Queue alanı kullanılan sorgu kuyruğunu gösterir. Aşağıdaki kod bir örnek sağlar.

-- Create a query queue with a concurrency of 10 and a maximum queue size of 20.
CALL hg_create_query_queue ('select_queue', 10, 20);
-- Create a classifier and set the command_tag property.
CALL hg_create_classifier ('select_queue', 'classifier_1');
CALL hg_set_classifier_rule_condition_value ('select_queue', 'classifier_1', 'command_tag', 'select');

-- Use Explain Analyze to view the classifier and query queue matched by the query.
EXPLAIN ANALYZE SELECT * FROM hg_stat_activity;

Aşağıdaki sonuç döndürülür.

QUERY PLAN
Gather  (cost=0.00..14.96 rows=1000 width=408)
[4:1 id=100003 dop=1 time=16/16/16ms rows=142(142/142/142) mem=43/43/43KB open=0/0/0ms get_next=16/16/16ms]
  ->  Forward  (cost=0.00..12.19 rows=1000 width=408)
      [0:4 id=100002 dop=4 time=16/8/5ms rows=142(39/35/33) mem=6/6/6KB open=16/8/5ms get_next=0/0/0ms scan_rows=142(39/35/33)]
        ->  ExecuteExternalSQL on PQE  (cost=0.00..10.04 rows=0 width=408)
"              External SQL: SELECT "datid" AS c_d2adb610_0, "datname" AS c_d2adb760_1, "pid" AS c_d2adb8a0_2, "usesysid" AS c_d2adba10_3, "usename" AS c_d2adbb60_4, "application_name" AS c_d2adbd10_5, "client_addr" AS c_d2adbe80_6, "client_hostname" AS c_d2df1020_7, "client_port" AS c_d2df1190_8, "backend_start" AS c_d2df1300_9, "xact_start" AS c_d2df1470_10, "query_start" AS c_d2df15e0_11, "state_change" AS c_d2df1750_12, "wait_event_type" AS c_d2df18c0_13, "wait_event" AS c_d2df1a30_14, "state" AS c_d2df1b80_15, "backend_xid" AS c_d2df1cf0_16, "backend_xmin" AS c_d2df1e60_17, "query" AS c_d2df1fb0_18, "backend_type" AS c_d2df2120_19, "query_id" AS c_d2df2290_20, "transaction_id" AS c_d2df2400_21, "extend_info" AS c_d2df2570_22, "running_info" AS c_d2df26e0_23 FROM pg_catalog."hg_stat_activity""
Query id:[1001002491453065719]
Query Queue: init_warehouse.select_queue.classifier_1

Aktif sorgular için sorgu kuyruklarını görüntüleme

Aktif sorgulardaki SQL deyimleri için sorgu kuyruğu adı, mevcut durum ve kuyruk süresi gibi bilgileri görüntülemek için aşağıdaki SQL deyimini yürütün.

SELECT
    running_info::json -> 'current_stage' ->> 'stage_name' AS stage_name,
    running_info::json -> 'current_stage' ->> 'queue_time_ms' AS queue_time_ms,
    running_info::json ->> 'query_queue' AS query_queue,
    *
FROM
    hg_stat_activity;

Sorgu Günlüğündeki SQL deyimleri için sorgu kuyruklarını görüntüleme

Sorgu Günlüğündeki SQL deyimleri için sorgu kuyruğunu, mevcut durumu ve kuyruk süresini görüntülemek üzere aşağıdaki SQL deyimini yürütebilirsiniz. query_detail alanı SQL deyiminin kullandığı sorgu kuyruğunu kaydeder. hologres.hg_query_log sistem tablosu hakkında daha fazla bilgi için bkz. hg_query_log tablosu.

SELECT * FROM hologres.hg_query_log WHERE query_detail like '%query_queue = <warehouse_name>.<queue_name>%';-- You must configure the warehouse_name parameter only for virtual warehouse-based instances.
Not

Önceki SQL deyimi tarafından döndürülen extended_info alanı aşağıdaki bilgileri içerir:

  • serverless_computing_source: Serverless Computing kaynakları kullanılarak yürütülen SQL deyiminin kaynağını gösterir. Geçerli değerler şunlardır:

    • user_submit: Sorgu Kuyruğu özelliğinden bağımsız olarak Serverless kaynaklarında çalıştırılması belirtilen bir SQL deyimi.

    • query_queue: Belirtilen sorgu kuyruğundaki tüm SQL deyimleri Serverless kaynakları tarafından yürütülür.

    • query_queue_rerun: Sorgu Kuyruğunun büyük sorgu kontrolü özelliği tarafından Serverless kaynaklarında otomatik olarak yeniden çalıştırılan bir SQL deyimi.

  • query_id_of_triggered_rerun: Bu alan yalnızca serverless_computing_source değeri query_queue_rerun olduğunda mevcuttur. Bu alan yeniden çalıştırılan SQL deyiminin orijinal Sorgu Kimliğini gösterir.

Belirli sorgu türleri için sorgu kuyrukları oluşturma

  • Örnek 1: INSERT gibi belirli istek türlerini kabul eden bir sorgu kuyruğu oluşturun.

    Sorgu kuyruğu oluşturulduktan sonra tüm INSERT istekleri classifier_1 sınıflandırıcısı tarafından eşleştirilir ve insert_queue sorgu kuyruğuna yönlendirilir.

    -- Create a query queue with a concurrency of 10 and a maximum queue size of 20.
    CALL hg_create_query_queue ('insert_queue', 10, 20);
    
    -- Create a classifier and attach the command_tag property.
    CALL hg_create_classifier ('insert_queue', 'classifier_1');
    CALL hg_set_classifier_rule_condition_value ('insert_queue', 'classifier_1', 'command_tag', 'INSERT');
  • Örnek 2: p4_123 ve p4_345 gibi belirli kullanıcılardan gelen istekleri kabul eden bir sorgu kuyruğu oluşturun.

    Oluşturulduktan sonra p4_123 ve p4_345 kullanıcıları tarafından gönderilen SQL istekleri classifier_2 tarafından eşleştirilir ve user_queue sorgu kuyruğuna yönlendirilir.

    -- Create a query queue with a concurrency of 3 and an unlimited maximum queue size.
    CALL hg_create_query_queue ('user_queue', 3);
    CALL hg_set_query_queue_property('user_queue','max_queue_size', -1);
    -- Create a classifier and set a user_name matching rule.
    CALL hg_create_classifier ('user_queue', 'classifier_2');
    CALL hg_set_classifier_rule_condition_value ('user_queue', 'classifier_2', 'user_name', 'p4_123');
    CALL hg_set_classifier_rule_condition_value ('user_queue', 'classifier_2', 'user_name', 'p4_345');
    Not

    Özel bir kullanıcı hesabı belirtirseniz adını çift tırnak ("") içine almanız gerekir. Örneğin CALL hg_set_classifier_rule_condition_value ('user_queue', 'classifier_2', 'user_name', '"BASIC$xxx"');.

  • test ve postgres veritabanlarıyla ilgili sorguları kabul eden bir sorgu kuyruğu oluşturun.

    Sorgu kuyruğu oluşturulduktan sonra test ve postgres veritabanlarıyla ilgili SQL istekleri classifier_3 tarafından eşleştirilir ve db_queue sorgu kuyruğuna atanır.

    -- Create a query queue with a concurrency of 5.
    CALL hg_create_query_queue ('db_queue', 5);
    
    -- Set the maximum queue time to 600000 ms. If a query waits longer than this time, an error is reported.
    CALL hg_set_query_queue_property ('db_queue', 'queue_timeout_ms', '600000');
    
    -- Create a classifier and attach the db_name property.
    CALL hg_create_classifier ('db_queue', 'classifier_3');
    CALL hg_set_classifier_rule_condition_value ('db_queue', 'classifier_3', 'db_name', 'test');
    CALL hg_set_classifier_rule_condition_value ('db_queue', 'classifier_3', 'db_name', 'postgres');
  • HQE motoruyla ilgili istekleri kabul eden bir sorgu kuyruğu oluşturun.

    Sorgu kuyruğu oluşturulduktan sonra HQE motoruyla ilgili SQL istekleri classifier_4 tarafından eşleştirilir ve hqe_queue sorgu kuyruğuna yönlendirilir.

    -- Create a query queue with a concurrency of 10.
    CALL hg_create_query_queue ('hqe_queue', 10);
    
    -- Create a classifier and attach the engine_type property.
    CALL hg_create_classifier ('hqe_queue', 'classifier_4');
    CALL hg_set_classifier_rule_condition_value ('hqe_queue', 'classifier_4', 'engine_type', 'HQE');

Tüm istekleri engelleme

Sorguların bir sorgu kuyruğuna girmesini engellemek için insert_queue öğesinin eşzamanlılığını ve kuyruk boyutunu 0 olarak ayarlayın.

CALL hg_set_query_queue_property ('insert_queue', 'max_concurrency', '0');
CALL hg_set_query_queue_property ('insert_queue', 'max_queue_size', '0');