概要
インスタンス内の全てのテーブルの統計情報を更新する
補足事項
innodb のみ
コード
#!/bin/bash
#--------------------------------------------------------
# MySQLのテーブルすべてに、ANALYZEを実施する Innodb Only
#--------------------------------------------------------
_DATE=`date +"%Y%m%d"`
_HOSTNAME=`hostname -s`
_START_DATE=`date +"%Y %m %d - %H %M %S"`
# DB Config
_DBHOST=hosuname
_DBUSER=dbuserid
_DBPASSWD=passwd
_TMPDIR=/tmp
mkdir -p ${_TMPDIR}/${_HOSTNAME}
_TMP=${_TMPDIR}/${_HOSTNAME}/ANALYZE_TABLE_${_HOSTNAME}_${_DATE}.sql
echo "-- *** MySQL ANALYZE START ${_START_DATE} ***" > ${_TMP}
mysql -N -h ${_DBHOST} -u ${_DBUSER} -p${_DBPASSWD} << EOD >> ${_TMP}
select
'ANALYZE TABLE ' ||
TABLE_SCHEMA ||
'.' ||
TABLE_NAME ||
' ;'
from
INFORMATION_SCHEMA.TABLES
where
TABLE_SCHEMA != 'mysql' and
TABLE_SCHEMA != 'information_schema' and
TABLE_SCHEMA != 'performance_schema' and
TABLE_TYPE ='BASE TABLE' and
ENGINE = 'innodb';
EOD
cat ${_TMP} | mysql -N -h ${_DBHOST} -u ${_DBUSER} -p${_DBPASSWD}
_END_DATE=`date +"%Y %m %d - %H %M %S"`
echo "-- *** MySQL ANALYZE END ${_END_DATE} ***" >> ${_TMP}
exit 0