Saya memiliki tindak lanjut atas pertanyaan saya sebelumnya mengenai kecepatan impor dengan Inno-Tables (kejutan!).
Skenario
Saya mencoba mengimpor beberapa dump database * besar di mesin dev lokal saya dalam waktu yang wajar. Kami memiliki banyak KEY
lampiran pada tabel yang ternyata menjadi hambatan tetapi masih penting untuk sistem live kami.
Pendekatan saya setelah mengajukan pertanyaan di atas adalah menghapus KEY ...
pernyataan dari dump, import, dan menambahkan kembali kunci.
Namun saya sering menemukan diri saya mengedit dump saat ini untuk mengimpor secara lokal dan saya menemukan "komentar" lucu ini (The disable/enable keys
-lines)
--
-- Dumping data for table `monster`
--
LOCK TABLES `monster` WRITE;
/*!40000 ALTER TABLE `monster` DISABLE KEYS */;
INSERT … INSERT … INSERT
/*!40000 ALTER TABLE `monster` ENABLE KEYS */;
UNLOCK TABLES;
Tetapi sebenarnya "komentar" ini adalah Pernyataan MySql bersyarat
Itu adalah berita baru bagi saya, tetapi baiklah, mengingat bentuk outputnya, mysql --version
semuanya tampak baik bagi saya:
mysql Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3
Apa yang saya asumsikan
Meja terkunci (baik, hanya saya di dev mashine). Kemudian kunci sebagaimana didefinisikan dalam skema tabel dinonaktifkan, data diimpor, kunci diaktifkan.
Jadi selama "penyisipan data" -fase seharusnya tidak ada waktu yang terbuang pada kunci melainkan diperiksa setelah semua data dimasukkan.
Saya akan berpikir ini adalah perilaku yang sama seperti jika saya menghapus semua- KEY 'foo' (foo)'
baris dari dump, impor dump dan jalankan skrip dengan ADD KEY 'foo' ...
setelahnya.
Apa yang saya amati.
Ini adalah cara yang lebih cepat untuk secara manual menghapus kunci, mengimpor dan menambahkan kembali kunci kemudian mengandalkan DISABLE KEYS
pernyataan bersyarat yang dibuat sayamysqldump
Pengeditan manual dump + impor mysql + menambahkan kunci = 15 + 8 + 8 ≈ 30 mnt
Impor mysql polos: menyerah, (Saya baru saja dibayar untuk 8 jam / hari> :))
Mau tidak mau saya berpikir saya kehilangan sesuatu yang sangat mendasar di sini (atau database mengganggu saya).
mysqldump --innodb-optimize-keys
dari Percona percona.com/doc/percona-server/5.5/management/... Jangka panjang: berhenti menggunakan mysqldump dan gunakan mydumper atau xtrabackup.