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

भंडारण इंजन विकल्प:एरिया

मारियाडीबी प्लेटफॉर्म में मारियाडीबी एंटरप्राइज सर्वर के प्लग करने योग्य घटकों के रूप में विभिन्न प्रकार के स्टोरेज इंजन शामिल हैं। यह आपको स्टोरेज इंजन चुनने की अनुमति देता है जो किसी विशेष डेटाबेस या तालिका के कार्यभार के लिए सबसे उपयुक्त है।

एरिया स्टोरेज इंजन को माईसाम के लिए क्रैश-सुरक्षित प्रतिस्थापन के रूप में विकसित किया गया था, और 2007 से सक्रिय विकास में है। जब मारियाडीबी सर्वर एक दुर्घटना के बाद पुनरारंभ होता है, तो एरिया राज्य में सभी तालिकाओं को एक बयान की शुरुआत के रूप में या शुरुआत में पुनर्प्राप्त करता है पिछले LOCK TABLES स्टेटमेंट का।

MariaDB संग्रहण इंजन

वर्कलोड के आधार पर मौजूदा स्टोरेज इंजन की सिफारिशें:

  • पढ़ें-भारी कार्यभार:आरिया
  • सामान्य उद्देश्य:InnoDB
  • एसिड:InnoDB
  • लेखन-भारी कार्यभार:MyRocks
  • संपीड़न:MyRocks
  • शार्डेड:स्पाइडर
  • विश्लेषणात्मक कार्यभार:मारियाडीबी कॉलमस्टोर

MariaDB के लिए Aria का उपयोग क्यों करें

जबकि मारियाडीबी के साथ बनाए गए डेटाबेस के लिए इनो डीबी डिफ़ॉल्ट स्टोरेज इंजन है, मारिया डीबी एंटरप्राइज सर्वर 10.4 से अधिकांश आंतरिक सिस्टम टेबल के लिए एरिया का उपयोग किया जाता है। एरिया में एक छोटा पदचिह्न है और सिस्टम के बीच आसान प्रतिलिपि बनाने की अनुमति देता है और विशेष रूप से पढ़ने-भारी वर्कलोड के लिए उपयुक्त है। Aria में एक उन्नत पृष्ठ-आधारित संग्रहण प्रारूप है जो बेहतर कैशिंग प्रदर्शन की अनुमति देता है और समवर्ती के लिए अनुकूलित है।

वास्तविक दुनिया के वातावरण में, Aria समेकित निर्माणों (जैसे GROUP BY या ORDER BY) के लिए बेहतर परिणाम देता है जो विश्लेषण और लेनदेन प्रसंस्करण में प्रचलित हैं। एनालिटिक्स और ट्रांजेक्शनल प्रोसेसिंग में योग, अधिकतम और आंकड़े जैसी साधारण चीजें मिलती हैं। अधिकांश एप्लिकेशन उन प्रश्नों पर बहुत अधिक निर्भर करते हैं जो इन समग्र कार्यों का उपयोग करते हैं।
MariaDB सभी आंतरिक ऑन-डिस्क अस्थायी तालिकाओं के लिए एरिया स्टोरेज इंजन का उपयोग करता है। चूंकि इन तालिकाओं को अक्सर GROUP BY और DISTINCT प्रश्नों को निष्पादित करने के लिए आंतरिक रूप से बनाया जाता है, इस प्रकार की क्वेरीज़ Aria के प्रदर्शन से लाभान्वित हो सकती हैं, भले ही क्वेरी की गई तालिका किसी भिन्न इंजन का उपयोग करती हो।

मारियाडीबी में डिफ़ॉल्ट रूप से एरिया स्टोरेज इंजन संकलित है। एरिया को मारियाडीबी सर्वर (एंटरप्राइज एंड कम्युनिटी) के साथ शामिल किया गया है जिसमें कोई अतिरिक्त इंस्टॉलेशन या सेटअप नहीं है।

एरिया विचार

एरिया का सबसे अच्छा उपयोग कैसे करें यह उपयोग के मामले, टेबल डिज़ाइन, एक्सेस पैटर्न (एसक्यूएल क्वेरीज़), प्रदर्शन लक्ष्य और पुनर्प्राप्ति लक्ष्यों पर निर्भर करेगा।

एरिया के लाभ एरिया के नुकसान
  • एक से अधिक स्रोतों से एक ही तालिका में एक साथ सम्मिलित करना
  • अकुशल बल्क लोडिंग
  • पृष्ठ क्षमता के अनुसार संचय करें
  • टेबल लेवल लॉकिंग
  • MariaDB एंटरप्राइज़ बैकअप द्वारा कुशलतापूर्वक समर्थित

  • देशी विदेशी कुंजी समर्थन का अभाव है
  • उन्नत पृष्ठ पंक्ति प्रारूप:डिफ़ॉल्ट रूप से क्रैश-सुरक्षित; संचालन; विशेष रूप से विंडोज़ पर डेटा कैशिंग के लिए उल्लेखनीय गति सुधार प्रदान करता है
  • INSERT DELAYED समर्थन की कमी है।
  • क्रैश-सुरक्षित टेबल और इंडेक्स
  • कैशिंग सीमाएं:एकाधिक कुंजी कैश और ओएस डिस्क कैश पर निर्भर करता है
  • अंतिम विवरण या लॉक के प्रारंभ तक क्रैश पुनर्प्राप्ति
  • पृष्ठ प्रारूप ओवरहेड:न्यूनतम फ़ाइल आकार 16K; छोटी पंक्तियों का भंडारण; अनुक्रमणिका और डेटा के लिए समान पृष्ठ आकार।
  • अनुकूलित लोड इंडेक्स
  • लेनदेन का समर्थन नहीं करता (यानी रोलबैक और कमिट)
  • MyISAM ROW और PAGE फ़ॉर्मेट के साथ संगत
  • कम ओवरहेड
  • एरिया का उपयोग करने पर विचार करें:

    • यदि आपका एप्लिकेशन बहुत सारी पूर्ण-पाठ खोज करता है।
    • यदि आपका एप्लिकेशन बहुत सारे ग्रुप बाय क्वेरी करता है।
    • यदि आपके आवेदन को ACID अनुपालन या विदेशी कुंजियों की आवश्यकता नहीं है।
    • यदि आपका एप्लिकेशन वर्तमान में MyISAM का उपयोग करता है और बेहतर गति, बैकअप और स्वचालित क्रैश पुनर्प्राप्ति की अनुमति देने के लिए अधिक उन्नत इंजन की आवश्यकता है।

    प्रदर्शन तुलना

    अलग-अलग प्रश्नों की तुलना करना एक बात है और वास्तविक दुनिया के उदाहरणों को देखना बिल्कुल दूसरी बात है। हमने Aria, InnoDB और MyISAM की तुलना करते हुए कुछ परीक्षण किए।

    प्रदर्शन परिणाम
    InnoDB एरिया MyISAM
    SQL 1 2.389 0.580 0.634
    SQL 2 2.169 0.530 0.598
    साधारण बेंचमार्क:Aria बनाम MyISAM बनाम InnoDB

    इस साधारण बेंचमार्क में, 2 मिलियन पंक्तियों के साथ एक तालिका बनाई गई और उसे भर दिया गया। GROUP BY और ORDER BY प्रश्नों को किया गया और सभी तीन वैकल्पिक स्टोरेज इंजनों में कॉपी किया गया:InnoDB, Aria, और MyISAM। प्रत्येक परीक्षण 10 बार चला, सभी परीक्षणों के लिए औसत समय (सेकंड) रिकॉर्ड किया गया।

    सेटअप और परीक्षण के लिए उपयोग किए जाने वाले आदेश:

    INSERT INTO fact VALUES (1,1,'Justin',md5(''), .1);
    INSERT INTO fact SELECT FLOOR(1+ rand()*9999), FLOOR(1 + rand()*499),
    (select name from names where id = 1 + rand() * 4),
    MD5(1+rand()*9999), rand()
    FROM fact;

    उपरोक्त इंसर्ट को तब तक चलाते रहें जब तक कि तालिका में लगभग 20 लाख पंक्तियां न आ जाएं।

    MariaDB [test2]> SELECT count(*) from fact;
    +----------+
    | count(*) |
    +----------+
    | 2097152 |
    +----------+
    MariaDB [test2]> SHOW CREATE TABLE fact;
    +-------+-------------------------------
    | Table | Create Table
    +-------+-------------------------------
    | fact | CREATE TABLE `fact` (
    `dim1` int(11) DEFAULT NULL, `dim2` int(11) DEFAULT NULL,
     `name` varchar(20) DEFAULT NULL, `hash` varchar(32) DEFAULT NULL,
     `measure1` double DEFAULT NULL)
    ENGINE=InnoDB DEFAULT CHARSET=utf8 |

    पुष्टि करें कि विशिष्ट बनाम कुल पंक्तियों का एक अच्छा अनुपात मौजूद है:

    MariaDB [test2]> SELECT count(distinct (dim1)) from fact;
    +------------------------+
    | count(distinct (dim1)) |
    +------------------------+
    | 9999              	 |
    +------------------------+
    MariaDB [test2]> SELECT count(distinct (dim2)) from fact;
    +------------------------+
    | count(distinct (dim2)) |
    +------------------------+
    | 499                    |
    +------------------------+
    MariaDB [test2]> SELECT count(distinct (name)) from fact;
    +------------------------+
    | count(distinct (name)) |
    +------------------------+
    | 1                      |
    +------------------------+
    

    एरिया

    CREATE TABLE `test2`.`fact2` (
     `dim1` INT(11) NULL DEFAULT NULL,
     `dim2` INT(11) NULL DEFAULT NULL,
     `name` VARCHAR(20) NULL DEFAULT NULL,
     `hash` VARCHAR(32) NULL DEFAULT NULL,
     `measure1` DOUBLE NULL DEFAULT NULL )
    ENGINE=ARIA TRANSACTIONAL=1;
    INSERT INTO `test2`.`fact2` (`dim1`, `dim2`, `name`, `hash`, `measure1`) 
    SELECT `dim1`, `dim2`, `name`, `hash`, `measure1` FROM `fact`;
    

    माईसाम

    CREATE TABLE `test2`.`fact3` (
     `dim1` INT(11) NULL DEFAULT NULL,
     `dim2` INT(11) NULL DEFAULT NULL,
     `name` VARCHAR(20) NULL DEFAULT NULL,
     `hash` VARCHAR(32) NULL DEFAULT NULL,
     `measure1` DOUBLE NULL DEFAULT NULL )
    COLLATE='latin1_swedish_ci' ENGINE=MyISAM;
    INSERT INTO `test2`.`fact3` (`dim1`, `dim2`, `name`, `hash`, `measure1`) 
    SELECT `dim1`, `dim2`, `name`, `hash`, `measure1` FROM `fact`;
    

    InnoDB, Aria और MyISAM में 2 अलग-अलग sql का परीक्षण करें:

    — एसक्यूएल 1:

    SELECT dim1, dim2 from fact group by dim1 order by dim1; 
    -- 9999 rows in set

    — एसक्यूएल 2:

    SELECT dim1, dim2 from fact group by dim2 order by dim2; 
    -- 499 rows in set

    बेंचमार्क पुनर्कथन

    परीक्षण से पता चलता है कि एरिया इनो डीबी या माईसाम की तुलना में ग्रुप बाय स्तर पर बहुत तेज है। एरिया माईसाम से थोड़ा तेज है और क्रैश-सुरक्षित वातावरण सुनिश्चित करता है। प्रदर्शन परीक्षणों से पता चला कि आरिया InnoDB की तुलना में चार गुना तेज है। उपयोग के मामलों में अंतर के कारण, प्रत्येक को मारियाडीबी एंटरप्राइज सर्वर में एरिया और इनोडीबी (या जरूरत के आधार पर अन्य) दोनों का उपयोग करके परीक्षण से गुजरना चाहिए।

    सारांश

    आपके कार्यभार के आधार पर, एरिया प्रदर्शन लाभ प्रदान कर सकती है। क्योंकि यह मारियाडीबी सर्वर के साथ शामिल है और इसे प्रति डेटाबेस या प्रति टेबल (इंजन =एआरआईए) पर लागू किया जा सकता है, आप बिना किसी अतिरिक्त लागत और बहुत कम अतिरिक्त प्रयास के अपने विशिष्ट कार्यभार के लिए प्रदर्शन का परीक्षण कर सकते हैं-बस इसे प्लग इन करें और इसे आज़माएं।

    स्टोरेज इंजन और स्टोरेज आर्किटेक्चर के बारे में अधिक जानकारी के लिए वर्कलोड-ऑप्टिमाइज़्ड स्टोरेज इंजन पर जाएँ।


    1. Database
    2.   
    3. Mysql
    4.   
    5. Oracle
    6.   
    7. Sqlserver
    8.   
    9. PostgreSQL
    10.   
    11. Access
    12.   
    13. SQLite
    14.   
    15. MariaDB
    1. मारियाडीबी में एक कॉलम का मिलान प्राप्त करने के 3 तरीके

    2. क्लस्टरकंट्रोल के साथ मारियाडीबी 10.3 को कैसे प्रबंधित करें

    3. मारियाडीबी में JSON ऐरे से तत्वों को कैसे लौटाएं?

    4. मारियाडीबी संस्करण () समझाया गया

    5. MySQL में अनुक्रमणिका को समझना:भाग तीन