mita2 database life

主にMySQLに関するメモです

2020-01-01から1年間の記事一覧

MySQL 8.0.20 でHASH JOINが効くケースが拡大した

TLDR; MySQL 8.0.20 から INNER JOIN だけじゃなくて、Semi joinや Left/Right outer join でも HASH JOIN が使えるようになったよ MySQL 8.0.20 では (EXPLAIN ANALYZEではなく)EXPLAIN でも、HASH JOINが使われているか、表示されるようになったよ MySQL …

良く使う pt-query-digest のコマンド メモ

ただのメモです。 pt-query-digest percona tookit に含まれるツールの1つ。 スロークエリログやtcpdump からクエリを抽出して、クエリを集計するツール。 負荷をかけているクエリを洗い出すのに便利なヤツ。 https://www.percona.com/doc/percona-toolkit/…

MySQL の feature request を眺める

feature request MySQL のバグは bugs.mysql.com で管理されています。 このサイトにはバグだけでなく、機能改善(feature request) の要望も投稿できます。 bugs.mysql.com 眺めてみる 普段はバグ(不具合)に注目してみているのですが、今日は、FRをみてみ…

MySQL 各インデックスごとの容量を確認する

お題 不要そうなインデックスを削除して、どれぐらい容量が減るのか確認したい information_schema.tables の INDEX_LENGTH では合計容量しか見えない mysql> SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH FROM information_schema.tables WHE…

MySQL Clone Plugin を利用してスレーブが簡単に作れた

お題 MySQL 8.0 で導入された、Clone Plugin を利用してスレーブを作ってみる dev.mysql.com やってみる Clone プラグインをマスターとスレーブ、両方に設定しておきます。 ※ MySQL 8.0 から plugin-load-add という書き方がサポートされました。従来のplugi…

ROW_FORMATとCHECKSUM TABLEの結果の違い

お題 CHECKSUM TABLE は ROW_FORMAT が異なっても同じ値を出すときがある。 どういう場合に、ROW_FORMAT が異なっていても、チェックサムが一致するのか? CHECKSUM TABLE(おさらい) CHECKSUM TABLE はテーブルの中身のチェックサムを取得するコマンドです…

TRIGGERの権限とDEFINER

お題 トリガーってどの権限で動くんだっけ? 定義したユーザの権限? トリガーを引いたユーザの権限? プロシージャと違って、SQL SECURITY の指定がない TLDR; トリガーはDEFINERに指定したユーザで動作する DEFINERをナシにすることはできない、省略した場…

MySQLのスロークエリログにはエラーになったクエリが含まれる? (ver 8.0.29, ver 5.7.38 以前)

お題 エラーになったクエリはスロークエリログに記録されるのか? されるとしたら、エラーになったクエリであることは判別可能なのか? 試してみます 1. 文法エラー まずは、文法エラー。 mysql> UPDATE t.tx1 SET c1 100; ERROR 1064 (42000): You have an …

MySQL 8.0 で無理矢理ダウングレードを試みる(未完了)

以前も書きましたが、MySQL のバージョンが 8.0 になってからダウングレードが出来なくなりました。マイナーバージョンであってもダウングレードすることが出来ません。ダウングレードするには、古いバージョンをインストールしたサーバを用意し、mysqldump…

MySQL Casual Talks vol.13 を開催しました

今週、MySQL Casual Talks vol.13 を開催しました。 mysql-casual.connpass.com コロナウィルスの件もあり、どれぐらいの方が参加してくれるか心配だったのですが、当日は雨にもかかわらず、30名以上の方が参加してくださいました。よかったです。 最初の…

MySQL explicit_defaults_for_timstamp ON と OFF の CREATE TABLE 時の挙動

explicit_defaults_for_timstamp が MySQL 8.0 からデフォルトで ON になりました。アプリケーションに影響が出る可能性があるため、要点を確認しました。 DML の挙動の変化は yoku0825 さんがまとめてます。 yoku0825.blogspot.com CREATE TABLE の挙動の変…

MySQL 8.0 の LOAD DATA で The used command is not allowed with this MySQL version エラー

TL;DR MySQL 8.0 で LOAD DATA INFILE LOCAL を利用するには、 サーバとクライアント両方で local-infile パラメータを ON にする必要がある セキュリティ強化のため、8.0から LOAD DATA INFILE LOCAL はデフォルトで無効にされた MySQL 8.0 で LOAD DATA IN…

MySQL 8.0 Authentication requires secure connection エラーの件

MySQL 8.0 から デフォルトのパスワードの仕組みが caching_sha2_password に変更されました。 これに関連して、yoku0825 さんが以下のエントリーを掲載してます。 yoku0825.blogspot.com yokuさんのエントリーを抜粋すると: caching_sha2_password プラグ…

MySQL 8.0 の binlog_row_metadata オプションを試す

TL;DR MySQL 8.0 で導入された binlog_row_metadata について調べた 今のところデータ連携用途以外では使うところはなさそう binlog_row_metadata オプションとは何か マニュアルでは以下のように記載されています。 デフォルトはMINIMAL(最小限) ROWベー…

MySQL の クッキーを焼いた

クッキーを焼く MySQL の クッキーを焼いた話です。技術的な話は出てきませんw Anycubic i3 Mega 3D プリンター 高精度 大きい プリンタサイズ 構造物取り易いヒートベッド (ブラック)メディア: 年末年始は、3D プリンタで遊んでました。 3Dプリンタ扱うの…

MySQL テストコードを書いてみる

先日、MySQLをソースからビルドする方法を書きました。今日はテストコードについてのエントリーです。 mita2db.hateblo.jp MySQL のテストコード mysql-test/suite ディレクトリ以下にテストコードが記述されています。 5800以上のテストが記述されています…