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.

Ö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_queueadlı varsayılan bir sorgu kuyruğu bulunur.default_queueiçin sınıflandırıcı oluşturamazsınız. Yalnızca özelliklerini yapılandırabilirsiniz.default_queuediğ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_queuedahil 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,SQEveyaHiveQEolan 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.NotBu 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.
NotSorgu 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.NotBu 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ğer50değ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.NotDaha 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.
NotBu parametreyi yalnızca sanal depo örnekleri için yapılandırmanız gerekir.
query_queue_nameGerekli. Sorgu kuyruğunun adı.
classifier_nameGerekli. Eşleştirme kuralı eklemek istediğiniz sınıflandırıcının adı.
condition_namevecondition_valueGerekli. Desteklenen koşullar şunlardır:
user_name: Mevcut hesabın UID'si.command_tag: İstek türü. Geçerli değerler:INSERT,SELECT,UPDATEveDELETE.COPYişlemlerinin yürütme verimliliğini artırmak için Hologres,COPYişlemleriniINSERTkullanarak uygular. Bu nedenleINSERTişlemlerinin eşzamanlılığı sınırlandığındaCOPYiş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,SQEveHiveQE. 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_nameVEcommand_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_namegibi koşullar için sorgunun değerleri kabul edilebilir değerlerin alt kümesi olmalıdır. -
Tam eşleşme (==):
storage_modeiçin. Sorgunun değerleri kabul edilebilir değerlerle tam olarak eşleşmelidir. -
Kesişim eşleşmesi (∩):
engine_type,write_table,read_tableiçin. Sorgu, kabul edilebilir değerlerle en az bir değeri paylaşmalıdır.
-
NotFiltre 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_tagdeğeriSELECTveyaINSERTolan 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_warehouseiçintest_queueadlı bir sorgu kuyruğu oluşturun:CALL hg_create_query_queue ('init_warehouse', 'test_queue');-
Örnek 1: Sorgu
p4_123veyap4_456kullanıcısı tarafından gönderildiyse veya SQL parmak izixxxveyayyyise sorguyutest_queuesorgu 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_biuygulaması tarafından başlatıldıysa ve hem soğuk hem de sıcak depolamaya erişiyorsa sorguyutest_queuesorgu 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_queuesorgu 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.
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_serverlessetkinleştirildiğinde yerelINSERT OVERWRITEkomutları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_secparametresini 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_queuekuyruğ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_queuekuyruğ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');Notenable_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_queuekuyruğ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_gbparametresi 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.NotBu 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.NotBu 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 özelliklermax_concurrency,max_queue_sizevequeue_timeout_msdeğ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 |
| INT | Sanal depo kimliği. Not General-purpose örnekler için warehouse_id alanının değeri 0'dır. |
| TEXT | Sanal deponun adı. Not General-purpose örnekler için warehouse_name boştur. |
| TEXT | Sorgu kuyruğunun adı. |
| TEXT | Özellik adı. |
| 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.NotBu parametre yalnızca sanal depo örnekleri için gereklidir.
query_queue_name: Gerekli. Özelliklerini yapılandırmak istediğiniz sorgu kuyruğunun adı.-
property_keyveproperty_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.NotBu 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.NotBu 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.NotBu 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.NotBu 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_keyveproperty_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.NotDaha 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.NotBu 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_namevecondition_value: Gerekli. Kaldırılacak koşulun adı ve değeri. Desteklenen koşullaruser_name,command_tag,db_name,engine_type,digestvestorage_modedeğ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.NotBu 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 özellikleriuser_name,command_tag,db_name,engine_type,digestvestorage_modedeğ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 |
| INT | Sanal depo kimliği. Not Genel amaçlı örnekler için warehouse_id alanının değeri 0'dır. |
| TEXT | Sanal deponun adı. Not Genel amaçlı örnekler için warehouse_name boştur. |
| TEXT | Sorgu kuyruğunun adı. |
| TEXT | Sınıflandırıcının adı. |
| TEXT | Özellik adı. |
| 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.
Ö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.
Ö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_1sınıflandırıcısı tarafından eşleştirilir veinsert_queuesorgu 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_123vep4_345gibi 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_queuesorgu 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"');. -
testvepostgresveritabanlarıyla ilgili sorguları kabul eden bir sorgu kuyruğu oluşturun.Sorgu kuyruğu oluşturulduktan sonra
testvepostgresveritabanlarıyla ilgili SQL isteklericlassifier_3tarafından eşleştirilir vedb_queuesorgu 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_4tarafından eşleştirilir vehqe_queuesorgu 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');