3171 件中 1 - 10 件を表示
次の 10 件 »
メタデータロックの競合時にDDL実行を最優先するパッチを作った

メタデータロックとは

メタデータロックとはトランザクションの実行中に、そのトランザクションで利用したスキーマやテーブル定義などのメタデータが変更されないように取得するロックです。
DDLの実行時には、テーブル定義などのメタ情報に対するロックである、排他(X)レベルのメタデータロック(MDL)を取得します。 また、ALTER TABLE ADD COLUMN ...などの一部のDDLの実行開始時にXロックを取り、その後他のDMLを並列で実行できるようにロックレベルをダウングレードして、DDL完了時に再度Xロックを取得する仕組みで2回排他ロックを取得したりします。

[さらに読む]
MySQL Shellのフルバックアップとmysqlbinlogを合わせてPITR

MySQL ShellのdumpInstanceとMySQL ShellのdumpBinlogs ではなく MySQL ShellのdumpInstanceとmysqlbinlogの組み合わせでのPITR

テスト用コンテナの起動とテスト用のデータ作成とハートビートの書き込み。GTIDは有効な状態。

$ yt-sandbox 8.0
[3254174] NOTE: Generate Sandbox directry into /home/yoku0825/yt-sandbox/bravo
[3254174] NOTE: Node1 Container Ipaddress: 172.17.0.2
Sandbox deployed into /home/yoku0825/yt-sandbox/bravo

$ cd /home/yoku0825/yt-sandbox/bravo
$ ./n1 -e "CREATE DATABASE sbtest"

$ sysbench --mysql-host=172.17.0.2 --mysql-user=root oltp_read_write prepare --table-size=100000 --tables=10
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Creating table 'sbtest1'...
Inserting 100000 records into 'sbtest1'
Creating a secondary index on 'sbtest1'...
Creating table 'sbtest2'... …
[さらに読む]
MySQL Parameters を picoruby.wasm で作り直した

MySQL の各バージョン間のパラメータの差分を見ることができる MySQL Parametersという便利ページがあるんですよ。

もともと8年前(2018年)に Vue.js の練習として作ったものだったんだけど、JavaScript はあまり触る気になれなくて放置してた。ruby.wasm の登場で Ruby でもブラウザ上でプログラムが動かせるようになったので 3年前(2023年)に ruby.wasm で作り直した。

だけどフルセットの Ruby をブラウザで読み込むんで、起動が重くなったんですよ。まあそれはそう。 モバイルデバイスだと厳しいくらい。そのうちどうにかしたいなーとは思ったんだけど、そのままにしてた。

RubyKaigi 2026 に参加して picoruby.wasm の話を聴いたことで、MySQL Parameters を …

[さらに読む]
MySQLについて最近のOracle Blog記事のまとめ(1)~方針やイベントなど

Oracle社のMySQL Blogでは、非常に多くのMySQLに関する情報が公開されています。 blogs.oracle.com最近(2026年2月頃から)、特に運営(経営)体制やMySQLに対する取り扱いのポリシーなどに大きな変更があり、特に活発にその方面の話題も投稿されています。 あまりに多すぎて、そして動きが速すぎて、私自身もついていききれていないのが正直なところです。 (ずっと「ぼくらはHeatWaveの会社だよ! MySQLなんて片手間にやってるだけだし、バグ報告やパッチ提案なんか知~らないよ~」とか言っていたのが急に「ねぇねぇ、コミュニティのみなさん、ユーザのみなさん、なかよくし…

MySQL 5.7とそれ以前のpartial_revokesもどき

TL;DR

  • さっさとMySQL 8.0とそれ以降にアップグレードして partial_revokes を使う
  • 過去にはこんなテクニックがあったんだよという記憶だけ

日々の覚書: GRANTでデータベース名にワイルドカードを指定することとpartial revokesと でもちょっと書いていた、「GRANTでデータベース名にワイルドカード」を一捻りしたバージョン。

「一般ユーザーに(データベース名は動的に変わる、などの理由で)任意のスキーマに対するCREATE, DROPその他の権限を割り当てたいけど mysqlperformance_schemasys

[さらに読む]
日本MySQLユーザ会会(MyNA会) 2026年04月@オンライン を開催しました

2026年4月27日に「日本MySQLユーザ会会(MyNA会) 2026年04月」というイベントをオンラインで開催しました。mysql.connpass.com 2月にユーザ会会を開催したばかり(現地+配信)ですが、2ヶ月ほどでまたイベント開催です。どうした日本MySQLユーザ会。 MySQL 9.7 がリリースされた! 4月21日に 新しいLTSシリーズの最初のバージョンとなる MySQL 9.7.0 LTS がリリースされました。ここから8年間サポートされる「本番投入に使える」バージョンです。このリリース直前に急遽多くの機能が実装に加えられ機能面でも楽しみが多いバージョンでありますが、まだ…

MySQL 9.7 Early Release(無印)とMySQL 9.7 Early Release2の違い

TL;DR

  • 何かを直した結果テストケースが膨らんでいるのはわかる
  • その一方で enable_cascade_triggers なる機能が増えていて面白かった
  • 以下ピコ太郎風にお願いします(?)

I have a MySQL 9.7 Early Release (first) ..

ダウンロードは https://t.co/eD2BeHLWbZ からだ!

MySQL Community Early Access Builds | mysqlhttps://t.co/fG8lMgfL9w

— yoku0825 (@yoku0825) March 14, 2026

I have a MySQL 9.7 Early Release 2 ..

MySQL 9.7.0 Early Access Release "2" !?https://t.co/UYa8jvUDZS

[さらに読む]
パーティションとデータ暗号化

こちらでは、パーティション単位でデータを暗号化する例を記載しています。
もし、開発環境などに重要な情報を持っていく場合に、暗号化した方がいいケースも有ると思いますので、そんな時にパーティションに分けて並列で暗号化する事で暗号化の時間を短縮する事も可能です。

Sample Table :

mysql> show create table t_partition_poc\G
*************************** 1. row ***************************
       Table: t_partition_poc
Create Table: CREATE TABLE `t_partition_poc` (
  `sid` int unsigned NOT NULL,
  `ClientId` int unsigned NOT NULL DEFAULT '0',
  `ContentId` int unsigned NOT NULL DEFAULT '0',
  `ipAddress` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `os` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'No Information',
  `status` tinyint unsigned NOT NULL DEFAULT '1',
  `clickDate` date …
[さらに読む]
InnoDB FTSがメモリを食う件その2 tcmallocでいくらかマシになりそう

日々の覚書: InnoDB FULLTEXT KEYがメモリを食う件(未解決) の続き。

何がメモリを使ってるのかを performance_schema.memory_summary_global_by_event_name テーブルで(できないだろうなと思いながら)観測してみる。

mysql80> RESTART;
$ sysbench --mysql-socket=/usr/mysql/8.0.45/data/mysql.sock --mysql-user=root oltp_read_write --table_size=1000000 --time=600 --report-interval=1 cleanup
$ sysbench --mysql-socket=/usr/mysql/8.0.45/data/mysql.sock --mysql-user=root oltp_read_write --table_size=1000000 --time=600 --report-interval=1 prepare
$ date ; sysbench --mysql-socket=/usr/mysql/8.0.45/data/mysql.sock --mysql-user=root oltp_write_only --table_size=1000000 --time=600 …
[さらに読む]
MySQL 5.7とそれ以前で変な作り方をしたトリガーがmysqldumpで流し込んだ時にSyntax Errorでエラーになる

そもそもこの構文破壊されたCREATE TRIGGER文は、DELIMITERの変更とバージョン指定コメント構文が揃わないと起こらないので、おそらくmysqldumpで引っこ抜いたトリガー定義を間違っていじったりコピペし間違えた時くらいしか起こらない気がする。

が、一度この状態になるとそれ以降のmysqldumpで発火する。

How to repeat

  • MySQL 5.7とそれ以前に対して以下を実行すると、CREATE TRIGGERは成功するけどSyntax Errorが返ってくる。
CREATE DATABASE d1;
CREATE TABLE d1.t1 (num INT);

DELIMITER ;;
/*!50003 CREATE TRIGGER d1.test BEFORE INSERT ON d1.t1 FOR EACH ROW INSERT INTO d1.t1 VALUES (1); */;;
DELIMITER ;
  • こんな風に。
mysql57 5> CREATE DATABASE d1;
Query OK, 1 row affected (0.00 sec)

mysql57 5> CREATE TABLE d1.t1 (num INT);
Query OK, 0 …
[さらに読む]
3171 件中 1 - 10 件を表示
次の 10 件 »