6
6

More than 5 years have passed since last update.

インスタンス内の全てのテーブルの統計情報を更新するshell

Posted at

概要

インスタンス内の全てのテーブルの統計情報を更新する

補足事項

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
6
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6