ApsaraDB for SelectDB ile iş yükü grubu özelliğini kullanarak bir kümedeki hesaplama kaynaklarını yazılımsal olarak izole edebilirsiniz. Bu konuda, ApsaraDB for SelectDB iş yükü grubu özelliği ve bu özelliği kullanarak hesaplama kaynaklarının nasıl yönetileceği açıklanmaktadır.
Genel bakış
İş yükü grubu, tek bir hesaplama düğümünde gruptaki görevlerin kullandığı hesaplama ve bellek kaynaklarını sınırlayarak bir hesaplama kümesindeki görevlerin kaynak kullanımını kısıtlar.
Yüksek yük altında çalışan sorgu ve içe aktarma görevlerinin ne zaman çalıştırılacağını kontrol edebildiğiniz ve bir hesaplama kümesinin kaynaklarından en üst düzeyde yararlanmak istediğiniz iş senaryolarında, söz konusu görevleri ayrı iş yükü gruplarıyla ilişkilendirebilirsiniz. Örneğin, SelectDB planlı çevrimdışı hesaplama görevlerini ayrı bir iş yükü grubuyla ilişkilendirebilirsiniz. Ayrıca, işinizin düzenli yoğun saatleri varsa kaynakları iş görevleri için izole etmek üzere iş yükü gruplarından da yararlanabilirsiniz.
İş senaryolarınıza göre kaynakları aşağıdaki boyutlarda izole etmek için iş yükü gruplarını kullanabilirsiniz:
Büyük ve küçük sorgular için kaynakları izole edin.
Uzun ve kısa süren sorgular için kaynakları izole edin.
Soğuk ve sıcak veriler üzerindeki sorgular için kaynakları izole edin.
Çevrimdışı ve gerçek zamanlı içe aktarma görevleri için kaynakları izole edin.
İş yükü gruplarını kullanma
Bu bölümde iş yükü gruplarının nasıl oluşturulacağı, silineceği, değiştirileceği ve görüntüleneceği açıklanmaktadır.
İş yükü gruplarında işlem yapmak için tam izinlere sahip yönetici hesabını kullanmanızı öneririz.
İş yükü grubu oluşturma
Bir iş yükü grubu oluşturmak için aşağıdaki ifadeyi çalıştırın. İş yükü grupları, bir hesaplama kümesinde CPU ve bellek kaynaklarını izole etmek için kullanılır.
Sözdizimi
CREATE WORKLOAD GROUP [IF NOT EXISTS] 'rg_name'
PROPERTIES (
property_list
);
Parametreler
|
|
|
|
|
|
|
|
Aşağıdaki tabloda PROPERTIES içindeki parametreler açıklanmaktadır.
|
Parametre |
Gerekli |
Açıklama |
|
cpu_share |
Evet |
İş yükü grubu için kullanılabilen CPU süresi. Bu parametre, CPU kaynaklarının yazılımsal izolasyonunu uygulamak için kullanılır. cpu_share parametresinin değeri, iş yükü grubunun elde edebileceği CPU kaynaklarının ağırlığını gösteren göreli bir değerdir. Örneğin, aşağıdaki iş yükü grupları oluşturulur: Sistemde yalnızca bir çalışan iş yükü grubu varsa, |
|
memory_limit |
Evet |
İş yükü grubunun kullanabileceği hesaplama kümesi belleğinin yüzdesi. İş yükü grubu için bellek sınırının mutlak değeri şu formülle hesaplanır: Çoğu durumda iş yükü grubundaki görevler memory_limit parametresiyle belirtilen belleği kullanabilir. İş yükü grubunun bellek kullanımı bellek sınırını aşarsa gruptaki en yüksek bellek kullanımına sahip görevler, fazla belleği serbest bırakmak için iptal edilebilir. Not
Sistemdeki tüm iş yükü grupları için memory_limit değerlerinin toplamı %100'ü aşamaz. Aksi takdirde hata bildirilir. |
|
enable_memory_overcommit |
Hayır |
İş yükü grubu için yazılımsal bellek izolasyonunun etkinleştirilip etkinleştirilmeyeceğini belirtir. Varsayılan değer: false. Bu parametreyi false olarak ayarlarsanız iş yükü grubu için donanımsal bellek izolasyonu etkinleştirilir. Sistem, iş yükü grubunun bellek kullanımının sınırı aştığını algılarsa gruptaki en yüksek bellek kullanımına sahip görevleri hemen iptal ederek fazla belleği serbest bırakır. Bu parametreyi true olarak ayarlarsanız iş yükü grubu için yazılımsal bellek izolasyonu etkinleştirilir. Sistemde boş bellek kaynağı varsa iş yükü grubu, bellek kullanımı memory_limit parametresiyle belirtilen sınırı aşsa bile daha fazla sistem belleği elde edebilir. Toplam sistem belleği yetersiz kalırsa sistem, bazı fazla belleği serbest bırakmak için en yüksek bellek kullanımına sahip görevleri iptal eder. Bu sayede toplam sistem belleği kullanımı azaltılır. Bu parametreyi birkaç iş yükü grubu için true olarak ayarlarsanız memory_limit parametresini, tüm iş yükü gruplarındaki memory_limit değerlerinin toplamı %100'den az olacak şekilde yapılandırmanızı öneririz. Bu yaklaşım, belleği aşırı taahhüt edebilen iş yükü grupları için yedek bellek ayrılmasını sağlar. |
|
max_concurrency |
Hayır |
İş yükü grubu için izin verilen eşzamanlı sorgu sayısının üst sınırını denetleyen değişken. Varsayılan olarak eşzamanlı sorgu sayısı için üst sınır yoktur. ApsaraDB for SelectDB içinde eşzamanlı sorgu sayısının üst sınırı şu formülle hesaplanır: |
|
max_queue_size |
Hayır |
Sorgu kuyruğunun maksimum uzunluğunu denetleyen değişken. Varsayılan olarak sorgu kuyruğunun maksimum uzunluğu için üst sınır yoktur. ApsaraDB for SelectDB içinde sorgu kuyruğunun maksimum uzunluğu şu formülle hesaplanır: |
|
queue_timeout |
Hayır |
Bir sorgunun kuyrukta bekleyebileceği maksimum süreyi milisaniye cinsinden denetleyen değişken. Varsayılan olarak bir sorgunun kuyrukta bekleyebileceği maksimum süre için üst sınır yoktur. ApsaraDB for SelectDB içinde maksimum süre şu formülle hesaplanır: |
Örnek
g1 adlı bir iş yükü grubu oluşturun.
CREATE WORKLOAD GROUP IF NOT EXISTS g1
PROPERTIES (
"cpu_share"="10",
"memory_limit"="30%",
"enable_memory_overcommit"="true"
);
İş yükü grubu silme
Bir iş yükü grubunu silmek için aşağıdaki ifadeyi çalıştırın.
Sözdizimi
DROP WORKLOAD GROUP [IF EXISTS] 'rg_name'
Örnek
g1 adlı iş yükü grubunu silin.
DROP WORKLOAD GROUP IF EXISTS g1;
İş yükü grubunu değiştirme
Bir iş yükü grubunu değiştirmek için aşağıdaki ifadeyi çalıştırın.
Sözdizimi
ALTER WORKLOAD GROUP "rg_name"
PROPERTIES (
property_list
);
Parametreler
PROPERTIES içindeki parametreler hakkında daha fazla bilgi için bu konudaki Parametreler bölümüne bakın.
Örnek
g1 adlı iş yükü grubunu değiştirin.
ALTER WORKLOAD GROUP g1
PROPERTIES (
"cpu_share"="30",
"memory_limit"="30%"
);
memory_limit parametresini değiştirirken tüm iş yükü grupları için memory_limit değerlerinin toplamının %100'ü aşmadığından emin olun.
Yalnızca bazı parametreleri değiştirebilirsiniz. Örneğin, yalnızca cpu_share parametresini değiştirebilirsiniz. Bu durumda PROPERTIES içinde yalnızca cpu_share parametresini belirtmeniz yeterlidir.
İş yükü gruplarını görüntüleme
Geçerli kullanıcının USAGE-PRIV iznine sahip olduğu iş yükü gruplarını görüntülemek için aşağıdaki ifadeyi çalıştırın.
Sözdizimi
SHOW WORKLOAD GROUPS;
Örnek
Tüm iş yükü gruplarını görüntüleyin.
mysql> SHOW WORKLOAD GROUPS;
+----------+--------+--------------------------+---------+
| Id | Name | Item | Value |
+----------+--------+--------------------------+---------+
| 10343386 | normal | cpu_share | 10 |
| 10343386 | normal | memory_limit | 30% |
| 10343386 | normal | enable_memory_overcommit | true |
| 10352416 | g1 | memory_limit | 20% |
| 10352416 | g1 | cpu_share | 10 |
+----------+--------+--------------------------+---------+
Tam örnek
Aşağıdaki örnekte, bir SelectDB kümesinde iş yükü grubu özelliğinin nasıl etkinleştirileceği ve iş yükü gruplarının nasıl kullanılacağı gösterilmektedir.
FE yapılandırma öğesi
enable_workload_groupdeğerini true olarak ayarlayın.
enable_workload_group=true
Bu yapılandırma öğesi doğrudan belirtilemez. Söz konusu öğeyi belirtmek istiyorsanız destek talebi açın.
Bu yapılandırma öğesi dinamik bir yapılandırma öğesidir. Bu öğeyi değiştirip örneğinizi yeniden başlatırsanız sistem otomatik olarak
normaladlı varsayılan bir iş yükü grubu oluşturur. Bu yapılandırma öğesini değiştirip örneğinizi yeniden başlatmazsanız varsayılan iş yükü grubu oluşturulmaz. Bu yapılandırma öğesinin nasıl değiştirileceği hakkında daha fazla bilgi için destek talebi açın.
Bir iş yükü grubu oluşturun.
CREATE WORKLOAD GROUP IF NOT EXISTS g1
properties (
"cpu_share"="10",
"memory_limit"="30%",
"enable_memory_overcommit"="true"
);
Pipeline execution engine'i etkinleştirmek için experimental_enable_pipeline_engine oturum değişkenini true olarak ayarlayın. Bir iş yükü grubu için CPU izolasyonu, pipeline execution engine temel alınarak uygulanır.
set experimental_enable_pipeline_engine = true;
Sorguları iş yükü grubuyla ilişkilendirin; böylece iş yükü grubu için belirtilen kaynak sınırı etkili olur. Sorguları iş yükü grubuyla ilişkilendirmek için aşağıdaki yöntemlerden birini kullanabilirsiniz:
-
Varsayılan iş yükü grubunu belirtmek için default_workload_group kullanıcı özelliğini yapılandırın. Varsayılan iş yükü grubu sistem tarafından otomatik olarak oluşturulursa bu özelliğin varsayılan değeri
normalolur.set property 'default_workload_group' = 'g1';Önceki ifade, geçerli kullanıcının sorguları tarafından kullanılacak varsayılan iş yükü grubu olarak g1 değerini belirtir.
-
Kullanmak istediğiniz iş yükü grubunu belirtmek için workload_group oturum değişkenini yapılandırın. Bu değişken varsayılan olarak boştur.
set workload_group = 'g1';workload_groupoturum değişkeninin önceliğidefault_workload_groupkullanıcı özelliğinden daha yüksektir.workload_groupdeğişkeni boşsa sorgulardefault_workload_groupözelliğiyle belirtilen iş yükü grubuyla ilişkilendirilir.workload_groupdeğişkeni boş değilse sorgularworkload_groupdeğişkeniyle belirtilen iş yükü grubuyla ilişkilendirilir.Yönetici değilseniz önce SHOW WORKLOAD GROUPS ifadesini çalıştırarak kullanmak istediğiniz iş yükü grubunu görüntüleyip görüntüleyemediğinizi kontrol edin. İş yükü grubu görüntülenmiyorsa söz konusu grup mevcut olmayabilir veya bu grubu kullanma izniniz bulunmayabilir. Bu durumda sorguları çalıştırdığınızda hata bildirilir.
Bir sorgu çalıştırın. Sorgu, belirtilen iş yükü grubuyla ilişkilendirilir. Bu durumda iş yükü grubu için belirtilen kaynak sınırı etkili olur.