2024-01-01から1年間の記事一覧

1つインデックスを作成したらINSERT&UPDATEはどれぐらい遅くなる?

遅いSQLのチューニングをしており、色々分析を進めた結果、新しいインデックスを作成すれば改善する見込みがたちました。 そこで新しいインデックスを作成する準備をしていたところ、QAチームの人から 「インデックスを作成するとINSERTとUPDATEが遅くなるは…

最もカーディナリティの高いカラムをインデックスの一番左に置けばよいわけではない

SQLチューニングをしている中で、なぜかインデックスをうまく使ってくれないクエリがあり、色々調べたところ『最もカーディナリティの高いカラムをインデックスの一番左に置けばよいわけではない』ということがわかったので、メモとして残したいと思います。…

MySQLのB+treeインデックスの復習

最近あるプロダクトの性能改善をおこなっており、その中で特にMySQLのチューニングを担当しています。 RDBのチューニングといえばまずはインデックスです。「インデックスを作成すれば早くなる!」というのは感覚的にはわかっているのですが、インデックスが…

MySQLの.mylogin.cnfを使ってみる

今まではMySQLの接続情報を .my.cnf に保存して楽をしていましたが、 .mylogin.cnf という形式があるというのを恥ずかしながら最近知りました。 .my.cnf と .mylogin.cnf は、どちらも MySQL サーバーへの接続に使用される設定ファイルです。認証情報を保存…

AWS RDS(Aurora MySQL)のスロークエリログをpt-query-digestで解析する

✨目的や背景 MySQLのパフォーマンスチューニングをする際に、pt-query-digestでスロークエリログ(以下、スローログとする。)を分析をするのはわりと一般的だと思います。 pt-query-digestを使用するには生のスローログファイルが必要ですが、AWS RDSのスロー…

ECS&RDSの起動と停止をLambda無しで自動化してみた

✨目的や背景 AWSのコスト削減のために、本番環境以外のECSとRDSについて、平日夜間と休日は自動で停止するようにしたい。というありふれた目的です。 実はその仕組みはLambdaで構築済みなのですが、最近はLambdaでコードを書かなくても実現ができそうだった…

GitHub Actionsで別のプライベートリポジトリを参照したい

私が所属している会社ではソース管理にGitHub Organizationを使っており、会社のルールでリポジトリの可視性設定は必ずプライベートにしなければなりません。 自分のチームではよくTerraformを触るのですが、GitHub Actionsでterraform initする際に、別のリ…

リモートワークをしている開発者のIPを固定化するためにAWS Client VPNを構築してみた

私が担当しているプロダクトの検証環境はIP制限をしています。更にはその前段に、全プロダクト共通の認証基盤があり、認証基盤の検証環境も同様にIP制限がされている状態です。開発者が検証環境にアクセスできるように全社VPNのIPはもちろん許可していますが…