क्या mysqldump डिफ़ॉल्ट रूप से सूचकांकों का निर्यात करता है?


20

मैं mysqldump के साथ एक छोटे से आसपास खेला और मैं सोच रहा था, अगर यह निर्यात सूचकांकों करता है ( FULLTEXT, INDEX, ...) डिफ़ॉल्ट रूप से। मैं इस पर पढ़ा और मुझे यह विकल्प मिला :

--disable-keys, -K

जो बताता है, कि यह वास्तव में सूचकांकों का निर्यात करता है। लेकिन मैं अपनी व्याख्या पर भरोसा नहीं करना चाहता और मैं यह सुनिश्चित करना चाहता हूं कि मुझे यह सही लगे (या गलत ;-))। क्या कोई इसकी पुष्टि कर सकता है?


कृपया रिफ्रेश करें। मैंने अपना जवाब उदाहरण के mysqldump अंश के साथ अद्यतन किया।
रोलैंडमाइसीडीडीबीए

कृपया रिफ्रेश करें। मैंने डिसएबल कुंजी और सक्षम कुंजी के बारे में एक अतिरिक्त चेतावनी के साथ अपना उत्तर अपडेट किया।
रोलैंडमाइसीडीडीबीए

कृपया रिफ्रेश करें। मैंने डिसएबल कुंजी और डंपिंग टेबलस्पेस को दरकिनार करने के बारे में एक अतिरिक्त कैविट के साथ अपना जवाब अपडेट किया।
रोलैंडमाइसीडीडीबीए

यह सवाल एक +1 का हकदार है क्योंकि मैं लगभग निश्चित हूं कि कई लोगों के मन में भी यही सवाल था लेकिन पूछने से डरता था। आपने पूछा, आपको +1 मिलता है !!!
रोलैंडमाइसीडीडीबीए

@ रोलैंडम्यूसीडीडीबीए: आपने अपने उत्तर में बहुत प्रयास किए। आपका बहुत बहुत धन्यवाद!!
सुबह

जवाबों:


16

नहीं, यह अनुक्रमित निर्यात नहीं करता है। Mysqldump को mysql में वापस लोड करने पर अनुक्रमित को फिर से बनाया जाता है। आपके द्वारा "--disable-keys" के विकल्प में MySqldump का कारण INSERTs के माध्यम से तालिका के लोड से पहले कुछ इस तरह से लिखना है:

DROP TABLE IF EXISTS `tblAccountLinks`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `tblAccountLinks` (
  `ID` int(11) NOT NULL auto_increment,
  `FirmNo` varchar(10) NOT NULL,
  `CustomerNo` varchar(20) NOT NULL,
  `AccountNo` varchar(20) NOT NULL,
  `LinkType` smallint(6) NOT NULL,
  `AccessLevel` smallint(6) NOT NULL,
  `Status` smallint(6) NOT NULL,
  `CreatedOn` datetime NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=27023 DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;

--
-- Dumping data for table `tblAccountLinks`
--

LOCK TABLES `tblAccountLinks` WRITE;
/*!40000 ALTER TABLE `tblAccountLinks` DISABLE KEYS */;
INSERT INTO `tblAccountLinks` VALUES (1,'F0001','C001','T00000001',1,2,1,'2008-06-30 07:55:43'),(2,'
F0001','C001','T00000002',2,2,1,'2008-06-30 07:55:43'),(3,'F0001','C002','27601012',1,2,1,'2008-06-3 ...

LOCK TABLES के बाद की लाइन है

/*!40000 ALTER TABLE `tblAccountLinks` DISABLE KEYS */;

यह वही है जो -disable-keys विकल्प mysqldump में एम्बेड करता है।

इसके अलावा, सभी INSERT किए जाने के बाद यह एम्बेडेड है

/*!40000 ALTER TABLE `tblAccountLinks` ENABLE KEYS */;
UNLOCK TABLES;

सेवत # 1

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

दुर्भाग्य से, अक्षम कुंजी और सक्षम कुंजी केवल MyISAM तालिकाओं के लिए काम करते हैं, न कि InnoDB।

सेवत # २

आपको -disable- कीज़ करने की ज़रूरत नहीं है। आप डिसएबल कुंजी को निष्क्रिय कर सकते हैं (कोई भी इरादा नहीं) --स्काइप-डिसेबल-की के साथ:

  -K, --disable-keys  '/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and
                      '/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put
                      in the output.
                      (Defaults to on; use --skip-disable-keys to disable.)

यह एक धीमी लोड और nonunique अनुक्रमित के लिए सूचकांक पृष्ठों के एक संभावित lopsiding में परिणाम कर सकता है।

सेवत # ३

आप वास्तविक InnoDB टेबलस्पेस (MySQL 5.5.12) को डंप कर सकते हैं

  -Y, --all-tablespaces 
                      Dump all the tablespaces.
  -y, --no-tablespaces 
                      Do not dump any tablespace information.

1
कृपया ध्यान दें कि यह पुराना है, MySQL 5.7 में इंडेक्स शामिल हैं।
एरिका केन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.