ユーザ用ツール

サイト用ツール


サイドバー

このページの翻訳:



最近の更新



Tag Cloud

02_freebsd:04_database:01_mysql:18_alter_table_progress

18 MySQLでALTER TABLEの進捗確認

大きなテーブルに対してALTER TABLEをかけると、数時間かかってしまったりします。

そこで進捗状況が分かれば助かる。
Handler_writeが更新件数なので、ALTER TABLEをかけたテーブルの件数が分かればだいたいの終了時間が想定できる。

alert_progress.sh

#!/bin/bash


while true
do
  PRE=`mysql -uroot -pgmocl-mysql -e "SHOW GLOBAL STATUS LIKE 'Handler_write'" | grep Handler_write | awk '{print $2}'`
  sleep 1
  CUR=`mysql -uroot -pgmocl-mysql -e "SHOW GLOBAL STATUS LIKE 'Handler_write'" | grep Handler_write | awk '{print $2}'`
  echo `expr $CUR - $PRE`

  sleep 1
done

下記の例だと、テーブルに12万行あって
1秒間に、200000行処理しているので、およそ106分くらいで終わるという計算になる。

mysql> select count(id) from test_table;
+------------+
| count(id)  |
+------------+
| 1273517123 |
+------------+
1 row in set (10 min 26.05 sec)

$ bash alert_progress.sh
200000
200000
200000
・
・
・

02_freebsd/04_database/01_mysql/18_alter_table_progress.txt · 最終更新: 2019/07/20 17:36 by matsui