Tôi thực hiện bên dưới câu lệnh dòng lệnh để tối ưu hóa một bảng:
optimize table tablename;
Có bất kỳ lệnh hoặc câu lệnh nào có thể tối ưu hóa tất cả các bảng một trong các cơ sở dữ liệu đã chọn không?
Tôi thực hiện bên dưới câu lệnh dòng lệnh để tối ưu hóa một bảng:
optimize table tablename;
Có bất kỳ lệnh hoặc câu lệnh nào có thể tối ưu hóa tất cả các bảng một trong các cơ sở dữ liệu đã chọn không?
Câu trả lời:
Tôi thường sử dụng mysqlcheck với sự kết hợp --optizes và --database. mysqlcheck là một giao diện dòng lệnh để quản trị viên kiểm tra, tối ưu hóa và sửa chữa các bảng.
mysqlcheck -uroot -p --optimize --databases myDatabase
Đây là tài liệu MySQL: http://dev.mysql.com/doc/refman/5.5/en/mysqlcheck.html
Tối đa
Bạn có thể viết kịch bản và đặt tất cả các bảng trên một dòng
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}"
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}"