タグ

performanceに関するkatsushのブックマーク (7)

  • MySQL(InnoDB)のSQLパフォーマンスチューニングのエッセンス

    はじめに MySQL(InnoDB)でSQLのパフォーマンスチューニングをするときに役に立つ知識をエッセンスとしてまとめました。結合(JOIN)やB-treeインデックスの探索の仕組み、実行計画の基的な見方を紹介します。 想定する読者は、SQLのパフォーマンスを改善する必要があるが実行計画をみてもいまいちピンと来ない方です。インデックスの作成の経験や、複合インデックスやカーディナリティの知識があることを前提にしています。目標は、実行計画の内容がよく分からない読者が、実行計画をみただけでクエリが実行される様子をイメージでき、自信を持ってクエリの改善にあたることができるようにすることです。 ストレージエンジンはInnoDBを前提としています。また、インデックスはB-treeインデックスを想定しています。全文検索の転置インデックスや空間検索のR-treeインデックスについては触れません。 イン

    MySQL(InnoDB)のSQLパフォーマンスチューニングのエッセンス
  • N+1問題におけるORMの重たさについて - Atsuo Ishimoto's blog

    tl;dr¶ボトルネックはちゃんと測定して把握しないとダメだよ。 N+1問題¶DjangoRailsなど、ORMを利用するWebフレームワークなどの開発では、よく 「N+1問題」 というのが話題になります。ORMでは、あるモデルが参照している別のモデルを参照するとその時点でSQLが発行されてしまうため、気が付かないうちにパフォーマンスが低下する場合がある、というやつですね。 Django¶例えば、Djangoで次のようなモデルがあったとき、 class Table1(models.Model): text = models

    N+1問題におけるORMの重たさについて - Atsuo Ishimoto's blog
    katsush
    katsush 2021/07/25
    意外だったし計測の重要性は同意するけど、高負荷環境で問題になるのは簡単に増やせるAPサーバじゃなくてDBなのでDBのCPU使用率やqpsを計測しないと
  • Pythonプロファイリング基礎 - Qiita

    プロファイリングとは 必要十分なスピードと無駄のないリソース使用量でコードを実行するためにボトルネックになっている処理を特定すること python用の有名なツール Pythonとtimeit cProfile line_profiler memory_profiler ツールの紹介 IPythonとtimeit python対話型インタンプリタの拡張版 timeitモジュールでテスト回数(-r)、ループ回数(-n)を指定して平均実行時間を計測 短いコードを直接実行とコードファイルをインポートして実行の2パターンがある インストール

    Pythonプロファイリング基礎 - Qiita
  • パフォーマンスも大事!〜PHPでプロファイリング編〜

    イノベーション エンジニアブログ 株式会社イノベーションのエンジニアたちの技術系ブログです。ITトレンド・List Finderの開発をベースに、業務外での技術研究などもブログとして発信していってます!

  • 軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita

    ざっくり言うと リスト構造のデータに対してランダムアクセスはしちゃだめだぞ。お兄さんとの約束だ! 発端 数年前に他部署の支援で作ったJavaのシステムに、ちょっとデカめのデータを突っ込んだらありえないほど遅いので助けてくれ、と連絡が入った。 まぁクエリとかインデックスをちょっと見れば直るっしょ・・・と鼻をほじりながら支援に向かった。 処理内容 遅い部分の処理は以下のようなものであった。 処理対象のデータをListで受け取る。 それをforループで1件ずつ前処理する。 処理結果をオブジェクトに格納し、ORマッパーでDBにINSERTする。 これだけ? そう、これだけだ。並列処理なんて高級なことはもちろんやってない。 インフラ調査 処理中のサーバのようすを調査する。今回のインフラは典型的な3層3サーバ構成。 WEBサーバはなにもかもが余裕。 APサーバではCPUを1つ使い切っている。 14コア

    軽い気持ちでLinkedListを使ったら休出する羽目になった話 - Qiita
  • あるSPソーシャルゲームのチューニングメモ - Qiita

    WEBサーバが通常40台でGvGバトル時は60台に増やすというスケール設定になっている。 CPUもメモリも使用率高くないのにサーバ台数増やさないとレスポンスが悪くなる。 WEBサーバ:CPU10%ぐらい、メモリ10%ぐらい DBサーバ:CPU10~20%ぐらい、メモリ20%ぐらい これ以上サーバを増やしたくないし、できれば減らしたい。 調査で使うもの New Relic https://newrelic.com/ これをWEBサーバのどれか1台にインストールしておきます。 最初の30日は有料版の機能も使えるのでその期間で一気にボトルネックを探りました。 URLごとにどんなメソッドやSQLが何回実行されているかなど見れるのでチューニングが捗ります。 無料で使える機能だけでも割と使えます。 アラート閾値(初期値)が少し高めなのでチューニング中は低く設定しましょう。 そうしないと重い箇所を特定で

    あるSPソーシャルゲームのチューニングメモ - Qiita
  • Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。アプリケーション基盤チームの横田です。 Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・読みにくいなどの指摘を受けてたので、謹んで修正させいただきます。 修正した内容につきましては、記事の最後を参照してください。 忙しい人のためのまとめ jdk-7u4以降のjdk-7 *1 でJavaのパフォーマンスが劣化する謎の現象 CodeCacheの容量限界に近づくとJITコンパイラを停止してコンパイルしたコードを捨てる機能が原因だった 起動オプションで回避できるので、長期運用するときは -XX:-UseCodeCacheFlushing, -XX:ReservedCodeCacheSize=128m をつける 上のオプションを設定した時に、C

    Javaの謎のパフォーマンス劣化現象との戦い - Cybozu Inside Out | サイボウズエンジニアのブログ
  • 1