MySQLに関するshallow1729のブックマーク (6)

  • Performance Schemaの仕組みと活用法の紹介 - freee Developers Hub

    メリークリスマス!!freee Developers Advent Calendar 2022 25日目担当のid:shallow1729です!昨日はtdtdsさんでfreee特有の風土病:エンジニアの症例と寛解についてでした! 僕からはMySQLのPerformance Schemaという機能の仕組みの解説とfreeeでの活用についての紹介をします。 前置き Performance SchemaはMySQLで実行されるトランザクションやクエリなどの実行時の様々な情報を取得してくれる機能です。特に面白いのは後で説明するようにstageやwaitなどのMySQLの実装レベルでのモニタリングを提供してくれているところで、これを使う事でどのあたりがボトルネックになっているかについて実際のProduction環境のワークロードで分析できる点です。また、最近だと例えばAWSのRDSを用いているとPe

    Performance Schemaの仕組みと活用法の紹介 - freee Developers Hub
    shallow1729
    shallow1729 2022/12/25
    Performance Schemaについて書いてみましたstageとかwaitは特に解説が少ないのでその辺中心です!
  • pingcap/parser (MySQL互換) で SQL を手軽に解析 - freee Developers Hub

    この記事は freee Developers Advent Calendar 2021 の23日目の記事です🎄 freeeDBRE チームに所属している caterpillar です. なんだか大きなデータベースを眺める仕事をしています. 突然ですが, pingcap/parser を使って SQL を簡単に解析していきたいと思います. Go 製 の SQL Parser で, MySQL への高い互換性を謳う TiDB で利用されています. この parser の嬉しい点はこんな感じです. シンプルで使いやすい TiDB に利用されていることから, ある程度結果を信頼できる mask 済 SQL もおおよそ構文解析可能 3つ目について, mask済の SQL は select * from users where id = ? のように一部が別の文字に置き換わっているものを指しま

    pingcap/parser (MySQL互換) で SQL を手軽に解析 - freee Developers Hub
    shallow1729
    shallow1729 2021/12/23
    ORM使うと生のクエリが見えなくて辛いけど実際に実行されたクエリをマスクして収集したのを解析してパフォーマンス改善につなげたり
  • MySQLでIN句の中に大量の値の入ったクエリがフルスキャンを起こす話 - freee Developers Hub

    こんにちは、freee Developers Advent Calendar 2021、19日目のid:shallow1729です。昨日はtdtdsさんで【マジで】サイバー演習シナリオの作り方【怖い】でした!障害訓練後に攻撃方法を解説された時はリアリティの高さに驚きました。 僕はMySQLを使っていて発生した不思議な挙動の調査の話をしようと思います。 今回問題となったクエリ 今回話題にするクエリは以下のようなシンプルなものです。 SELECT * FROM hoge WHERE id IN (...) MySQLのパラメーター次第ですが、デフォルトの設定だとこのIN句の中の値の数が数万になると適切なインデックスが用意されていてもフルスキャンが発生する事がありました。このクエリがテーブルのほとんどのレコードを網羅するような場合や高速でレコードを大量にinsertして統計情報が追いつかないケー

    MySQLでIN句の中に大量の値の入ったクエリがフルスキャンを起こす話 - freee Developers Hub
    shallow1729
    shallow1729 2021/12/19
    書きました!シンプルなクエリでも想定外にフルスキャンを起こす事がある話です
  • pt-online-schema-changeによる負荷を好きなメトリクスでコントロールする - shallowな暮らし

    こんにちは、id:shallow1729です。この記事はMySQL Advent Calendar 202119日目のものです。昨日はid:next4us-tiさんでMySQL8.0を再起動するとアプリからつながらなくなる理由でした。インターネットって情報はたくさんあるけど分かってないと検索できないケースが多いと思っていて、ユーザーの立場に立って記事を書いているというのが伝わってすごくいいなと思いました。僕も会社のMySQlを8系にする時のトラブルシューティングをうまくやるために参考にしようと思います。 今回はpt-online-schema-changeを自分向けに改造した話です。 pt-online-schema-change(pt-osc) pt-oscはカラムのデータ型の変更のようなオンラインDDLが使えないalter tableをオンラインで行いたいケースなどに使えるツールです。

    pt-online-schema-changeによる負荷を好きなメトリクスでコントロールする - shallowな暮らし
    shallow1729
    shallow1729 2021/12/19
    書きました!pt-oscをRDSのメトリクスを見ながら動くようにした話です
  • 実例で学ぶ MySQL/MariaDB デバッグ - nayuta-yanagisawa's blog

    この記事では、MySQL/MariaDB のバグを修正するための典型的な手順を、具体例を通して解説する。次の MariaDB のバグを例として取り上げるが、基的なデバッグの手順は MySQL でもまったく同様である。 MDEV-24868: Server crashes in optimize_schema_tables_memory_usage after select from information_schema.innodb_sys_columns なお、MySQL/MariaDB のデバッグ方法についての包括的な解説を与えるのは、この記事のスコープ外である。デバッグ手法の詳細を知りたい場合は、以下の一連の記事を参照してほしい。 Debugging MySQL/MariaDB (1): Build and Test Debugging MySQL/MariaDB (2): DBU

    実例で学ぶ MySQL/MariaDB デバッグ - nayuta-yanagisawa's blog
  • MVCCとInnoDBでの実装について - shallowな暮らし

    こんにちは。id:shallow1729です。先日はredo logを中心にストレージエンジンについて解説を行いましたが、今回は同時実行制御、特にMySQLなど多くのデータベースで採用されているMultiversion Concurrency Control(MVCC)という技術にフォーカスしようと思います。 今回の記事ではまず前半でMVCCというものがどういうものかについて解説をして、次にMVCCの実装方法についてInnoDBの実装を参考にしながら見ていこうと思います。前提知識はあまりいらないと思いますが、リレーショナルデータベースの操作経験はあったほうがいいかなと思います。また、前回のストレージエンジンの解説で述べた内容はあまり説明しないので、軽く目を通してもらえると頭に入りやすいかなと思います。 shallow1729.hatenablog.com トランザクションの原子性 まずトラ

    MVCCとInnoDBでの実装について - shallowな暮らし
    shallow1729
    shallow1729 2021/05/17
    MVCCという複数のリクエストがデータベースに来た時の制御の仕組みについて、概念と実装の紹介を書きました。データベースって面白いんだなって伝わるとすごく嬉しいです!
  • 1