tom__bo’s Blog

MySQL!! MySQL!! @tom__bo

MySQのバージョンモデルとサポート期間のまとめ(2026年6月現在)

概要 関連用語 バージョンモデルの変遷 Long-Term Support(LTS)リリースシリーズ導入 カレンダーバージョン(Calendar Versions)の導入 サポート期間について 今後の各バージョンのサポート期間 Q&A Q1, 以前GAバージョンが出る前にあったRCやDMRリリースはな…

メタデータロックの競合時にDDL実行を最優先するパッチを作った

メタデータロックとは メタデータロックとはトランザクションの実行中に、そのトランザクションで利用したスキーマやテーブル定義などのメタデータが変更されないように取得するロックです。 DDLの実行時には、テーブル定義などのメタ情報に対するロックであ…

MySQL Enterprise EditionのOpenTelemetryコンポーネントを試してみる

先日開催された日本MySQLユーザ会会(MyNA会) 2026年02月の発表では、MySQL 9.7 (LTS)ではEnterprise版でしか提供されていない機能がCommunity版にも入るかも!という話があった。 まだ確定情報ではないとのことで、9.7がリリースされるまで2ヶ月ほどは待つし…

database_mixでMySQLの情報を1ファイルにまとめる

概要 MySQLたちの管理をしていると、サーバの設定やユーザ、テーブル定義をリストアップしたいと思うことは多いと思います。特にLLMに投げて簡易的な調査を行ったり、運用作業の補足に使うにも必要な情報が1つにまとまっていると便利です。 Database用のMCP…

MariaDBのLTSバージョンについて調べた(2025年9月時点)

2025/09/23時点のMariaDBのLTSバージョンに関する情報を漁ったまとめ。 基本的に機能面の変化を見ていて、パフォーマンス関連の情報は省きがち。 各バージョンの基本情報 バージョンのリリース月 10.11 LTSでの新機能 Variables 認証 レプリケーション Galer…

ibdNinja試したメモ

概要 ibdファイルの中身をパース、ダンプしてくれるツールが出ていたので、試して見たメモ。 github.com こんな感じで見れるというサンプルとして残しておきます。 sysbenchで作った1000000レコードのテーブルsbtest1とmysql.ibdを見て見ています。 build ク…

BinlogとInnoDBの2PCの実装の調査中

MySQLアンカンファレンス用の図

MySQL 8.3.0でmoldリンカがサポートされてたので試した

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関連のイベントは減ってしまったような気がします。 コロナ以降、イベントが少ない気が…

InnoDB redo logを解読している話

この記事はMySQLのカレンダー | Advent Calendar 2023 - Qiitaの19日目の記事です。 MySQLのredoログには何が書かれているのだろうか? そんな疑問を解決するために私はアマゾンの奥地へと旅立つことにしました。 MySQLはSQLをパースし、実行計画を立てたあ…

MySQL 8.1.0から8.2.0までのコミットメッセージのSubject一覧

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 …

ランニング3ヶ月目

ランニングを初めて3ヶ月たった。 仕事関連のタスクに追われていて、とりあえず定期的に走るだけで精一杯だった。 緩めのLT走とジョグしかできていないが、走れているだけ偉い!! まだまだ初心者というより入門者レベルなので、この程度の練習でも十分成長…

ランニング2ヶ月目

近況 あっという間に2ヶ月たった。 引越し後の環境に慣れてトレーニング内容と内容ごとのコースが決まってきた。 現状は3つのトレーニング内容をその時の体力次第で分けている。 基本的にVO2maxか乳酸性閾値を上げることを目的にしているので、長時間長距離…

ランニング・ジョンギングを始めて1ヶ月たった

なかなか高強度の負荷がかけられていなかった筋トレは諦めて一気に方向を変えてみることにした。 まずは持久力の基準の一つである最大酸素摂取量(VO2Max)を高めてみる。 体力、特に持久力と言ってもいろいろあるわけだが、まずはわかりやすいことを理由に、…

TiDBでPoint in Time Recovery

概要 この記事ではTiDBv6.1でのPoint In Time Recovery(PITR)について私なりの方法を紹介します。 運用中にめったに行うことはないですが、PITR (wikipedia)がいつでもできることは運用上重要ですよね。 しかし、残念なことに2022/07/06現在、TiDB公式ドキュ…

TiDB検証環境構築 on GCP

はじめに 最近TiDB導入のための検証にアサインされて、TiDBを調べています。 MySQL互換のデータベースということでTiDBを試してみるなら、無料トライアルも用意されているフルマネージドのTiDB Cloudを利用してみると良さそうです。 しかし、実際に本番環境…

MySQLのデータベース(schema)のコピーにかかる時間を比較してみた

あるMySQLインスタンスで検証のためにschema(database)をコピーしてほしい。というリクエストを受けたときに最速で対応する方法は何か検証してみました。 MySQLにschemaをコピーするコマンドはありません。 schemaをコピーする方法として例えば以下の5つがあ…

MySQLのquery review helperを作ってみた

せっかくのGWなので、おもちゃを作りました。 Query Review Helperです。 github.com 背景 最近MySQLで実行されるクエリをレビューするタスクが異常に多くなってきました。 開発者の全員がindexやjoin, partition, limit offsetなどなどのハマりどころを知っ…

SemisyncレプリケーションのFailoverでなぜデータがずれるのか

この記事はMySQL Advent Calendar 2020の1日目の記事です ※ 従来MySQLのレプリケーション構成ではMaster/Slaveという単語が使われてきましたが、現時点の最新バージョンである8.0.22からは、これらの単語がSource/Replicaと置き換えられ始めています。使い慣…

MySQL Benchmark-003 環境構築その3 SSD選択

この MySQL ベンチマーク シリーズはMySQL-Benchmarkタグから一覧できます。 最初の方で環境構築をしていて、その環境で実験しています。 実験で使うSSDを決めるために簡単な比較をしてみる 1回目のベンチマークではもともと持っていたIntelのNVMe SSD 760p…

MySQL Benchmark-002 環境構築その2 10Gb NIC導入

この MySQL ベンチマーク シリーズはMySQL-Benchmarkタグから一覧できます。 最初の方で環境構築をしていて、その環境で実験しています。 前回1Gbのネットワーク帯域がボトルネックになってしまうことがわかったので、10Gbの環境を作っていく 導入機器 NIC X…

8.0.22のprepared statementの調査続き1

tombo2.hatenablog.com ↑についてリノベ8.0.22で話した。 このとき、MTG中にそれぞれが試してみるとgoだと動く、rubyだと応答がなくなるという話をしていた。 tmtmさんがRuby, Cで追実験した結果をブログにしてくれていたので、僕もgoの結果を書いておこうと…

MySQL Benchmark-001 環境構築その1

今年の冬はお家ベンチマーク環境を暖房にする気持ちでベンチマークをやっていこうと思う。 まずは環境構築から。 環境 2年前に組んだこの構成のPCが2台あるので、これを今回のベンチマークサーバにする core i7 8700 (CPU 6core 12threads) Memory 32GB SSD:…

8.0.22でのprepared statementの挙動変化

概要 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 …

MyRocksの論文がVLDBに掲載されてBest Industrial Paper Awardを受賞していたので紹介

先週開催されたVLDB(Very Large Data Base)というDatabase分野のトップカンファレンスで松信さんがFirst authorの論文 MyRocks: LSM-Tree Database Storage Engine Serving Facebook's Social Graph が発表され、Best Industrial Paper Awardを受賞されまし…

B-tree variantsの調査 

Database Internalsの輪読会の第7回 chapter 6, B-Tree Variantsの発表予定です。 chapter 6は6つの論文を軸にB treeの応用(亜種)について書かれていますが、それぞれの論文を紹介するにはページ数が少なく、「こんなのもあるよー」程度になっています。その…

MySQLでredis storage engineを作った

MySQLのストレージエンジンはplugableになっていて、APIを実装すれば自作のストレージエンジンを組み込むことができる。 ということで、試しにRedisをストレージエンジンとして使うRedis Storage Engineを作りました。 github.com 途中で飽きてしまった ちま…

MySQLで今月の日付一覧を得る with 再帰CTE

sakaikさんのブログで今月の日付一覧を得るクエリを読んでいて、ここで紹介されているクエリが手元で実行できなかったので、メモ。 sakaik.hateblo.jp 原因は手元の環境が8.0.17でVALUES()関数がなかったことが原因。 よく見るとvalues()関数でテーブルを作…

NOT IN (Subquery)などにおけるNULL

MySQLで(他のDBMSは知らない)ある値のリストxを使ってテーブルからIN(x), NOT IN(x)を使ってデータを取っても2つのクエリで全件を取ってこれないという話は有名だが、MySQL Server Blogにantijoin optimizationも含めた解説記事が出たので、これを機に(is nu…

MySQLのslow_logは何を計測して出力されるのか

slow logの時間は何を計測しているのか? きっかけ とあるMySQLインスタンスで1Gbのネットワーク帯域を使い切ってレスポンスタイムが悪化していたという話を聞いた。 確かに遅いがlong_query_timeを小さくしてもslow_logは特に出ていなかったため、どのクエ…