पृष्ठभूमि:
मेरे पास कई डेटाबेस हैं जिनमें बड़ी संख्या में व्यू हैं, और SYNONYM की बहुत बड़ी संख्या है। उदाहरण के लिए, एक db में 10k से अधिक व्यू और 2+ मिलियन SYNONYM है।
सामान्य समस्या:
इसमें शामिल क्वेरीज़ sys.objects
(और सामान्य रूप से सिस्टम टेबल) धीमी गति से होती हैं। शामिल क्वेरीज़ sys.synonyms
हिमनद हैं। मैं सोच रहा हूं कि प्रदर्शन को बेहतर बनाने के लिए मैं क्या कर सकता हूं।
विशिष्ट उदाहरण
यह कमांड थर्ड पार्टी टूल द्वारा चलाया जाता है। यह ऐप और एसएसएमएस दोनों में धीमा है:
exec sp_tables_rowset;2 NULL,NULL
मेरा प्रश्न :
मैं इसे कैसे तेज़ बना सकता हूँ?
मैंने क्या प्रयास किया है :
अगर मुझे SET STATISTICS IO ON
यह आउटपुट मिलता है:
(2201538 पंक्ति) प्रभावित
'तालिका' sysobjrdb '। स्कैन काउंट 1, लॉजिकल रीड 28, फिजिकल
रीड्स 0, रीड- फॉरवर्ड रीड्स 0, लॉब लॉजिकल रीड्स 0, लॉब फिजिकल रीड्स 0, लॉब रीड- फॉरवर्ड रीड्स 0. टेबल 'sysschobjs'। स्कैन काउंट 1, लॉजिकल रीड 53926, फिजिकल रीड्स 0, रीड-फॉरवर्ड रीड्स 0, लॉब लॉजिकल रीड्स 0, लॉब फिजिकल रीड्स 0, लॉब रीड-फॉरवर्ड रीड्स 0।
मैं अंतर्निहित सिस्टम तालिकाओं पर आंकड़े अपडेट करने में सक्षम रहा हूं। यह मेरी SQL 2008 R2 या नए वातावरण में काम किया है:
UPDATE STATISTICS sys.sysobjrdb WITH FULLSCAN
UPDATE STATISTICS sys.sysschobjs WITH FULLSCAN
मैं इंडेक्स मेंटेनेंस करने में भी सक्षम हूं। यह मेरी SQL 2012 या नए वातावरण में काम करता है। उदाहरण के लिए, रनिंग sp_help 'sys.sysschobjs'
टेबल पर इंडेक्स को पहचानती है, और वहां से मैं ये कमांड बनाता और चलाता हूं:
ALTER INDEX clst ON sys.sysschobjs REORGANIZE
ALTER INDEX nc1 ON sys.sysschobjs REORGANIZE
ALTER INDEX nc2 ON sys.sysschobjs REORGANIZE
ALTER INDEX nc3 ON sys.sysschobjs REORGANIZE
आँकड़े अद्यतन करना और अनुक्रमणिका को पुनर्गठित करना मदद करता है, लेकिन बहुत अधिक नहीं।