क्या आपने कभी खुद को ऐसी स्थिति में पाया है जहां आपको परीक्षण के लिए बड़ी मात्रा में डमी डेटा की आवश्यकता है, लेकिन आप स्क्रिप्ट लिखने या मैन्युअल रूप से रिकॉर्ड डालने में घंटों खर्च नहीं करना चाहते हैं? या शायद आप इस बारे में उत्सुक रहे होंगे कि अपने डेटाबेस कार्यों को सुव्यवस्थित करने के लिए MySQL 8.0 में नई सुविधाओं का लाभ कैसे उठाया जाए? खैर, आप एक दावत में हैं! इस पोस्ट में, हम यह पता लगाएंगे कि आपके MySQL डेटाबेस में बड़ी मात्रा में डमी डेटा को आसानी से उत्पन्न करने और डालने के लिए कॉमन टेबल एक्सप्रेशन (सीटीई) का उपयोग कैसे करें।
लोड परीक्षण या प्रदर्शन बेंचमार्किंग के लिए दस लाख हैश मानों के साथ एक तालिका को भरने की आवश्यकता की कल्पना करें। एक दुःस्वप्न जैसा लगता है, है ना? अब और नहीं! MySQL 8.0 में CTE के आगमन के साथ, आप इसे कुछ ही सेकंड में हासिल कर सकते हैं। आइए देखें कि यह कैसे काम करता है और आप अपनी डेटा उत्पादन आवश्यकताओं को सरल बनाने के लिए इस शक्तिशाली सुविधा का उपयोग कैसे कर सकते हैं।
कॉमन टेबल एक्सप्रेशंस (सीटीई), जो कि MySQL 8.0 में जोड़ा गया एक नया फीचर है, का उपयोग बड़ी मात्रा में सरल डमी डेटा को आसानी से इनपुट करने के लिए किया जा सकता है। उदाहरण के लिए, यदि आप हैश नामक तालिका में 1 मिलियन डमी डेटा इनपुट करना चाहते हैं जो हैश मान संग्रहीत करता है, तो आप इसे निम्नलिखित चरणों से प्राप्त कर सकते हैं:
सबसे पहले, तालिका बनाएं:
CREATE TABLE hashes ( id INT PRIMARY KEY AUTO_INCREMENT, hash CHAR(64) );
उच्च रिकर्सन गहराई की अनुमति देने के लिए सत्र चर सेट करें:
SET SESSION cte_max_recursion_depth = 1000000;
फिर, 10 लाख पंक्तियाँ सम्मिलित करने के लिए CTE निष्पादित करें:
INSERT INTO hashes(hash) WITH RECURSIVE cte (n) AS ( SELECT 1 UNION ALL SELECT n 1 FROM cte WHERE nयह विधि डमी डेटा उत्पन्न करने के लिए एक पुनरावर्ती सामान्य तालिका अभिव्यक्ति का लाभ उठाती है।
सीटीई को समझना
एक कॉमन टेबल एक्सप्रेशन (सीटीई) एक नामित अस्थायी परिणाम सेट है जिसे एक ही कथन में कई बार संदर्भित किया जा सकता है। जटिल प्रश्नों को सरल बनाने और पठनीयता में सुधार के लिए सीटीई विशेष रूप से उपयोगी हैं।
सिंटैक्स ब्रेकडाउन
रिकर्सन गहराई सेट करना
SET SESSION cte_max_recursion_depth = 1000000;cte_max_recursion_depth सिस्टम वेरिएबल रिकर्सन के लिए ऊपरी सीमा निर्धारित करता है। डिफ़ॉल्ट रूप से, यह 1000 है, इसलिए अधिक पुनरावृत्ति करने के लिए, आपको इसे समायोजित करने की आवश्यकता है। यहां, हमने इसे 1 मिलियन पर सेट किया है।
सीटीई क्वेरी
INSERT INTO hashes(hash) WITH RECURSIVE cte (n) AS ( SELECT 1 UNION ALL SELECT n 1 FROM cte WHERE nआइए इस क्वेरी का विश्लेषण करें:
रिकर्सिव सीटीई (एन) के साथ: यह सीटीई परिभाषा शुरू करता है। सीटीई अस्थायी परिणाम सेट का नाम है, और एन कॉलम है।
चयन 1: यह सीटीई का गैर-पुनरावर्ती हिस्सा है, जो प्रारंभिक बिंदु (प्रारंभिक मूल्य) के रूप में कार्य करता है।
UNION ALL SELECT n 1 FROM cte WHERE n
Cte से SHA2(n, 256) चुनें: क्वेरी का यह अंतिम भाग प्रत्येक n मान के SHA-256 हैश का चयन करता है, जो सम्मिलन के लिए डमी डेटा उत्पन्न करता है।
CTE पुनरावर्ती रूप से 1 से 1,000,000 तक संख्याएँ उत्पन्न करता है। प्रत्येक संख्या के लिए, यह SHA-256 हैश की गणना करता है और इसे हैश तालिका में सम्मिलित करता है। यह दृष्टिकोण कुशल है और बड़े डेटा वॉल्यूम को निर्बाध रूप से संभालने के लिए MySQL की पुनरावर्ती क्षमताओं का लाभ उठाता है।
इस सुविधा के प्रभाव को समझने के लिए, मैंने सेटअप और इंस्टॉलेशन की परेशानी से बचने के लिए शक्तिशाली और अल्पकालिक वातावरण का लाभ उठाते हुए Gitpod Enterprise कार्यक्षेत्र का उपयोग किया। यहां सेटअप पर एक नज़र है:
1 मिलियन पंक्तियों के लिए, क्वेरी निष्पादन समय लगभग 4.46 सेकंड है:
mysql> INSERT INTO hashes(hash) -> WITH RECURSIVE cte (n) AS -> ( -> SELECT 1 -> UNION ALL -> SELECT n 1 FROM cte WHERE n ) -> SELECT SHA2(n, 256) FROM cte; Query OK, 1000000 rows affected (4.43 sec) Records: 1000000 Duplicates: 0 Warnings: 0
पंक्तियों की संख्या | निष्पादन समय |
---|---|
1,000 | 0.03 सेकंड |
10,000 | 0.07 सेकंड |
100,000 | 0.42 सेकंड |
1,000,000 | 4.43 सेकंड |
10,000,000 | 48.53 सेकंड |
MySQL 8.0 में CTE का उपयोग बड़ी मात्रा में डमी डेटा को तुरंत उत्पन्न करने के लिए एक गेम-चेंजर है। यह लोड परीक्षण और प्रदर्शन बेंचमार्किंग के लिए विशेष रूप से उपयोगी है। कोड की केवल कुछ पंक्तियों के साथ, आप आसानी से अपनी तालिकाएँ भर सकते हैं और फिर अपने प्रोजेक्ट के अन्य महत्वपूर्ण भागों पर वापस जा सकते हैं।
यह देखने के लिए कि आपके लिए सबसे अच्छा क्या काम करता है, विभिन्न डेटा जेनरेशन रणनीतियों और रिकर्सन गहराई के साथ खेलने में संकोच न करें। सुरक्षा और लॉग विश्लेषण पर अधिक युक्तियों और अंतर्दृष्टि के लिए, मुझे ट्विटर @Siddhant_K_code पर फॉलो करें और इस तरह की नवीनतम और विस्तृत तकनीकी सामग्री से अपडेट रहें। हैप्पी कोडिंग!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3