CubicLouve

Spring_MTの技術ブログ

mysql

MySQLにおける外部キー作成時の自動インデックス生成

MySQLの外部キー制約において、外部キーと参照キーにはインデックスが必要です。 下記はMySQL 8.0のドキュメントですが、5.7でも同じような内容となっています。 dev.mysql.com 参照元のテーブルには、外部キーのカラムが同じ順序で最初のカラムとしてならぶ…

MySQL InnoDBにおけるPKにUUIDを使ったINSERTのパフォーマンスの調査

下記の記事を見て、PKにUUIDを使った際に内部的にどうなっているのかを確認してみました kccoder.com 比較対象として、PKにULIDを使った場合も調べてみました。 github.com ULIDはUUIDと互換性がある、ソート可能な識別子です。 MySQLのバージョン % mysql -…

なぜUsersテーブルの行でロックを取るのか?

下記ツイートを見て改めて考えてみました。 更新系APIでDBトランザクション張る時、対象のリソース群の親となるリソース(大抵はUser)を無条件で最初にロックする手法が当たり前だと思っていたけど、もしかして世間ではそうではないのかな...デッドロックリ…

2020/06/19 気になった記事メモ

1 at-grandpa.hatenablog.jp 安定したものに依存するためのものっていうのがだんだんわかってきた 2 qiita.com EXPLAINの説明が丁寧でわかりやすい

2020/06/08 気になった記事メモ

1 theta.tokyo blog.yuuk.io 同期ノンブロッキングIO という表現がわかりやすい。 下記のサンプルコードで理解が深まった。 sample_o_nonblock/test.c at master · hajifkd/sample_o_nonblock · GitHub 2 kccoder.com これに関しては、手元のMacのMySQL 5.7…

2020/06/04 気になった記事メモ

1 yakst.com よく、HTTPリクエスト毎にMySQLへは再接続しているので参考になった。 MySQLは多くのクライアントに対するデータベースへの高頻度の接続/切断処理がとても得意 2 cloud.google.com Network Intelligence Centerしらなんだ。 触ってみよう。 clou…

MySQLに数百万件のテストデータを作る方法

お手軽にMySQLにダミーデータを作る方法です。 INSERT INTO hoge SELECT * FROM hoge; を繰り返す スキーマ gist.github.com (プライマリキーなしというありあえないテーブルで試しています。。。) 結果 gist.github.com 1280000 rows作るのに1分かからない…

Q4MのConditional Subscriptionのベンチマーク

Q4MのConditional Subscriptionを使う前にベンチマークを取ってみました。 Q4M - Tutorial マシン Model Name: MacBook Pro Model Identifier: MacBookPro13,2 Processor Name: Intel Core i5 Processor Speed: 2.9 GHz Number of Processors: 1 Total Numbe…

MySQL 5.6から導入されたoptimizer_traceを使ってみる

きっかけは下のブログ rkmathi.hatenablog.com 実際に使われるindexはSQLオプティマイザがコスト計算した結果で変わると思われる。 http://dbstudy.info/files/20120310/mysql_costcalc.pdf コスト計算の結果は、MySQL 5.6から導入されたoptimizer_traceを使…

MySQL 5.6でロックの状態を詳細に見たい場合

innodb_lock_monitorを有効にする 有効にする場合 CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB; そして、 SHOW ENGINE INNODB STATUS; と打てば、TRANSACTIONSのセクションの中に、ロックの詳細情報が入るようになる。 終わったら、テーブルを…