MySQLのロックについて
2024年4月5日概要 MySQLのロックについてまとめる。 MySQLのバージョンは8系を想定する。 検証環境 検証に使う環境はdocker-composeで用意した。(1コンテナだけなのでcomposeを使わなくも良いのだが..) . ├── docker-compose.yml └── initdb.d └── 1_schema.sql docker-compose.yml version: &#x...
概要 MySQLのロックについてまとめる。 MySQLのバージョンは8系を想定する。 検証環境 検証に使う環境はdocker-composeで用意した。(1コンテナだけなのでcomposeを使わなくも良いのだが..) . ├── docker-compose.yml └── initdb.d └── 1_schema.sql docker-compose.yml version: &#x...
インデックスとは テーブルに格納されているレコードを高速に取り出すための仕組み 以下のようなO(n)問題を抱えたクエリがあるとする。 SELECT * FROM users WHERE first_name = ‘Tom’ このクエリのパフォーマンスを上げるためには、以下のようにIndexを貼る。 ALTER TABLE users ADD INDEX (first_name) メリット・デメリッ...
概要 MySQLのトランザクションのアノマリーについてまとめる。 MySQLのバージョンは8系を想定する。 検証環境 検証に使う環境はdocker-composeで用意した。(1コンテナだけなのでcomposeを使わなくも良いのだが..) . ├── docker-compose.yml └── initdb.d └── 1_schema.sql docker-compose.yml v...
概要 MySQLにはだいぶ前から全文検索が使えるになっているが、最近まで全然触ってもいなかったので軽く素振りしてみた。 MySQLで全文検索を始める MySQLで全文検索を利用するのはElasticSearchよりも圧倒的に手間が掛からない。 検索対象としたいカラムにFULLTEXT INDEXを付与、MATCH (col1,col2,...) AGAINST (expr [search_modi...
概要 Ubuntu 20.04.2 LTSでmysqlコンテナを起動しようとと以下のようなエラーが出てコンテナ起動に失敗する。 Could not open file '/var/log/mysql/mysql-error.log' for error logging: Permission denied” dockerfile 問題が発生したdockerfile。 dock...
M1 Macに買い替えたので手元の開発環境のためにmysqlコンテナを動かそうとしたら動かなかった。 エラーはこんな感じ。 runtime: failed to create new OS thread (have 2 already; errno=22) goのエラーだったので、アーキテクチャの何かしらの問題で動いていないのだろうと推測。 とりあえずdocker hubを見て8.0.17より最...
概要MySQLだけでテストデータを生成するSQLについてメモしておく。テストデータをスクリプトで生成する方法は柔軟性が高く、上等手段な気がするが、数万件のレコードを用いてパフォーマンステストをしたい時などはSQLだけでも十分かもしれない。 SQLクエリはこんな感じ。 DROP TABLE IF EXISTS `tests`; CREATE TABLE `tests` ( `id` int(...
概要MySQLのJOINの種類とUNIONについてまとめる INNER JOIN指定カラムの値が一致するレコード同士を結合する。指定したカラムの値が一致しない場合は結合しない。(両方のテーブルに一致するデータだけ結合される。) users+------+--------+------+| id | sex | name |+------+--------+------+| 0 | ...
LaravelでマイグレーションやSQLファイルのインポートを繰り返したり、中断したりと無茶をやっていたらMySQLがおかしくなりました。 対応 MySQLの設定ファイルにログサイズを設定したら直りました。 innodb_log_file_size=5M 所感 無茶はやめよう! 参考 "Plugin 'InnoDB' registration as a STORAGE ...