Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

SELECT ... FOR UPDATE के कारण गतिरोध पैदा करने वाले व्यवहार को समझने में मदद चाहिए

USER तालिका में शायद इसका उल्लेख करने वाली बहुत सी विदेशी कुंजियाँ हैं। यदि उनमें से कोई भी अनुक्रमित नहीं है, तो ओरेकल पूरी चाइल्ड टेबल को लॉक कर देगा, जबकि यह पैरेंट टेबल से पंक्ति को हटा देता है। यदि एक ही समय में एक से अधिक कथन चलते हैं, तो एक अलग उपयोगकर्ता के लिए भी, वही चाइल्ड टेबल लॉक हो जाएगी। चूंकि उन पुनरावर्ती संचालनों के क्रम को नियंत्रित नहीं किया जा सकता है, इसलिए यह संभव है कि कई सत्र समान संसाधनों को एक अलग क्रम में लॉक कर दें, जिससे गतिरोध पैदा हो जाए।

देखें यह अनुभाग अधिक जानकारी के लिए कॉन्सेप्ट मैनुअल में।

इसे हल करने के लिए, अनुक्रमणिका को किसी भी गैर-अनुक्रमित विदेशी कुंजी में जोड़ें। यदि कॉलम नाम मानक हैं तो इस तरह की एक स्क्रिप्ट संभावित उम्मीदवारों को खोजने में आपकी मदद कर सकती है:

--Find un-indexed foreign keys.
--
--Foreign keys.
select owner, table_name
from dba_constraints
where r_constraint_name = 'USER_ID_PK'
    and r_owner = 'THE_SCHEMA_NAME'
minus
--Tables with an index on the relevant column.
select table_owner, table_name
from dba_ind_columns
where column_name = 'USER_ID';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. समय घटाव प्रारूप परिणाम

  2. Oracle उपयोगकर्ता पासवर्ड की समाप्ति तिथि बदलें

  3. ओरेकल में विश्लेषणात्मक कार्यों का उपयोग कैसे करें (कीवर्ड द्वारा विभाजन पर)

  4. Oracle प्रदर्शन ट्यूनिंग

  5. SQL क्वेरी में Oracle सहयोगी सरणी का उपयोग कैसे करें