MySQL memiliki perintah OPTIMIZE TABLE yang dapat digunakan untuk mendapatkan kembali ruang yang tidak digunakan dalam instalasi MySQL. Apakah ada cara (perintah bawaan atau prosedur tersimpan yang umum) untuk menjalankan pengoptimalan ini untuk setiap tabel dalam basis data dan / atau instalasi server, atau apakah ini sesuatu yang harus Anda skrip sendiri?
245
OPTIMIZE TABLE
berguna untuk MyISAM. Sekarang Mesin itu akan pergi, kebutuhanOPTIMIZE TABLE
akan pergi, terutama kebutuhan untuk mengoptimalkan semua tabel secara berkala.Jawaban:
Anda dapat menggunakannya
mysqlcheck
untuk melakukan ini di baris perintah.Satu basis data:
Semua basis data:
sumber
mysqlcheck -u [username] -p[password] -o [database name]
OPTIMIZE TABLE
perintah: dev.mysql.com/doc/refman/5.5/en/optimize-table.html . Misalnya, optimalkan satu tabel seperti iniOPTIMIZE TABLE <your_schema>.<your_table>;
:, optimalkan semua tabel dalam skema yang diberikan seperti ini:select concat('OPTIMIZE NO_WRITE_TO_BINLOG TABLE ',table_schema,'.',table_name,';') into outfile '/tmp/optimize_all_tables.sql' from information_schema.tables where table_schema = 'pabeta' and table_type = 'base table'; source /tmp/optimize_all_tables.sql;
Saya membuat skrip 'sederhana' ini:
Untuk menjalankannya, cukup tempel di IDE SQL yang terhubung ke database Anda.
Perhatikan: kode ini TIDAK AKAN berfungsi pada phpmyadmin.
Bagaimana itu bekerja
Itu menjalankan
show tables
pernyataan dan menyimpannya dalam pernyataan yang disiapkan. Kemudian menjalankan aoptimize table
di set yang dipilih.Anda dapat mengontrol tabel mana yang akan dioptimalkan dengan menetapkan nilai yang berbeda di var
@tables_like
(misset @tables_like = '%test%';
.:).sumber
bd
dari @b Kode Kesalahan: 1064. Anda memiliki kesalahan dalam sintaks SQL Anda; periksa manual yang sesuai dengan versi server MySQL Anda untuk sintaks yang tepat untuk digunakan di dekat 'NULL' pada baris 1Contoh skrip php berikut dapat membantu Anda mengoptimalkan semua tabel di basis data Anda
sumber
Lakukan semua prosedur yang diperlukan untuk memperbaiki semua tabel di semua database dengan skrip shell sederhana:
sumber
untuk semua basis data:
Untuk satu optimasi Database:
sumber
mysqlcheck -Aos
tidak memerlukan kata sandi pengguna +.Dari phpMyAdmin dan sumber lain yang dapat Anda gunakan:
Kemudian Anda dapat menyalin & menempelkan hasilnya ke kueri baru atau menjalankannya dari sumber Anda sendiri. Jika Anda tidak melihat keseluruhan pernyataan:
sumber
Jika Anda ingin menganalisis, memperbaiki, dan mengoptimalkan semua tabel di semua database di server MySQL Anda, Anda bisa melakukan ini dalam sekali jalan dari baris perintah. Anda perlu root untuk melakukannya.
Setelah Anda menjalankannya, Anda akan diminta untuk memasukkan kata sandi root MySQL Anda. Setelah itu, itu akan mulai dan Anda akan melihat hasilnya seperti yang terjadi.
Contoh output:
Jika Anda tidak mengetahui kata sandi root dan menggunakan WHM, Anda dapat mengubahnya dari dalam WHM dengan masuk ke: Beranda> Layanan SQL> Kata Sandi Root MySQL
sumber
Dari baris perintah:
lalu ketikkan kata sandi
sumber
Anda dapat mengoptimalkan / memeriksa dan memperbaiki semua tabel database, menggunakan klien mysql.
Pertama, Anda harus mendapatkan semua daftar tabel, dipisahkan dengan ',':
Sekarang, ketika Anda memiliki semua daftar tabel untuk optimasi:
sumber
Bagian
MySQL Administrator
(dari Alat MySQL GUI) dapat melakukannya untuk Anda pada tingkat database.Cukup pilih skema Anda dan tekan
Maintenance
tombol di sudut kanan bawah.Karena Alat GUI telah mencapai status Akhir Masa, mereka sulit ditemukan di halaman mysql. Menemukan mereka melalui Google: http://dev.mysql.com/downloads/gui-tools/5.0.html
Saya tidak tahu apakah MySQL Workbench yang baru dapat melakukannya juga.
Dan Anda dapat menggunakan
mysqlcheck
alat baris perintah yang seharusnya bisa melakukan itu juga.sumber
Jika Anda mengakses database secara langsung maka Anda dapat menulis kueri berikut:
sumber
Skrip bash ini akan menerima kata sandi root sebagai opsi dan mengoptimalkannya satu per satu, dengan output status:
sumber
Skrip bash pemula untuk membuat daftar dan menjalankan alat melawan DBs ...
sumber
2 sen saya: mulai dengan tabel dengan fragmentasi tertinggi
sumber