Database Autonomy Service (DAS), hizmetlerin kullanılabilirliğini sağlamak amacıyla veritabanı erişim isteklerinin hacmini ve SQL eşzamanlılığını kontrol etmek için SQL kısıtlama özelliğini sunar.
Önkoşullar
Desteklenen veritabanı motorları şunlardır:
ApsaraDB RDS for MySQL 5,6, 5,7 ve 8,0.
-
ApsaraDB RDS for PostgreSQL 13 ve sonraki sürümler.
NotPostgreSQL 13 için, küçük motor sürümü 20250430 veya daha yeni olmalıdır.
PostgreSQL 14 veya 15 için, küçük motor sürümü 20230330 veya daha yeni olmalıdır.
15'ten sonraki PostgreSQL sürümleri için herhangi bir küçük motor sürümü desteklenir.
PolarDB for MySQL 5,6, 5,7 ve 8,0.
PolarDB-X 2,0.
MongoDB.
Kısıtlama hata mesajları
Bir SQL kısıtlama kuralı oluşturduktan sonra, bir uygulama kuralın anahtar kelimeleri veya şablonuyla eşleşen bir SQL ifadesi çalıştırdığında veritabanı sistemi belirli bir hata mesajı döndürür.
|
Maksimum eşzamanlılık |
Örnek sürümü |
Hata kodu |
Hata mesajı |
|
0 veya pozitif bir tamsayı |
|
1317 |
|
|
MongoDB |
56900 |
|
|
|
Pozitif tamsayı |
ApsaraDB RDS for MySQL 5,7 (küçük motor sürümü 20200630 veya daha yeni) |
5041 |
Not
Maksimum eşzamanlılık pozitif bir tamsayıdır ve ilgili SQL sorguları, bekleme sayısı |
|
ApsaraDB RDS for MySQL 8,0 |
7534 |
||
|
PolarDB for MySQL 5,7 |
3277 |
||
|
PolarDB for MySQL 8,0 |
7533 |
||
|
0 |
ApsaraDB RDS for MySQL 5,7 (küçük motor sürümü 20200630 veya daha yeni) |
5042 |
Not
Maksimum eşzamanlılık 0 ise, hemen bir hata döndürülür. |
|
ApsaraDB RDS for MySQL 8,0 |
7535 |
||
|
PolarDB for MySQL 5,7 |
3278 |
||
|
PolarDB for MySQL 8,0 |
7534 |
DAS SQL kısıtlaması uygularken,
ccl_max_waiting_countparametresi 0 olarak ayarlanırsa DAS varsayılan değeri olan 10'u kullanır. Parametre 0'dan büyük bir değere ayarlanırsa DAS belirtilen değeri kullanır.ApsaraDB RDS for MySQL 5,7 (küçük sürüm 20200630 veya daha yeni) ve ApsaraDB RDS for MySQL 8,0 örnekleri için,
ccl_wait_timeoutparametresi ayarlanmışsa (ve örnek sürümü tarafından destekleniyorsa),Concurrency control waitingdurumundaki SQL ifadeleri çalışmaya devam eder ve bu sınır aşıldıktan sonra artık kısıtlanmaz.-
PolarDB for MySQL 8,0 örnekleri için, eşzamanlılık sınırı aşıldığında SQL ifadelerinin davranışını kontrol etmek üzere
ccl_modeparametresini ayarlayabilirsiniz. Bu parametre yalnızca desteklenen örnek sürümlerinde kullanılabilir.WAIT (varsayılan): İfade bir kuyrukta bekler.
REFUSE: İfade beklemez ve hemen bir hata döndürülür.
Senaryolar
|
|
|
|
|
|
|
|
|
|
|
|
Kısıtlama modları
|
Mod |
Açıklama |
Desteklenen veritabanları |
|
Keyword throttling |
Belirtilen anahtar kelimeleri içeren SQL ifadelerini kısıtlar. Not
Bu modu belirli bir SQL ifadesini kısıtlamak için kullanamazsınız. |
|
|
Throttle by SQL Template |
Bir SQL örneği girin. Sistem bunu bir SQL şablonuna dönüştürür ve ardından eşleşen tüm SQL ifadelerini kısıtlar. |
|
|
SQL şablonu kimliklerini eşleştirerek SQL ifadelerini kısıtlar. SQL şablonu kimliklerini SQL günlüklerinden, oturumlardan ve EXPLAIN çalıştırma sonuçlarından elde edebilirsiniz. Not
Bir SQL şablonu kimliği, 8 karakterli onaltılık bir dizedir. |
PolarDB-X 2,0 Enterprise Edition |
|
|
Throttle by Execution Duration |
Bir SQL ifadesinin çalışma süresi belirtilen eşiği aşarsa, SQL şablonu kimliği otomatik olarak kısıtlama kuralına eklenir. Bu kimlikle eşleşen sonraki ifadeler daha sonra kuralda belirtilen eşzamanlılığa göre çalıştırılır. Not
Ayrıca kısıtlanan SQL şablonu kimliklerinin sayısı için de bir sınır belirleyebilirsiniz. Sınıra ulaşıldıktan sonra diğer SQL ifadeleri için başka kısıtlama kuralları oluşturulmaz. |
PolarDB-X 2,0 Enterprise Edition |
|
Operation Type Throttling |
Belirtilen bir koleksiyonda find, insert, update ve delete işlemlerinin eşzamanlılığını kontrol eder. |
MongoDB
|
Yordam
Bu konuda, kısıtlama özelliğinin nasıl kullanılacağını açıklamak için örnek olarak ApsaraDB RDS for MySQL kullanılmıştır. Diğer veritabanı türleriyle ilgili işlemler için bkz. İlgili belgeler.
DAS konsolunda oturum açın.
Soldaki gezinme bölmesinde, öğelerini tıklayın.
Hedef örneği bulun ve örnek ayrıntıları sayfasını açmak için örnek kimliğini tıklayın.
Sol gezinme bölmesinde, Instance Sessions seçeneğini tıklayın.
Session Management sayfasında, SQL Throttling seçeneğini tıklayın.
İletişim kutusunda, Create Throttling Rule seçeneğini tıklayın.
Create Throttling Rule iletişim kutusunda, veritabanı motoruna bağlı olarak aşağıdaki parametreleri yapılandırın.
-
Throttling Mode seçeneğini Throttle by Keyword olarak ayarlarsanız bu parametre gereklidir.
-
INSERT ifadelerini yalnızca aşağıdaki veritabanı motorlarında kısıtlayabilirsiniz:
-
ApsaraDB RDS for MySQL 8,0
-
PolarDB for MySQL 5,7 ve 8,0
-
PolarDB-X 2,0
-
-
INSERT...SELECT...ifadelerini kısıtlayamazsınız. -
Kısıtlama Modu seçeneğini Anahtar Kelimeye Göre Kısıtla olarak ayarlarsanız bu parametre gereklidir.
-
Birden çok anahtar kelime belirtirseniz, kısıtlama kuralı yalnızca bir SQL ifadesi belirtilen anahtar kelimelerin tümünü içerdiğinde tetiklenir. Birden fazla anahtar kelimeyi tilde (~) ile ayırın. Anahtar kelimelerin sırası önemli değildir.
Örneğin, orijinal ifade
SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673ise,ilgili kısıtlama anahtar kelimeleri
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~idşeklindedir. -
Kısıtlama anahtar kelimeleri olarak yalnızca
SELECT, INSERT, UPDATE, DELETEbelirtemezsiniz. Anahtar kelimeler büyük/küçük harfe duyarlıdır. Ancak bazı eski örnek sürümleri büyük/küçük harfe duyarlı değildir. -
Kısıtlama Modu seçeneğini SQL Şablonuna Göre Kısıtla olarak ayarlarsanız bu parametre gereklidir.
-
Karmaşık SQL ifadeleri için DAS, dahili işleme amacıyla SQL Örneğini dönüştürür ancak nihai SQL şablonu değişmez. Kısıtlama etkisi bu dönüşümden etkilenmez.
Örneğin,
select name from das where name =girerseniz,dasand age = 21 limit 20bu ifade
select name from das where name = ? and age = ? limit ?şeklinde şablonlanırve ardından
select name from das where name =şeklinde yeniden yazılır.param0and age =param1limit 20 -
Throttling Mode seçeneğini Throttle by SQL Template olarak ayarlarsanız bu parametre gereklidir.
-
Karmaşık SQL ifadeleri için DAS, dahili işleme amacıyla SQL Örneğini dönüştürür ancak nihai SQL şablonu değişmez. Kısıtlama etkisi bu dönüşümden etkilenmez.
Örneğin,
select name from das where name = "das" and age = 21 limit 20girerseniz,bu ifade
select name from das where name = ? and age = ? limit ?şeklinde şablonlanırve ardından
select name from das where name = "param0" and age = "param1" limit 20şeklinde yeniden yazılır. -
INSERTifadelerini yalnızca aşağıdaki veritabanı motorlarında kısıtlayabilirsiniz:-
ApsaraDB RDS for MySQL 8,0
-
PolarDB for MySQL 5,7 ve 8,0
-
PolarDB-X 2,0
-
-
INSERT...SELECT...ifadelerini kısıtlayamazsınız. -
Throttling Mode seçeneğini Throttle by Keyword olarak ayarlarsanız bu parametre gereklidir.
-
Birden çok anahtar kelime belirtirseniz, kısıtlama kuralı yalnızca bir SQL ifadesi belirtilen anahtar kelimelerin tümünü içerdiğinde tetiklenir. Birden fazla anahtar kelimeyi tilde (~) ile ayırın. Anahtar kelimelerin sırası önemli değildir.
Örneğin, orijinal ifade
SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673ise,ilgili kısıtlama anahtar kelimeleri
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~idşeklindedir. -
Kısıtlama anahtar kelimeleri olarak yalnızca SELECT, INSERT, UPDATE veya DELETE belirtemezsiniz. Anahtar kelimeler büyük/küçük harfe duyarlıdır. Ancak bazı eski örnek sürümleri büyük/küçük harfe duyarlı değildir.
-
Throttling Mode seçeneğini Throttle by SQL Template olarak ayarlarsanız bu parametre gereklidir.
-
Karmaşık SQL ifadeleri için DAS, dahili işleme amacıyla SQL Örneğini dönüştürür ancak nihai SQL şablonu değişmez. Kısıtlama etkisi bu dönüşümden etkilenmez.
Örneğin,
select name from das where name = "das" and age = 21 limit 20girerseniz,bu ifade
select name from das where name = ? and age = ? limit ?şeklinde şablonlanırve ardından
select name from das where name = "param0" and age = "param1" limit 20şeklinde yeniden yazılır. -
INSERTifadelerini yalnızca aşağıdaki veritabanı motorlarında kısıtlayabilirsiniz:-
ApsaraDB RDS for MySQL 8,0
-
PolarDB for MySQL 5,7 ve 8,0
-
PolarDB-X 2,0
-
-
INSERT...SELECT...ifadelerini kısıtlayamazsınız. -
Throttling Mode seçeneğini Throttle by Keyword olarak ayarlarsanız bu parametre gereklidir.
-
Birden çok anahtar kelime belirtirseniz, kısıtlama kuralı yalnızca bir SQL ifadesi belirtilen anahtar kelimelerin tümünü içerdiğinde tetiklenir. Birden fazla anahtar kelimeyi tilde (~) ile ayırın. Anahtar kelimelerin sırası önemli değildir.
Örneğin, orijinal ifade
SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673ise,ilgili kısıtlama anahtar kelimeleri
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~idşeklindedir. -
Kısıtlama anahtar kelimeleri olarak yalnızca SELECT, INSERT, UPDATE veya DELETE belirtemezsiniz. Anahtar kelimeler büyük/küçük harfe duyarlıdır. Ancak bazı eski örnek sürümleri büyük/küçük harfe duyarlı değildir.
-
Submit seçeneğini tıklayın.
SQL kısıtlama kuralı oluşturulduktan sonra, ayrıntılarını Running sekmesinde görüntüleyebilirsiniz. Aşağıdaki tabloda parametreler açıklanmaktadır.
NotListedeki parametreler, veritabanı motoruna ve kısıtlama moduna bağlı olarak biraz farklılık gösterebilir.
Parametre
Açıklama
Throttling Mode
Seçtiğiniz mod.
Throttling Rule
-
Throttle by Keyword: Yapılandırılan kısıtlama anahtar kelimeleri.
-
Throttle by SQL Template: SQL Örneğine karşılık gelen şablon kimliği.
-
Throttle by Execution Duration: Yapılandırılan çalışma süresi eşiği ve kısıtlanan SQL şablonlarının sayısı.
Maximum Concurrency
Maksimum eşzamanlı SQL ifadesi sayısı.
Maximum Waiting Queries
Kısıtlama kuralında yapılandırılan maksimum bekleyen sorgu sayısı.
NotApsaraDB RDS for PostgreSQL örneklerinde Throttling Mode, Throttle by SQL Template olarak ayarlandığında bu parametre görüntülenir.
Throttling Duration (min)
SQL kısıtlama kuralının etkin olduğu süre.
Start Time
Kısıtlama kuralının yapılandırıldığı ve yürürlüğe girdiği zaman.
Remaining time
Kısıtlama kuralının süresi dolana kadar kalan süre.
SQL Sample
Kısıtlanacak örnek bir SQL ifadesi.
NotThrottling Mode seçeneğini Throttle by SQL Template olarak ayarlarsanız bu parametre görüntülenir.
Throttling Template ID
SQL Örneğine karşılık gelen şablon kimliği.
NotThrottling Mode seçeneğini Throttle by SQL Template olarak ayarlarsanız bu parametre görüntülenir.
Status
Kuralın etkin olduğunu gösterir.
Database
SQL ifadelerinin kısıtlanacağı veritabanı.
NotThrottling Mode seçeneğini Throttle by SQL Template olarak ayarlarsanız bu parametre görüntülenir.
Search Path
Kısıtlanan SQL ifadesine karşılık gelen arama yolu.
NotApsaraDB RDS for PostgreSQL örneklerinde Throttling Mode, Throttle by SQL Template olarak ayarlandığında bu parametre görüntülenir.
Matched SQL Query
Kısıtlama kuralıyla eşleşen SQL sorgularının sayısı.
NotThrottling Mode seçeneğini Throttle by SQL Template olarak ayarlarsanız bu parametre görüntülenir.
Waiting SQL Query
Kısıtlama kuralı nedeniyle bekleyen SQL sorgularının sayısı.
NotThrottling Mode seçeneğini Throttle by SQL Template olarak ayarlarsanız bu parametre görüntülenir.
Actions
Kuralı Disable veya Modify etmenizi sağlar.
-
RDS for MySQL
|
Parametre |
Açıklama |
|
Throttling Mode |
Gerektiğinde bir kısıtlama modu seçin. |
|
SQL Type |
SQL ifadesinin türü. Geçerli değerler: SELECT, UPDATE, DELETE ve INSERT. Not
|
|
Database |
SQL ifadelerinin kısıtlanacağı veritabanı. Not
Throttling Mode seçeneğini Throttle by SQL Template olarak ayarlarsanız bu parametre gereklidir. |
|
Maximum Concurrency |
Maksimum eşzamanlı SQL ifadesi sayısı. Minimum değer 0'dır. Not
Kural ile eşleşen eşzamanlı SQL ifadelerinin sayısı bu değere ulaştığında kısıtlama başlar. |
|
Throttling Duration |
SQL kısıtlama kuralının etkin olduğu süre. Önemli
SQL kısıtlama acil durum önlemidir. Süreyi iş ihtiyaçlarınıza göre ayarlamanızı ve artık gerekmediğinde kuralı devre dışı bırakmanızı öneririz. |
|
SQL Keywords |
Kısıtlanacak SQL ifadelerindeki anahtar kelimeler. Not
|
|
SQL Sample |
Kısıtlanacak örnek bir SQL ifadesi. Not
|
RDS for PostgreSQL
|
Parametre |
Açıklama |
|
Throttling Mode |
ApsaraDB RDS for PostgreSQL yalnızca SQL Şablonuna Göre Kısıtlayı destekler. |
|
Database |
SQL ifadelerinin kısıtlanacağı veritabanı. |
|
Search Path |
SQL kısıtlaması için arama yolu. Not
Birden fazla yolu virgül ( |
|
Maximum Concurrency |
Maksimum eşzamanlı SQL ifadesi sayısı. Minimum değer 0'dır. Not
Kural ile eşleşen eşzamanlı SQL ifadelerinin sayısı bu değere ulaştığında kısıtlama başlar. |
|
Maximum Waiting Queries |
Maksimum bekleyen sorgu sayısı. |
|
Throttling Duration |
SQL kısıtlama kuralının etkin olduğu süre. Önemli
SQL kısıtlama acil durum önlemidir. Süreyi iş ihtiyaçlarınıza göre ayarlamanızı ve artık gerekmediğinde kuralı devre dışı bırakmanızı öneririz. |
|
SQL Sample |
Kısıtlanacak örnek bir SQL ifadesi. Not
|
PolarDB for MySQL
|
Parametre |
Açıklama |
|
Throttling Mode |
Gerektiğinde bir kısıtlama modu seçin. |
|
SQL Type |
SQL ifadesinin türü. Geçerli değerler: Not
|
|
Maximum Concurrency |
Maksimum eşzamanlı SQL ifadesi sayısı. Minimum değer 0'dır. Not
Kural ile eşleşen eşzamanlı SQL ifadelerinin sayısı bu değere ulaştığında kısıtlama başlar. |
|
Database |
SQL ifadelerinin kısıtlanacağı veritabanı. Not
Throttling Mode seçeneğini Throttle by SQL Template olarak ayarlarsanız bu parametre gereklidir. |
|
Throttling Duration |
SQL kısıtlama kuralının etkin olduğu süre. Önemli
SQL kısıtlama acil durum önlemidir. Süreyi iş ihtiyaçlarınıza göre ayarlamanızı ve artık gerekmediğinde kuralı devre dışı bırakmanızı öneririz. |
|
SQL Keywords |
Kısıtlanacak SQL ifadelerindeki anahtar kelimeler. Not
|
|
SQL Sample |
Kısıtlanacak örnek bir SQL ifadesi. Not
|
PolarDB-X 2,0
|
Parametre |
Açıklama |
|
Throttling Mode |
Gerektiğinde bir kısıtlama modu seçin. |
|
SQL Type |
SQL ifadesinin türü. Geçerli değerler: Not
|
|
Maximum Concurrency |
Maksimum eşzamanlı SQL ifadesi sayısı. Minimum değer 0'dır. Not
Kural ile eşleşen eşzamanlı SQL ifadelerinin sayısı bu değere ulaştığında kısıtlama başlar. |
|
Throttling Duration |
SQL kısıtlama kuralının etkin olduğu süre. Önemli
SQL kısıtlama acil durum önlemidir. Süreyi iş ihtiyaçlarınıza göre ayarlamanızı ve artık gerekmediğinde kuralı devre dışı bırakmanızı öneririz. |
|
SQL Keywords |
Kısıtlanacak SQL ifadelerindeki anahtar kelimeler. Not
|
|
SQL Template ID |
Kısıtlanacak SQL şablonunun kimliği. Bir kimlik, 8 karakterli onaltılık bir dizedir. Birden fazla SQL şablonu kimliğini virgül ( Not
PolarDB-X örneklerinde Throttling Mode, Throttle by SQL Template olarak ayarlandığında bu parametre gereklidir. |
|
Minimum SQL Execution Duration |
SQL çalışma süresi eşiği. Bir SQL ifadesinin çalışma süresi belirtilen eşiği aşarsa, sistem SQL ifadesinin şablon kimliğini kısıtlama kuralına ekler. Not
PolarDB-X örneklerinde Throttling Mode, Throttle by Execution Duration olarak ayarlandığında bu parametre gereklidir. |
|
Maximum Number of Throttled Queries |
Çalıştırma süresine göre kısıtlanabilecek maksimum SQL şablonu kimliği sayısı. Bu sınıra ulaşıldıktan sonra sistem, çalışma süresi belirtilen eşiği aşan diğer SQL ifadeleri için kısıtlama kuralları oluşturmaz. Not
PolarDB-X örneklerinde Throttling Mode, Throttle by Execution Duration olarak ayarlandığında bu parametre gereklidir. |
|
Database Account with Throttled Queries |
Kısıtlanan SQL ifadesiyle ilişkili veritabanı hesabı. Not
Throttling Mode seçeneğini Throttle by Keyword veya Throttle by SQL Template olarak ayarlarsanız bu parametre gereklidir. |
MongoDB
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
İlgili konular
İlgili API'ler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|