今日はなにの日。

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

SQL

今日は、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がリリースされました。 追加機能がいくつかあるのですが、…

今日は、DBAとしてたった一つだけ監視するならの日。

目次 目次 とある日 はじめに 検証環境 元ツイート補足 データベースリライアビリティエンジニアリング ――回復力のあるデータベースシステムの設計と運用 DBRE DBREJP slowquery ツイート 概要 5.4.5 スロークエリーログ 検証 slowquery設定 SQL実行確認 SHO…

今日は、SQLのFROM句なくてもどこまでかけるのかの日。

目次 目次 とある日 MySQL SELECT WHERE GROUP BY HAVING ORDER BY 〆 とある日 MySQLで、select sleep(10);とselect count(*) from (select sleep(10)) a;はsleep(10)が発動して「1 row in set (10.01 sec)」になるけど、select count(*) from (select slee…

今日は、MySQL8.0.24の変更点オプティマイザーノートについての日。

目次 目次 とある日 オプティマイザーノート SQL 変換検証 オプティマイザ変換前サブクエリ 実行計画 オプティマイザ変換後外部結合クエリ 実行計画 おまけ速度計測 optimizer_switch flag subquery_to_derived(本題) デフォルト値 クエリ変換検証 1. 現在…

今日は、外部キー制約参照同士テーブルの日。

目次 目次 とある日 環境 テーブル定義 社員 組織 テーブル作成手順 FOREIGN_KEY_CHECKS CREATE TABLE ALTER TABLE INSERT INTO UPDATE SET SELECT 外部キーの問題 社員テーブルデータ削除 組織テーブルデータ削除 テーブル再設計 〆 とある日 応用情報技術…

今日は、SQL勉強して三年目だがUsingとOnの気づかなかった違いの日。

目次 目次 とある日 環境 USINGとONの違いについて 1. 同一列名 2.結合後列数減少 列数減少による問題 Using On 気づかなかった理由 Onの多用 結合列の参照をしない 〆 とある日 とある内容について検証しているときに気づいたSQLのUSINGとONの違いについて…

今日は、RECURSIVEで再帰の罠にかかったの日。

目次 目次 とある日 RECURSIVEとは WITH(共通テーブル式) RECURSIVE(再帰共通テーブル式) 実践 テーブル定義 再帰共通テーブル SQLエラー [3636] 発生 比較IDミス SQL修正 〆 参考記事 とある日 RECURSIVEを使ってみたかった。 ただそれだけの理由。 REC…

今日は、AUTO_INCREMENTに対してバルクインサートをしたときの日。

目次 目次 とある日 環境 Oracle VM VirtualBox DBeaver Tera Term ホスト PC ゲスト PC OS メモリ ストレージ MySQL 謎現象発動 テーブル作成 バルクインサート AUTO_INCREMENT値再確認 謎解決 innodb_autoinc_lock_mode = 2 解決までのプロセス 謎発覚 発…

今日は、MySQLのTRUNCATEとDELETEのコアな違いの日。

目次 目次 とある日 結論 環境 Oracle VM VirtualBox DBeaver Tera Term ホスト PC ゲスト PC OS メモリ ストレージ MySQL 検証 検証内容 検証テーブル作成 TRUNCATE DELETE 〆 とある日 とあるテーブル検証をしてて、TRUNCATEを実行したときに起こったお話…

今日は、2020年アドベントカレンダーその後の日。

目次 目次 とある日 今日は、DBで日付にはDATE型?VARCHAR型どっちの日。 ALTER TABLE 前 ibdファイルサイズ ALTER TABLE ALTER TABLE 後 ibdファイルサイズ 今日は、MySQL8.0 GISを使って距離と三角形の面積求めてみたの日。 2点間の距離ストアドプロシージ…

今日は、MySQL8.0 GISを使って距離と三角形の面積求めてみたの日。

初めに この記事はRDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2020のエントリーです。 目次 初めに 目次 とある日 環境 Oracle VM VirtualBox DBeaver ホスト PC ゲスト PC OS メモリ ストレージ MySQL 二点間の距離 公式 いざ求める! 問題 2点間の…

今日は、MySQL EXPLAINがデータベースを破壊する可能性がある場合の日。

目次 目次 とある日 環境 Oracle VM VirtualBox OS MySQL 実践 一般ログ確認 EXPLAIN DML LOG EXPLAIN FUNCTION LOG EXPLAIN DML TEST EXPLAIN概要 INSERT DELETE UPDATE 〆 とある日 Uncommon Sense MySQL – When EXPLAIN Can Trash Your Database とあるバ…

今日は、SQLのGROUP BYのBYっている?の日。

目次 目次 とある日 BYの謎 BYの使用用途 BYの英単語としての意味 BYの謎の考察 PRIMARY KEYとNOT NULLの謎 制約の意味 PRIMARY KEY NOT NULL PRIMARY KEYとNOT NULLの謎の考察 実行順序の謎 実際の実行順序 実行順序の謎の考察 参考サイト BYの謎参考 PRIMA…

今日は、遅いSQLクエリを考えるの日。

目次 目次 とある日 RDBMS 問題作成 1.INDEX未使用問題 2. ORDER BY問題 3.IN句EXISTS句問題 テーブル作成 テーブル設計 ER図 SQL データ生成 SQL INDEX確認 遅いSQL作成 1.INDEX未使用問題 2.不用意なソート問題 3.IN句問題 解決方法 1.INDEX未使用問題 2.…