Microsoft ने हाल ही में एक अविश्वसनीय नई सुविधा की घोषणा की है - Azure SQL डेटाबेस में स्वचालित ट्यूनिंग। सच कहूं तो, मैं इस सुविधा से पूरी तरह प्रभावित हूं क्योंकि Microsoft इंजीनियरों ने SQL Azure प्रदर्शन ट्यूनिंग में कृत्रिम बुद्धिमत्ता का परिष्कृत रूप से उपयोग किया है। इसका उद्देश्य Azure SQL डेटाबेस की निगरानी करना और इन अवलोकनों को अंतर्निहित खुफिया सेवा को भेजना है जो कुछ सिफारिशें उत्पन्न करती है। उन्हें ऑफपीक समय पर लागू किया जा सकता है। इस सुविधा ने डेटाबेस प्रशासकों के काम को भी सरल बना दिया है; उन्हें अब SQL Azure डेटाबेस प्रदर्शन के बारे में चिंता करने की ज़रूरत नहीं है।
MSDN प्रलेखन में SQL Azure स्वचालित ट्यूनिंग पर एक महत्वपूर्ण बिंदु है "स्वचालित ट्यूनिंग आर्टिफिशियल इंटेलिजेंस के माध्यम से Azure पर सभी डेटाबेस से क्षैतिज रूप से सीखता है और यह गतिशील रूप से इसकी ट्यूनिंग क्रियाओं में सुधार करता है"। इसका मतलब है कि कृत्रिम बुद्धिमत्ता एल्गोरिथ्म विभिन्न SQL Azure डेटाबेस से बहुत बड़ा अनुभव सीखता है। इस कारण से, ये सिफारिशें विश्वसनीय होंगी। स्वचालित ट्यूनिंग सुविधा भी अनुशंसाओं को वापस ले सकती है और स्वयं को सही कर सकती है।
इस फीचर के बारे में एक और दिलचस्प विकल्प नोटिफिकेशन है। Microsoft इस फीचर को कुछ कंपनियों में लागू करने की बात कहकर उसका विश्वास बढ़ा रहा है। हो सकता है, यह दृष्टिकोण थोड़ा यूटोपिक हो लेकिन भविष्य में कृत्रिम बुद्धिमत्ता को डेटाबेस प्रशासकों की बहुत सारी जिम्मेदारियाँ मिलेंगी। इसलिए, डेटाबेस व्यवस्थापकों के लिए कार्यों की संख्या कम हो जाएगी।
इस सुविधा का परीक्षण करने के लिए, मैंने Azure SQL पर दो टेबल बनाए और उन्हें कुछ डेटा के साथ पॉप्युलेट किया। इस परीक्षण डेटा को उत्पन्न करने के बाद, मैंने कई प्रश्नों को निष्पादित किया जिनके लिए समान गैर-संकुल अनुक्रमणिका की आवश्यकता थी। जब मैंने अनुमानित क्वेरी निष्पादन योजना की जांच की, तो मैंने पाया कि यह एक गैर-संकुल सूचकांक का सुझाव देता है। लगभग 30 घंटों के बाद, Azure SQL स्वचालित ट्यूनिंग ने एक अनुक्रमणिका बनाने के लिए एक अनुशंसा उत्पन्न की। इस प्रतीक्षा समय के लिए, Microsoft नोट करता है कि "Azure SQL डेटाबेस को कुछ अनुशंसाओं की पहचान करने के लिए कम से कम एक दिन के लिए गतिविधियों की निगरानी करने की आवश्यकता है"। यह ट्यूनिंग अनुशंसा अनुक्रमणिका अनुपलब्ध अनुक्रमणिका के समान है। जब स्वचालित ट्यूनिंग ने स्क्रिप्ट को निष्पादित करने का प्रयास किया, तो सीमित डिस्क स्थान के कारण एक त्रुटि हुई।
/* Missing Index Details from SQLQuery1.sql - xxxx.database.windows.net.Adventureworks (esat.erkec) The Query Processor estimates that implementing the following index could improve the query cost by 99.6269%. */ /* USE [Adventureworks] GO CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>] ON [dbo].[Salesd] ([SalesOrderID]) GO */
स्वचालित ट्यूनिंग विकल्प इस प्रकार हैं:
- सूचकांक बनाएं जो स्वचालित अनुक्रमणिका निर्माण की पहचान करता है जो प्रदर्शन को प्रभावित कर सकता है।
- सूचकांक छोड़ें जो अप्रयुक्त या अनावश्यक अनुक्रमणिका की पहचान करता है।
- फोर्स लास्ट प्लान गुड जो SQL क्वेरी योजनाओं को परिभाषित करता है जो पिछले वाले से भी बदतर हैं। यह सुविधा SQL सर्वर 2017 में स्वचालित योजना सुधार को संदर्भित करती है।
Azure SQL स्वचालित ट्यूनिंग कैसे सक्षम करें
Azure पोर्टल या T-SQL क्वेरीज़ स्वचालित ट्यूनिंग विकल्पों को सक्षम करने की अनुमति देती हैं। यह सुविधा एक ही समय में सर्वर या डेटाबेस स्तर पर स्वचालित ट्यूनिंग को सक्षम कर सकती है। डेटाबेस स्तर सर्वर स्तर से इन विकल्पों को इनहेरिट कर सकता है।
अब, हम Azure पोर्टल से जुड़ेंगे और SQL सर्वर ढूंढ़ेंगे।
फिर, स्वचालित ट्यूनिंग विकल्प खोजें।
इस स्क्रीनशॉट पर, हम सर्वर स्तर पर और डिफ़ॉल्ट सेटिंग में स्वचालित ट्यूनिंग विकल्पों को बदल और लागू कर सकते हैं। सभी डेटाबेस सर्वर स्तर से विरासत में मिले हैं। हालाँकि, हम इस विकल्प को डेटाबेस स्तर पर भी बदल सकते हैं।
वर्तमान स्थिति विकल्प स्वचालित ट्यूनिंग विकल्प की वर्तमान स्थिति को परिभाषित करता है। Microsoft इस सुविधा को सर्वर स्तर पर प्रबंधित करने की पेशकश करता है क्योंकि इसकी सेटिंग्स सभी डेटाबेस पर लागू की जा सकती हैं।
अब, हम डेटाबेस स्तर पर स्वचालित ट्यूनिंग विकल्पों को देखेंगे। हम इन विकल्पों को SQL डेटाबेस पर पा सकते हैं।
जैसा कि आप देख सकते हैं, हम व्यक्तिगत डेटाबेस के लिए स्वचालित ट्यूनिंग विकल्प सेट कर सकते हैं और इनहेरिट विकल्प बदल सकते हैं।
ऊपर दिया गया स्क्रीनशॉट निम्नलिखित विकल्पों की पहचान करता है:
- बल योजना स्थिति "चालू" है और सर्वर स्तर से विरासत में मिली है जिसका राज्य "चालू" है।
- सूचकांक बनाएं स्थिति "बंद" है और सर्वर स्तर से विरासत में मिली है। इसकी स्थिति "बंद" है।
- ड्रॉप इंडेक्स स्थिति "चालू" है और यह विकल्प केवल इस डेटाबेस के लिए सेट है। इस सेटिंग के लिए सर्वर स्तर महत्वपूर्ण नहीं है।
हम T-SQL के माध्यम से स्वचालित ट्यूनिंग सक्षम कर सकते हैं:
ALTER DATABASE current SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON, CREATE_INDEX = DEFAULT, DROP_INDEX)
इस चरण में, हम SQL सर्वर मेनू के नीचे स्थित स्वचालित ट्यूनिंग अनुशंसाओं को देखेंगे।
इसके अतिरिक्त, स्वचालित ट्यूनिंग अनुशंसाएं डेटाबेस मेनू के नीचे पाई जा सकती हैं।
ट्यूनिंग अनुशंसाओं की अलग-अलग स्थितियां होती हैं:
- लंबित: अनुशंसा लागू करें आदेश प्राप्त हो गया है और निष्पादन के लिए निर्धारित है।
- निष्पादन: सिफारिश लागू की जा रही है।
- सत्यापित करना: अनुशंसा को सफलतापूर्वक लागू किया गया था और सेवा लाभों का आकलन कर रही है।
- सफलता: अनुशंसा को सफलतापूर्वक लागू किया गया और लाभों को मापा गया है।
- त्रुटि: अनुशंसा को लागू करने की प्रक्रिया के दौरान एक त्रुटि हुई। यह एक क्षणिक समस्या हो सकती है या तालिका में स्कीमा परिवर्तन हो सकता है और स्क्रिप्ट अब मान्य नहीं है।
- वापस किया जा रहा है: सिफारिश लागू की गई थी, लेकिन उसे गैर-निष्पादक माना गया है और उसे स्वचालित रूप से वापस किया जा रहा है।
- वापस किया गया: अनुशंसा वापस कर दी गई थी।
जब स्वचालित ट्यूनिंग एक अनुशंसा बनाता है जो अनुशंसा टैब के नीचे स्थित होगी, तो स्थिति लंबित रहेगी। जब ट्यूनिंग अनुशंसा स्थिति निष्पादित हो रही हो, प्रगति, सफलता या त्रुटि, इसे ट्यूनिंग इतिहास टैब के अंतर्गत दिखाया जाएगा। उसी समय, sys.dm_db_tuning_recommendations स्वचालित ट्यूनिंग अनुशंसा के बारे में जानकारी लौटा सकता है।
SELECT name, JSON_VALUE(state, '$.currentValue') as script, JSON_VALUE(details, '$.implementationDetails.script') as script, details.* FROM sys.dm_db_tuning_recommendations CROSS APPLY OPENJSON(details, '$.createIndexDetails') WITH ( indexName VARCHAR(100) '$.indexName', indexType VARCHAR(100) '$.indexType', table_name VARCHAR(100) '$.table') as details
जब हम अनुशंसा पर क्लिक करते हैं, तो हम अनुशंसा ट्यूनिंग पर कुछ विवरण प्राप्त कर सकते हैं।
हम ट्यूनिंग अनुशंसा पर बहुत उपयोगी जानकारी प्राप्त कर सकते हैं और इस सुविधा की एक स्क्रिप्ट तैयार कर सकते हैं।
विवरण जो स्क्रिप्ट लौटाएगा वह इस प्रकार है:
- प्रभाव ट्यूनिंग अनुशंसा के प्राथमिकता स्तर को परिभाषित करता है।
- डिस्क स्थान की आवश्यकता है भंडारण की खपत को परिभाषित करता है।
- सूचकांक प्रकार परिभाषित करता है कि यह किस प्रकार का सूचकांक बनाएगा।
निष्कर्ष
मेरी राय में, SQL Azure स्वचालित ट्यूनिंग एक नई पीढ़ी की विशेषता है क्योंकि Microsoft अनुशंसा ट्यूनिंग में कृत्रिम बुद्धिमत्ता एल्गोरिदम का उपयोग करना शुरू कर रहा है। साथ ही, यह सुविधा निम्नलिखित प्रश्नों को जन्म दे सकती है:
- मुझे यह ट्यूनिंग अनुशंसा कब करनी चाहिए?
- क्या यह ट्यूनिंग अनुशंसा उपयोगी है? यदि यह उपयोगी नहीं है, तो मुझे इस ट्यूनिंग अनुशंसा को कब वापस लेना चाहिए?
परिणामस्वरूप, SQL Azure स्वचालित ट्यूनिंग एक भविष्यवादी दृष्टिकोण प्रदान करता है।
संदर्भ
Azure SQL डेटाबेस में स्वचालित ट्यूनिंग
Azure SQL डेटाबेस में ट्यूनिंग प्रदर्शन
आर्टिफिशियल इंटेलिजेंस ने Azure SQL डेटाबेस को ट्यून किया