Webサイト開発日記

インサート(insert)の処理方式別のパフォーマンスを検証

インサートの処理方式別のパフォーマンスについて検証してみました。
検証環境は以下の通りです。

サーバ:DELL PowerEdge860 (1U)
CPUIntel(R) Xeon(R) CPU 3050 @ 2. [...]

記事へ

Webサイトの高速化 ルール13 ETagを正しく設定する! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール13 ETagsを正しく設定する!
July 23, 2007
------------------- [...]

記事へ

Webサイトの高速化 ルール12 スクリプトの重複に気をつける! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール12 スクリプトの重複に気をつける!
July 23, 2007
------------------ [...]

記事へ

Webサイトの高速化 ルール11 リダイレクトを避けよう! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール11 リダイレクトを避けよう!
July 3, 2007
---------------------- [...]

記事へ

Webサイトの高速化 ルール10 コードのサイズを圧縮する! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール10 コードのサイズを圧縮する!
July 23, 2007
-------------------- [...]

記事へ

Webサイトの高速化 ルール9 DNS Lookupsを減らそう! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール9 DNS Lookupsを減らそう!
July 20, 2007
----------------- [...]

記事へ

Webサイトの高速化 ルール8 JavaScriptとCSSは外部ファイルに! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール8 JavaScriptとCSSは外部ファイルに!
July 3, 2007
------------ [...]

記事へ

Webサイトの高速化 ルール7 CSSのExpression()は使わない! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール7 CSSのExpression()は使わない!
July 16, 2007
------------ [...]

記事へ

Webサイトの高速化 ルール6 scriptは下に! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール6 scriptは下!
July 3, 2007
-------------------------- [...]

記事へ

Webサイトの高速化 ルール5 CSSは上に! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール5 CSSは上に!
July 3, 2007
---------------------------- [...]

記事へ

Webサイトの高速化 ルール4 コンポーネントを圧縮しよう! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール4 コンポーネントを圧縮しよう!
July 3, 2007
--------------------- [...]

記事へ

Webサイトの高速化 ルール3 Expiresヘッダーを追加しよう! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール3 Expiresヘッダーを追加しよう!
May 24, 2007
----------------- [...]

記事へ

Webサイトの高速化 ルール2 CDNを使おう! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール2 CDN(Content Delivery Network)を使おう!
April 26, 2007 [...]

記事へ

Webサイトの高速化 ルール1 HTTPリクエストの数を減らそう! (Yahoo! developer netoworkより翻訳)

ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール1 HTTPリクエストの数を減らそう!
April 3, 2007
----------------- [...]

記事へ

Webサイトの高速化 フロントエンドのパフォーマンスの重要性 (Yahoo! developer netoworkより翻訳)

以前に書いた「あなたのページを最速にする14の掟」と「High Performance Web Sites」の元記事のことが秋元@サイボウズラボさんのブログに載っていて、「誰かこれ訳してるかな?」とのことなので、注釈つけ [...]

記事へ

Webアプリスケーリングの7つのステージ-アーキテクチャー戦略(翻訳)

John Engates氏(rackspace社のCTO)がMySQLカンファレンス(2007)
で発表したプレゼン
The 7 Stages of Scaling Web Applications: Strategie [...]

記事へ

まずちゃんとした設計。チューニングはその後で。

1.適切な主キーを設定する
InnoDBの主キーはクラスターインデックスだということを意識しよう から導き出されること

更新する可能性がある項目は主キーにしない(主キーの更新はコスト高い!)
主キーの項目長はなるべく小 [...]

記事へ

InnoDBの主キーはクラスターインデックスだということを意識しよう

InnoDBについて一番大事なことは主キーがクラスターインデックスだということです。
クラスターインデックスでは、主キー(B-tree)のリーフページにデータが直接格納されています。
以下の図のようなイメージです。

[...]

記事へ

更新があるシステムにはInnoDBを選ぼう。MyISAMを選択するならそれなりの理由が必要。それにInnoDBのパフォーマンスはそんなに悪くないよ。

基本はInnoDBです。
MyISAMを選択できるようなケースを考えてみます。
・完全に検索Onlyの場合(基幹系とかから一定間隔で検索用テーブルを再構築する。それ以外の時間は検索のみのようなケース。)
・ログ系のテーブ [...]

記事へ

大規模DBサーバへのLinux適用(Kernel2.4と2.6の性能)

ずいぶん前の記事なので読んだ人も多いでしょうが、「大規模DBサーバへのLinux適用」という計測レポートがあります。
引用記事はこちら。
レポート自体はこちらです。
具体的な計測結果があるので、今更ながらKernel2. [...]

記事へ

InnoDB vs MyISAM パフォーマンス DELETEとINSERT

前回のUPDATEに続いて今回はDELETEとINSERTのパフォーマンスを比較します。
測定環境についてはこちらを参照して下さい。
・データ件数は100万件
・こちらの構造のテーブルをInnoDBとMyISAMで作成し [...]

記事へ

InnoDB vs MyISAM パフォーマンス UPDATE

そもそもトランザクションがあるエンジン(InnoDB)と無いエンジン(MyISAM)を比較して
意味があるのかと言われるとそれまでですが、一応、更新系のパフォーマンスも比較してみます。
MyISAMの圧勝が想像できますが [...]

記事へ

InnoDB vs MyISAM パフォーマンス Left Join

INNER JOINに続いて、今度はLEFT JOINのパフォーマンス比較です。
測定環境についてはこちらを参照して下さい。
・データ件数は100万件
・こちらの構造のテーブルをInnoDBとMyISAMで作成して処理速 [...]

記事へ

InnoDB vs MyISAM パフォーマンス Inner Join

副問い合わせに続いて、今度はINNER JOINのパフォーマンス比較です。
測定環境についてはこちらを参照して下さい。
・データ件数は100万件
・こちらの構造のテーブルをInnoDBとMyISAMで作成して処理速度を比 [...]

記事へ

InnoDB vs MyISAM パフォーマンス 副問い合わせ

InnoDB vs MyISAMシリーズでブログ風のテーブル設計にして、
副問い合わせのパフォーマンスを試してみました。
測定環境についてはこちらを参照して下さい。
・データ件数は100万件
・こちらの構造のテーブルをI [...]

記事へ

InnoDB vs MyISAM パフォーマンス測定環境)(ブログ風パターン)

今度はブログ系のテーブル構成になっています。
サーバ環境
HP DL350
Linux version 2.6.9-5.ELsmp (bhcompile@decompose.build.redhat.com) (gcc version 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)) #1 SMP Wed Jan 5 19:30:39 EST 2005
Intel(R) Pentium(R) III CPU family×2
cpu MHz : 1396.686
cache size : 512 KB
3GB of RAM
OSもMySQLも32bit。
MySQLは5.0.37。
1.テーブルの構造
1.1 InnoDBのテーブル
PLAIN TEXT
SQL:

CREATE TABLE IF NOT EXISTS entry (

`id`                         int(10) UNSIGNED [...]

記事へ

InnoDB vs MyISAM パフォーマンス SELECT ・・・ LIMIT N

InnoDB vs MyISAMシリーズはまだまだ続きます。
前回はこちら。
今回はLimitの件数の指定でどう変化するかと試してみます。
測定環境についてはこちらを参照して下さい。
・データ件数は100万件
・こちらの [...]

記事へ

InnoDB vs MyISAM パフォーマンス 取得件数が多い場合

なんかしつこいですがInnoDB vs MyISAMシリーズが続いています。
前回までではPrimaryKey,UniqueIndex、非UniqueIndexで1~数件を取得する
パターンが主ですが今回はそれなりの件数 [...]

記事へ

InnoDB vs MyISAM パフォーマンス PrimaryKEY、UniqueIndex、非UniqueIndex

InnoDB vs MyISAMシリーズがまだ続いています。
前回までで環境や初期化パラメータの設定が落ち着いたので
本格的にInnoDBとMyISAMのパフォーマンスを比較してみます。
測定環境についてはこちらを参照し [...]

記事へ

iBATISのキャッシュでディスクを使うなら、OSCache、EHCacheどっち?

iBATISには、キャッシュ機能があるが、メモリキャッシュはiBATISのを使うとして、ディスクキャッシュならどれがよいか比較しました。
まず、 Hibernateを参考に、同フレームワークがサポートしているキャッシング [...]

記事へ

innodb_thread_concurrencyとか 計測してみました

innodb_thread_concurrencyとかでこんなことを書きました。
・innodb_thread_concurrency InnoDB の処理を同時に実行できるスレッド数の上限値
・MySQL 5.0.8 [...]

記事へ

InnoDB vs MyISAM パフォーマンス測定環境

毎回書くのは面倒なのでこちらにパフォーマンス測定の環境をまとめます。
サーバ環境
HP DL350
Linux version 2.6.9-5.ELsmp (bhcompile@decompose.build.redh [...]

記事へ

ActiveMQのパフォーマンスを検証する(その2)

パフォーマンスを図る為にループ回数を変えつつ5回連続して実行させてみます。
5回連続実行の間、MessageBrokerのメッセージクリアせず、TestJmsServer2は順次メッセージの取得を行っています。
Test [...]

記事へ

InnoDBとMyISAMどっちが速いか? 自分で試してみました(続き)

前回からの続きで、InnoDBとMyISAMのパフォーマンス測定を続けています。
同一の環境で、同時スレッドを64,128,192,256,512と変えながら1秒間のクエリー処理数を計測しました。
初期化パラメータは前回 [...]

記事へ

InnoDBとMyISAMどっちが速いか? 自分で試してみました

InnoDBとMyISAMどっちが速いか?の続きです。
人の結果を見ているだけなのもなんなので、自分で試してみました。
計測用ツールはMySQL Performance Blogからダウンロードして、ほぼそのまま利用しま [...]

記事へ

ActiveMQのパフォーマンスを検証する

JMSによる非同期処理の実装 に引き続き、ActiveMQのパフォーマンスを検証してみたいと思います。
アプリケーションのパフォーマンスを計るため、MessageBroker とメッセージを処理するAPを別のPCで実行さ [...]

記事へ

All Close Accordion

Accordionを使った事のある人なら一度は考えた事があるかも知れません。
全てのヘッダを閉じるAccordionです。
Accordionでは、いずれかのヘッダが必ず選択されている状態になり、全てを閉じる事は出来ません。
以下のサンプルではAccordionを継承したカスタムクラスにて、全てのヘッダが閉じている様に見える状態を擬似的に作り出しています。
AccordionCustom.as
PLAIN TEXT
CODE:

package io.mx.containers {

 

import flash.events.TimerEvent;

import flash.events.Event;

import flash.events.MouseEvent;

import flash.utils.Timer;

import mx.core.Container;

import mx.core.IDataRenderer;

import mx.containers.Accordion;

import mx.containers.accordionClasses.AccordionHeader;

import mx.containers.Canvas;

import mx.controls.Button;

import mx.events.ChildExistenceChangedEvent;

import mx.events.EffectEvent;

import mx.events.IndexChangedEvent;

import mx.effects.Move;

 

public class AccordionCustom extends Accordion {

 

private var indexChanged:Boolean = false;

private var csSelectIndex:int = 0;

private var dummyHeader:Boolean = false;

 

function AccordionCustom():void {

super();

 

addEventListener(MouseEvent.CLICK, clickHandler);

addEventListener(IndexChangedEvent.CHANGE, headerChangeHandler);

 

}

 

private function clickHandler(event:Event):void {

if (event.target is AccordionHeader) {

if ((csSelectIndex == super.selectedIndex) && ! indexChanged) {

allClose();

}

}

 

indexChanged = false;

}

 

private [...]

記事へ

apacheそのまま vs mod_proxy vs squidどれが速いか

まず、「apache(素) vs mod_proxy vs squid」と大げさなのですが、リバースプロキシをつかって、単純に静的コンテンツ(画像)を返すのは、どれが速い?また、そのついでにapache(素)も測定しまし [...]

記事へ

JMS(ActiveMQ)による非同期処理の実装

ActiveMQを使ったJMSのメール送信サンプルを紹介します。
ActiveMQは下記からダウンロードが可能です。
AcitveMQ:
http://activemq.apache.org/download.html
[...]

記事へ

squidによるリバース・プロキシの設定

CentOS5.0に付属のsquidに設定をします。
バージョンは、「Squid Cache: Version 2.6.STABLE6」。
COSSも使えます。
※COSSはSquid2.6から使えるようになったCycl [...]

記事へ

mod_mem_cache vs mod_disk_cache

「mod_proxy によるリバース・プロキシの設定」で使用したマシンで、両者の性能を比較してみます。
worker MPMの設定以下のようにしました。
<IfModule worker.c>
StartServers 7
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 150
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
※メモリキャッシュの単位が、プロセス毎なので、プロセス数が7より下回らないようにしました。
■mod_mem_cache(1回目)
PLAIN TEXT
CODE:

# ab -n 1000 -c 100 http://192.168.1.118/image1/madonna.jpg

This is ApacheBench, Version 2.0.41-dev &lt;$Revision: 1.141 $&gt; apache-2.0

Copyright (c) 1996 Adam Twiss, [...]

記事へ

mod_proxy によるリバース・プロキシの設定

CentOS5.0に付属のApacheに設定をします。
バージョンは2.2.3でした。
httpd.confに「Include conf.d/*.conf」がすでに記述してあるので、conf.d配下に外部ファイルとして定 [...]

記事へ

InnoDBとMyISAMどっちが速いか? 続き

まずpreadのことですが、
MyISAMの場合、インデックスはキャッシュされますが、データはキャッシュされません。
そのためデータの読み込みがボトルネックになるということです。
ただし、MySQL5.1.4からはmma [...]

記事へ

InnoDBとMyISAMどっちが速いか?

MySQLパフォーマンスBlogに
InnoDB vs MyISAM vs Falcon benchmarks
というエントリィがあったのでチェック?してみました。
検証環境は
-------------------- [...]

記事へ

Cometを試してみる(その2)

Cometを利用してリアルタイムなチャットのシステムを作成してみます。
Eclipse3.3を起動して動的Webプロジェクトを作成します。
プロジェクト名をTomcat6Test としておきます。
test パッケージに [...]

記事へ

Cometを試してみる

Tomcat6.0よりCometが標準でサポートされました。
早速サンプルを作って試してみたいと思います。
Tomcat6.0はこちらから
開発にはEclipseを使いますが、3.2まではTomcat6.0に対応していな [...]

記事へ

Eclipse3.3をインストールする

開発中のEclipse3.3をインストールしてみる。
Eclipse 3.3:
http://download.eclipse.org/eclipse/downloads/ (3.3M7)
WEB開発に必要なプラグイン: [...]

記事へ

散財.com

一日一個エントリィすることを自分に課しているんですが、パフォーマンスチューニングネタでまじめに書いていると一日のうち1時間くらい使ってしまいます。
このところだんだん忙しくなってきて、少しだけ、へたばってきたので少しメモ [...]

記事へ

「あなたのページを最速にする14の掟」と「High Performance Web Sites」のこと

404 Blog Not Foundに、「あなたのページを最速にする14の掟」というエントリィがあって、
そこにYahoo!の(Chief Performance Yahoo!という役職)Steve Souders氏の記 [...]

記事へ

noatimeでチューニング

UNIX系のシステムでは、ファイルの持つタイムスタンプ情報に「修正時間」(mtime)、「作成時間」(ctime)、「アクセス時間」(atime)
情報があります。
touchコマンドでは-mオプションでmtimeを、-aオプションでatimeを更新できます。
ls -l で mtime、ls -lc で ctime、ls -lu で atime を表示することができます。
PLAIN TEXT
CODE:

# ls -l *.txt

-rw-r--r-- 1 root root 0  5月 13 16:50 access.txt

-rw-r--r-- 1 root root 0  5月 13 16:50 modify.txt

# touch -a access.txt

# touch -m modify.txt

# ls -lu *.txt

-rw-r--r-- 1 root root 0  5月 13 16:58 access.txt

-rw-r--r-- 1 root root 0  5月 13 16:50 [...]

記事へ