MySQL
概要 ibdファイルの中身をパース、ダンプしてくれるツールが出ていたので、試して見たメモ。 github.com こんな感じで見れるというサンプルとして残しておきます。 sysbenchで作った1000000レコードのテーブルsbtest1とmysql.ibdを見て見ています。 build ク…
MySQL 8.3.0がmoldリンカをサポートしていたので、フルビルドがどれくらい早くなるか試してみました。 MySQL :: MySQL 8.3 Reference Manual :: 2.8.7 MySQL Source-Configuration Options 先に結果 8.3.0 フルビルドにかかった時間(リンクだけではなくコン…
MySQL アンカンファレンス開催したい。というかします。 概要 最近のMySQLはバージョニング方針も変わって、周辺ツールを含めた機能追加も着々とされている一方で、MySQL関連のイベントは減ってしまったような気がします。 コロナ以降、イベントが少ない気が…
この記事はMySQLのカレンダー | Advent Calendar 2023 - Qiitaの19日目の記事です。 MySQLのredoログには何が書かれているのだろうか? そんな疑問を解決するために私はアマゾンの奥地へと旅立つことにしました。 MySQLはSQLをパースし、実行計画を立てたあ…
MySQL 8.0.35や8.2.0のリリースノートがまだ来ないが、githubのほうではtagが切られていたので、commit messageから新しい機能を探してみた。 $ cd mysql-server/ $ gch trunk Already on 'trunk' Your branch is up to date with 'origin/trunk'. $ gb 8.0 …
せっかくのGWなので、おもちゃを作りました。 Query Review Helperです。 github.com 背景 最近MySQLで実行されるクエリをレビューするタスクが異常に多くなってきました。 開発者の全員がindexやjoin, partition, limit offsetなどなどのハマりどころを知っ…
この記事はMySQL Advent Calendar 2020の1日目の記事です ※ 従来MySQLのレプリケーション構成ではMaster/Slaveという単語が使われてきましたが、現時点の最新バージョンである8.0.22からは、これらの単語がSource/Replicaと置き換えられ始めています。使い慣…
この MySQL ベンチマーク シリーズはMySQL-Benchmarkタグから一覧できます。 最初の方で環境構築をしていて、その環境で実験しています。 実験で使うSSDを決めるために簡単な比較をしてみる 1回目のベンチマークではもともと持っていたIntelのNVMe SSD 760p…
この MySQL ベンチマーク シリーズはMySQL-Benchmarkタグから一覧できます。 最初の方で環境構築をしていて、その環境で実験しています。 前回1Gbのネットワーク帯域がボトルネックになってしまうことがわかったので、10Gbの環境を作っていく 導入機器 NIC X…
tombo2.hatenablog.com ↑についてリノベ8.0.22で話した。 このとき、MTG中にそれぞれが試してみるとgoだと動く、rubyだと応答がなくなるという話をしていた。 tmtmさんがRuby, Cで追実験した結果をブログにしてくれていたので、僕もgoの結果を書いておこうと…
今年の冬はお家ベンチマーク環境を暖房にする気持ちでベンチマークをやっていこうと思う。 まずは環境構築から。 環境 2年前に組んだこの構成のPCが2台あるので、これを今回のベンチマークサーバにする core i7 8700 (CPU 6core 12threads) Memory 32GB SSD:…
概要 8.0.22のリリースノートを見るとprepared statementの挙動が変わっているらしい。 特にこれが気になったので、試してみる For a prepared statement of the form SELECT expr1, expr2, ... FROM table ORDER BY ?, passing an integer value N for the …
先週開催されたVLDB(Very Large Data Base)というDatabase分野のトップカンファレンスで松信さんがFirst authorの論文 MyRocks: LSM-Tree Database Storage Engine Serving Facebook's Social Graph が発表され、Best Industrial Paper Awardを受賞されまし…
MySQLのストレージエンジンはplugableになっていて、APIを実装すれば自作のストレージエンジンを組み込むことができる。 ということで、試しにRedisをストレージエンジンとして使うRedis Storage Engineを作りました。 github.com 途中で飽きてしまった ちま…
sakaikさんのブログで今月の日付一覧を得るクエリを読んでいて、ここで紹介されているクエリが手元で実行できなかったので、メモ。 sakaik.hateblo.jp 原因は手元の環境が8.0.17でVALUES()関数がなかったことが原因。 よく見るとvalues()関数でテーブルを作…
MySQLで(他のDBMSは知らない)ある値のリストxを使ってテーブルからIN(x), NOT IN(x)を使ってデータを取っても2つのクエリで全件を取ってこれないという話は有名だが、MySQL Server Blogにantijoin optimizationも含めた解説記事が出たので、これを機に(is nu…
slow logの時間は何を計測しているのか? きっかけ とあるMySQLインスタンスで1Gbのネットワーク帯域を使い切ってレスポンスタイムが悪化していたという話を聞いた。 確かに遅いがlong_query_timeを小さくしてもslow_logは特に出ていなかったため、どのクエ…
この記事はMySQL Advent Calendar 2019の9日目の記事です。 binary logとはなにか binary log(以降binlog)はMySQL serverで実行した更新をイベントという形式で出力したログ。トランザクションのコミット時に出力され、コミットの順番で1トランザクションの…
8.0.18がリリースされたのでHash Joinを試してみました。 dockerには8.0.18 imageはなかったのでcentos7にinstallして実験 先にまとめ HASH JOINは等価条件のJOINでかつjoinするカラムにindexがない場合に採用される(ドキュメント1行目) HASH JOINしたかどう…
先日開催されたMySQL Casual Talks vol.12で「binlogを覗く」を発表した際のQAタイムで某瀬島さんからアドバイス頂いたWLを読んだので進捗報告です。 現在もgeneral document, internal manual, WL, source code reference(by doxygen)からbinlogの各種event…
タイトル通りMySQL Casual Talks vol.12を開催しました。 登壇・参加してくださったみなさんありがとうございました。 オープニングでも話しましたが、LINE at 新宿ミライナタワーでのMySQLイベントの開催は初のはずです(あいまい) MySQL Casual Talks vol…
MySQLのBug Report もう一週間経ったけど、今回出したバグレポートでドキュメントが修正されました。めでたい。 単にドキュメントが修正されただけですが、せっかくなのでMySQLにBug reportするまでの流れを書いておきます。 アカウント登録 シュッと登録し…
運用をしているとダウンタイムかありかに関わらず、alter tableにどれくらいの時間がかかるのか作業前に把握したいことはよくあります。 各種statusを見ることで一定時間でどれくらいの行を書き換えるかを把握することはでき、作業を始めてからであれば、あ…
僕自身のMySQLの勉強、キャッチアップのためにまとめリストを作り始めましたが、せっかくなので公開してみます。 mysql-weekly.hatenablog.com です。(アイコン検討中です) MySQL Weeklyでは1週間のMySQLに関する情報をまとめて、簡単なsummaryを作っていき…
Percona LIVE 2019に参加してきました。 前回の続きで初日(Tutorial Day)から Session Day 1, 2の3日間のうち2日目(Session Day 1)の内容です。 おそらく発表のスライドが公開されることと思いますが、全体が非公開になるものや非公開になるページがあるかも…
CREATE TABLE文のParserを作って、parseしたテーブル定義からテーブルのディスクサイズを見積もるツールを作ったので、発表してきた。 table-size-estimatorという名前で、Githubに上げている github.com ツールの骨組みとREADMEにあるサブセットのパースま…
Percona LIVE 2019に参加してきました。 初日(Tutorial Day)から Session Day 1/2の3日間です。 会社の仕事として参加したので、会社様様です。 社内でのレポートは別途書きますが、この記事では個人的に僕が参加したセッションの概要をざっくり紹介します。…
MySQL8.0の機能を調べてまとめている。 Functional Key Partsについて読んだまとめ。 dev.mysql.com MySQL 8.0.13から関数index(functional key parts)がサポートされる。 5.7以前ではカラムの値そのものかカラムのprefixでしかindexを作成することができな…
MySQL8.0の機能を調べてまとめている。 Descending indexについて読んだまとめ。 dev.mysql.com MySQL 8.0では、Descending index(DESC, 降順のindex)がサポートされるようになった。 これまではASC(昇順)のindexを逆順にスキャンすることはできたが、パフォ…
MySQL8.0の機能を調べてまとめている。 invisible indexesについて読んだまとめ。 dev.mysql.com MySQL 8.0からはinvisible indexesがサポートされる。 invisible indexはoptimizerに使われないindexのこと。 optimizerから見て、visible(利用可能)かinvisib…