Apakah ada perintah untuk mengoptimalkan semua tabel MySQL satu per satu secara otomatis?


8

Saya menjalankan pernyataan perintah di bawah ini untuk mengoptimalkan tabel: optimize table tablename;

Apakah ada perintah atau pernyataan yang dapat mengoptimalkan semua tabel satu per satu dari database yang dipilih?

Jawaban:



4

Anda dapat menggunakan skema informasi untuk menghasilkan pernyataan yang Anda butuhkan:

SELECT Concat('OPTIMIZE TABLE ',TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES 
   WHERE table_schema='yourdb';

1

Anda bisa membuat skrip dan menempatkan semua tabel pada satu baris

SEMUA TABEL DALAM DATABASE SAAT INI

MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQL_DATA=mydb
TBLLIST=""
COMMA=""
SQL="SELECT table_name FROM information_schema.tables WHERE table_schema=DATABASE()"
for TBL in `mysql ${MYSQL_CONN} -D${MYSQL_DATA} -ANe"${SQL}"`
do
    TBLLIST="${TBLLIST}${COMMA}${TBL}"
    COMMA=","
done
SQL="OPTIMIZE TABLE ${TBLLIST};"
mysql ${MYSQL_CONN} -D${MYSQL_DATA} -ANe"${SQL}"

SEMUA TABEL DALAM SEMUA DATABASE PENGGUNA

MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
TBLLIST=""
COMMA=""
SQL="SELECT CONCAT(table_schema,'.',table_name) FROM information_schema.tables WHERE"
SQL="${SQL} table_schema NOT IN ('information_schema','mysql','performance_schema')"
for DBTB in `mysql ${MYSQL_CONN} -ANe"${SQL}"`
do
    TBLLIST="${TBLLIST}${COMMA}${DBTB}"
    COMMA=","
done
SQL="OPTIMIZE TABLE ${TBLLIST};"
set -x
mysql ${MYSQL_CONN} -ANe"${SQL}"

COBALAH !!!


Ini sepertinya memakan waktu lama di server saya dan saya tidak bisa melihat persetujuan. dapatkah Anda menambahkan beberapa output tabel mana yang dioptimalkan dalam loop?
rubo77

Saya mengadaptasi skrip Anda untuk mengoptimalkan semua basis data sehingga dijalankan satu per satu: stackoverflow.com/a/33541722/1069083
rubo77
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.