tom__bo’s Blog

えんじにゃ〜 @tom__bo

MySQL

MySQL Weekly 始めました

僕自身のMySQLの勉強、キャッチアップのためにまとめリストを作り始めましたが、せっかくなので公開してみます。 mysql-weekly.hatenablog.com です。(アイコン検討中です) MySQL Weeklyでは1週間のMySQLに関する情報をまとめて、簡単なsummaryを作っていき…

Percona LIVE 2019参加してきた (2日目)

Percona LIVE 2019に参加してきました。 前回の続きで初日(Tutorial Day)から Session Day 1, 2の3日間のうち2日目(Session Day 1)の内容です。 おそらく発表のスライドが公開されることと思いますが、全体が非公開になるものや非公開になるページがあるかも…

MySQL Casual Talks #11で話してきた

CREATE TABLE文のParserを作って、parseしたテーブル定義からテーブルのディスクサイズを見積もるツールを作ったので、発表してきた。 table-size-estimatorという名前で、Githubに上げている github.com ツールの骨組みとREADMEにあるサブセットのパースま…

Percona LIVE 2019参加してきた (1日目)

Percona LIVE 2019に参加してきました。 初日(Tutorial Day)から Session Day 1/2の3日間です。 会社の仕事として参加したので、会社様様です。 社内でのレポートは別途書きますが、この記事では個人的に僕が参加したセッションの概要をざっくり紹介します。…

MySQL 8.0 Functional Key Parts

MySQL8.0の機能を調べてまとめている。 Functional Key Partsについて読んだまとめ。 dev.mysql.com MySQL 8.0.13から関数index(functional key parts)がサポートされる。 5.7以前ではカラムの値そのものかカラムのprefixでしかindexを作成することができな…

MySQL 8.0 Descending index

MySQL8.0の機能を調べてまとめている。 Descending indexについて読んだまとめ。 dev.mysql.com MySQL 8.0では、Descending index(DESC, 降順のindex)がサポートされるようになった。 これまではASC(昇順)のindexを逆順にスキャンすることはできたが、パフォ…

MySQL 8.0 Invisible indexes

MySQL8.0の機能を調べてまとめている。 invisible indexesについて読んだまとめ。 dev.mysql.com MySQL 8.0からはinvisible indexesがサポートされる。 invisible indexはoptimizerに使われないindexのこと。 optimizerから見て、visible(利用可能)かinvisib…

MySQL 8.0 Derived Table, Lateral Derived Table

MySQL8.0の機能を調べてまとめている。 Derived Table, Lateral Derived Tableについて読んだまとめ。 DERIVED TABLE LATERAL DERIVED TABLESや8.0の新機能を説明する前に、DERIVED TABLEについて説明する dev.mysql.com DERIVED TABLEとはFROM句のscope内で…

NOT NULL指定しないとカラムの確保するストレージサイズが1byte増える

NULLを許容するカラムをつくるとそれぞれのカラムで必要なストレージサイズが1byte増えていた。 以下はexplainでkey長を見てみた様子。 INTは4byteを確保する訳だけど、NULL (DEFAULT NULL)指定したら各カラムで1byte増えているのがわかる。 NULLABLEかの判…

MySQL 8.0 GROUP BY関連の新機能

MySQL8.0の機能を調べてまとめている。 タイトルどおりGROUP BY ... WITH ROLLUPについてドキュメントを読んだまとめ。 GROUP BYで指定したカラム自体の全体の集約(超集約: super-aggregate)結果を返すWITH ROLLUP句で大きく2点の改良と機能追加があった. OR…

MySQL 8.0 新機能 Window Function

MySQL 8.0の新機能について調べてまとめています。 今回はWindow関数に関する章(https://dev.mysql.com/doc/refman/8.0/en/window-functions.html )を読んだまとめです。 window関数はクエリの結果から行ごとにその行に関連する計算を行う機能。 GROUP BYで…

MySQL 8.0新機能 CTE (Common Table Expression)

MySQL 8.0の新機能について調べてまとめました。 この記事は公式ドキュメントの以下のページの読んだまとめです。 dev.mysql.com サンプルのクエリもほぼドキュメントのものですが、手元の8.0.15で実行した結果をつけている場合もあります。場合によって説明…

RockstarらしいPITRの検証

where句なしでupdate文を実行するというオペミスがあった際にdummyのrelay_log(binlogをrenameしたもの)を使って、1ホスト単体でMTSを利用した一人replication的なことをしてPITRする方法の検証をしてみた。 何いってんだと思ったら下のlefredの発表資料を見…

"詳解MySQL5.7"社内読書会を終えて

この記事はMySQL Casual Advent Calendar 2018 10日目の記事です。 皆さんMySQLの学習はどのようにされていますか? MySQLを含めたデータベースが落ちることはそのままサービスの停止につながることが多く、安定運用にはそれなりの知識と経験が必要だと思い…

MySQLのパケットを読んでいく

この記事はMySQL Casual Advent Calendar 2018 10日目の記事です。 最近golangでMySQLのclient/serverプロトコルのでシリアライザを作っていて、この記事ではclient/serverプロトコルを解説しつつ、そのデシリアライザの紹介をしようと思っていました。 です…

MySQLで実行された全てのクエリを取得する

MySQLで実行された全てのクエリを把握する方法を挙げてみる。 いくつか方法はあるが、負荷の高い環境でクエリをとるにはうするのが良いだろうか? パフォーマンスチューニングが主たる目的なので、Restoreからロールフォワードすることは考えない。 SELECT文…

MySQL(innodb)の分離レベルごとのanomalyについて実験した

※ この記事はMySQL Casual Advent Calendar 2017の11日目の記事です。 A critique of ANSI SQL isolation levelsを読んで(読んだブログ)、MySQL(innodb)で分離レベルごとのanomaly(不整合)の発生について実験しました。使ったのはDockerで立てられる 8.0.3-r…

MySQLでトランザクションの挙動を試すためのツールを作った

mytxという、トランザクション分離レベルの違いを調査したり、並列するトランザクションでどのようにロックがかけられているかを実験するためのツールを作りました。 mytxとは MySQLで分離レベルごとの挙動を実験しようとした時に、ウィンドウを複数開いて順…