MySQLのストレージエンジンの一種。標準ストレージエンジンのMyISAMと違いは以下の通り
MySQL を業務で利用する際、ほぼ例外なく指定されるのが ENGINE=InnoDB である。 これは単なる「デフォルト設定」ではない。 InnoDB は、 データを どのように保存し 同時アクセスを どの粒度で制御し 障害発生時に どこまで復旧できるか という データベースの根幹設計そのものを担うストレージエンジンであり、 MySQL を「実務に耐える RDBMS」に押し上げている中核実装である。 1. ストレージエンジンとは何か MySQL の特徴の一つに、 SQL 処理層と、データ保存方式(ストレージエンジン)が分離されている という設計がある。 CREATE TABLE jobs (…
トランザクションとロック機構のまとめ 前の記事の補足 ググったり生成AIから出したりしただけで細かい理解してなかったので、少しモヤモヤしたから生成AIと対話的に確認しながらメモを生成した 1. ロックの種類 共有ロック(Shared Lock) 構文: SELECT ... FOR SHARE (MySQL 8.0以降) / LOCK IN SHARE MODE 効果: 他トランザクションもSELECT可能、UPDATE/DELETE不可 用途: 読み取り中に変更されたくない場合 参考: MySQL 8.0: ロックされた読み取り 排他ロック(Exclusive Lock) 構文: SELEC…
はじめに 賃貸募集支援事業プロダクト開発チームのかげやまです! 普段は申込受付くんの開発をしています! 申込受付くんでは申込みに関わる様々なデータを扱っており、その数も日を追うごとに増加しています。 参考までに、月間WEB入居申込件数は最大月で約14万件に及びます。 そのためDBの操作には細心の注意を払う必要があります。 今回は、危うくデッドロックやタイムアウトを起こしかねなかった実際のタスクから、MySQLのロック仕様について深ぼってみます。 こんな方に読んでほしい MySQLのトランザクションやロックの仕組みをより深く理解したいエンジニアの方 デッドロックやタイムアウトといったデータベース…
2024 Mar. 31. 出典 : MySQLサーバのストレージエンジン確認方法 #MySQL - Qiita MYDATABASE内のテーブルのストレージエンジンを確認する例 mysql > use information_schema ; mysql > select table_schema, table_name, engine from tables where table_schema = 'MYDATABASE ;
はじめに システム事業部堤田です。 前回、業務で発生したdeadlockの原因について調査を行い、調べた内容についてブログにて整理を行いました。 今回は、前回の記事では記載しきれなかったインテンションロックについて記載をしていきます。 この記事にて、自身の理解を深めると供に同じように困っている人の一助になれば幸いです。 前回の記事:deadlock発生時の読み解き方(mysql5.7) 今回の記事で、実際発生したdeadlockのログについての解説も行う予定でしたが、その解説に必要なMySQLの用語の整理を含めると記載量が多くなりましたので分けることにしました。 deadloockログを読み解…
こんにちは。 ATOM事業部の田村です。 今回は、MySQL の高速化の手段として、InnoDB エンジンをオンメモリで使った場合のパフォーマンスについて調査してみました。 はじめに MySQL には InnoDB エンジンだけではなく、他にもいくつものストレージエンジンがあります。 その中でも MEMORY エンジンは、その名の通りデータをメモリ上に持つため、処理が極めて高速という特徴があります。 ただし InnoDB とはいろいろ違う部分があり、InnoDB で使えていた SQL がそのまま通るわけではありません。 単に「高速化したい場合は InnoDB の代わりに MEMORY エンジン…
DBのロックについて考える際にTransaction Isolation Levelsを確認することはよくあると思いますが、バックエンドを触ってない期間が長くなると細かい部分を忘れてしまうのでまとめてみました。
tm-progapp.hatenablog.com ↑の記事にてInnoDBのロックについてまとめましたが、公式ドキュメントを読み漁る中で「locking read」と「non-locking read」という言い回しがあり、気になったのでまとめてみました。 MySQL :: MySQL 8.0 Reference Manual :: 15.7.2.4 Locking Reads locking readとは non-locking readとは メリット デメリット 参考 locking readとは SELECT ... FOR SHARE, SELECT ... FOR UPDATE時の…
こんにちは。id:shallow1729です。最近Database Reliability Engineerというお仕事を始めたのでデータベースの勉強をしたりMySQLのソースコードを読んだりしています。仕事でMySQLが標準で用いているInnoDBのソースコードを読む機会があったのでなんかアウトプットしたいなと思いつついきなりコアな話するのもなって思ったのでざっくりとストレージエンジンの話をしようかなと思います。とはいえストレージエンジンは本当にいろいろな仕事をしていて全部を書こうとするとものすごい事になりそうだった(+僕も分かってない部分が多い)ので、とりあえず第一回はredo logとい…
こんにちは。アーキテクト見習いエンジニアの小池です。 年の瀬ですね。弊社は今日が最終業務日です。 掃除がてら今年あったことを何か記事にしておこうと思います。 とあるシステムでデータベースのデッドロックが原因のエラー調査をすることになり、普段データベースをガッツリ触らない僕にとって、この調査をすること自体が非常に勉強になったので記事にします。 そのシステムのデータベースは Amazon Aurora MySQL (InnoDB) なのですが、これまで SQL Server を使ったシステムに関わることが多かったので両者の違いも感じられました。 テストテーブル 実際のテーブルはお見せできないので、…