Tabloyu kilitlemeden büyük miktarda tablo verisini değiştirmeniz gerekiyorsa, Data Management (DMS) içindeki Kilit Gerektirmeyen Değişiklik özelliğini kullanabilirsiniz. Bu özellik, tek bir SQL deyimini çalıştırmak üzere birden çok toplu işe böler; bu sayede tablo verilerini tabloyu kilitlemeden değiştirebilir ve DML işlemlerinin veritabanı performansı ile alan üzerindeki etkisini azaltabilirsiniz. Bu konuda, DMS'de kilit gerektirmeyen veri değişikliklerinin nasıl yapılacağı açıklanmaktadır.
Önkoşullar
-
Desteklenen veritabanı türleri:
Veritabanı altyapısı Desteklenen örnekler MySQL ApsaraDB RDS for MySQL, PolarDB for MySQL, MyBase for MySQL, PolarDB for Xscale, üçüncü taraf MySQL veritabanları PostgreSQL ApsaraDB RDS for PostgreSQL, PolarDB for PostgreSQL, MyBase for PostgreSQL, üçüncü taraf PostgreSQL veritabanları MariaDB ApsaraDB for MariaDB, üçüncü taraf MariaDB veritabanları OceanBase MySQL modundaki ApsaraDB for OceanBase Oracle uyumlu PolarDB for PostgreSQL (Oracle ile Uyumludur) Örnek, Kararlı Değişiklik veya Güvenlik İşbirliği kontrol modunda olmalıdır. Daha fazla bilgi için bkz. Bir örneğin kontrol modunu görüntüleme.
Sınırlamalar
Yalnızca UPDATE, DELETE ve INSERT...SELECT deyimleri desteklenir.
UPDATE ve DELETE
| Kısıtlama | Ayrıntılar |
|---|---|
| Tablo kapsamı | Yalnızca tek tablo |
| WHERE yan tümcesi | Gerekli. Tüm satırları güncellemek veya silmek için WHERE 1=1 kullanın |
| Alt sorgular | Desteklenmez |
| LIMIT yan tümcesi | Desteklenmez — manuel sayfalama için LIMIT kullanımı tam tablo taramasına zorlar ve bu özelliğin önlemeyi amaçladığı tablo kilitlemesine neden olur |
INSERT...SELECT
| Kısıtlama | Ayrıntılar |
|---|---|
| SELECT kapsamı | Yalnızca tek tablo |
| WHERE yan tümcesi | SELECT yan tümcesinde gereklidir. Tüm satırları seçmek için WHERE 1=1 kullanın |
| İzin verilmeyen yan tümceler | SELECT yan tümcesinde LIMIT, ORDER BY ve GROUP BY desteklenmez |
Yordam
DMS 5.0 konsolunda oturum açın.
-
Üst gezinme çubuğunda yolunu izleyin.
NotBasit modda DMS konsolunu kullanıyorsanız, sol üst köşedeki
simgesine tıklayın. Görüntülenen gezinme bölmesinde yolunu izleyin. -
Kilit Gerektirmeyen Değişiklik talebi için parametreleri yapılandırın ve Submit düğmesine tıklayın. Aşağıdaki tabloda bazı parametreler açıklanmaktadır.
NotBu örnek, Güvenlik İşbirliği modundaki bir örnek için yapılandırmayı göstermektedir. Esnek Yönetim veya Kararlı Değişiklik modundaki örnekler için yalnızca Veritabanı ve değişiklik için SQL deyimleri parametrelerini yapılandırmanız gerekir.
Parametre
Gerekli
Açıklama
Database
Evet
Hedef veritabanını aratın ve seçin.
NotHedef veritabanındaki verileri değiştirme iznine sahip olmanız gerekir. Daha fazla bilgi için bkz. İzinlerinizi görüntüleme.
Business Background
Hayır
İletişim ek yükünü azaltmak için değişiklikle ilgili bağlam sağlayın.
Execution Method
Evet
Talep için bir yürütme yöntemi seçin:
-
Onaydan sonra, gönderen işlemi yürütür.
-
Onaydan sonra otomatik olarak yürütün.
-
Son onaylayıcı tarafından yürütün.
NotYöneticiler, yürütme yöntemlerinin listesini bölümünde değiştirebilir. Daha fazla bilgi için bkz. Yapılandırma yönetimi.
Affected rows
Evet
Etkilenen satır sayısını tahmin edin. Bu sayıyı almak için SQL Console içinde bir
COUNTsorgusu çalıştırabilirsiniz.NotTabloya sürekli olarak veri yazılıyorsa, yalnızca mevcut veri satırlarının sayısını sayın.
SQL Statements for Change
Evet
UPDATE,DELETEveyaINSERT_SELECTgibi DML deyimlerini girin.NotDDL deyimleri girerseniz, DDL kilitsiz şema değişikliği görevi gerçekleştiriyorsunuz demektir. Daha fazla bilgi için bkz. Kilit Gerektirmeyen Değişiklik talebi kullanarak kilitsiz şema değişikliği gerçekleştirme.
SQL Statements for Rollback
Hayır
Değişiklik için SQL deyimlerindeki deyimlerin tersine çevrilmiş betiği. Betik yürütülebilir olmalıdır.
SQL Text
Hayır
Bu parametre, yalnızca Text parametresi için Rollback SQL seçeneğini belirlediğinizde görünür. Değişiklik SQL deyimlerinin tersi olan geri alma SQL deyimlerini girin.
Attachment
Hayır
Bu parametre, yalnızca SQL Statements for Rollback parametresi için Ek'i seçtiğinizde görünür. Geri alma SQL ekini yüklemek için Dosya'ya tıklayın.
NotEk, .txt, .zip veya .sql dosyası olabilir. Maksimum dosya boyutu 15 MB'tır.
Change Stakeholder
Hayır
Belirtilen paydaşlar talebi görüntüleyebilir ve üzerinde işbirliği yapabilir. Paydaş olmayanlar (yöneticiler ve DBA'ler hariç) talebi görüntüleyemez.
Attachments
Hayır
Bu talep için daha fazla bağlam sağlamak üzere ekler yükleyin.
-
-
Talebi gönderdikten sonra birincil-ikincil gecikme süresi denetimini etkinleştirebilir, bir eşik belirleyebilir ve SQL deyimlerini değiştirebilirsiniz.
-
(İsteğe bağlı) Birincil-ikincil gecikme süresi denetimini etkinleştirin ve bir eşik belirleyin. Bu, aşırı birincil-ikincil gecikme süresinin örnek geçişlerini etkilemesini önler.
Basic Information bölümünde, chunk option öğesine tıklayın ve saniye cinsinden makul bir birincil-ikincil gecikme süresi eşiği belirleyin. Birincil-ikincil gecikme süresi eşiği aşarsa SQL yürütmesi kesintiye uğrar.
NotBu özellik şu anda yalnızca ApsaraDB RDS for MySQL veritabanları için kullanılabilir.
-
(İsteğe bağlı) SQL deyimlerini değiştirin.
Başvuruyu gönderdikten sonra sistem SQL deyimlerini otomatik olarak ön denetimden geçirir. Ön denetim başarısız olursa, Edit SQL öğesine tıklayarak deyimleri hata nedenine göre düzenleyebilir ve ardından yeniden deneyebilirsiniz.
-
Submit düğmesine tıklayın. Güvenlik İşbirliği modundaki örnekler için talepler, yapılandırılan kurallara göre onay gerektirirken Kararlı Değişiklik modundaki örnekler için talepler otomatik olarak onaylanır.
-
Talep onaylandıktan sonra, talep ayrıntıları sayfasının Execute bölümünde Execute Change düğmesine tıklayın.
NotOnay ilerlemesini, talep ayrıntıları sayfasının Approval bölümünde görüntüleyebilirsiniz.
-
Görev yürütme parametrelerini yapılandırın.
Yapılandırma Öğesi
Açıklama
Execution Strategy
Running immediately: Varsayılan seçenek. Confirm Execution düğmesine tıkladıktan hemen sonra görev yürütülür.
Schedule: Görev için bir başlangıç zamanı seçin. Confirm Execution düğmesine tıkladıktan sonra görev belirtilen zamanda çalışır.
NotZamanlanmış bir görevin gerçek yürütme zamanında ±1 dakikalık bir hata payı olabilir.
Specify End Time
Görev için bir bitiş zamanı belirtin. Görev belirtilen bitiş zamanına kadar tamamlanmazsa sistem kalan SQL görevlerinin yürütülmesini durdurur. Bu, görevlerin yoğun saatlerde çalışmasını ve iş operasyonlarını etkilemesini önler.
NotGörevin gerçek bitiş zamanında ±1 dakikalık bir hata payı olabilir.
Primary/Secondary Node Check
Bu denetimin etkinleştirilmesi, birincil ve yedek örnekler arasında gerçek zamanlı veri senkronizasyonunu, yüksek kullanılabilirliği ve arızalardan hızlı kurtarmayı sağlar.
Canary Release Type
SQL deyimlerini toplu işler halinde yürütme ilkesi.
No Canary Release: DMS, görevdeki tüm SQL deyimlerini otomatik olarak yürütür.
Suspend after Executing the First SQL Statement: İlk SQL deyimi başarıyla yürütüldükten sonra DMS görevi otomatik olarak duraklatır. Devam etmek için Yeniden Dene'ye tıklayın. Kalan SQL deyimleri daha sonra başka duraksamalar olmadan tek seferde yürütülür.
Suspend after Executing a SQL Statement: Her SQL deyimi yürütüldükten sonra görev otomatik olarak duraklar. Sonraki SQL deyimini yürütmek için Yeniden Dene'ye manuel olarak tıklamanız gerekir.
-
Confirm Execution düğmesine tıklayın.
NotDuraklatılmış bir görev yeniden başlatıldığında, en baştan itibaren başlar.
Execute bölümünde görev yürütme durumunu, görev ayarlarını, ayrıntıları ve Scheduling Logs öğelerini görüntüleyebilirsiniz.
İlgili belgeler
-
Kilit gerektirmeyen bir veri değişikliği yaptıktan sonra aşağıdaki işlemleri de yapmanız gerekebilir:
SQL penceresinde tablo verilerini sorgulayın. Daha fazla bilgi için bkz. Veri sorgulama.
Veritabanınızdan verileri dışa aktarın. Daha fazla bilgi için bkz. Veritabanı dışa aktarma.
SQL sonuç kümelerini dışa aktarın. Daha fazla bilgi için bkz. SQL sonuç kümelerini dışa aktarma.
-
Aşağıdaki API işlemleri kilit gerektirmeyen veri değişiklikleriyle ilgilidir:
SSS
-
S: Kilit gerektirmeyen veri değişikliği özelliği karmaşık SQL işlemlerini destekler mi?
C: Hayır. Örneğin,
CREATE_INDEXveyaJOINiçeren birDELETEdeyimi gibi çok tablolu işlemleri desteklemez. Desteklenen SQL türleri hakkında daha fazla bilgi için bkz. Sınırlamalar. -
S: DMS Kilit Gerektirmeyen Değişiklik, tablo kilitlerini ve engellemeleri algılar mı?
C: DMS kilit gerektirmeyen bir veri değişikliği gerçekleştirirken büyük SQL deyimlerini daha küçük toplu işlere böler ve her toplu işten sonra duraklar. Bu, kaynakların uzun süre meşgul edilmesini önler. Yürütme sırasında DMS önceden satır kilidi denetimi gerçekleştirmez. MySQL yine de değiştirilen satırları kilitler. Küçük toplu işler ve duraklamalar nedeniyle genel etki minimaldir ancak bu, tablonun kilitlenmeyeceğini garanti etmez. Kilitsiz bir şema değişikliği için DMS, DDL deyimlerinizi simüle etmek üzere geçici bir tablo kullanır. Bu, işlemin tablo kilitlemeye veya engellemeye neden olup olmayacağını önceden denetler. Denetim, işlemin tabloyu kilitleyeceğini belirlerse doğrulama başarısız olur ve bir mesaj görüntülenir.
-
S: DMS Kilit Gerektirmeyen Değişiklik görevi için artımlı oynatma doğrulaması ayarlanabilir mi?
C: Evet. İlk olarak, sayfasında "Kilit gerektirmeyen değişiklik sonuçları için oynatma verisi doğrulama oranının ayarlanmasına izin ver" özelliğini aratın ve etkinleştirin.
Konsoldaki ilgili DDL talebine gidin.
Yürütme bölümünde Ayrıntılar'a tıklayın.
İlgili betiği bulun ve Yürütme İlerlemesi'ne tıklayın.
Doğrulama oranı altta görüntülenir. Oranı ihtiyaca göre ayarlayın. Birim binde (‰) şeklindedir.