Oracle社のMySQL Blogでは、非常に多くのMySQLに関する情報が公開されています。 blogs.oracle.com最近(2026年2月頃から)、特に運営(経営)体制やMySQLに対する取り扱いのポリシーなどに大きな変更があり、特に活発にその方面の話題も投稿されています。 あまりに多すぎて、そして動きが速すぎて、私自身もついていききれていないのが正直なところです。 (ずっと「ぼくらはHeatWaveの会社だよ! MySQLなんて片手間にやってるだけだし、バグ報告やパッチ提案なんか知~らないよ~」とか言っていたのが急に「ねぇねぇ、コミュニティのみなさん、ユーザのみなさん、なかよくし…
TL;DR
- さっさとMySQL 8.0とそれ以降にアップグレードして partial_revokes を使う
- 過去にはこんなテクニックがあったんだよという記憶だけ
日々の覚書: GRANTでデータベース名にワイルドカードを指定することとpartial revokesと でもちょっと書いていた、「GRANTでデータベース名にワイルドカード」を一捻りしたバージョン。
「一般ユーザーに(データベース名は動的に変わる、などの理由で)任意のスキーマに対するCREATE,
DROPその他の権限を割り当てたいけど mysql と
performance_schema と sys …
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年間サポートされる「本番投入に使える」バージョンです。このリリース直前に急遽多くの機能が実装に加えられ機能面でも楽しみが多いバージョンでありますが、まだ…
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 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 …[さらに読む]
そもそもこの構文破壊された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 …[さらに読む]
MySQLに Spatial(GIS)関数を大量に追加するプロジェクトをやっています。現在、標準のMySQLが持つSpatial関数に加え、新たに60個以上の関数を使用できるところまで進めて参りました。 https://github.com/sakaik/mysql-spatial-plugin/tree/mainみなさんにぜひ動作を試してもらいたいのですが、動作環境作るのとか大変そうな気がして尻込みしちゃうんですよね。 実際は soファイル置いて INSTALL PLUGIN コマンドを叩くだけなので実質 2ステップなのですが、なかなかみなさん試してくださいません。 (実は動作環境が非常に狭…
自作の、Spatial(GIS)関連の関数をMySQLに追加するプラグインの関数をひとつひとつ動作確認しながら紹介するシリーズ。 https://sakaik.hateblo.jp/entry/20260215/mysql_spatial_functions_plugin STX_RemoveRepeatedPoints(geom [, tol]) 連続する重複頂点を除去する関数。 動作紹介 点が重複するLINESTRINGから重複部分を除去 mysql> SET @g=ST_GeomFromText('LINESTRING(0 0, 0 0, 1 1, 1 1, 2 2)'); mysql>…
前回 とは趣向を変えて、自力ビルドと公式ビルドの差を試す。
自力ビルドは大したオプションを与えずにコンパイルするだけ。
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql ../mysql-9.7.0-er
$ make -j4
$ sudo make install
$ cd /usr/local/mysql
$ bin/mysqld --no-defaults --initialize-insecure --lower_case_table_names=1
$ bin/mysqld --no-defaults --lower_case_table_names=1 --innodb-dedicated-server=1 --log-error-verbosity=3 --innodb-monitor-enable=all --daemonize
前回と同じoltp_read_writeで比較。
$ sysbench --mysql-host=10.0.0.177 --mysql-user=sbtest oltp_read_write --table_size=1000000 --tables=10 --time=60 --report-interval=1 --threads=8 prepare
$ sysbench --mysql-host=10.0.0.177 --mysql-user=sbtest oltp_read_write --table_size=1000000 …[さらに読む]