『 コメント欄も要読。php-wオプションの紹介。文字列は変数埋め込みより「'」結合のほうが速いみたい。あと否定的なコメントが目立つ。既存のコードを書き換えるには利益が少なすぎるみたい 』
一昨日から今日まで3日間の日程で開催されていた、MySQL Conference & Expo 2007に行ってきました。日帰り圏内どころか、自転車圏内で、こういうカンファレンスがあるのは、素晴しいです。 詳細は、随時アップされるであろうプレゼン資料と、Planet MySQLに大量の報告があります(全部英語ですけど)。 個人的に注目していたのは、Digg.com、Flickr.comとYoutube.comのDB周りアーキテクチャの...
Intel / AMD の EM64T / AMD64 と Linux の x86_64 は昨今の WEB + DB アプリケーションにとっては追い風だよなと思う。 なぜか。サーバーにメモリがたくさん積めるから。 まあ i686 でも PAE で Linux で 64GB まではいけるんだけれども (PAE を有効にすると PTE のオーバーヘッドがちょっと大きくなって TLB キャッシュミス時の性能が低下するらしい。http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34803&...
『 ルディコープ社のウェブ開発リーダー、カル・ヘンダーソン(CalHenderson)はFlickrのバックエンドを2005年のヴァンクーヴァーでのPHPAssociationでかなり明らかにした 』
世間では PHP が、Perl が、と盛り上がっているようですが空気を読まずまたカーネルの話です。今回はページキャッシュについて。 /dev/shm に参照系DBを持っていくと I/O 負荷が激減した件(当たり前だけど) :: Drk7jp で、ディスク上にあったファイルを /dev/shm (tmpfs) に移したら I/O 待ちがなくなって負荷がさがった、ということなんですがおそらくこれは tmpfs に置く必要はないか...
原稿を書けと言われて、オープンソースマガジンを二号ほど続けて買ったのですが、オープンソースに明るくない僕にも意外と面白くて、夢中になって読みあさりました。 今日は先月号を重点的に読んだのですが、先月号のテーマは、ズバリ、負荷分散。 ライブドアとGREEの方がそれぞれの負荷分散メソッドをかなり詳細まで語っているのですが、結論から言うと、こういうこと...
komagataです。 Webアプリケーションのパフォーマンスの大半はデータベース、特にインデックスの使われ方にかかっている気がします。 仕事でもMySQLをよく使いますが、MySQLでは1テーブルに付き1インデックスしか使われません。PostgreSQLなどと比べてそのことが気になってMySQLでのパフォーマンスチューニングに全く自信が持てませんでした。 オライリーの実践ハイパフォーマン...
MySQLサーバに限らず、大量のアクセスを処理するデータベースやアプリケーションサーバ群に対して、それぞれの環境に合わせたチューニングを行うことは企業システムにおいて必須の項目です。しかし「チューニングすべきパラメータとその最適値をどのように決定すればよいのか」、また「実際にチューニングを施すことによってどの程度効果があったのか」を...
データベースやアプリケーションサーバといったOSSミドルウェア適用における課題は、もはや性能ではない――。 独立行政法人情報処理推進機構(IPA)の委託で、大手SIベンダやハードウェアベンダなど9社が中心となって2004年から実施している「OSS(オープンソースソフトウェア)性能・信頼性評価プロジェクト」の第4回目の成果が発表された。PostgreSQLやMySQLといったOSSの...
MySQL の MyISAM テーブルの最大サイズは通常4GBです。(OSのファイルシステムの制限が影響する場合はその限りではありません。) あるテーブルの最大サイズを調べるには、show table status を使ってみることができます。 mysql> show table status like 'feed' \G *************************** 1. row *************************** Name: feed Type: MyISAM Row_format: Dynamic Rows: 201456 Avg_row_length: 189 Data_length: 38121168 Max_data_length: 429496...
私の仕事は、DBエンジニアです。望んでデータベースの世界へ来たわけではなく、辞令によって、入社1年目の私はOracleと向かいあうことになりました。当初、私はデータベースが面白くありませんでした。「ネットワークは花形、データベースは日陰」という言葉も囁かれていました。今でも囁かれているかもしれません。 ですが、しばらくデータベースを触っているうちに、こ...
『 Webサイト・パフォーマンスチューニングに関する情報まとめ。Apache、MySQL、IIS、ログ、モニタリング、JavaScript、HTMLなど。 』
前回の負荷MAX、サーバ陥落寸前ですよ騒動のとき、最終的には自分で最適化する必要があるのかも知れない…と思っていたときに見つけたページです。 MySQLやPHPで同じ処理をする際にどういうふうにすればより軽いのか、という基本的な対策ばかりを集めてあります。どれもこれもあちこちで既出のものばかりですが、1カ所にまとまっているので読みやすいです。中には知らない...
さて、移行記も #3 となりました。今回は先日作業を終えたはてなブックマークの移転について。 旧サーバールームからさくらインターネットのiDCへのサーバー移転作業にもだいぶ慣れて来たところですが、これまでは比較的はてな内の他サービスとの連携が疎になっていたり、負荷がそこまで高くないものであったりと移行しやすいものから持っていってましたが、そろそろ難...
memcacheに比べるとずいぶん遅いです。最後にtmpfsとCache_Liteを使った場合、なのですが… tmpfsを使うと、64MBの割り当ての場合10万件ファイルを作成することができませんでした(しかもHEAPテーブルよりも遅い)。 それ以外にもPostgreSQLでテーブルスペースをtmpfsにするとどうなるかをチェックしたりもしてみました。テーブルとインデックスの領域をtmpfsのテーブルスペースに割り当...
あくまで憶測で仮説でしかないんですが。 MySQL のストレージエンジンのうち代表的な二つ、MyISAM と InnoDB はよく MyISAM: Read は速いけどテーブルロックのため並行性が低い。運用が簡単。 InnoDB: MyISAM より Read は遅いけど並行性が高い 。行レベルロックなので。あとトランザクションや外部キー制約。運用が MyISAM よりちょっとめんどくさい。 という区別がされます。ここから転じ...
コマンドを実行して下記のようなエラーや修復を促すメッセージが表示された場合は、早急に対処する必要があります。 Data records: 42 Deleted blocks: 0 myisamchk: warning: 1 clients is using or hasn't closed the table properly - check file-size - check key delete-chain - check record delete-chain - check index reference - check data record references index: 1 - check dat...
[http://d.hatena.ne.jp/yamaz/20061013:title=前回のシリアル/パラレル処理の視点]に立ってコネクションプールについて考えてみたい. コネクションプールが遅いとは [http://d.hatena.ne.jp/naoya/20060912:title=はてなおやさん]が考察しているように 普通にmod_perl でコネクションプールを素直に張るとコネクション数が爆発する. 図にすると図1のような感じで個々のapacheがコネクションを複数持つので,...
1)更新する可能性がある項目は主キーにしない(主キーの更新はコスト高い!) 2)主キーの項目長はなるべく小さく(全部のインデックスページの容量に悪影響!) 3)できる限り主キーでアクセスする(副次インデックスにくらべて倍は速い!) トランザクション系テーブルに主キーとして、AUTO_INCREMENTを使うのは100%ではないが、安全策と言えます。 マスター系のテーブルには自...
前回は、絞込み条件(WHERE条件)の有無による結合処理や、マテリアライズド・ビューなどOracleの機能を利用した結合処理のチューニング手法を説明しました。今回は、WHERE条件がないDML(INSERT、DELETE、UPDATE)処理を高速化するチューニング手法について説明します。 ■MERGE文を利用する MERGE文はOracle9iから利用できるSQLで、データが存在している場合には既存データを更新(UPDATE...