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

डेटाबेस संचालन में महारत हासिल करना: इंडेक्स, व्यू, बैकअप और रिकवरी

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

परिचय

Mastering Database Operations: Index, View, Backup, and Recovery

इस लैब में, हम इंडेक्स, व्यू, बैकअप और रिकवरी सीखेंगे और अभ्यास करेंगे। ये अवधारणाएँ एक डेटाबेस प्रबंधक के लिए बहुत महत्वपूर्ण हैं।

सीखने का उद्देश्य

  • अनुक्रमणिका बनाएं
  • दृश्य बनाएं
  • बैकअप और पुनर्प्राप्ति

तैयारी

शुरू करने से पहले, हमें माहौल तैयार करना होगा।

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 Zbak.sql को पुनर्प्राप्त करें डेटाबेस का परीक्षण करने के लिए:

mysql -u root test 



हम परीक्षण डेटाबेस में तालिकाओं को देखने के लिए एक कमांड दर्ज करके पुष्टि कर सकते हैं कि पुनर्प्राप्ति सफल है या नहीं:

mysql -u root
USE test
SHOW TABLES
MariaDB [(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 में अन्य बुनियादी परिचालनों पर प्रयोगशाला पूरी कर ली है। आपने सीखा है कि इंडेक्स, व्यू कैसे बनाएं और डेटाबेस का बैकअप और पुनर्प्राप्ति कैसे करें।


? अभी अभ्यास करें: अन्य बुनियादी संचालन


और अधिक जानना चाहते हैं?

  • ? नवीनतम MySQL स्किल ट्रीज़ सीखें
  • ? अधिक MySQL ट्यूटोरियल पढ़ें
  • ? हमारे डिस्कॉर्ड में शामिल हों या हमें @WeAreLabEx पर ट्वीट करें
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/labex/mastering-database-operations-index-view-backup-and-recovery-26dp?1 यदि कोई उल्लंघन है, तो कृपया हटाने के लिए स्टडी_गोलंग@163.com पर संपर्क करें। यह
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3