ablog

不器用で落着きのない技術者のメモ

InnoDB

MySQL on CentOS 6.9 に sysbench でベンチマークをかけてみる

ファイルシステムの初期化 ファイルシステムを初期化する # mkdir /nvme0n1 /e32000 # fdisk -l # mkfs.ext4 /dev/nvme0n1 # mkfs.ext4 /dev/xvdb # mount /dev/nvme0n1 /nvme01 # mount /dev/xvdb /e32000 インストール MySQL の yum リポジトリを追加する …

MySQL の InnoDB テーブルの断片化の影響を調べてみた

準備 テーブルを作成して1千万件データをロードする $ sysbench /usr/share/sysbench/oltp_read_write.lua \ --db-driver=mysql \ --table-size=10000000 \ --mysql-host=aurora01.******.ap-northeast-1.rds.amazonaws.com \ --mysql-user=awsuser \ --mysq…

MySQL の InnoDB テーブルの統計情報を確認する

MySQL の InnoDB テーブルにどんな統計情報があるのか調べてみた。MySQL 5.6 にはテーブル統計とインデックス統計だけで、MySQL 8.0 からヒストグラム*1が入るらしい。 テーブル定義 mysql> desc mydb.sbtest1; +-------+-----------+------+-----+---------…

MySQL の InnoDB テーブルの断片化状況を確認する

MySQL の InnoDB テーブルの空き領域は INFORMATION_SCHEMA.TABLES の DATA_FREE カラムで確認でき、ALTER TABLE ENGINE INNODB で断片化(フラグメンテーション)を解消することができる。なお、テーブルの断片化でI/O量が増えて性能劣化するのはフルテーブ…

MySQL InnoDB で大きなトランザクションを見つける

SHOW ENGINE INNODB STATUS の History list length が MySQL インスタンス全体の UNDO ページ数 undo log entries がトランザクション毎のUNDOレコード数 で、History list length が大きいとMySQLインスタンス全体での UNDO のサイズが大きくなりロールバ…