Dengan MySQL, berapa lama "ALTER TABLE ... DISABLE KEYS;" pernyataan terakhir?

12

Jika Anda menonaktifkan kunci (menangguhkan pengindeksan) pada tabel INNODB mysql, berapa lama pengaturan itu berlangsung?

Untuk kueri seperti:

ALTER TABLE users DISABLE KEYS;

Apakah kunci diaktifkan kembali di akhir skrip? atau apakah mereka bertahan sampai Anda secara eksplisit mengaktifkan kembali pengindeksan?

Daniel Beardsley
sumber
Pertanyaan ini layak diberi +1 untuk membantu orang lain menyadari sesuatu tentang DISABLE KEYS, ENABLE KEYS, dan InnoDB.
RolandoMySQLDBA
Lihat juga dba.stackexchange.com/a/76590/1653
Matthew Read

Jawaban:

7

Manual Baik (yang layak dibaca) menunjukkan bahwa efek dari pernyataan itu bertahan sampai ALTER TABLE ... ENABLE KEYSpernyataan yang sesuai dijalankan.

womble
sumber
6

Pada kenyataannya, ALTER TABLE ... DISABLE KUNCI dan ALTER TABLE ... ENABLE KUNCI tidak berfungsi !!!!

Saya membahas hal ini pada 13 Februari 2011.

Saya melakukan beberapa penggalian tambahan dan menemukan dari perusahaan induk InnoDB, InnoBase Oy (sebelum dibuat 7 dari 9 di Oracle Borg), bahwa inilah yang sebenarnya terjadi.

Tautan ini menyarankan untuk melakukan DISABLE KEYS dan menonaktifkan kunci asing bersama-sama. Meskipun saya pikir keduanya tidak perlu, ini tampaknya bekerja untuk seseorang.

UPDATE 2011-07-18 12:35 EDT

Ini adalah pertanyaan yang sangat bagus karena mengekspos kejahatan yang tersisa di MySQL. Program mysqldump secara membabi buta menjatuhkan DISABLE KEYS dan ENABLE KEYS di sekitar kreasi dan memuat ke atas setiap meja tanpa memperhatikan mesin penyimpanan. Karena tombol Nonaktifkan dan tombol aktif tidak berfungsi (dalam kasus terbaik tidak berpengaruh) pada tabel InnoDB karena berfungsi dengan baik untuk MyISAM, fakta yang tidak diketahui ini harus lebih baik didokumentasikan oleh komunitas MySQL. Oh ya, MySQL berada di tengah Kekaisaran Galactic yang dikenal sebagai Oracle. Saya tidak akan menahan nafas pada perubahan dokumentasi yang akan datang.

RolandoMySQLDBA
sumber
3
Membuat pernyataan adalah satu hal. Meneriakkannya dengan menggunakan kedua penutup dan tebal agak berlebihan dan sama sekali tidak perlu.
John Gardeniers
1
@ John: Saya minta maaf saya tampak terlalu antusias. Saya tidak marah pada siapa pun. ALTER TABLE DISABLE / ENABLE KUNCI terhadap InnoDB tidak didokumentasikan dengan baik. Oracle juga tidak akan memperbaiki keadaan.
RolandoMySQLDBA
@RolandoMySQLDBA apakah ada solusi untuk menghindari mysqldump menempatkan DISABLE KEYS dan ENABLE KEYS dalam file dump?
pahnin