今日はなにの日。

気になったこと勉強になったことのメモ。

SQL

今日は、MySQLでパフォーマンス分析ができるパフォーマンススキーマについての日。

目次 目次 とある日 パフォーマンススキーマとは 特徴 ユースケース 使い方 パフォーマンスインサイト(AWS) 〆 参考資料 AWS パフォーマンスインサイト MySQL パフォーマンススキーマ とある日 この記事はMySQL Advent Calendar 2023の18日目の記事です。 パ…

今日は、MySQLでtables_privテーブルとdbテーブルで権限を確認するの日。

目次 目次 とある日 下準備 SHOW GRANTS FOR mysql.tables_priv mysql.db 〆 とある日 権限付与したあとshow grant for usernameで差分を確認してましたが、テーブル数が多くなればなるほど出力される結果が多くて確認するのが大変でした。 そこで、何かいい…

今日は、MySQL 8.1.0でEXPLAIN FORMAT=JSON の結果を使って分析してみたの日。

目次 目次 とある日 EXPLAIN FORMAT=JSON の出力をキャプチャする SQL 構文に関する注意事項 それっぽく使ってみる EXPLAINの結果を格納するテーブル作成 EXPLAIN JSONのデータを格納する access_typeを検索する 〆 とある日 今さながら、8.1.0の変更を少し…

今日は、MySQL 8.0.34で変更されたCURRENT_USER()について触ってみたの日。

目次 目次 とある日 アップデート内容 CURRENT_USER()がテーブルのデフォルト値に使えるようになった 動作を試してみる 気になったことを試してみるの巻 他の関数はデフォルトに対応している? デフォルト値としては使えなくてもINSERTすることはできる? 〆…

今日は、複合インデックスを使うにはwhere句に書くカラムの順番を合わせないといけないと誤認してた理由の日。

目次 目次 とある日 概要 どういうこと というわけで試してみる 環境 手順 Dockerコンテナ起動 テーブル作成&データ挿入 SQLを実行する オプティマイザトレースの結果 INDEXの順番通り INDEXの順番とは逆 おまけ 〆 とある日 複合インデックスを使うにはwhe…

今日は、MySQL のスロークエリーが判定されるのに順序があるみたいの日。

目次 目次 とある日 スロークエリー判定順序 概要 関係するパラメータ log_slow_admin_statements long_query_time log_queries_not_using_indexes min_examined_row_limit log_throttle_queries_not_using_indexes 動作検証 環境 使うサンプルテーブル 比較…

今日は、前から気になってたmysqlslap を使ってみるの日。

目次 目次 とある日 mysqlslapとは 使ってみた 実行環境 手順 MySQL 8.0.33コンテナ起動 mysqlslapコマンドを実行 コマンドオプション オプションの区分け 重要なオプションの解説 --auto-generate-sql-load-type --concurrency 〆 参考記事 とある日 仕事で…

今日は、話題になってたMySQLのバックアップ方法について比較してみたの日。

目次 目次 とある日 MySQL のバックアップ方法 各バックアップ方法のおさらい mysqldump — データベースバックアッププログラム mysqlpump — データベースバックアッププログラム MySQL Shellのダンプロードユーティリティ バックアップやってみた mysqldump…

今日は、MySQL 8.0.32で追加された「explain_format」を触ってみたの日。

目次 目次 とある日 アップデート内容 explain_format見比べ TRADITIONAL JSON TREE ANALYZE DEFAULT エラー おまけ 〆 とある日 MySQL 8.0.32が1/17にGAされました。 リリースノートを見てて、気になった「explain_format」について調べてた記録です。 MySQ…

今日は、2022年で知ったMySQLの7つのことについての日。

初めに この記事はMySQL Advent Calendar 2022の19日目の記事です。 本記事では、今年一年を通してMySQLに触れててへぇーってなった7つのことについてまとめてます。 目次 初めに 目次 2022年で知ったMySQLの7つのこと 特定のデータベースにあるテーブル一覧…

今日は、MySQLにEvent Scheduler なるものがあるらしいので使ってみたの日。

目次 目次 とある日 EVENTとは 使ってみる event_scheduler 設定確認 Event設定 動作確認 後始末 〆 参考記事 とある日 実践ハイパフォーマンスMySQL 第3版読んでてEvent Schedulerなるものがあるらしいので試してみた。 EVENTとは MySQL イベントは、スケジ…

今日は、ソースコードドキュメント見ながらMySQLのソースコードを読んでみたの日。

目次 目次 とある日 はじめに 調べてみた 検証環境作る 該当ソースコードを見る ソースコードドキュメントでも見てみる make_join_query_block() master_query_expression() is_outer_reference() 色々と試してみる パターン1 結果 パターン2 結果 パターン3…

今日は、MySQL 8.0.31がリリースされたので触ってみたの日。

目次 目次 とある日 アップデート内容 引用符なしの識別子として「full」が非推奨 SQL 標準 INTERSECTおよび EXCEPTテーブル演算子のサポート 概要 INTERSECT EXCEPT 優先度 ALLとDISTINCT 〆 参考記事 とある日 2022 年 10 月 11 日にMySQL 8.0.31がリリー…

今日は、MySQL Shell にある「アップグレード チェッカー」とやらを試してみるの日。

目次 目次 とある日 アップグレードチェッカユーティリティとは 検証環境 MySQL Shellインストール アップグレードチェッカユーティリティを実行する MySQL 8.0での考慮事項 mysql スキーマ内で競合する名前を持つユーザー テーブル 古いスタイルのデータ型 …

今日は、Docker Composeを使ってMySQL8.0のレプリケーションを構成してみるの日。

目次 目次 とある日 レプリケーションとは メリット やってみる 環境 環境準備 バイナリロギングを有効にする 一意なserver_id を構成する ソースサーバ レプリカサーバ レプリケーション用ユーザーを作成する ソースサーバロックする レプリカを構成する レ…

今日は、MySQL 8.0.30で追加されたGIPKを使ってみたの日。

目次 目次 とある日 Generated Invisible Primary Keys (GIPKs) GIPKってなに? 要点 使ってみる GIPK設定有効化 PKのないテーブル作成 INFORMATION_SCHEMA.COLUMNSで確認してみる どんなメリットがあるのか 気になった事やってみる この列消せるの? カラム…

今日は、MySQLでは列の順序は重要ではなさそうの日。

目次 目次 とある日 検証 大きなテーブルを作成する 非常に幅の広いテーブルを作成する さまざまな列へのアクセス まとめ 〆 とある日 PostgreSQLの列の順序は重要です-CYBERTECという記事を見ました。 MySQLだとどうなるのか気になったので試してみた記事で…

今日は、MySQL 8.0 にて JOIN_FIXED_ORDERを使って JOIN する順番を指定してチューニング検証してみたの日。

目次 目次 とある日 前提 JOIN_FIXED_ORDERってなに? STRAIGHT_JOINとの違い やってみる テーブル作成 概要 テーブル構成 使ったSQL 初期状態 JOIN_FIXED_ORDER指定してみる 試行錯誤 テーブル行数多い順 テーブル行数少ない順 おまけ まとめ 〆 参考記事 …

今日は、気になってのでMySQLのメタデータロック(MDL)を調べてみたの日。

目次 目次 とある日 メタデータロック(MDL)とは? メタデータとは 普通のロックとの違い メタデータロックしてみる トランザクション開始 metadata_locksテーブル確認 別トランザクションからDDL実行 lock_wait_timeout修正 再度別トランザクションからDDL実…

今日は、俺的MySQLチートシートの日。

目次 目次 とある日 インストール編 インストール バージョン指定インストール リリースシリーズ指定インストール 運用編 showコマンド プラグイン確認 データベース一覧 テーブル一覧 テーブルスキーマ確認 権限確認 プロセス確認 ユーザ 作成 ユーザ一覧確…

今日は、MySQL 8.0.29で一部制限が解放されたALGORITHM=INSTANTの日。

目次 目次 とある日 ALGORITHM=INSTANTとは? 8.0.29の変更について DROP COLUMNALにもALGORITHM=INSTANTが追加 ALGORITHM=INSTANTの制限が一部解禁 検証 DROP COLUMNALにもALGORITHM=INSTANTが追加 8.0.28 8.0.29 ALGORITHM=INSTANTの制限が一部解禁 8.0.28…

今日は、MySQLでオブジェクト名にハイフンはエラーになるの日。

目次 目次 とある日 スキーマオブジェクト名の注意点 スキーマオブジェクト名とは? 注意点:許可されない識別子 解決策 ハイフンがなぜエラーなるのか 引用符で囲まれていない識別子で許可される文字 引用符で囲まれた識別子で許可される文字 なぜ許可され…

今日は、MySQL 8.0.28でもとに戻った「解決されたブール式の型」についての日。

目次 目次 とある日 MySQL 8.0.28変更内容について 型について INT/BIGINT 符号あり/なし バージョン検証 --column-type-infoについて MySQL8.0.27 MySQL8.0.26 MySQL8.0.28 おまけ 〆 とある日 昨日MySQL リリースノートでわいわい言う勉強会 8.0.28に参加…

今日は、MySQLに式と関数の速度を測定できるものがあったの日。

目次 目次 とある日 BENCHMARK ストアドファンクションで検証 〆 とある日 MySQLのベンチマークについて調べてたら、BENCHMARKという式や関数の速度を計測できるものを見つけたので試してみた話です。 BENCHMARK 特定の MySQL 式または関数の速度を測定する…

今日は、MySQLでストアドファンクションであったエラーについての日。

目次 目次 とある日 ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled 発生時のSQL エラー内容 回避方法 グローバル log_bin_trust_function_creators システム…

今日は、MySQLのJSON型ってどんな感じで扱うのの日。

初めに この記事は、MySQL Advent Calendar 2021のカレンダー | Advent Calendar 2021 - Qiitaのエントリーです。 ↓前日(2021年12月20日)は、@yy_harachi さんの記事です。 MySQLのオンラインDDLでレプリケーション遅延を回避する方法 - Qiita 目次 初めに…

今日は、MySQLのGISを使って検索を試してみるの日。

初めに この記事は、RDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2021のカレンダー | Advent Calendar 2021 - Qiitaのエントリーです。 検証環境 MySQLで検証しています。 root@6438500bc2d7:/# mysql --version mysql Ver 8.0.24 for Linux on x86_64…

今日は、mysqldumpslowというものがあるのを最近知りましたの日。

目次 目次 とある日 mysqldumpslow — スロークエリーログファイルの要約 検証 tmp/slow.log mysqldumpslow実行 オプション -a -s -t 〆 とある日 MySQLのslow queryを分析するのにmysqldumpslowがあるのをしったので調べました。 mysqldumpslow — スロークエ…

今日は、 optimizer trace 便利らしいので使ってみたの日。

目次 目次 とある日 optimizer_trace有効化 使い方 optimizer_trace検証 比較クエリ IN BETWEEN optimizer_trace実行結果 IN BETWEEN 〆 とある日 それはそうと optimizer trace 便利だから、みんな使おう。— Nayuta Yanagisawa (@NayutaYanagisaw) 2021年11…

今日は、MySQL8.0.27のバイナリの変更について調べてみたの日。

目次 目次 とある日 重要な変更 検証 MySQL 8.0.26 MySQL 8.0.27 解説 BINARYオペレータ CAST(... AS BINARY) CONVERT(expr,type),CONVERT(expr USING transcoding_name) 〆 とある日 MySQL 8.0.27がリリースされました。 追加機能がいくつかあるのですが、…