इस लैब में, हम इंडेक्स, व्यू, बैकअप और रिकवरी सीखेंगे और अभ्यास करेंगे। ये अवधारणाएँ एक डेटाबेस प्रबंधक के लिए बहुत महत्वपूर्ण हैं।
शुरू करने से पहले, हमें माहौल तैयार करना होगा।
MySQL सेवा प्रारंभ करें और रूट के रूप में लॉग इन करें।
cd ~/project sudo service mysql start mysql -u root
फ़ाइल में डेटा लोड करें। डेटाबेस बनाने के लिए आपको MySQL कंसोल में कमांड दर्ज करना होगा:
source ~/project/init-database.txt
सूचकांक एक तालिका-संबंधित संरचना है। इसकी भूमिका किसी पुस्तक की निर्देशिका के समान है। आप किसी निर्देशिका में पृष्ठ संख्या के अनुसार सामग्री को शीघ्रता से पा सकते हैं।
जब आप एक ऐसी तालिका को क्वेरी करना चाहते हैं जिसमें बड़ी संख्या में रिकॉर्ड हैं, और इसमें कोई इंडेक्स नहीं है, तो खोज स्थितियों से मिलान करने के लिए सभी रिकॉर्ड एक-एक करके निकाले जाएंगे, और शर्तों से मेल खाने वाले रिकॉर्ड वापस कर दिए जाएंगे . इसमें बहुत समय लगता है और इसके परिणामस्वरूप बड़ी संख्या में डिस्क I/O ऑपरेशन होते हैं।
यदि तालिका में कोई सूचकांक मौजूद है, तो हम सूचकांक मूल्य द्वारा तालिका में डेटा को तुरंत पा सकते हैं, जो क्वेरी प्रक्रिया को बहुत तेज कर देता है।
किसी विशेष कॉलम में इंडेक्स सेट करने के दो तरीके हैं:
ALTER TABLE table name ADD INDEX index name (column name); CREATE INDEX index name ON table name (column name);
आइए एक सूचकांक बनाने के लिए इन दो कथनों का उपयोग करें।
कर्मचारी तालिका में आईडी कॉलम में एक idx_id इंडेक्स बनाएं:
ALTER TABLE employee ADD INDEX idx_id (id);
कर्मचारी तालिका में नाम कॉलम में एक idx_name इंडेक्स बनाएं
CREATE INDEX idx_name ON employee (name);
हम क्वेरी प्रक्रिया को तेज़ करने के लिए इंडेक्स का उपयोग करते हैं। जब पर्याप्त डेटा नहीं होगा तो हम इसकी जादुई शक्ति को महसूस नहीं कर पाएंगे। यहां हमारे द्वारा अभी बनाए गए इंडेक्स को देखने के लिए SHOW INDEX FROM Table name कमांड का उपयोग करते हैं।
SHOW INDEX FROM employee;
MariaDB [mysql_labex]> ALTER TABLE employee ADD INDEX idx_id (id); Query OK, 0 rows affected (0.005 sec) Records: 0 Duplicates: 0 Warnings: 0 MariaDB [mysql_labex]> SHOW INDEX FROM employee; ---------- ------------ ---------- -------------- ------------- ----------- ------------- ---------- -------- ------ ------------ --------- --------------- --------- | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Ignored | ---------- ------------ ---------- -------------- ------------- ----------- ------------- ---------- -------- ------ ------------ --------- --------------- --------- | employee | 0 | PRIMARY | 1 | id | A | 5 | NULL | NULL | | BTREE | | | NO | | employee | 0 | phone | 1 | phone | A | 5 | NULL | NULL | | BTREE | | | NO | | employee | 1 | emp_fk | 1 | in_dpt | A | 5 | NULL | NULL | | BTREE | | | NO | | employee | 1 | idx_id | 1 | id | A | 5 | NULL | NULL | | BTREE | | | NO | | employee | 1 | idx_name | 1 | name | A | 5 | NULL | NULL | YES | BTREE | | | NO | ---------- ------------ ---------- -------------- ------------- ----------- ------------- ---------- -------- ------ ------------ --------- --------------- --------- 5 rows in set (0.000 sec)
जब हम क्वेरी करने के लिए SELECT स्टेटमेंट का उपयोग करते हैं, तो WHERE स्थिति स्वचालित रूप से निर्णय लेगी कि कोई इंडेक्स मौजूद है या नहीं।
दृश्य एक या अधिक तालिकाओं से प्राप्त एक आभासी तालिका है। यह एक विंडो की तरह है जिसके माध्यम से लोग सिस्टम द्वारा प्रदान किए गए विशेष डेटा को देख सकते हैं ताकि उन्हें डेटाबेस में संपूर्ण डेटा देखने की आवश्यकता न पड़े। वे उन चीज़ों पर ध्यान केंद्रित कर सकते हैं जिनमें उनकी रुचि है।
"दृश्य एक आभासी तालिका है" की व्याख्या कैसे करें?
व्यू बनाने के लिए स्टेटमेंट फॉर्मेट का उपयोग किया जाता है:
CREATE VIEW view name (column a, column b, column c) AS SELECT column 1, column 2, column 3 FROM table name;
कथन से, हम देख सकते हैं कि बाद वाला भाग एक SELECT कथन है, जिसका अर्थ है कि दृश्य को कई तालिकाओं पर भी बनाया जा सकता है। हमें बस सबक्वेरीज़ का उपयोग करना है या SELECT स्टेटमेंट में शामिल होना है।
अब आइए v_emp नामक एक सरल दृश्य बनाएं जिसमें तीन कॉलम शामिल हैं v_name, v_age, v_phone:
CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;
और फिर दर्ज करें
SELECT * FROM v_emp;
MariaDB [mysql_labex]> CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee; Query OK, 0 rows affected (0.003 sec) MariaDB [mysql_labex]> SELECT * FROM v_emp; -------- ------- --------- | v_name | v_age | v_phone | -------- ------- --------- | Tom | 26 | 119119 | | Jack | 24 | 120120 | | Jobs | NULL | 19283 | | Tony | NULL | 102938 | | Rose | 22 | 114114 | -------- ------- --------- 5 rows in set (0.000 sec)
सुरक्षा कारणों से, डेटाबेस प्रबंधन में बैकअप अत्यंत महत्वपूर्ण है।
निर्यातित फ़ाइल केवल डेटा को डेटाबेस में सहेजती है जबकि बैकअप डेटा, बाधाओं, अनुक्रमणिका, दृश्य आदि सहित संपूर्ण डेटाबेस संरचना को एक नई फ़ाइल में सहेजता है।
mysqldump बैकअप के लिए MySQL में एक व्यावहारिक प्रोग्राम है। यह एक SQL स्क्रिप्ट फ़ाइल तैयार करता है जिसमें डेटाबेस को फिर से बनाने के लिए सभी आवश्यक कमांड शामिल होते हैं, जैसे CREATE, INSERT आदि।
mysqldump बैकअप का उपयोग करने के लिए वक्तव्य:
mysqldump -u root database name > backup file name; #backup entire database mysqldump -u root database name table name > backup file name; #backup the entire table
संपूर्ण डेटाबेस mysql_labex का बैकअप लेने का प्रयास करें। फ़ाइल को bak.sql नाम दें। MySQL कंसोल से बाहर निकलने के लिए पहले Ctrl Z दबाएँ, फिर टर्मिनल खोलें और कमांड दर्ज करें:
cd ~/project/ mysqldump -u root mysql_labex > bak.sql;
कमांड "ls" का उपयोग करें और हम बैकअप फ़ाइल bak.sql देखेंगे;
cat bak.sql
-- MariaDB dump 10.19 Distrib 10.6.12-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: localhost Database: mysql_labex -- ------------------------------------------------------ -- Server version 10.6.12-MariaDB-0ubuntu0.22.04.1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE=' 00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; ……
इससे पहले इस प्रयोगशाला में, हमने डेटाबेस को पुनर्प्राप्त करने के लिए एक बैकअप फ़ाइल का उपयोग करने का अभ्यास किया था। हमने इसके समान एक कमांड का उपयोग किया:
source ~/project/init-database.txt
यह कथन आयात-डेटाबेस.txt फ़ाइल से mysql_labex डेटाबेस को पुनर्प्राप्त करता है।
डेटाबेस को पुनर्प्राप्त करने का एक और तरीका है, लेकिन उससे पहले, हमें test नामक एक खाली डेटाबेस बनाना होगा:
mysql -u root CREATE DATABASE test;
MariaDB [(none)]> CREATE DATABASE test; Query OK, 1 row affected (0.000 sec) MariaDB [(none)]> SHOW DATABASES; -------------------- | Database | -------------------- | information_schema | | mysql | | mysql_labex | | performance_schema | | sys | | test | -------------------- 6 rows in set (0.000 sec)
MySQL से बाहर निकलने के लिए Ctrl Z। bak.sql को पुनर्प्राप्त करें डेटाबेस का परीक्षण करने के लिए:
mysql -u root testहम परीक्षण डेटाबेस में तालिकाओं को देखने के लिए एक कमांड दर्ज करके पुष्टि कर सकते हैं कि पुनर्प्राप्ति सफल है या नहीं:
mysql -u root USE test SHOW TABLESMariaDB [(none)]> USE test; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [test]> SHOW TABLES; ---------------- | Tables_in_test | ---------------- | department | | employee | | project | | table_1 | ---------------- 4 rows in set (0.000 sec)हम देख सकते हैं कि 4 तालिकाएँ पहले ही परीक्षण डेटाबेस में पुनर्प्राप्त कर ली गई हैं।
सारांश
बधाई हो! आपने MySQL में अन्य बुनियादी परिचालनों पर प्रयोगशाला पूरी कर ली है। आपने सीखा है कि इंडेक्स, व्यू कैसे बनाएं और डेटाबेस का बैकअप और पुनर्प्राप्ति कैसे करें।
? अभी अभ्यास करें: अन्य बुनियादी संचालन
और अधिक जानना चाहते हैं?
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3