最近、ANDPADでデータベース周りの技術顧問をさせて頂いています。ANDPADのエンジニアの皆さんから「データベースのロックまわりを詳しく知りたい!」というお話を受けて、先日、ロック周りの社内勉強会を開催しました。
SQLでは一般的なプログラミング言語と違って、ロックの制御を明示的に記述しません。ロックは暗黙的に(自動的に)データベースが必要なロックを獲得します。データベースのロックが わかりにくい・むずかしい と言われることが多いのはこういった背景があると思います。
…
[さらに読む]Ideas, releases, practical guides, and perspectives from the people building with MySQL.
yoku0825 さんが、面白そうなブログを書いていました。 yoku0825.blogspot.com MySQLの auto_increment 列は キーカラムである必要がありますが、このキーは複合キーでも構わない。ただし 複合キーの場合は、InnoDB ではキー指定のうちの1つめのカラムである必要があり、MyISAMなら2つめ以降のカラムでも良い、という違いがあるそうです。 mysql> create table tt1 (c1 integer auto_increment, c2 integer, c3 integer, key(c2, c1, c3)) engine=innodb;…
TL;DR
SELECT table_schema, table_name, column_name,
seq_in_index FROM information_schema.statistics WHERE
(table_schema, table_name, column_name) IN (SELECT
table_schema, table_name, column_name FROM
information_schema.columns WHERE extra LIKE '%auto_increment%')
AND (table_schema, table_name, column_name) NOT IN (SELECT
DISTINCT table_schema, table_name, column_name FROM
information_schema.statistics WHERE seq_in_index = 1);
mysqldump --no-data で引っこ抜いて
sed 's/MyISAM/InnoDB/' してテキトーなところにリストアしてみればいいと思うよ
…
[さらに読む]既報のとおり、7月上旬に『MySQL徹底入門第4版』が出版されました。ありがたいことに、出版記念のイベントを求める声もちらほらいただいていたのですが、主に私自身が MySQLユーザ会のイベントを多く主催したりしていることもあって、ユーザ会として自分たちの本の宣伝めいたものを開催するのは、やや気が引けるなぁと悩んでいました。折しも、ニフクラさんが定期的に開催している「ニフクラ エンジニア ミートアップ」としてやったらどうかとのお誘いをいただき、その中でやらせていただくことができました。#nifcloud_emup のみなさま、どうもありがとうございました。fujitsufjct.connpass…
TL;DR
mysql.role_edges テーブルと
mysql.default_roles テーブルがマスターとスレーブでズレる
8.0.15を使ってレプリケーションを組んでいたらハマった。
バイナリログへの記録がそもそもおかしいことになる。
mysql> SELECT @@version;
+-----------+
| @@version |
+-----------+
| 8.0.17 |
+-----------+
1 row …[さらに読む]
Bugs
基本的にMySQL Server, 5.7以上のbug fixのみまとめます
Bug #100259 decimal returned function value overflow when group by
TL;DR
DEBUG_SYNCとは、デバッグビルドのmysqldの中だけでブレークポイントみたいなものを設定して、ブレークポイントに差し掛かったら他のコネクションを使って操作を試してみられる…と思ってもらえれば多分大丈夫。
ただし任意の箇所でブレークできるわけではなく、コードの中に埋め込まれた “synchronization points”
の場所にだけ仕掛けられる。以下、わかりやすさ優先で ブレークポイント と呼ぶことにする。
基本的な使い方はこんな感じ。