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.