MySQL
MySQL (5.7 InnoDB) で本番稼働中にインデックス作成すると、対象テーブルにショートトランザクション実行中の場合は並行でできるけど、ロングトランザクションが実行中*1の場合は Waiting for table metadata lock (synch/cond/sql/MDL_context::COND_wait_…
MySQL のクエリチューニングでボトルネック分析に使える機能。 MySQL show profile 再現性のあるスロークエリーには「SHOW PROFILE」を試してみよう | Think IT(シンクイット) show profile は廃止されて、後継は MySQL :: MySQL 5.7 Reference Manual :: …
mysql> tee show_variables.txt mysql> SHOW VARIABLES; (中略) mysql> notee mysql> exit $ head show_variables.txt mysql> SHOW VARIABLES; +----------------------------------------------------------+-------------------------------------------…
MySQL で log_queries_not_using_indexes を 1 に設定すると、インデックスを使用しないログが出力される(デフォルトは 0 で無効)。 スロークエリーログは、実行に要した時間が long_query_time 秒を超え、 少なくとも min_examined_row_limit 行を検査す…
performance_schema=1 参考 MySQL :: MySQL 5.6 リファレンスマニュアル :: 22.2.2 パフォーマンススキーマ起動構成 パフォーマンスインサイトの有効化 - Amazon Relational Database Service
EC2 に sysbench をインストール Amazon Linux 2 に sysbench をインストールしようとすると、libmysqlclient_r.so.16 とlibmysqlclient_r.so.16 が必要と怒られる - ablog sysbench でテーブルを作成してデータを投入する。 export HOST=rds-mysql-57-22.**…
MySQL [(none)]> show variables like 'hostname'; +---------------+--------------+ | Variable_name | Value | +---------------+--------------+ | hostname | ip-10-7-1-22 | +---------------+--------------+ 1 row in set (0.01 sec) 参考 接続先の…
インストール インストールする $ brew install mysql mysql-client バージョンを確認する $ mysql -V mysql Ver 8.0.19 for osx10.14 on x86_64 (Homebrew) 接続する $ mysql -h aurora-mysql57.cluster-******.ap-northeast-1.rds.amazonaws.com -u awsuse…
インストール curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash sudo yum -y install sysbench mysql 準備 初期データロード $ sysbench /usr/share/sysbench/oltp_read_write.lua \ --db-driver=mysql \…
ファイルシステムの初期化 ファイルシステムを初期化する # mkdir /nvme0n1 /e32000 # fdisk -l # mkfs.ext4 /dev/nvme0n1 # mkfs.ext4 /dev/xvdb # mount /dev/nvme0n1 /nvme01 # mount /dev/xvdb /e32000 インストール MySQL の yum リポジトリを追加する …
準備 テーブルを作成して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 5.6 にはテーブル統計とインデックス統計だけで、MySQL 8.0 からヒストグラム*1が入るらしい。 テーブル定義 mysql> desc mydb.sbtest1; +-------+-----------+------+-----+---------…
MySQL の InnoDB テーブルの空き領域は INFORMATION_SCHEMA.TABLES の DATA_FREE カラムで確認でき、ALTER TABLE ENGINE INNODB で断片化(フラグメンテーション)を解消することができる。なお、テーブルの断片化でI/O量が増えて性能劣化するのはフルテーブ…
準備 データをロードする $ sysbench /usr/share/sysbench/oltp_read_write.lua \ --db-driver=mysql \ --table-size=500000 \ --mysql-host=aurora01.*********.ap-northeast-1.rds.amazonaws.com \ --mysql-user=awsuser \ --mysql-password=********* \ -…
環境 macOS Sierra 10.12.6 インストール % brew install percona-toolkit 使ってみる pt-query-digest で slow query log を集計する。 % pt-query-digest mysql-slowquery.log.2018-04-27.09 > mysql-slowquery.log.2018-04-27.09-pt.txt mysql-slowquery.…
MySQL で Orcale Database の dbms_lock.sleep(秒数) のように sleep させたい場合は、select sleep(秒数) でできる。 5.6.10-log awsuser: [mydb] 15:26> select sleep(5); +----------+ | sleep(5) | +----------+ | 0 | +----------+ 1 row in set (5.24 …
Oracle Database の以下の PL/SQL コードを standard_price := DBMS_RANDOM.VALUE(30,50); MySQL ではこう書き換えると同じことができる。 select round( rand() * 20 + 30 ) into var_standard_price; 実際にプロシージャを作成して実行してみるとこんな感…
どの当たりのコードか当たりをつけ中。 sql/handler.h sql/handler.cc sql/sql_table.cc Understanding MySQL Internals: Discovering and Improving a Great Database (English Edition)作者: Sasha Pachev出版社/メーカー: O'Reilly Media発売日: 2009/02/…
SHOW ENGINE INNODB STATUS の History list length が MySQL インスタンス全体の UNDO ページ数 undo log entries がトランザクション毎のUNDOレコード数 で、History list length が大きいとMySQLインスタンス全体での UNDO のサイズが大きくなりロールバ…
バイナリログを一覧表示する % mysql -h aurora01.******.ap-northeast-1.rds.amazonaws.com -u awsuser -p 5.6.10-log awsuser: [mydb] 01:27> show binary logs; +----------------------------+------------+ | Log_name | File_size | +----------------…
sysbench をインストールして MySQL のベンチマークをとる手順をメモ。 インストール $ curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash $ sudo yum -y install sysbench mysql ベンチマーク 初期データ…
MySQLのバイナリログはメディアリカバリに使うもので、ディスク障害などの際に mysqldump でエクスポートしておいたデータをインポートしてバイナリログでロールフォーワードする。Oracle Database で言うと、 インポートがリストアで、バイナリログでのロー…
SHOW ENGINE INNODB STATUS の History list length の見方をメモ。 mysql> show engine innodb status\G (中略) ------------ TRANSACTIONS ------------ Trx id counter 0 80157601 Purge done for trx's n:o <0 80154573 undo n:o <0 0 History list le…
~/my.cnf [mysql] prompt='\\v \\u: [\\d] \\R:\\m> ' 接続してみる % mysql -h aurora01.*********.ap-northeast-1.rds.amazonaws.com -u awsuser -p Enter password: (中略) 5.6.10-log awsuser: [(none)] 04:39> use mydb; 5.6.10-log awsuser: [mydb] …
Amazon Linux に MySQL 5.6.10 をデバッグモードでビルドした手順をメモ。 ダウンロード MySQL :: Download MySQL Community Server (Archived Versions) で以下の通り選択し、"Generic Linux (Architecture Independent), Compressed TAR Archive" をダウン…
インストール gdb をインストールする sudo yum -y install gdb gdb で mysql にアタッチする ps -elf|grep mysql gdb -p <PID> 参考 MySQLにgdbアタッチするメモ - kenken0807_DBメモ gdb Debugging Full Example (Tutorial): ncurses 詳解 MySQL作者: Sasha Pac</pid>…
MySQL Connector/J(JDBC Driver) で接続時に任意の collation_connection をセットする には以下の用に JDBC URL に「connectionCollation=utf8mb4_bin」のように設定すれば良い。 jdbc:mysql://aurora01.cluster-*******.ap-northeast-1.rds.amazonaws.com:…
MySQL でオプティマイザトレース(Oracle Database でいう 10053 トレース)を取得する方法。 mysql> SET optimizer_trace="enabled=on"; mysql> SET optimizer_trace_max_mem_size = 1048576; mysql> select 1; mysql> select * from information_schema.op…
MariaDB Connector/J で MySQL に接続する Java プログラム。 ソースコード ほぼ MariaDB Connector/J で MariaDB 10.3 に接続する - Qiita のまま。パッケージ名を削除して、接続情報を変更しただけ。 JdbcTest.java import java.sql.*; public class JdbcT…
LOAD DATA ステートメントで "Row X was truncated; it contained more data than there were input columns" が発生する
事象 LOAD DATA ステートメントで CSV ファイルをロードすると "Row X was truncated; it contained more data than there were input columns" というワーニングが発生し、全ての行がロードされていない。 mysql> LOAD DATA LOCAL INFILE 'test.csv' INTO T…