それが僕には楽しかったんです。

僕と MySQL と時々 MariaDB

MySQL にいい感じにコントリビュートする方法(非公式)

この記事は MySQLのカレンダー | Advent Calendar 2023 - Qiita 6 日目の記事です。 はじめに 補足 コントリビュートしようぜ 登場人物 Oracle Profile の作成 OCA への署名 魂のコントリビュート 追記 2023/12/06 19:34 無事に取り込まれると… git log に名…

Handler と SELECT と時々 WHERE 句

はじめに 環境 前提 さぁデバッグタイムだ 確実に発生している事実 いざ server レイヤーダイブ まとめ おわりに はじめに どうも、最近どうにか出費を抑えようとしているけんつです。今回は自作ストレージエンジンをやっていて気になった SELECT と WHERE …

LOAD DATA LOCAL INFILE ~ REPLACE INTO と時々ロックでしっかり沼った

はじめに 書きながら思ったこと 検証環境 検証する 前提 コードパスを掴む ちょっと気合を入れて読んでいく おわりに はじめに どうも、最近よく主要人物が闇落ちする映像作品を薦められがちなけんつです。最近色々あって LOAD DATA LOCAL INFILE ~ REPLACE …

MySQL 探索記 ~ Unit Test がビルドされる時に必要なライブラリとリンク~

はじめに 前回との差分 余談 本題 一度冷静になる 頑張って実装を追う DEFAULT WITH_"${plugin}"_STORAGE_ENGINE MANDATORY おわりに はじめに どうも、ユニットテストをかけるようになったぜと前回の記事で喜んでいたらバイナリの書き込みで盛大に 1byte ず…

MySQL 探索記 ~自作プラグイン開発でユニットテストを気合いでサポートするための色々~

はじめに 後日談 前提 気合で gtest を使えるようにする テスト対象の実装を追加 EXAMPLE ストレージエンジンのビルド対象に追加する テストファイルを追加する ビルドする テストを実行する ここまでに何が行われたのか 既存実装の調査と紆余曲折 storage/p…

MySQL ハンドラーレイヤー探索記 ~無限 Empty Set 編~

はじめに ハンドラーの挙動 波乱の幕開け なんで Empty Set なのか 余談 おわりに はじめに どうも InnoDB に詳しくなろうと思って色々調べていたら何故か mysql-server レイヤーに詳しくなっていっているけんつです。 最近 InnoDB と最もシンプルな実装であ…

UDF と char * と時々 --binary-as-hex

はじめに mysql-ulid-plugin UDF をインストールする ハマりどころ 初期化関数の戻り値問題 char * で返した値が何故か hex で表示される おわりに 読むと幸せになれる はじめに 最近 UUID に頭を悩ませまくった結果、ULID なるいいものがあると知ったので気…

MySQL 8.0.31 以降でビルドが通らないケースを git bisect で調べる

はじめに 問題のビルド git bisect の準備 テストスクリプト ビルドが通らなくなったであろうコミット 対策(暫定) おわりに 追記 (2023/05/29 23:03) 何が起きたか 最終的な対策 反省文 はじめに mtr のオプションを拡張するパッチを出そうと最新の MySQL を…

MySQL Connector/C++ を使ってセッションを気合で作る

はじめに 環境 ここでやりたいこと Connector/C++ をインストールする 諸々のパスを確認する 簡単なサンプル 罠 CDK Error: unexpected message コンパイルできない deb でなく tar.gz から入れた場合に mysqlcppconn8 が見つからないと怒られる おまけ cmak…

VLDB 2022 にある論文のアブストラクトを流し読みする回

はじめに Design Trade-offs for a Robust Dynamic Hybrid Hash Join Plush: A Write-Optimized Persistent Log-Structured Hash-Table Cardinality Estimation in DBMS: A Comprehensive Benchmark Evaluation Your Read is Our Priority in Flash Storage …

MySQL 8.0.29 以下をビルドできない場合がある

はじめに ビルド 問題の躓きポイント どこからならビルドできるのか まとめ はじめに ちょいと調子が戻ってきたので MySQL で検証したいことを検証しようとビルドを元気に進めていたら、仕事用の macOS マシンでビルドできないならまだしも Ubuntu 系統の OS…

MariaDB の Application-Time Periods について

はじめに Application-Time Periods INSERT DELETE UPDATE WITHOUT OVERLAPS おわりに はじめに 気がついたら 3 ヶ月もブログを更新していなかったので、色々あって見ていた MariaDB の Application-Time Periods について雑に書く。ほとんど日本語訳に近い…

MariaDB のデバッグをいい感じにやる

はじめに 久々に MariaDB を macOS 上でデバッグしていたらデバッグしたまま寝てしまい、それを機に色々と壊してしまい戻すまでに時間がかかったので雑にまとめる。 デバッグの構成 mtr で gdb をいい感じに利用できないことが多いので CLion に組み込まれて…

MariaDB 10.6 を macOS BigSur 11.4 でビルドする

はじめに ビルドする前に ソースコードを持ってくる 必要なパッケージ群をインストールする bison を変更する どうしても /usr/bin 以下に突っ込みたい人 gcc, g++ を突っ込む(宗教に応じて選択してください、おすすめはしません) ビルド CMake でよろしくや…

JVM における G1GC とヒープの雑な話

はじめに ヒープと GC の基本 ヒープの構造 雑な GC の基本 G1GC 概要 仕組み Young 領域に対する GC コンカレントサイクル 混合 GC Major GC が実行される可能性のある場合 おわりに 参考文献 はじめに どうも、けんつです。GW は特に何もせず映画とチェス…

Java で利用できるオプションをバージョン別で比較してくれるサービスを作った話

2021/07/12 VPS が MariaDB ビルド用サーバに化けたのでサイトを運用していないです はじめに 作ったもの 対象となるオプションたち UnlockDiagnosticVMOptions UnlockExperimentalVMOptions 改善したい 余談 おわりに はじめに 言語のバージョンを変更する…

MySQL を使った最高に頭の悪いポートフォリオを作った話

はじめに 技術スタック 作ったもの 仕組み 技術的な話 docker コンテナに対して何かを実行させる Redis を使ったキャッシュ MySQL User の権限を絞る デプロイ時の色々 おわりに はじめに JVM オプションをいい感じに比較してくれるサービスを作ったが、サブ…

Springboot アプリケーションのデプロイ準備を考える

はじめに 準備すること 環境別の properties を用意する dev 環境を整える jar と resources を固める 番外編: redis でちょっとハマった おわりに はじめに 最近趣味で Springboot アプリケーションを作っていてデプロイ準備が地味に面倒だったので備忘録と…

2020 年を振り返って

はじめに 今年の総括 仕事忙しかった インプット多かった あんまりアウトプットできなかった 責任を痛感する一年でもあった どこを目指していたんだ俺は。 その他・雑感 よく言われているやつ 知り合いあんまり増えなかった 会社の部活動なるものに参加した …

JIT コンパイラのコンパイラスレッド、コード最適化について

はじめに コンパイラのスレッド コードの最適化 インライン化 エスケープ分析 おわりに はじめに 今回は前回の内容に引き続きJIT コンパイラについての話。割と薄くなる予定。 コンパイラスレッドとか最適化とかそのあたり。 Java パフォーマンスには、 JVM …

JIT コンパイラのコードキャッシュ

はじめに コードキャッシュとそのチューニング コードキャッシュとは コードキャッシュの確認 コードキャッシュが圧迫された場合の挙動 単純なチューニング コンパイル時の基準 コンパイルプロセスを理解する 非最適化について entrant ではないコード zombi…

Java のJIT コンパイルについて

はじめに JIT コンパイルとは JIT コンパイルによる効果を確かめる JIT コンパイルの動作 クライアントコンパイルとサーバコンパイル トレードオフの存在 階層型コンパイル おわりに 参考文献 はじめに 今回は Java の JIT コンパイルについて。 Java パフォ…

CLion を使って MySQL のビルド&デバッグを行う

はじめに MySQL のビルド&デバッグをする ソースコードを持ってきて展開する CLion で CMake を実行する CMake Options Generation path ビルド デバッグ デバッグ設定の変更 ブレークポイントを設定 実行する mysql クライアントから接続する おわりに 余…

OSS にちょっと技術的な貢献するまでの流れ

はじめに やったこと プルリクエストを投げるまでの流れ 問題が見つかる 信頼できる情報をまとめておく リポジトリを fork する README を確認する。 Contributing Pull Requests Testing 過去にマージされた修正から傾向を掴む 問題箇所を修正する ブランチ…

MySQL 8.0.15 の前後で変わった文字列と DATE 型の比較について

はじめに 前提条件 謎現象を再現する 8.0.15 以下 8.0.16 以上 原理 文献 おわりに はじめに そういえば、最近この手の記事を書いてないし何ならインプットもしてない事を思い出し、今日雑にテストしてたらたまたまハマった面白い挙動があったのでまとめる。…

MySQL の docker コンテナを起動した時の warning, error を調べつくす

はじめに 問題のログ [Warning] [MY-011070] [Server] Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release. [Warning] …

Go 再入門 ~基本的なデータ構造周り~

はじめに Allocation with new() Allocation with make() Arrays Slices おわりに はじめに どうも、最近自分と同い年のプロダクトに触れて死ぬほど苦しんだけんつです。 ここ数ヶ月ずっと MySQL の検証や DBMS の勉強をしてきて思ったのだが、コード書いて…

Database Internals を読み解く ~Introduction and Overview~

はじめに 参考文献の構成 Introduction and Overview DBMS Architecture On-Memory vs Disk-Based DBMS Durability in On-memory DBMS Column Versus Row-Oriented DBMS Row Oriented Data Layout Column Oriented Data Layout Data file and Index File Dat…

MySQL 8.0.20 で導入された binlog transaction compression をハイパー雑に検証する

はじめに 前提環境と検証方法 リリースノートの文献 やってみた perfomance_shema をみてみる 余談 さいごに 2020/04/29 4:42 2020/04/29 11:43 2020/04/29 12:08 はじめに どうも、共通新人研修がビジネス職よりで割とコードとか書いている暇がなかったけん…

MySQL 8.0.19 と docker-compose 環境下で Single-Primary InnoDB Cluster を構築する

はじめに 環境 参考資料 InnoDB Cluster の構築 InnoDB Cluster とは 要件 MySQL Shell の導入 各サーバインスタンスの設定を修正する binlog_checksum enforce_gtid_consistency gtid_mode InnoDB Cluster の構築 オプションの類 *** ネットワーク周り grou…