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

SQL सर्वर में विदेशी कुंजी का उपयोग करने के लिए कोई गंभीर प्रदर्शन हिट है?

इन्सर्ट, अपडेट और डिलीट पर एक छोटा प्रदर्शन हिट होता है क्योंकि FK को चेक करना होता है। एक व्यक्तिगत रिकॉर्ड के लिए यह सामान्य रूप से इतना मामूली होगा कि ध्यान देने योग्य न हो जब तक कि आपके पास तालिका से जुड़े एफके की हास्यास्पद संख्या शुरू न हो (स्पष्ट रूप से 2 की तुलना में 100 अन्य तालिकाओं की जांच करने में अधिक समय लगता है)। यह एक अच्छी बात है, बुरी बात नहीं है क्योंकि बिना अखंडता के डेटाबेस अविश्वसनीय हैं और इस प्रकार बेकार हैं। आपको गति के लिए अखंडता का व्यापार नहीं करना चाहिए। निष्पादन योजनाओं को अनुकूलित करने की बेहतर क्षमता से उस प्रदर्शन हिट की भरपाई आमतौर पर की जाती है।

हमारे पास लगभग 9 मिलियन रिकॉर्ड और एफके के साथ एक मध्यम आकार का डेटाबेस है और उन्हें शायद ही कभी एक प्रदर्शन हिट दिखाई देनी चाहिए (एक बुरी तरह से डिज़ाइन की गई तालिका को छोड़कर जिसमें 100 से अधिक विदेशी कुंजी हैं, इससे रिकॉर्ड्स को हटाना थोड़ा धीमा है। जाँच होनी चाहिए)। लगभग हर डीबीए मुझे पता है कि बड़े, टेराबाइट आकार के डेटाबेस से कौन निपटता है और बड़े डेटा सेट पर उच्च प्रदर्शन की वास्तविक आवश्यकता विदेशी कुंजी बाधाओं पर जोर देती है क्योंकि अखंडता किसी भी डेटाबेस की कुंजी है। यदि टेराबाइट आकार के डेटाबेस वाले लोग बहुत कम प्रदर्शन हिट का खर्च उठा सकते हैं, तो आप भी ऐसा कर सकते हैं।

FK स्वचालित रूप से अनुक्रमित नहीं होते हैं और यदि उन्हें अनुक्रमित नहीं किया जाता है तो इससे प्रदर्शन संबंधी समस्याएं हो सकती हैं।

ईमानदारी से, मैं आपके डेटाबेस की एक प्रति लूंगा, ठीक से अनुक्रमित FK जोड़ूंगा और FK के बिना आपके डेटाबेस से उसी की तुलना में उन तालिकाओं से सम्मिलित करने, हटाने, अपडेट करने और चयन करने के लिए समय अंतर दिखाऊंगा। दिखाएं कि आप प्रदर्शन हिट का कारण नहीं बनेंगे। फिर उन प्रश्नों के परिणाम दिखाएं जो अनाथ रिकॉर्ड दिखाते हैं जिनका अब कोई अर्थ नहीं है क्योंकि वे जिस पीके से संबंधित हैं वह अब मौजूद नहीं है। वित्तीय जानकारी वाली तालिकाओं के लिए इसे दिखाना विशेष रूप से प्रभावी है ("हमारे पास 2700 ऑर्डर हैं जिन्हें हम किसी ग्राहक के साथ संबद्ध नहीं कर सकते हैं" प्रबंधन को बैठने और नोटिस लेने के लिए मजबूर करेगा)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर के साथ Lucene.Net कॉन्फ़िगर करें

  2. डेटाबेस मेल लॉग इन SQL सर्वर (T-SQL) से ईवेंट हटाएं

  3. ASIN () SQL सर्वर में उदाहरण

  4. jdbctemplate के माध्यम से एसक्यूएल डालने से पहचान

  5. SQL सर्वर में तालिका बनाने के लिए कथन बनाएँ का उपयोग करें - SQL सर्वर / T- SQL ट्यूटोरियल भाग 34