Pembekuan database MySQL setelah 'digunakan'


17

Baru-baru ini saya membuat kesalahan yang agak bodoh dan merusak instalasi Ubuntu saya. Untuk mengatasinya, saya boot dengan live cd dan menyalin file database. Namun, sekarang saya telah menyalin folder dari instalasi lama ke yang baru, setiap kali saya mengetik "gunakan database_name" itu hanya membeku di ini:

mysql> use my_database_name;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Dan kemudian membeku tanpa memberikan terminal.

Jawaban:


28

Pada perintah "use" pertama setelah login, MySQL memindai basis data, tabel dan kolom untuk penyelesaian otomatis. Jika Anda memiliki banyak db, tabel bisa memakan waktu cukup lama.

Untuk menghindarinya, luncurkan klien Anda dengan opsi -A (atau --tidak-otomatis-ulang)

mysql -uroot -p -A

Anda juga bisa menambahkan variabel disable_auto_rehash di my.cnf Anda (di bagian [mysql]) jika Anda ingin menonaktifkannya sepenuhnya. Perubahan ini tidak memerlukan reboot (itu adalah klien, bukan server, variabel).


dapat "sebentar" menjadi lebih dari satu hari untuk database ~ 2.5GiB, atau itu terlalu lama?
lucidbrot

2

Dalam kasus saya, "Informasi tabel bacaan" mengambil jumlah waktu yang tidak masuk akal. Ketika saya berlari mysql -e 'show processlist'saya menemukan bahwa proses yang "menggantung" adalah "Menunggu kunci metadata meja". Ini masuk akal karena saya memiliki permintaan yang sudah berjalan lama dari formulir yang create table from select ...berjalan di tempat lain, jadi pada satu tingkat saya bisa memahami bahwa sampai tabel baru selesai dibuat, metadata tentang tabel tidak akan tersedia. (Saya kira akan lebih baik jika pemindaian lengkapi-otomatis hanya menghilangkan tabel "tidak lengkap" dari kueri data meta jika ini memungkinkan.)


0

📌

Ketika Anda menyalin seluruh database dari sistem lain:

/ var / lib / mysql / *

Anda dapat chown -R mysql: mysql / var / lib / mysql / * dan memulai layanan lagi.

☝ ini menyelesaikan masalah saya 👊


2
Selamat datang di DBA Stack Exchange! Anda telah memformat ini sebagai kutipan; jika Anda benar-benar mendapatkan solusi ini dari tempat lain, Anda harus menyediakan sumbernya . Jika tidak, harap hapus pemformatannya.
Glorfindel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.