タグ

tuningに関するkathewのブックマーク (14)

  • PHPアプリのボトルネックを調べる|ITプロフェッショナル部(システム開発のアイロベックス|東京都新宿区の業務システム開発会社)

    PHPではアプリケーションのボトルネックを調べるツールが無償で提供されています。 使用するツールはXdebugとWinCacheGrindです。 XdebugではPHPアプリけーションのプロファイリングを行います。 インストール方法は、peclが使用できる環境であれば pecl install xdebug とコマンドを打てば自動でインストールされます。 使用するための設定は、php.ini内に設定を記述します。 extension=xdebug.so              ←PHP拡張のファイル名もしくはファイルパス xdebug.profiler_enable = 1          ←1にしないと有効にならない xdebug.profiler_output_dir = "/var/xdebug/"  ←プロファイラ結果を出力する場所 このあと、Apacheを再起動すればXdeb

  • インデックス範囲スキャンとフルテーブルスキャンの損益分岐点 - kagamihogeの日記

    損益分岐点というたとえが正確かどうかはわからないが。範囲検索がある一定以上になると、インデックスよりもフルスキャンのほうが速くなるポイントがある。というわけで、それはどのへんにあるのかをやってみる。 やることとしては、連番の数値と文字列の2列からなるテーブルを用意し、数値列に対する範囲検索を実行して、インデックス範囲スキャンとフルテーブルスキャンの実行時間を計測する。数値列には一意インデックスを張る。 環境 Oracle Database Express Edition 11g Release 2をWindows上で動作 Oracle SQL Developer 3.2 SQL*Plus: Release 11.2.0.2.0 Production 準備 検索対象となる適当なテーブルを作る。 create table dest (search integer, rand_str varch

    インデックス範囲スキャンとフルテーブルスキャンの損益分岐点 - kagamihogeの日記
  • 解析まで10分!最強のMySQLチューニングツール「Jet Profiler」 | ランサーズ(Lancers)エンジニアブログ

    ランサーズでは、現在、Webエンジニアを募集しています。 詳しくは、募集要項をご覧下さい。 こんにちは、keiです。 今回は、MySQLのチューニングに大活躍な「Jet Profiler」というツールをご紹介します。 【2012/12/13 追記】 JetProfilerバージョン3がリリースされ、日語対応しました。 この日語化は、ランサーズ上で依頼されました。 http://www.lancers.jp/work/detail/69629 【追記ここまで】 Jet Profilerとは Jet Profilerは、MySQL向けのクエリアナライザです。 クエリチューニングは、DBパフォーマンスチューニングの中でも重要な作業の1つですが、 Jet Profilerを使えば、その作業をGUIで直感的に行うことができます。 フリーウェアの形態で提供されており、機能限定版であれば無料で利用す

    解析まで10分!最強のMySQLチューニングツール「Jet Profiler」 | ランサーズ(Lancers)エンジニアブログ
  • MySQL初級者を脱するために勉強してること -INDEX編- - Qiita

    欲しいデータを取得するくらいにはSQL書けるし、システム要件を満たすくらいにはテーブル設計は出来る、そんな僕が中級者を脱するために勉強している内容を備忘録的に書き綴ります。 予約語は大文字 その他は小文字で記述しています。 あー、インデックスね、はいはい。作ると参照が速くなるやつでしょ? そのくらいの知識でしたが、INDEXを適切に運用する上で原理など理解していないと、意味の無いINDEXを作ってしまう事があるので勉強しました。 INDEXとは 今回は多くのRDBMSでサポートされているB-TreeINDEXについて解説します。 B-Treeは以下のような形式でデータを保持しています。 ヘッダブロックでは大まかな値の範囲を保持しており、ブランチブロックではさらに細かい範囲を保持 リーフブロックでは実際の値と行への物理的な位置を保持しています。 INDEXが作成されている事で並び替えが速くな

    MySQL初級者を脱するために勉強してること -INDEX編- - Qiita
  • 「NginxのFastCGIキャッシュ」を導入して「1127倍」まで高速化する──「WordPress“1000倍”高速化」チューニング総仕上げ

    NginxのFastCGIキャッシュ」を導入して「1127倍」まで高速化する──「WordPress“1000倍”高速化」チューニング総仕上げ:とにかく速いWordPress(10)(1/2 ページ) エンタープライズ用途での利用が増えている「WordPress」の高速化チューニングテクニックを解説する連載。今回は、「1000倍高速化」を目指すチューニングテクニックの総仕上げです。「NginxのFastCGIキャッシュを導入」して、約1127倍まで高速化します。

    「NginxのFastCGIキャッシュ」を導入して「1127倍」まで高速化する──「WordPress“1000倍”高速化」チューニング総仕上げ
  • やってはいけない!!MySQLに悲鳴をあげさせる10の方法

    いつも「MySQLを使うときはこうするべき」という観点から記事を書いているが、今日は逆に犯してはいけない過ちをリストアップしようと思う。 1. 全てのカラムにインデックスをつけるデータベース初心者がもっともやってしまいがちな間違いはコレではないだろうか。インデックスはいい。検索がとても速くなるから。しかし、それと引き替えにインデックスは更新するときにコストがかかるし、その分多くのディスクスペースを消費する。特に更新にかかるコストは時に甚大で、該当するインデックスのページがキャッシュ上にない場合はディスクからいったんそのページを読み込まなければいけない。ディスクアクセスは動作にとても時間がかかるので、インデックスが多数、例えば全てのカラムに付いていたりすると「あれ?固まったか?」というような状態になってしまうことがあるだろう。インデックスは必要なカラムにだけつけるようにテーブルを設計しよう。

    やってはいけない!!MySQLに悲鳴をあげさせる10の方法
  • MySQLのEXPLAINを徹底解説!!

    以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ

    MySQLのEXPLAINを徹底解説!!
  • MySQLでクエリチューニングことはじめ

    最近、寒暖の差が激しいですがみなさん体調は崩されていないでしょうか? こんにちわ。モニプラ for Facebookを担当しています高橋です。 サービス開始当初は問題なかったものの稼働が高くなりデータ量が多くなって クエリのパフォーマンスが悪化すること…よくありますよね? 今回はクエリチューニングの基的な手順とケース別に解決方法を解説したいと思います。 クエリチューニングの手順 1.スロークエリログで問題のクエリをあぶり出す まずはどのクエリが問題なのか特定する必要があります。 アプリケーション側でクエリの実行時間を測定し自前でログを出力しておくというのも手ですが、 お手軽にMySQLの設定で一定時間以上掛かったクエリをログに出力しておくことができます。 スロー クエリ ログ(MySQL 5.1 リファレンスマニュアル) mysqldを–log-slow-queriesオプションつきで起

  • MySQLでVisual Explain

    MySQL Workbenchの次期バージョンである6.0のベータ版が公開された。例によってMySQLのダウンロードサイトで公開されているので、新機能が気になる人はゲットして試してみて頂きたい。見た目が若干今流行りのフラットデザインっぽくなってシャレオツ(笑)な感じに仕上がってる。 ベータ版が公開されたのを記念して、Workbenchに搭載されているナイスな機能について紹介したい。そう、Visual Explainだ。Visual Explainとは読んで字のごとく、SQLの実行計画を視覚的に表現したものだ。SQLが複雑になると、その実行計画は理解し辛いものとなる。 今日はVisual Explain基的な使い方と、それがどのように見えるかを紹介しようと思う。 Visual Explainを使用するには、対象のMySQLのバージョンが5.6以上であり、なおかつWorkbenchのバージョ

    MySQLでVisual Explain
  • いまさらAPCをインストールして、PHPの実行を高速化してみた ::ハブろぐ

    APC(Alternative PHP Cache)とは Alternative PHP Cache (APC) は、PHP の実行コードをキャッシュする仕組みで、 フリーかつオープンに使用できます。PHP の中間コードのキャッシュ・最適化を行うための、 フリーでオープンかつ堅牢なフレームワークを提供するということを目標としています。 ( PHP: 導入 - Manual ) スクリプトを起動するたびに、実行コードにコンパイルしている部分を、元のスクリプトに変更が無い限り(※)キャッシュして使い回すカタチで、PHPの全般的な実行を高速化する仕組みです。 ※スクリプトの変更の有無を確認する・しないのオプション ( apc.stat ) も別途で存在し、それを確認しないようにすると、その分さらにパフォーマンスが向上します。 今回は、さくらのVPS標準のCentOS 5.5と、「とあるさくらのV

    いまさらAPCをインストールして、PHPの実行を高速化してみた ::ハブろぐ
  • 【CakePHP 2.x】CakePHP 2.x の高速化Tips - pospomeのプログラミング日記

    フレームワークは便利なんだけど、動作が遅い。 もちろん CakePHP も例外ではない・・・。 ということで、高速化Tipsをまとめてみた。 1.PHP-APCで中間コードをキャッシュ これはCakePHPに限らずだけど、 結構パフォーマンスに差が出るのでやっておく。 2.Formヘルパーを使わない 可能な限りHTMLは直書きでいいと思う。 3.Model ではquery() を使ってSQLを直書きする。 find()とか便利だけど、ちゃんとSQL書いたほうがいい。 どんなクエリを発行しているか確認しやすいし、 変なクエリの発行も防げる。 ただし、配列のインデックスがおかしくなるのが面倒。 4.Model の recursive の初期値は -1 に設定する。 意図しないところでassociationが効いてたりするので、 初期値を -1 にするといい。 ただ基は3番目のTipsのように

    【CakePHP 2.x】CakePHP 2.x の高速化Tips - pospomeのプログラミング日記
    kathew
    kathew 2016/05/09
    自環境ではアソシエーションをバリバリに使っているので3番は適用できないけど、その他色々参考に
  • はじめての MySQL で100万件のデータを管理する時に行ったチューニングまとめ

    MySQL の勉強をせずにフレームワーク等で SQL を書かずに Web サイトを構築していました。データ数も2万件程度でしたので、そこまで困ることはありませんでしたが、今回100万弱の商品データを扱う機会ができたので、MySQL のチューニングや発行する SQL について見直す機会がありました。 この記事では MySQL を高速化するのに行った対策など勉強したものを自分用にメモしておきました。 条件式で比較するカラムにインデックスを使用して高速化 商品コードで存在しない商品を見つけて、商品をDBに登録するという処理を行っている場合、4万件超えたころから処理に2秒以上かかるようになってきます。12万件超えた頃には10秒程度かかるようになってしまいましたが、商品コードのフィールドに対してカラムインデックスを貼ることで0.2秒に短縮することができました。 MySQL のリファレンスにも以下のよ

  • CakePHPでやたら遅いSELECTクエリの改善 - うっかりエンジニアのメモ

    プライベートで作ったWebアプリで、一画面だけブラウザに表示されるまで3秒かかる激重画面があります。 この画面ではCakePHPが自動的にいろんなテーブルをjoinしたSQLを生成しているので、その辺りが原因だろうとは感づきました。 それにしても、たかだか20行程度のselectなので、なんか変だ。。。 ちょっとだけ分析と改善をしました。(はじめてのパフォーマンスチューニング…ドキドキ) 結論としては、1000倍早くなりました。 CakePHPのクエリ自動生成は楽ですが、パフォーマンス上の問題が発生した時にはやはりSQLを知らないとダメだなぁ… 環境 VirtualBoxのVM(メモリ613MB)上に下記の環境があります。 CentOS 6.5 x64 nginx 1.0.15 PHP 5.5.13 MySQL 5.5.37 CakePHP 2.4.0 テーブル構造 テーブル 内容 外

    CakePHPでやたら遅いSELECTクエリの改善 - うっかりエンジニアのメモ
  • MySQLの超遅いSELECTが劇的に早くなった | X->A->O

    CakePHPはよく触っていたものの、MySQLについてあまり知らなかったんですが、大規模なデータベースを扱ってみようと思い立ちいろいろ試行錯誤しています。 で、ついさっき感動したのが、40万件のレコードを扱ってるテーブルに簡単なSELECT分を投げて返ってくる時間がなんと5秒もかかっていて、なんじゃこりゃ?って首をかしげてたんですが、INDEXひとつで劇的に早くなったこと。 40万件が大規模かそうでないかはこの際おいておいて、INDEXのつけ方次第でこんなにも速度に変化があるのかと涙が出そうになった。 最初の激遅いテーブルは簡単に書くとこんな具合。 CREATE TABLE IF NOT EXISTS `shops` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `status

  • 1