"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > MySQL में बड़े पैमाने पर सरल डमी डेटा कैसे इंजेक्ट करें

MySQL में बड़े पैमाने पर सरल डमी डेटा कैसे इंजेक्ट करें

2024-08-01 को प्रकाशित
ब्राउज़ करें:341

How to inject simple dummy data at a large scale in MySQL

परिचय

क्या आपने कभी खुद को ऐसी स्थिति में पाया है जहां आपको परीक्षण के लिए बड़ी मात्रा में डमी डेटा की आवश्यकता है, लेकिन आप स्क्रिप्ट लिखने या मैन्युअल रूप से रिकॉर्ड डालने में घंटों खर्च नहीं करना चाहते हैं? या शायद आप इस बारे में उत्सुक रहे होंगे कि अपने डेटाबेस कार्यों को सुव्यवस्थित करने के लिए 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 कार्यक्षेत्र का उपयोग किया। यहां सेटअप पर एक नज़र है:

  • मशीन: गिटपॉड एंटरप्राइज XXलार्ज वर्कस्पेस
  • ओएस: उबंटू 22.04.4 एलटीएस (जैमी जेलिफ़िश)
  • कंटेनरीकरण: डॉकर संस्करण 26.0.1
  • MySQL संस्करण: आधिकारिक MySQL 8.0 डॉकर छवि

परिणाम

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 पर फॉलो करें और इस तरह की नवीनतम और विस्तृत तकनीकी सामग्री से अपडेट रहें। हैप्पी कोडिंग!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/siddhantkcode/how-to-inject-simple-dummy-data-at-a-large-scale-in-mysql-eci?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 .comडिलीट से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3