Salt okunur sorgu iş yüklerini boşaltmak için salt okunur çoğaltmaları kullanma

Şunlar için geçerlidir:Azure SQL Veritabanı Azure SQL Yönetilen Örneği

Yüksek Kullanılabilirlik mimarisinin bir parçası olarak, Premium ve İş Açısından Kritik hizmet katmanındaki her bir veritabanı veya elastik havuz veritabanı otomatik olarak bir birincil okuma-yazma çoğaltması ve bir veya daha fazla ikincil salt okunur çoğaltma ile sağlanır. İkincil çoğaltmalar, birincil çoğaltmayla aynı işlem boyutuyla sağlanır. Okuma ölçeği genişletme özelliği, salt okunur çoğaltmalardan birinin işlem kapasitesini kullanarak salt okunur iş yüklerini okuma-yazma çoğaltması üzerinde çalıştırmak yerine boşaltmanıza olanak tanır. Bu şekilde, bazı salt okunur iş yükleri okuma-yazma iş yüklerinden yalıtılabilir ve performanslarını etkilemez. Bu özellik, analiz gibi mantıksal olarak ayrılmış salt okunur iş yüklerini içeren uygulamalara yöneliktir. Premium ve İş Açısından Kritik hizmet katmanlarında uygulamalar, ek ücret ödemeden bu ek kapasiteyi kullanarak performans avantajları elde edebilir.

Okuma ölçeği genişletme özelliği, en az bir ikincil çoğaltma eklendiğinde Hiper Ölçek hizmet katmanında da kullanılabilir. Hiper ölçek ikincil adlı çoğaltmalar bağımsız ölçeklendirme, erişim yalıtımı, iş yükü yalıtımı, çeşitli okuma ölçeği genişletme senaryoları için destek ve diğer avantajlar sağlar. Birden çok ikincil HA çoğaltması, tek bir ikincil HA çoğaltması üzerinde kullanılabilir olandan daha fazla kaynak gerektiren salt okunur iş yüklerinin yük dengelemesi için kullanılabilir.

Temel, Standart ve Genel Amaçlı hizmet katmanlarının Yüksek Kullanılabilirlik mimarisi herhangi bir çoğaltmayı içermez. Okuma ölçeği genişletme özelliği bu hizmet katmanlarında kullanılamaz. Ancak, Azure SQL Veritabanı kullanırken coğrafi çoğaltmalar bu hizmet katmanlarında benzer işlevler sağlayabilir. Azure SQL Yönetilen Örneği ve yük devretme gruplarını kullanırken, yük devretme grubu salt okunur dinleyici sırasıyla benzer işlevler sağlayabilir.

Aşağıdaki diyagramda Premium ve İş Açısından Kritik veritabanlarının ve yönetilen örneklerin özelliği gösterilmektedir.

Diagram showing readonly replicas.

Okuma ölçeği genişletme özelliği yeni Premium, İş Açısından Kritik ve Hiper Ölçek veritabanlarında varsayılan olarak etkindir.

Dekont

Okuma ölçeği genişletme, SQL Yönetilen Örneği İş Açısından Kritik hizmet katmanında ve en az bir ikincil çoğaltması olan Hiper Ölçek veritabanlarında her zaman etkinleştirilir.

SQL bağlantı dizesi ile ApplicationIntent=ReadOnlyyapılandırılmışsa, uygulama bu veritabanının veya yönetilen örneğin salt okunur bir çoğaltmasına yönlendirilir. özelliğinin nasıl kullanılacağı ApplicationIntent hakkında bilgi için bkz . Uygulama Amacını Belirtme.

Yalnızca Azure SQL Veritabanı için, uygulamanın SQL bağlantı dizesi ayarından ApplicationIntent bağımsız olarak birincil çoğaltmaya bağlandığından emin olmak istiyorsanız, veritabanını oluştururken veya yapılandırmasını değiştirirken okuma ölçeği genişletmeyi açıkça devre dışı bırakmanız gerekir. Örneğin, veritabanınızı Standart veya Genel Amaçlı katmandan Premium veya İş Açısından Kritik'a yükseltip tüm bağlantılarınızın birincil çoğaltmaya gitmeye devam ettiğinden emin olmak istiyorsanız okuma ölçeği genişletmeyi devre dışı bırakın. Devre dışı bırakma hakkında ayrıntılı bilgi için bkz. Okuma ölçeği genişletmeyi etkinleştirme ve devre dışı bırakma.

Dekont

Sorgu Deposu ve SQL Profil Oluşturucu özellikleri salt okunur çoğaltmalarda desteklenmez.

Veri tutarlılığı

Birincil çoğaltmada yapılan veri değişiklikleri, çoğaltma türüne bağlı olarak salt okunur çoğaltmalarda zaman uyumlu veya zaman uyumsuz olarak kalıcı hale getirilir. Ancak, tüm çoğaltma türleri için salt okunur bir çoğaltmadan yapılan okumalar her zaman birincil çoğaltmaya göre zaman uyumsuz olur. Salt okunur çoğaltmaya bağlı bir oturumda okuma işlemleri her zaman işlemsel olarak tutarlıdır. Veri yayma gecikme süresi değişken olduğundan, farklı çoğaltmalar birincil ve birbirine göre zaman içinde biraz farklı noktalarda veri döndürebilir. Salt okunur çoğaltma kullanılamaz duruma gelirse ve oturum yeniden bağlanırsa, özgün çoğaltmadan farklı bir zaman noktasındaki bir çoğaltmaya bağlanabilir. Benzer şekilde, bir uygulama birincilde okuma-yazma oturumu kullanarak verileri değiştirirse ve salt okunur çoğaltmada salt okunur bir oturum kullanarak verileri hemen okursa, en son değişikliklerin hemen görünmemiş olması mümkündür.

Birincil çoğaltma ile salt okunur çoğaltmalar arasındaki tipik veri yayma gecikmesi, onlarca milisaniyeden tek basamaklı saniyeye kadar değişir. Ancak, veri yayma gecikme süresinde sabit bir üst sınır yoktur. Çoğaltmada yüksek kaynak kullanımı gibi koşullar gecikme süresini önemli ölçüde artırabilir. Oturumlar arasında garantili veri tutarlılığı gerektiren veya işlenen verilerin hemen okunabilir olmasını gerektiren uygulamalar birincil çoğaltmayı kullanmalıdır.

Dekont

Veri yayma gecikmesi, günlük kayıtlarını ikincil çoğaltmaya göndermek ve (varsa) kalıcı hale getirmek için gereken süreyi içerir. Ayrıca bu günlük kayıtlarını veri sayfalarına yinelemek (uygulamak) için gereken süreyi de içerir. Veri tutarlılığını sağlamak için, işlem işleme günlüğü kaydı uygulanana kadar değişiklikler görünmez. İş yükü daha büyük işlemler kullandığında etkili veri yayma gecikme süresi artar.

Veri yayma gecikmesini izlemek için bkz . Salt okunur çoğaltmayı izleme ve sorunlarını giderme.

Salt okunur çoğaltmaya Bağlan

Bir veritabanı için okuma ölçeği genişletmeyi etkinleştirdiğinizde, ApplicationIntent istemci tarafından sağlanan bağlantı dizesi seçeneği, bağlantının yazma çoğaltmasına mı yoksa salt okunur bir çoğaltmaya mı yönlendirileceğine karar verir. Özellikle, değer (varsayılan değer ReadWrite ) iseApplicationIntent, bağlantı okuma-yazma çoğaltmasına yönlendirilir. Bu, bağlantı dizesi dahil olmayan davranışla ApplicationIntent aynıdır. ApplicationIntent değer iseReadOnly, bağlantı salt okunur bir çoğaltmaya yönlendirilir.

Örneğin, aşağıdaki bağlantı dizesi istemciyi salt okunur bir çoğaltmaya bağlar (açı köşeli ayraçlarındaki öğeleri ortamınız için doğru değerlerle değiştirir ve köşeli ayraçları bırakır):

Server=tcp:<server>.database.windows.net;Database=<mydatabase>;ApplicationIntent=ReadOnly;User ID=<myLogin>;Password=<myPassword>;Trusted_Connection=False; Encrypt=True;

SQL Server Management Studio (SSMS) kullanarak salt okunur bir çoğaltmaya bağlanmak için Seçenekler'i seçin

Screenshot showing the SSMS Options button.

Ek Bağlan Parametreleri'ne tıklayın ve girin ApplicationIntent=ReadOnly ve ardından Bağlan

Screenshot showing SSMS Additional Connection Parameters.

Aşağıdaki bağlantı dizesi biri istemciyi bir okuma-yazma çoğaltmasına bağlar (açı köşeli ayraçlarındaki öğeleri ortamınız için doğru değerlerle değiştirir ve açılı ayraçları bırakır):

Server=tcp:<server>.database.windows.net;Database=<mydatabase>;ApplicationIntent=ReadWrite;User ID=<myLogin>;Password=<myPassword>;Trusted_Connection=False; Encrypt=True;

Server=tcp:<server>.database.windows.net;Database=<mydatabase>;User ID=<myLogin>;Password=<myPassword>;Trusted_Connection=False; Encrypt=True;

Bir bağlantının salt okunur bir çoğaltmaya olduğunu doğrulayın

Veritabanınız bağlamında aşağıdaki sorguyu çalıştırarak salt okunur bir çoğaltmaya bağlı olup olmadığınızı doğrulayabilirsiniz. Salt okunur bir çoğaltmaya bağlandığınızda READ_ONLY döndürür.

SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability');

Dekont

Premium ve İş Açısından Kritik hizmet katmanlarında, herhangi bir zamanda salt okunur çoğaltmalardan yalnızca birine erişilebilir. Hiper Ölçek birden çok salt okunur çoğaltmayı destekler.

Salt okunur çoğaltmaları izleme ve sorunlarını giderme

Salt okunur bir çoğaltmaya bağlanıldığında Dinamik Yönetim Görünümleri (DMV) çoğaltmanın durumunu yansıtır ve izleme ve sorun giderme amacıyla sorgulanabilir. Veritabanı altyapısı, çok çeşitli izleme verilerini kullanıma sunmak için birden çok görünüm sağlar.

Aşağıdaki görünümler genellikle çoğaltma izleme ve sorun giderme için kullanılır:

Adı Amaç
sys.dm_db_resource_stats Son bir saat için CPU, veri GÇ ve hizmet hedefi sınırlarına göre günlük yazma kullanımı dahil olmak üzere kaynak kullanım ölçümleri sağlar.
sys.dm_os_wait_stats Veritabanı altyapısı örneği için toplam bekleme istatistikleri sağlar.
sys.dm_database_replica_states Çoğaltma sistem durumu ve eşitleme istatistikleri sağlar. Yineleme kuyruğu boyutu ve yineleme oranı, salt okunur çoğaltmada veri yayma gecikmesinin göstergesi olarak görev görür.
sys.dm_os_performance_counters Veritabanı altyapısı performans sayaçları sağlar.
_exec_query_stats Yürütme sayısı, kullanılan CPU süresi gibi sorgu başına yürütme istatistikleri sağlar.
sys.dm_exec_query_plan() Önbelleğe alınmış sorgu planları sağlar.
sys.dm_exec_sql_text() Önbelleğe alınmış bir sorgu planı için sorgu metni sağlar.
sys.dm_exec_query_profiles Sorgular yürütülirken gerçek zamanlı sorgu ilerlemesi sağlar.
sys.dm_exec_query_plan_stats() Sorgu için çalışma zamanı istatistikleri dahil bilinen son gerçek yürütme planını sağlar.
sys.dm_io_virtual_file_stats() Tüm veritabanı dosyaları için depolama IOPS, aktarım hızı ve gecikme süresi istatistikleri sağlar.

Dekont

sys.resource_stats Mantıksal master veritabanındaki ve sys.elastic_pool_resource_stats DMV'leri birincil çoğaltmanın kaynak kullanım verilerini döndürür.

Genişletilmiş Olaylar ile salt okunur çoğaltmaları izleme

Salt okunur bir çoğaltmaya bağlanıldığında genişletilmiş olay oturumu oluşturulamaz. Ancak Azure SQL Veritabanı, birincil çoğaltmada oluşturulan ve değiştirilen veritabanı kapsamlı Genişletilmiş Olay oturumlarının tanımları, coğrafi çoğaltmalar dahil olmak üzere salt okunur çoğaltmalara çoğaltılır ve salt okunur çoğaltmalardaki olayları yakalar.

Birincil çoğaltmadaki oturum tanımını temel alan salt okunur bir çoğaltmadaki genişletilmiş olay oturumu, birincil çoğaltmadaki oturumdan bağımsız olarak başlatılabilir ve durdurulabilir.

Salt okunur bir çoğaltmaya olay oturumu bırakmak için şu adımları izleyin:

  1. SSMS Nesne Gezgini veya sorgu penceresini salt okunur çoğaltmaya Bağlan.
  2. Nesne Gezgini oturum bağlam menüsünde Oturumu Durdur'u seçerek veya sorgu penceresinde yürüterek ALTER EVENT SESSION [session-name-here] ON DATABASE STATE = STOP; salt okunur çoğaltmada oturumu durdurun.
  3. Birincil çoğaltmaya Bağlan Nesne Gezgini veya sorgu penceresi.
  4. Oturum bağlam menüsünde Sil'i seçerek veya yürüterek oturumu birincil çoğaltmaya bırakınDROP EVENT SESSION [session-name-here] ON DATABASE;

Salt okunur çoğaltmalarda işlem yalıtım düzeyi

Salt okunur çoğaltmalardaki işlemler, oturumun işlem yalıtım düzeyine ve sorgu ipuçlarına bakılmaksızın her zaman anlık görüntü işlem yalıtım düzeyini kullanır. Anlık görüntü yalıtımı, okuyucuların yazarları engellediği engelleme senaryolarını önlemek için satır sürümü oluşturma kullanır.

Nadir durumlarda, bir anlık görüntü yalıtım işlemi başka bir eşzamanlı işlemde değiştirilmiş olan nesne meta verilerine erişiyorsa, 3961 hatasını alabilir: "%.*ls' veritabanında anlık görüntü yalıtım işlemi başarısız oldu çünkü deyimi tarafından erişilen nesne, bu işlemin başlangıcından bu yana başka bir eşzamanlı işlemdeki DDL deyimi tarafından değiştirildi. Meta verilerde sürüm bilgisi olmadığından işleme izin verilmedi. Meta veriler için eşzamanlı güncelleştirme, anlık görüntü yalıtımıyla karıştırılırsa tutarsızlığa yol açabilir."

Salt okunur çoğaltmalarda uzun süre çalışan sorgular

Salt okunur çoğaltmalarda çalıştırılan sorguların sorguda başvuruda bulunan nesnelerin meta verilerine (tablolar, dizinler, istatistikler vb.) erişmesi gerekir Nadir durumlarda, bir sorgu salt okunur çoğaltmada aynı nesne üzerinde kilit tutarken nesne meta verileri birincil çoğaltmada değiştirilirse, sorgu birincil çoğaltmadan salt okunur çoğaltmaya değişiklikleri uygulayan işlemi engelleyebilir . Böyle bir sorgu uzun süre çalışacaksa, salt okunur çoğaltmanın birincil çoğaltmayla eşitlenmemiş olmasına neden olur. Olası yük devretme hedefleri (Premium ve İş Açısından Kritik hizmet katmanlarında ikincil çoğaltmalar, Hiper Ölçek HA çoğaltmaları ve tüm coğrafi çoğaltmalar) olan çoğaltmalar için bu, yük devretme gerçekleşiyorsa veritabanı kurtarmayı geciktirerek beklenenden daha uzun kapalı kalma süresine neden olur.

Doğrudan veya dolaylı olarak salt okunur bir çoğaltmada uzun süre çalışan bir sorgu bu tür engellemelere neden oluyorsa, aşırı veri gecikmesi ve olası veritabanı kullanılabilirliği etkisini önlemek için otomatik olarak sonlandırılabilir. Oturum 1219, "Yüksek öncelikli bir DDL işlemi nedeniyle oturumunuzun bağlantısı kesildi" hatasını veya "İkincil işlem yinelemeyi yakalayamadığı için işlem durduruldu" hatasını alır. İşlemi yeniden deneyin."

Dekont

Salt okunur çoğaltmada sorgu çalıştırırken 3961, 1219 veya 3947 hatasını alırsanız sorguyu yeniden deneyin. Alternatif olarak, uzun süre çalışan sorgular ikincil çoğaltmalarda yürütülürken birincil çoğaltmada nesne meta verilerini (şema değişiklikleri, dizin bakımı, istatistik güncelleştirmeleri vb.) değiştiren işlemlerden kaçının.

Bahşiş

Premium ve İş Açısından Kritik hizmet katmanlarında, salt okunur bir çoğaltmaya bağlanıldığında, redo_queue_size sys.dm_database_replica_states DMV'deki ve redo_rate sütunları, salt okunur çoğaltmada veri yayma gecikmesinin göstergeleri olarak hizmet veren veri eşitleme işlemini izlemek için kullanılabilir.

SQL Veritabanı için okuma ölçeğini genişletmeyi etkinleştirme ve devre dışı bırakma

SQL Yönetilen Örneği için okuma ölçeği genişletme, İş Açısından Kritik hizmet katmanında otomatik olarak etkinleştirilir ve Genel Amaçlı hizmet katmanında kullanılamaz. Okuma ölçeği genişletmeyi devre dışı bırakmak ve yeniden boyutlandırmak mümkün değildir.

SQL Veritabanı için premium, İş Açısından Kritik ve Hiper Ölçek hizmet katmanlarında okuma ölçeği genişletme varsayılan olarak etkinleştirilir. Okuma ölçeği genişletme, Temel, Standart veya Genel Amaçlı hizmet katmanlarında etkinleştirilemiyor. Okuma amaçlı ölçeği genişletme, sıfır ikincil çoğaltma ile yapılandırılmış Hiper Ölçek veritabanlarında otomatik olarak devre dışı bırakılır.

Azure SQL Veritabanı'daki tek ve havuza alınan veritabanları için Azure portalını ve Azure PowerShell'i kullanarak Premium veya İş Açısından Kritik hizmet katmanlarında okuma ölçeğini devre dışı bırakabilir ve yeniden etkinleştirebilirsiniz. Okuma ölçeği genişletme devre dışı bırakılabildiği için bu seçenekler SQL Yönetilen Örneği kullanılamaz.

Dekont

Tek veritabanları ve elastik havuz veritabanları için geriye dönük uyumluluk için okuma ölçeğini genişletmeyi devre dışı bırakma özelliği sağlanır. Yönetilen İş Açısından Kritik örnekte okuma ölçeği genişletme devre dışı bırakılamaz.

Azure portalı

Azure SQL Veritabanı için, Ayarlar altında bulunan İşlem + depolama veritabanı bölmesinde okuma ölçeği genişletme ayarını yönetebilirsiniz. Okuma ölçeği genişletmeyi etkinleştirmek veya devre dışı bırakmak için Azure portalını kullanmak Azure SQL Yönetilen Örneği kullanılamaz.

PowerShell

Önemli

PowerShell Azure Resource Manager modülü hala desteklenmektedir ancak gelecekteki tüm geliştirmeler Az.Sql modülüne yöneliktir. Azure Resource Manager modülü en az Aralık 2020'ye kadar hata düzeltmeleri almaya devam edecektir. Az modülündeki ve Azure Resource Manager modüllerindeki komutların bağımsız değişkenleri önemli ölçüde aynıdır. Uyumlulukları hakkında daha fazla bilgi için bkz . Yeni Azure PowerShell Az modülüne giriş.

Azure PowerShell'de okuma ölçeği genişletmeyi yönetmek için Aralık 2016 Azure PowerShell sürümü veya daha yeni bir sürümü gerekir. En yeni PowerShell sürümü için bkz . Azure PowerShell.

Azure SQL Veritabanı'de, Set-AzSqlDatabase cmdlet'ini çağırıp parametre için istenen değeri (Enabled veya ) geçirerek Azure PowerShell'de okuma ölçeği genişletmeyi -ReadScale devre dışı bırakabilir veya Disabledyeniden etkinleştirebilirsiniz. SQL Yönetilen Örneği için okuma ölçeği genişletme devre dışı bırakılamaz.

Mevcut bir veritabanında okuma ölçeğini genişletmeyi devre dışı bırakmak için (köşeli ayraçlardaki öğeleri ortamınız için doğru değerlerle değiştirme ve açılı ayraçları bırakma):

Set-AzSqlDatabase -ResourceGroupName <resourceGroupName> -ServerName <serverName> -DatabaseName <databaseName> -ReadScale Disabled

Yeni bir veritabanında okuma ölçeğini genişletmeyi devre dışı bırakmak için (köşeli ayraçlardaki öğeleri ortamınız için doğru değerlerle değiştirme ve açılı ayraçları bırakma):

New-AzSqlDatabase -ResourceGroupName <resourceGroupName> -ServerName <serverName> -DatabaseName <databaseName> -ReadScale Disabled -Edition Premium

Mevcut bir veritabanında okuma ölçeği genişletmeyi yeniden etkinleştirmek için (köşeli ayraçlardaki öğeleri ortamınız için doğru değerlerle değiştirme ve açılı ayraçları bırakma):

Set-AzSqlDatabase -ResourceGroupName <resourceGroupName> -ServerName <serverName> -DatabaseName <databaseName> -ReadScale Enabled

REST API

Okuma ölçeğini genişletme devre dışı bırakılmış bir veritabanı oluşturmak veya var olan bir veritabanının ayarını değiştirmek için, aşağıdaki örnek istekte olduğu gibi veya olarak ayarlanmış EnabledDisabledözellik ile readScale aşağıdaki yöntemi kullanın.

Method: PUT
URL: https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{GroupName}/providers/Microsoft.Sql/servers/{ServerName}/databases/{DatabaseName}?api-version= 2014-04-01-preview
Body: {
   "properties": {
      "readScale":"Disabled"
   }
}

Daha fazla bilgi için bkz . Veritabanları - Oluşturma veya güncelleştirme.

tempdb Veritabanını salt okunur çoğaltmada kullanma

tempdb Birincil çoğaltmadaki veritabanı salt okunur çoğaltmalara çoğaltılamaz. Her çoğaltmanın, çoğaltma oluşturulduğunda oluşturulan kendi tempdb veritabanı vardır. Bu, güncelleştirilebilir olmasını ve sorgu yürütme sırasında değiştirilebilmesini sağlar tempdb . Salt okunur iş yükünüz nesneleri kullanmaya tempdb bağlıysa, bu nesneleri salt okunur bir çoğaltmaya bağlıyken aynı iş yükünün bir parçası olarak oluşturmanız gerekir.

Coğrafi olarak çoğaltılmış veritabanlarıyla okuma ölçeğini genişletmeyi kullanma

Coğrafi olarak çoğaltılan ikincil veritabanları, birincil veritabanlarıyla aynı Yüksek Kullanılabilirlik mimarisine sahiptir. Coğrafi olarak çoğaltılan ikincil veritabanına okuma ölçeği genişletme etkin olarak bağlanıyorsanız, ile ApplicationIntent=ReadOnly oturumlarınız birincil yazılabilir veritabanına yönlendirildiği gibi yüksek kullanılabilirlik çoğaltmalarından birine yönlendirilir. Olmayan ApplicationIntent=ReadOnly oturumlar, coğrafi olarak çoğaltılan ikincil kopyanın birincil çoğaltmasına yönlendirilir ve bu da salt okunurdur.

Bu şekilde, coğrafi çoğaltma oluşturmak, bir okuma-yazma birincil veritabanı için birden çok ek salt okunur çoğaltma sağlayabilir. Her ek coğrafi çoğaltma, başka bir salt okunur çoğaltma kümesi sağlar. Coğrafi çoğaltmalar, birincil veritabanının bölgesi de dahil olmak üzere herhangi bir Azure bölgesinde oluşturulabilir.

Dekont

Birden fazla HA çoğaltması olan hiper ölçek coğrafi çoğaltması dışında, coğrafi olarak çoğaltılmış ikincil veritabanının çoğaltmaları arasında otomatik hepsini bir kez deneme veya başka bir yük dengeli yönlendirme yoktur. Bu durumda salt okunur amacı olan oturumlar, coğrafi çoğaltmanın tüm HA çoğaltmalarına dağıtılır.

Salt okunur çoğaltmalarda özellik desteği

Salt okunur çoğaltmalardaki bazı özelliklerin davranışının listesi aşağıdadır:

Sonraki adımlar