سؤال

أعلم أنه في Oracle DB يمكنني تكوين علامة ، يمكن تشغيل جميع الاستعلامات التي تعمل على ديسيبل محددة كما لو NOLOCK تمت إضافة تلميح. هل هناك شيء مشابه في SQL Server؟

هل كانت مفيدة؟

المحلول

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

يحرر

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

نصائح أخرى

ليس على مستوى لكل database. يمكنك فقط القيام بذلك مع تلميحات أو set transaction isolation level. يمكنك تعيين قاعدة بيانات على وضع القراءة فقط ، والتي قد يكون لها هذا التأثير بشكل افتراضي ولكن من شأنه أن يحول (كما يوحي الاسم) بكتابة إلى قاعدة البيانات.

قد يكون هذا مفيدًا لقاعدة بيانات يتم تحديثها بشكل دوري. قمت بتعيين قاعدة البيانات على القراءة فقط وتعيينها على الكتابة للحصول على التحديثات ثم العودة إلى القراءة فقط.

ليس لقاعدة البيانات بأكملها ولكن لكل استعلام تقوم به:

SELECT a, b
FROM t1
WITH (NOLOCK)
WHERE t1.c = @value

أو

SELECT a, b
JOIN t1
ON t1.id = t2.id
WITH (NOLOCK)
FROM t2
WHERE t2.c = @value

إلخ

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top