<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>チューニング</title><link>http://blogs.wankuma.com/kox/category/1320.aspx</link><description>チューニング</description><managingEditor>kox@wankuma.com</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>kox@wankuma.com</dc:creator><title>最近のボトルネック事情</title><link>http://blogs.wankuma.com/kox/archive/2009/12/09/183691.aspx</link><pubDate>Wed, 09 Dec 2009 23:53:00 GMT</pubDate><guid>http://blogs.wankuma.com/kox/archive/2009/12/09/183691.aspx</guid><wfw:comment>http://blogs.wankuma.com/kox/comments/183691.aspx</wfw:comment><comments>http://blogs.wankuma.com/kox/archive/2009/12/09/183691.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kox/comments/commentRss/183691.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kox/services/trackbacks/183691.aspx</trackback:ping><description>&lt;p&gt;数年前までは、ボトルネック要因の大半はDB周りだったと思います。&lt;/p&gt; &lt;p&gt;もちろん、クライアントやトラフィック、APサーバーなど要因はほかにもありますし、&lt;/p&gt; &lt;p&gt;複合的なものもありますが、やっぱり多かったのはＤＢ。それもＳＱＬの不備であることが多かったと思います。&lt;/p&gt; &lt;p&gt;ですが、最近ではサイトや本などが多数あり、チューニング情報も充実しノウハウの共有もされています。&lt;/p&gt; &lt;p&gt;またＤＢのオプティマイザも優秀になってきているので、昔よりもボトルネックにならなくなってきています。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;では、最近はどこにボトルネックが多く発生しているかというと・・・&lt;/p&gt; &lt;p&gt;クライアント処理になります。&lt;/p&gt; &lt;p&gt;１．Ａｊａｘの利用によりクライアント側での処理が多くなってきていること。&lt;/p&gt; &lt;p&gt;２．Javascriptのフレームワーク（ライブラリ）の普及、利用により、処理そのものが重くなってきていること。&lt;/p&gt; &lt;p&gt;どちらもJavascriptですね。&lt;/p&gt; &lt;p&gt;Javascriptもチューニング方法はありますが、フレームワークを使用してしまうとなかなか思うようにいかなかったりします。&lt;/p&gt; &lt;p&gt;この辺は勉強不足もありますね。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/kox/aggbug/183691.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kox@wankuma.com</dc:creator><title>Yahoo!'s Latest Performance Breakthroughs</title><link>http://blogs.wankuma.com/kox/archive/2008/03/26/129846.aspx</link><pubDate>Wed, 26 Mar 2008 17:58:00 GMT</pubDate><guid>http://blogs.wankuma.com/kox/archive/2008/03/26/129846.aspx</guid><wfw:comment>http://blogs.wankuma.com/kox/comments/129846.aspx</wfw:comment><comments>http://blogs.wankuma.com/kox/archive/2008/03/26/129846.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kox/comments/commentRss/129846.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kox/services/trackbacks/129846.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://developer.yahoo.net/blog/"&gt;Yahoo!DeveloperNetWorkBlog&lt;/A&gt;にて&lt;/P&gt;
&lt;P&gt;&lt;A href="http://developer.yahoo.net/blog/archives/2008/03/yahoos_latest_p.html"&gt;Webサイトのパフォーマンス向上させるための資料&lt;/A&gt;が掲載されていたのを見つけたのでメモ。&lt;/P&gt;
&lt;P&gt;改善箇所は既存で14種類あったようで、さらに20種類追加された模様。&lt;/P&gt;
&lt;P&gt;#&lt;A href="http://developer.yahoo.com/yslow/"&gt;YSlow&lt;/A&gt;というチューニング用のツールの存在も知らんかった。&lt;/P&gt;
&lt;P&gt;既存の14種類のうち13種類は&lt;A href="http://www.inter-office.co.jp/contents/177"&gt;パフォーマンス・チューニングBlog&lt;/A&gt;にて既に翻訳されている。（感謝）&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/kox/aggbug/129846.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kox@wankuma.com</dc:creator><title>indexによるチューニング事例</title><link>http://blogs.wankuma.com/kox/archive/2007/08/03/88654.aspx</link><pubDate>Fri, 03 Aug 2007 14:18:00 GMT</pubDate><guid>http://blogs.wankuma.com/kox/archive/2007/08/03/88654.aspx</guid><wfw:comment>http://blogs.wankuma.com/kox/comments/88654.aspx</wfw:comment><comments>http://blogs.wankuma.com/kox/archive/2007/08/03/88654.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kox/comments/commentRss/88654.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kox/services/trackbacks/88654.aspx</trackback:ping><description>&lt;P&gt;環境：Oracle9i&lt;/P&gt;
&lt;P&gt;以下の担当者テーブルがあるとします。&lt;/P&gt;
&lt;TABLE class=tableLayout&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;担当者コード&lt;/TH&gt;
&lt;TH&gt;グループコード&lt;/TH&gt;
&lt;TH&gt;担当者名&lt;/TH&gt;
&lt;TH&gt;その他１&lt;/TH&gt;
&lt;TH&gt;その他２&lt;/TH&gt;
&lt;TH&gt;...&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001&lt;/TD&gt;
&lt;TD&gt;001&lt;/TD&gt;
&lt;TD&gt;Ａ&lt;/TD&gt;
&lt;TD&gt;xxx&lt;/TD&gt;
&lt;TD&gt;xxx&lt;/TD&gt;
&lt;TD&gt;...&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;002&lt;/TD&gt;
&lt;TD&gt;001&lt;/TD&gt;
&lt;TD&gt;Ｂ&lt;/TD&gt;
&lt;TD&gt;xxx&lt;/TD&gt;
&lt;TD&gt;xxx&lt;/TD&gt;
&lt;TD&gt;...&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;003&lt;/TD&gt;
&lt;TD&gt;002&lt;/TD&gt;
&lt;TD&gt;Ｃ&lt;/TD&gt;
&lt;TD&gt;xxx&lt;/TD&gt;
&lt;TD&gt;xxx&lt;/TD&gt;
&lt;TD&gt;...&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;004&lt;/TD&gt;
&lt;TD&gt;003&lt;/TD&gt;
&lt;TD&gt;Ｄ&lt;/TD&gt;
&lt;TD&gt;xxx&lt;/TD&gt;
&lt;TD&gt;xxx&lt;/TD&gt;
&lt;TD&gt;...&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;担当者コードはユニークなキーとなります。&lt;BR&gt;各担当者は必ずどこかのグループに属しています。&lt;/P&gt;
&lt;P&gt;この担当者テーブルがグループ単位で呼び出されることが多い場合は&lt;BR&gt;通常「グループコード」でindexを作成します。&lt;BR&gt;ここまでのチューニングはわりと行われています。&lt;BR&gt;このときに使用されるテーブルの項目に着目します。&lt;BR&gt;「担当者名」項目のみを取得することが多い場合は&lt;BR&gt;「グループコード、担当者名」のindexに変更することを検討します。&lt;/P&gt;
&lt;P&gt;「グループコード、担当者名」のindexにより&lt;BR&gt;index領域のみの検索で完結でき、実テーブルを読まないので速度が向上します。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/kox/aggbug/88654.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kox@wankuma.com</dc:creator><title>ROWIDのチューニング事例</title><link>http://blogs.wankuma.com/kox/archive/2007/07/25/86973.aspx</link><pubDate>Wed, 25 Jul 2007 13:59:00 GMT</pubDate><guid>http://blogs.wankuma.com/kox/archive/2007/07/25/86973.aspx</guid><wfw:comment>http://blogs.wankuma.com/kox/comments/86973.aspx</wfw:comment><comments>http://blogs.wankuma.com/kox/archive/2007/07/25/86973.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kox/comments/commentRss/86973.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kox/services/trackbacks/86973.aspx</trackback:ping><description>&lt;P&gt;先日、ROWIDを使用している箇所で、レスポンス悪化を確認しました。&lt;BR&gt;ということで備忘録。&lt;/P&gt;
&lt;P&gt;環境はOracle9i&lt;/P&gt;
&lt;P&gt;WHERE&lt;BR&gt;&amp;nbsp; ROWID = 'XXXXX' OR&lt;BR&gt;&amp;nbsp; ROWID = 'YYYYY' OR&lt;BR&gt;&amp;nbsp; ROWID = 'ZZZZZ' ...以下続く。&lt;BR&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;数10件レベルであれば、問題なくさくっと動作しますが、&lt;BR&gt;件数が増えると結局FULLアクセスとなってしまいレスポンス悪化の要因となりました。&lt;BR&gt;#まあ当たり前といえば、当たり前なのですが。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/kox/aggbug/86973.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>kox@wankuma.com</dc:creator><title>LOG出力によるパフォーマンス遅延</title><link>http://blogs.wankuma.com/kox/archive/2007/07/03/83474.aspx</link><pubDate>Tue, 03 Jul 2007 11:58:00 GMT</pubDate><guid>http://blogs.wankuma.com/kox/archive/2007/07/03/83474.aspx</guid><wfw:comment>http://blogs.wankuma.com/kox/comments/83474.aspx</wfw:comment><comments>http://blogs.wankuma.com/kox/archive/2007/07/03/83474.aspx#Feedback</comments><slash:comments>88</slash:comments><wfw:commentRss>http://blogs.wankuma.com/kox/comments/commentRss/83474.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/kox/services/trackbacks/83474.aspx</trackback:ping><description>&lt;P&gt;ログの過度な出力はパフォーマンスに影響を与えるので注意が必要です。&lt;BR&gt;「そんなの当たり前だ」という声も聞こえてきそうですが、&lt;BR&gt;以下は結構見受けられる間違いです。&lt;/P&gt;
&lt;P&gt;Log4Jを使った例を示します。&lt;BR&gt;通常は本番用と開発用のログを分けるためにログレベルを設定します。&lt;BR&gt;そして開発用としてはdebugレベルを使用しますよね。&lt;/P&gt;&lt;PRE class="code"&gt;  logger.debug("Hello World");&lt;/PRE&gt;
&lt;P&gt;この程度の内容であれば、あまり問題視することもありませんが、&lt;/P&gt;&lt;PRE class="code"&gt;  List list = new ArrayList();&lt;BR&gt;  list.add();&lt;BR&gt;  ....（省略）&lt;BR&gt;  logger.debug(list.toString());&lt;/PRE&gt;
&lt;P&gt;としている場合があります。この場合、listの大きさによって大きな負荷が生じます。&lt;BR&gt;#debug()の引数になにを入れるかによって、その性能に差が生じてしまうということです。&lt;BR&gt;面倒ですが必ず&lt;/P&gt;&lt;PRE class="code"&gt;  if( logger.isDebugEnabled ){
    logger.debug(list.toString());
  }
&lt;/PRE&gt;
&lt;P&gt;とする必要があります。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/kox/aggbug/83474.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>