سؤال

في SQLServer ، يمكنك استخدام بناء الجملة "(Nolock)" لضمان عدم قفل الجدول أو لم يتم حظره بواسطة الاستعلامات الأخرى التي تقفل نفس الجدول. على سبيل المثال

SELECT * FROM mytable (nolock) WHERE id = blah

ما هو بناء الجملة المكافئ في postgres؟ لقد وجدت بعض الوثائق على قفل الجدول في PG (http://www.postgresql.org/docs/8.1/interactive/sql-lock.html) ، ولكن يبدو كل شيء موجه إلى كيفية قفل طاولة ، لا تأكد من ذلك غير مؤمن.

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

المحلول

لا يقوم تحديد أي جدول في postgresql ، إلا إذا كنت تريد قفل:

SELECT * FROM tablename FOR UPDATE;

يستخدم PostgreSQL MVCC لتقليل خلاف القفل من أجل السماح بأداء معقول في بيئات متعددة. القراء لا يتعارضون مع الكتاب أو القراء الآخرين.

نصائح أخرى

لقد أجريت بعض الأبحاث ويبدو أن NOLOCK تلميح في SQL Server تقريبًا مثل القراءة UNCOMMITTED مستوى عزل المعاملة. في postgresql ، يمكنك ضبط READ UNCOMMITTED, ، لكنها ترقية بصمت إلى المستوى READ COMMITTED. READ UNCOMMITTED غير مدعومة.

PostgreSQL 8.4 وثائق لعزل المعاملات: http://www.postgresql.org/docs/8.4/static/transaction-iso.html

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