استخدام النسخ المتماثلة للقراءة فقط لإلغاء تحميل أحمال عمل الاستعلام للقراءة فقط

ينطبق على: Azure SQL Database Azure SQL Managed Instance

كجزء من بنية الإتاحة العالية، يتم تزويد كل قاعدة بيانات مفردة، وقاعدة بيانات تجمع مرن، ومثيل مُدار في طبقة الخدمة Premium و Business Critical تلقائيًا بنسخة متماثلة أساسية للقراءة والكتابة والعديد من النسخ المتماثلة الثانوية للقراءة فقط. يتم توفير النسخ المتماثلة الثانوية بنفس حجم الحساب مثل النسخة المتماثلة الأساسية. تتيح لك ميزة read scale-out إلغاء تحميل أحمال عمل القراءة فقط باستخدام سعة الحوسبة لإحدى النسخ المتماثلة للقراءة فقط، بدلاً من تشغيلها على النسخة المتماثلة للقراءة والكتابة. بهذه الطريقة، يمكن عزل بعض أحمال العمل للقراءة فقط عن أحمال عمل القراءة والكتابة، ولن تؤثر على أدائها. الميزة مخصصة للتطبيقات التي تتضمن أحمال عمل منفصلة منطقيًا للقراءة فقط، مثل التحليلات. في مستويي الخدمة Premium و Business Critical، يمكن أن تكتسب التطبيقات مزايا الأداء باستخدام هذه السعة الإضافية دون أي تكلفة إضافية.

تتوفر أيضًا ميزة read scale-out في طبقة خدمة Hyperscale عند إضافة نسخة متماثلة ثانوية واحدة على الأقل. توفر النسخ المتماثلة الثانوية المسماة مقياسًا مستقلاً وعزل الوصول وعزل عبء العمل وقراءة واسعة النطاق ومزايا أخرى. يمكن استخدام العديد من نسخ قابلية الوصول العالية المتماثلة الثانوية لموازنة التحميل لأحمال عمل القراءة فقط التي تتطلب موارد أكثر مما هو متاح في نسخة متماثلة ثانوية من قابلية الوصول العالية.

لا تتضمن قابلية الوصول العالية للخدمة الأساسية والقياسية والأغراض العامة أي نسخ متماثلة. لا تتوفر ميزة read scale-out في طبقات الخدمة هذه. ومع ذلك، يمكن أن توفر النسخ المتماثلة الجغرافية وظائف مماثلة في مستويات الخدمة هذه.

يوضح الرسم التخطيطي التالي ميزة قواعد البيانات Premium و Business Critical والمثيلات المُدارة.

Readonly replicas

يتم تمكين ميزة read scale-out افتراضياً في قواعد بيانات Premium وBusiness Critical وHyperscale الجديدة.

ملاحظة

يتم تمكين القراءة التدريجية دائمًا في طبقة الخدمات الحرجة للأعمال الخاصة بـ Managed Instance، ولقواعد بيانات Hyperscale مع نسخة متماثلة ثانوية واحدة على الأقل.

إذا تم تكوين سلسلة اتصال SQL الخاصة بك باستخدام ApplicationIntent=ReadOnly، فسيتم إعادة توجيه التطبيق إلى نسخة متماثلة للقراءة فقط من قاعدة البيانات هذه أو النسخة المُدارة. للحصول على معلومات حول كيفية استخدام الخاصية ApplicationIntent، راجع "تحديد هدف التطبيق".

إذا كنت ترغب في التأكد من أن التطبيق يتصل بالنسخة المتماثلة الأساسية بغض النظر عن الإعداد ApplicationIntent في سلسلة اتصال SQL، فيجب عليك تعطيل مقياس القراءة بشكل صريح عند إنشاء قاعدة البيانات أو عند تعديل تكوينها. على سبيل المثال، إذا قمت بترقية قاعدة البيانات الخاصة بك من مستوى قياسي أو عام للأغراض العامة إلى Premium أو Business Critical وتريد التأكد من استمرار انتقال جميع اتصالاتك إلى النسخة المتماثلة الأساسية، فقم بتعطيل مقياس القراءة. للحصول على تفاصيل حول كيفية تعطيله، راجع تمكين وتعطيل مقياس القراءة .

ملاحظة

ميزات مخزن الاستعلام و SQL منشئ ملفات التعريف غير معتمدة في النسخ المتماثلة للقراءة فقط.

تناسق البيانات

تستمر تغييرات البيانات التي تم إجراؤها على النسخة المتماثلة الأساسية على النسخ المتماثلة للقراءة فقط بشكل متزامن أو غير متزامن اعتماداً على نوع النسخة المتماثلة. ومع ذلك، بالنسبة لجميع أنواع النسخ المتماثلة، فإن القراءات من نسخة متماثلة للقراءة فقط تكون دائماً غير متزامنة نسبةً إلى النسخة الأساسية. ضمن جلسة عمل متصلة بنسخة متماثلة للقراءة فقط، القراءات متناسقة دائماً. نظراً لأن زمن انتقال نشر البيانات متغير، يمكن للنسخ المتماثلة المختلفة إرجاع البيانات في نقاط زمنية مختلفة قليلاً بالنسبة إلى الأساسي والآخر. إذا أصبحت النسخة المتماثلة للقراءة فقط غير متوفرة وتمت إعادة الاتصال بجلسة العمل، فقد تتصل بنسخة متماثلة موجودة في نقطة زمنية مختلفة عن النسخة المتماثلة الأصلية. وبالمثل، إذا قام أحد التطبيقات بتغيير البيانات باستخدام جلسة القراءة والكتابة في الأساسي وقراءتها على الفور باستخدام جلسة للقراءة فقط في نسخة متماثلة للقراءة فقط، فمن المحتمل ألا تكون التغييرات الأخيرة مرئية على الفور.

يختلف زمن انتقال نشر البيانات النموذجي بين النسخة المتماثلة الأساسية والنسخ المتماثلة للقراءة فقط في النطاق من عشرات المللي ثانية إلى الثواني المكونة من رقم واحد. ومع ذلك، لا يوجد حد أعلى ثابت في زمن انتقال البيانات. يمكن أن تؤدي ظروف مثل الاستخدام العالي للموارد على النسخة المتماثلة إلى زيادة زمن الوصول إلى حد كبير. يجب أن تستخدم التطبيقات التي تتطلب تناسقًا مضمونًا للبيانات عبر الجلسات، أو تتطلب بيانات ملتزمة لتكون قابلة للقراءة على الفور، النسخة المتماثلة الأساسية.

ملاحظة

لمراقبة وقت استجابة نشر البيانات، راجع مراقبة النسخ المتماثلة للقراءة فقط وإصلاحها .

الاتصال بنسخة متماثلة للقراءة فقط

عند تمكين مقياس القراءة لقاعدة بيانات، يحدد الخيار ApplicationIntent في سلسلة الاتصال التي يوفرها العميل ما إذا كان يتم توجيه الاتصال إلى نسخة متماثلة للكتابة أو إلى نسخة متماثلة للقراءة فقط. على وجه التحديد، إذا كانت قيمة ApplicationIntent هي ReadWrite (القيمة الافتراضية)، فسيتم توجيه الاتصال إلى النسخة المتماثلة للقراءة والكتابة. هذا مماثل للسلوك عندما لا يتم تضمين ApplicationIntent في سلسلة الاتصال. إذا كانت قيمة ApplicationIntent هي ReadOnly، يتم توجيه الاتصال إلى نسخة متماثلة للقراءة فقط.

على سبيل المثال، تقوم سلسلة الاتصال التالية بتوصيل العميل بنسخة متماثلة للقراءة فقط (استبدال العناصر الموجودة في أقواس الزاوية بالقيم الصحيحة لبيئتك وإسقاط أقواس الزاوية):

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

تقوم أي من سلاسل الاتصال التالية بتوصيل العميل بنسخة متماثلة للقراءة والكتابة (استبدال العناصر الموجودة في أقواس الزاوية بالقيم الصحيحة لبيئتك وإسقاط أقواس الزاوية):

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;

تحقق من أن الاتصال هو نسخة متماثلة للقراءة فقط

يمكنك التحقق مما إذا كنت متصلاً بنسخة متماثلة للقراءة فقط عن طريق تشغيل الاستعلام التالي في سياق قاعدة البيانات الخاصة بك. وسوف يعود READ_ONLY عند الاتصال بنُسخة متماثلة للقراءة فقط.

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

ملاحظة

في مستوي الخدمة Premium و Business Critical، يمكن الوصول إلى نسخة واحدة فقط من النسخ المتماثلة للقراءة فقط في أي وقت. يدعم Hyperscale النسخ المتماثلة المتعددة للقراءة فقط.

مراقبة واستكشاف النسخ المتماثلة للقراءة فقط وإصلاحها

عند الاتصال بنسخة متماثلة للقراءة فقط، تَعكس طرق عرض الإدارة الديناميكية (DMVs) حالة النسخة المتماثلة، ويمكن الاستعلام عنها لأغراض المراقبة واستكشاف الأخطاء وإصلاحها. يوفر محرك قاعدة البيانات طرق عرض متعددة لعرض مجموعة متنوعة من بيانات المراقبة.

تُستخدم طرق العرض التالية بشكل شائع لمراقبة النسخ المتماثلة واستكشاف الأخطاء وإصلاحها:

الاسم الغرض
sys.dm_db_resource_stats يوفر مقاييس استخدام الموارد لآخر ساعة، بما في ذلك وحدة المعالجة المركزية، وبيانات الإدخال / الإخراج، واستخدام كتابة السجل المرتبط بحدود أهداف الخدمة.
sys.dm_os_wait_stats يوفر إحصائيات انتظار مجمعة لمثيل محرك قاعدة البيانات.
sys.dm_database_replica_states يوفر نسخة متماثلة الحالة الصحية وإحصائيات المزامنة. يعمل حَجم قائمة الانتظار وإعادة الإعادة كمؤشرات لتأخر نشر البيانات على النسخة المتماثلة للقراءة فقط.
sys.dm_os_performance_counters يوفر عدادات أداء محرك قاعدة البيانات.
sys.dm_exec_query_stats يوفر إحصائيات تنفيذ لكل استعلام مثل عدد عمليات الإلغاء، وقت وحدة المعالجة المركزية المستخدمة، وما إلى ذلك.
sys.dm_exec_query_plan() يوَفر خطط استعلام مخزنة مؤقتا.
sys.dm_exec_sql_text() يوفر نص الاستعلام لخطة استعلام مُخزنة مؤقتًا.
sys.dm_exec_query_profiles يوفر تقدم الاستعلام في الوقت الحَقيقي أثناء تنفيذ الاستعلامات.
sys.dm_exec_query_plan_stats() يوفر آخر خطة تنفيذ فِعلية معروفة بما في ذلك إحصائيات وقت التشغيل للاستعلام.
sys.dm_io_virtual_file_stats() يوفر تخزين IOPS ومعدل النقل وإحصائيات زمن الانتقال لجميع ملفات قاعدة البيانات.

ملاحظة

ترجع sys.resource_stats و sys.elastic_pool_resource_stats DMVs في قاعدة البيانات الرئيسية المنطقية بيانات استخدام الموارد للنسخة المتماثلة الأساسية.

مُراقبة النسخ المتماثلة للقراءة فقط باستخدام الأحداث الموسعة

لا يمكن إنشاء جلسة حدث موسَعة عند الاتصال بنسخة متماثلة للقراءة فقط. ومع ذلك، في قاعدة بيانات Azure SQL، تم إنشاء تعريفات جلسات الأحداث الموسعة التي يتم تحديدها في نطاق قاعدة البيانات وتعديلها على النسخة المتماثلة الأساسية إلى النسخ المتماثلة للقراءة فقط، بما في ذلك النسخ المتماثلة الجغرافية، والتقاط الأحداث في النسخ المتماثلة للقراءة فقط.

يمكن بدء جلسة حدث ممتدة على نسخة متماثلة للقراءة فقط تستند إلى تعريف جلسة من النسخة المتماثلة الأساسية وإيقافها بشكل مستقل عن النسخة المتماثلة الأساسية. عند إسقاط جلسة حدث ممتدة على النسخة المتماثلة الأساسية، يتم أيضًا إسقاطها على كافة النسخ المتماثلة للقراءة فقط.

مستوى عزل المعاملة في النسخ المُتماثلة للقراءة فقط

يتم دائمًا تعيين الاستعلامات التي يتم تشغيلها على النسخ المتماثلة للقراءة فقط إلى مستوى عزل المعاملة اللقطة. يستخدم عزل اللقطة إصدار الصف لتجنب حظر السيناريوهات حيث يقوم القراء بمنع الكاتبين.

في حالات نادرة، إذا وصلت معاملة عزل اللقطة إلى بيانات تعريف العنصر التي تم تعديلها في معاملة متزامنة أخرى، فقد تتلقى الخطأ 3961 ، "فشلت معاملة عزل اللقطة في قاعدة البيانات '٪. * ls' لأن الكائن قد تم الوصول إليه بواسطة بيان تم تعديله بواسطة عبارة DDL في معاملة متزامنة أخرى منذ بدء هذه المعاملة. غير مسموح به لأن بيانات التعريف لم يتم إصدارها. يمكن أن يؤدي التحديث المتزامن لبيانات التعريف إلى عدم الاتساق إذا تم مزجه مع عزل اللقطة."

استعلامات طويلة المدى على النسخ المتماثلة للقراءة فقط

تحتاج الاستعلامات التي يتم تشغيلها على النسخ المتماثلة للقراءة فقط إلى الوصول إلى البيانات الوصفية للعناصر المشار إليها في الاستعلام (الجداول والفهارس والإحصاءات وما إلى ذلك) في حالات نادرة، إذا تم تعديل بيانات تعريف العنصر في النسخة المتماثلة الأساسية بينما يحتفظ الاستعلام بقفل على نفس الشيء على النسخة المتماثلة للقراءة فقط، يمكن للاستعلام منع العملية التي تطبق التغييرات من النسخة المتماثلة الأساسية إلى النسخة المتماثلة للقراءة فقط. إذا تم تشغيل مثل هذا الاستعلام لفترة طويلة، فقد يتسبب ذلك في أن تكون النسخة المتماثلة للقراءة فقط غير متزامنة بشكل ملحوظ مع النسخة المتماثلة الأساسية. بالنسبة للنسخ المتماثلة التي تمثل أهدافًا محتملة لتجاوز الفشل (النسخ المتماثلة الثانوية في طبقات الخدمة المميزة و Business Critical، والنسخ المتماثلة Hyperscale HA، وجميع النسخ المتماثلة الجغرافية)، سيؤدي ذلك أيضًا إلى تأخير استرداد قاعدة البيانات في حالة حدوث تجاوز الفشل، مما يتسبب في حدوث تعطل أطول من المتوقع.

إذا تسبب استعلام طويل الأمد في نسخة متماثلة للقراءة فقط بشكل مباشر أو غير مباشر في هذا النوع من الحظر، فقد يتم إنهاؤه تلقائيًا لتجنب زمن انتقال البيانات المفرط والتأثير المحتمل لتوافر قاعدة البيانات. تتلقى جلسة العمل الخطأ 1219، "تم قطع اتصال جلسة العمل الخاصة بك بسبب عملية DDL ذات الأولوية العالية"، أو الخطأ 3947، "تم إحباط المعاملة لأن الحساب الثانوي فشل في اللحاق بالإعادة. أعد محاولة المعاملة."

ملاحظة

إذا تلقيت الخطأ 3961 أو 1219 أو 3947 عند تشغيل الاستعلامات على نسخة متماثلة للقراءة فقط، فأعد محاولة الاستعلام. بدلاً من ذلك، تجنب العمليات التي تعدل بيانات تعريف الكائن (تغييرات المخطط، وصيانة الفهرس، وتحديثات الإحصائيات، وما إلى ذلك) على النسخة المتماثلة الأساسية أثناء تنفيذ الاستعلامات طويلة المدى على النسخ المتماثلة الثانوية.

تلميح

في مستويات الخدمة المميزة و Business Critical، عند الاتصال بنسخة متماثلة للقراءة فقط، يمكن استخدام الأعمدة redo_queue_size و redo_rate في sys.dm_database_replica_states DMV لمراقبة عملية مزامنة البيانات، والتي تعمل كمؤشرات من زمن انتقال البيانات على النسخة المتماثلة للقراءة فقط.

تمكين وتعطيل مقياس القراءة

يتم تمكين قراءة التدرج بشكل افتراضي على مستويات الخدمة Premium و Business Critical و Hyperscale. لا يمكن تمكين مقياس القراءة في طبقات الخدمة الأساسية أو القياسية أو العامة. يتم تعطيل مقياس القراءة تلقائيًا في قواعد بيانات Hyperscale المكونة بدون نسخ متماثلة ثانوية.

يمكنك تعطيل وإعادة تمكين مقياس القراءة على قواعد بيانات مفردة وقواعد بيانات مجمّعة مرنة في طبقات الخدمة Premium أو Business Critical باستخدام الطرق التالية.

ملاحظة

بالنسبة لقواعد البيانات الفردية وقواعد بيانات التجمع المرن، يتم توفير القدرة على تعطيل مقياس القراءة للتوافق مع الإصدارات السابقة. لا يمكن تعطيل القراءة التدريجية في مثيلات Business Critical المُدارة.

مدخل Azure

يمكنك إدارة إعداد توسيع نطاق القراءة في نص قاعدة البيانات تكوين.

PowerShell

هام

لا تزال الوحدة النمطية PowerShell Azure Resource Manager مدعومة، ولكن كل التطوير المستقبلي مخصص للوحدة النمطية Az.Sql. ستستمر وحدة Azure Resource Manager في تلقي إصلاحات الأخطاء حتى ديسمبر 2020 على الأقل. الوسائط الخاصة بالأوامر الموجودة في الوحدة النمطية Az وفي الوحدات النمطية لـ Azure Resource Manager متطابقة إلى حد كبير. لمزيد من المعلومات حول توافقها، راجع تقديم وحدة Azure PowerShell Az الجديدة .

تتطلب إدارة توسيع نطاق القراءة في Azure PowerShell إصدار Azure PowerShell لشهر ديسمبر 2016 أو إصدار أحدث. للحصول على أحدث إصدار PowerShell، راجِع Azure PowerShell.

يمكنك تعطيل أو إعادة تمكين مقياس القراءة في Azure PowerShell من خلال استدعاء الأمر cmdletSet-AzSqlDatabase وتمرير القيمة المطلوبة (Enabled أو Disabled) للمعلمة -ReadScale.

لتعطيل مقياس القراءة في قاعدة بيانات موجودة (استبدال العناصر الموجودة في أقواس الزاوية بالقيم الصحيحة لبيئتك وإفلات أقواس الزاوية):

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

لتعطيل مقياس القراءة في قاعدة بيانات جديدة (استبدال العناصر الموجودة في أقواس الزاوية بالقيم الصحيحة لبيئتك وإسقاط أقواس الزاوية):

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

لإعادة تمكين مقياس القراءة في قاعدة بيانات موجودة (استبدال العناصر الموجودة في أقواس الزاوية بالقيم الصحيحة لبيئتك وإسقاط أقواس الزاوية):

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

REST API

لإنشاء قاعدة بيانات مع تعطيل مقياس القراءة، أو لتغيير الإعداد لقاعدة بيانات موجودة، استخدم الطريقة التالية مع تعيين الخاصية readScale على Enabled أو Disabled، كما في نموذج الطلب التالي.

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"
   }
}

للحصول على مزيدٍ من المعلومات، راجعقاعدة بيانات إنشاء أو تحديث.

استخدام قاعدة البيانات tempdb في نسخة متماثلة للقراءة فقط

لا يتم نسخ قاعدة البيانات tempdb الموجودة على النسخة المتماثلة الأساسية إلى النسخ المتماثلة للقراءة فقط. تحتوي كل نسخة متماثلة على قاعدة بيانات tempdb الخاصة بها والتي يتم إنشاؤها عند إنشاء النسخة المتماثلة. هذا يضمن أن tempdb قابل للتحديث ويمكن تعديله أثناء تنفيذ الاستعلام. إذا كان عبء العمل للقراءة فقط يعتمد على استخدام كائنات tempdb، فيجب عليك إنشاء هذه العناصر كجزء من نفس حمل العمل، أثناء الاتصال بنسخة متماثلة للقراءة فقط.

استخدام مقياس القراءة مع قواعد البيانات المنسوخة جغرافيًا

قواعد البيانات الثانوية التي يتم نسخها جغرافيًا لها نفس بنية الإتاحة العالية مثل قواعد البيانات الأولية. إذا كنت تتصل بقاعدة البيانات الثانوية التي تم نسخها جغرافيًا مع تمكين توسيع نطاق القراءة، فسيتم توجيه جلساتك مع ApplicationIntent=ReadOnly إلى إحدى النسخ المتماثلة عالية التوافر بنفس الطريقة التي يتم بها توجيهها على قاعدة البيانات الأساسية القابلة للكتابة. سيتم توجيه الجلسات بدون ApplicationIntent=ReadOnly إلى النسخة المتماثلة الأساسية للنسخة الثانوية التي يتم نسخها جغرافيًا، والتي تكون أيضًا للقراءة فقط.

بهذه الطريقة، يمكن أن يوفر إنشاء نسخة متماثلة جغرافية عدة نسخ متماثلة إضافية للقراءة فقط لقاعدة بيانات أساسية للقراءة والكتابة. توفر كل نسخة جغرافية متماثلة إضافية مجموعة أخرى من النسخ المُتماثلة للقراءة فقط. يُمكن إنشاء النسخ المتماثلة الجغرافية في أي منطقة Azure، بما في ذلك منطقة قاعدة البيانات الأساسية.

ملاحظة

لا توجد آلية round-robin أو أي توجيه آخر متوازن التحميل بين النسخ المتماثلة لقاعدة بيانات ثانوية مكررة جغرافيًا، باستثناء النسخة المتماثلة الجغرافية Hyperscale مع أكثر من نسخة متماثلة قابلية الوصول العالية واحدة. في هذه الحالة، يتم توزيع جلسات العمل مع هدف للقراءة فقط على كافة النسخ المتماثلة قابلية الوصول العالية من النسخة المتماثلة الجغرافية.

دَعم الميزة على النسخ المتماثلة للقراءة فقط

فيما يلي قائمة بسلوك بعض الميزات في النُسخ المتماثلة للقراءة فقط:

  • يتم تمكين التدوين على النسخ المتماثلة للقراءة فقط تلقائيًا. لمزيد من التفاصيل حول التسلسل الهرمي لمجلدات التخزين، واصطلاحات التسمية، وتنسيق السجل، راجع تنسيق سجل تدقيق قاعدة بيانات SQL.
  • تعتمد مؤشرات أداء الاستعلام على البيانات من مخزن الاستعلام، والذي لا يتتبع حاليًا النشاط في النسخة المطابقة للقراءة فقط. لن يعرض Query Performance Insight الاستعلامات التي يتم تنفيذها على النسخة المتماثلة للقراءة فقط.
  • يعتمد الضبط التلقائي على Query Store، كما هو مفصل في ورق التوليف التلقائي. يعمل الضبط التلقائي فقط لأحمال العمل التي يتم تشغيلها على النسخة المتماثلة الأساسية.

الخطوات التالية