41から始めました

文字通り41歳から始めたブログです。DB(MySQL)を使ってお仕事してるので、DB周りの話を中心に最近始めたこととかをTwitterのノリで書いています。なお、本サイトにおいて示されている見解は私個人の見解であり、所属団体や組織を代表するものではありません。

MySQL8で廃止されたinformation_schemaのテーブル

大好きなクエリが流れなくて、アレ?と思ったのが始まり

d.hatena.ne.jp

のSH2さんの『ロック競合を表示するSQL』(以下参照)

select t_b.trx_mysql_thread_id blocking_id,
       t_w.trx_mysql_thread_id requesting_id,
       p_b.HOST blocking_host,
       p_w.HOST requesting_host,
       l.lock_table lock_table,
       l.lock_index lock_index,
       l.lock_mode lock_mode,
       p_w.TIME seconds,
       p_b.INFO blocking_info,
       p_w.INFO requesting_info
from information_schema.INNODB_LOCK_WAITS w,
     information_schema.INNODB_LOCKS l,
     information_schema.INNODB_TRX t_b,
     information_schema.INNODB_TRX t_w,
     information_schema.PROCESSLIST p_b,
     information_schema.PROCESSLIST p_w
where w.blocking_lock_id = l.lock_id
  and w.blocking_trx_id = t_b.trx_id
  and w.requesting_trx_id = t_w.trx_id
  and t_b.trx_mysql_thread_id = p_b.ID
  and t_w.trx_mysql_thread_id = p_w.ID
order by requesting_id,
         blocking_id
\G

が便利でちょっといじってMySQL5.5~5.7の環境で使ってたのだが、MySQL8の環境で実行して

Error Code: 1109. Unknown table 'INNODB_LOCK_WAITS' in information_schema

と言われて、あ、無くなったんだ と気づいた。 (sysのほう見ろっちゅうことね)

MySQL8で廃止されたのはこいつら

information_schemaのテーブル名 備考
GLOBAL_STATUS
GLOBAL_VARIABLES
SESSION_STATUS
SESSION_VARIABLES
INNODB_LOCKS こいつ
INNODB_SYS_DATAFILES
INNODB_SYS_VIRTUAL
INNODB_LOCK_WAITS こいつ
INNODB_SYS_INDEXES
INNODB_SYS_TABLES
INNODB_SYS_FIELDS
INNODB_SYS_TABLESPACES
INNODB_SYS_FOREIGN_COLS
INNODB_SYS_COLUMNS
INNODB_SYS_FOREIGN
INNODB_SYS_TABLESTATS

一方、増えたのはこいつら

information_schemaのテーブル名 備考
COLUMN_STATISTICS mysqldump --column-statistics=0
INNODB_CACHED_INDEXES InnoDB系テーブルのインデックスのキャッシュ情報
INNODB_COLUMNS InnoDB系テーブルのカラム情報
INNODB_DATAFILES InnoDB系テーブルのデータファイル情報
INNODB_FIELDS InnoDB系テーブルのインデックスキー(カラム)情報
INNODB_FOREIGN InnoDB系テーブルの外部キー情報
INNODB_FOREIGN_COLS InnoDB系テーブルの外部キー(カラム)情報
INNODB_INDEXES InnoDB系テーブルのインデックス情報
INNODB_SESSION_TEMP_TABLESPACES セッション一時表領域に関する情報
INNODB_TABLES InnoDB系テーブル情報
INNODB_TABLESPACES InnoDB系テーブルの表領域情報
INNODB_TABLESPACES_BRIEF InnoDB系テーブルの表領域情報(パスはこっち)
INNODB_TABLESTATS 統計情報収集結果確認用っぽい
INNODB_VIRTUAL virtual generated columns用
KEYWORDS 予約語テーブル
RESOURCE_GROUPS リソースグループ定義に関する情報
ST_GEOMETRY_COLUMNS 空間カラムに関する情報
ST_SPATIAL_REFERENCE_SYSTEMS 空間参照系に関する情報
VIEW_ROUTINE_USAGE システム系ビューの一覧?
VIEW_TABLE_USAGE システム系テーブルの一覧?

リソース・グループ

https://dev.mysql.com/doc/refman/8.0/en/resource-groups.html#resource-group-components 読んだけど、なんか面白そうなことやってる。

と思ったら、mita2さんが8.0.3だけど試してた。

http://mita2db.blogspot.com/2017/09/mysql-80.html

MySQL8に移行するならこれ、検討だな。