私は、mysqldumpをして少しいじっし、それが輸出指数を(ない場合、私は、思っていたFULLTEXT
、INDEX
デフォルトでは、...)。私はそれを読んで、このオプションを見つけました:
--disable-keys, -K
実際にインデックスをエクスポートすることを示唆しています。しかし、私は自分の解釈を信用したくありません。そして、私はそれが正しいことを確認したいです(または間違っています;-))。誰でもそれを確認できますか?
私は、mysqldumpをして少しいじっし、それが輸出指数を(ない場合、私は、思っていたFULLTEXT
、INDEX
デフォルトでは、...)。私はそれを読んで、このオプションを見つけました:
--disable-keys, -K
実際にインデックスをエクスポートすることを示唆しています。しかし、私は自分の解釈を信用したくありません。そして、私はそれが正しいことを確認したいです(または間違っています;-))。誰でもそれを確認できますか?
回答:
いいえ、インデックスをエクスポートしません。mysqldumpをmysqlにロードし直すと、インデックスが再構築されます。「--disable-keys」で見つかったオプションにより、mysqldumpはINSERTを介したテーブルのロードの前に次のような内容を書き込みます。
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
DISABLE KEYSおよびENABLE KEYSは、テーブルの再読み込み中に一意でないインデックスの再読み込みを無効にするために実装されました。主キーと一意キーは無効になりません。INSERTが実行されているのと同じ瞬間にロードされます。キーを有効にすると、並べ替えによって一意でないインデックスが再構築されます(使用可能なメモリが十分にない場合はMyISAMキーキャッシュを使用します)
残念ながら、DISABLE KEYSとENABLE KEYSはMyISAMテーブルでのみ機能し、InnoDBでは機能しません。
警告#2
--disable-keysを使用する必要はありません。--skip-disable-keysを使用してDISABLE KEYSを無効にできます(しゃれなし)。
-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.)
これにより、読み込みが遅くなり、一意でないインデックスのインデックスページが失われる可能性があります。
警告#3
実際のInnoDBテーブルスペースをダンプできます(MySQL 5.5.12)
-Y, --all-tablespaces
Dump all the tablespaces.
-y, --no-tablespaces
Do not dump any tablespace information.