tom__bo’s Blog

MySQL!! MySQL!! @tom__bo

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は特に出ていなかったため、どのクエ…

Ryzen 3950x でPC組んだ

PC

欲しかったので買いました。16コア32スレッド、やばい!(語彙力) 自分のDesktop用にPCを組むのは4台目、初めてのAMD CPUです。 さすがにコア数が多いので、簡易水冷に挑戦してみた。 GPUもかなり強いやつにしてみました。が、残念なことにこれは使えなかっ…

Dive into Binary logs

この記事はMySQL Advent Calendar 2019の9日目の記事です。 binary logとはなにか binary log(以降binlog)はMySQL serverで実行した更新をイベントという形式で出力したログ。トランザクションのコミット時に出力され、コミットの順番で1トランザクションの…

MySQL 8.0.18のHASH JOINを試した

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の復習

先日開催された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を開催しました

タイトル通りMySQL Casual Talks vol.12を開催しました。 登壇・参加してくださったみなさんありがとうございました。 オープニングでも話しましたが、LINE at 新宿ミライナタワーでのMySQLイベントの開催は初のはずです(あいまい) MySQL Casual Talks vol…

MySQLのBug Reportが成功した

MySQLのBug Report もう一週間経ったけど、今回出したバグレポートでドキュメントが修正されました。めでたい。 単にドキュメントが修正されただけですが、せっかくなのでMySQLにBug reportするまでの流れを書いておきます。 アカウント登録 シュッと登録し…

ALTER TABLEにかかる実行時間を見積もりたい

運用をしているとダウンタイムかありかに関わらず、alter tableにどれくらいの時間がかかるのか作業前に把握したいことはよくあります。 各種statusを見ることで一定時間でどれくらいの行を書き換えるかを把握することはでき、作業を始めてからであれば、あ…