タグ

mysqlとPerformanceに関するdrivejpnのブックマーク (25)

  • MySQL 5.1のmysqldumpslowで快速チューニング - SH2の日記

    MySQL 5.1のmysqldumpslowを使うとチューニングが楽になる!という話題です。 mysqldumpslowはもともとMySQLに付属しているツールで、スロークエリログを集計してくれるものです。これ自体はMySQL 5.1で特に変わったところはありませんが、スロークエリログ体の方が機能強化されているため、組み合わせるとなかなか便利になっています。MySQL 5.1におけるスロークエリログの主な機能強化は以下の三点です。 long_query_timeに1秒未満の値を設定できるようになった。 出力先を設定できるようになった。 これらの設定をオンラインで変更できるようになった。 これでどうなるかというと、MySQLの性能分析をしたいと思ったときに、サーバを止めずにその場で mysql> set global slow_query_log = 1; mysql> set glob

    MySQL 5.1のmysqldumpslowで快速チューニング - SH2の日記
  • スワップサイズをゼロにしてはいけない

    先月発売された書籍「Linux-DBシステム構築/運用入門」は、なかなか上々の売れ行きとなっているようです。Amazonではしばらく「1-2ヶ月待ち」の状態が続いてしまっていたのですが、最近になってようやく解消され、容易に入手できるようになっているようです。Amazonの在庫切れ問題がひと段落したところで、これからは書籍のサポート的な情報を書いていくことにします。 まず、書を購入された皆さまありがとうございました。結構な数の方がBlogやTwitter等で、このをほめてくださっていることに大変感謝しています。まだ自体の認知度が低い(存在自体を知らない顧客も多い)ので、普及活動をしつつ、これからも読者の期待に応えられる記事を書いていきたいと思っています。 最初は、よく見かけることの多い「メモリ管理」の話題を取り上げようと思います。第12章では、メモリ管理とスワップ領域に関する解説をして

  • InnoDBの超高負荷更新処理安定性

    最近は沢山CPUコアのある高速なサーバーとか高回転数のHDDが沢山付いたRAIDストレージとか、もの凄く更新系の負荷がかかるベンチマーク(「db_STRESS」 by Dimitriさん)とかがあるので、InnoDBの構成の更新系での様々な限界が見えてきています。 まぁ、現実的にそのような限界を突破する必要のあるシステムがあるかどうかは判りませんが、将来のためにも色々アイデアを加えてXtraDBを作成してきました。今、大幅な変更無しに実装できる範囲のオプションが揃ってきたので高負荷更新系処理のチューニングをXtraDBベースで一旦書き出してみます。 今回もサクサクとポイントだけ。 (IOスレッドを増やす とか、他でも語られている既知のものは省略します。) 今回のチューニングの方針は、 「mutexやrw_lockなどの競合をできるだけ避ける」 ということと 「あまり沢山溜めてはイケナイもの

  • データベース負荷テストツールまとめ(1) - SH2の日記

    Webシステム開発において性能試験を行う場合、hp LoadRunnerやApache JMeterといったウェブブラウザをエミュレーションしてくれる負荷テストツールを用いるのが定番だと思います。そんななか、たまにデータベース単体での性能を測ってほしいと頼まれることがあるので、そうした便利なツールはあるのかなと思って調べてみました。 データベースに対する負荷テストツールは探すとたくさん出てくるのですが、案件で使用しているRDBMSに対応していなかったり、トランザクション仕様が希望と異なっていたり、微妙に作りが悪かったりと、ニーズに合致したツールはすぐには見つかりません。そんなときにこのエントリがツール探しの参考になればと思います。 pgbench 対応RDBMS:PostgreSQL 対応OS:Linuxなど 言語:C 作者:石井達夫氏 ライセンス:独自(BSDライセンスに近い) トランザ

    データベース負荷テストツールまとめ(1) - SH2の日記
  • mysql と drizzle の負荷テストツール「skyload」が凄い! - kazuhoのメモ置き場

    tmaesakaさんがやってくれました。 ずいぶん前からSQLのベンチマークを測定するのに使いやすいプログラムないかなーと思ってました。個人的にはmysqlslapというのを使ってたのですが、幾らか気に入らない所があったりコマンドラインオプションが複雑で毎回 --help を読んだりしていました。余計な機能なんかなくて、指定したSQLを高速にくりかえしてくれる物が欲しいなぁって思ってたんです。 とあるIRCでこの前、tmaesakaさんから「いま作ってる」という話を聞いて、いろいろ要望を言ってたんですが、ついさっきチュートリアルが公開されました。速いw 名前はskyload。とても小さく、実装コードだと800行程度です。しかもオプションが少ないので使い方が単純です。試しに適当な INSERT の速度を測ってみました。 $ skyload --server=localhost --mysql

    mysql と drizzle の負荷テストツール「skyload」が凄い! - kazuhoのメモ置き場
  • 新書籍「Linux-DBシステム構築/運用入門」

    Linux上で「高速で、落ちない」DBサーバーを構築するための技術解説をした書籍を出版します。タイトルはストレートに「Linux-DBシステム構築/運用入門」です。 9月17日発売ですが、ジュンク堂など一部の書店ではすでに入荷しているそうなので、見かけたらぜひ読んでみてください。章構成は以下の通りです。 第1章 論理ボリュームマネージャ(LVM)を活用する 第2章 Heartbeatによるクラスタ環境の構築 第3章 DRBDによるネットワークミラーリング(前編) 第4章 DRBDによるネットワークミラーリング(後編) 第5章 高可用DBサーバーの構築 第6章 現場で使われる高可用構成 第7章 DBサーバーのパフォーマンス概論 第8章 インデックスのチューニング(前編) 第9章 インデックスのチューニング(後編) 第10章 DBサーバーのハードウェア選定 第11章 SSDの効果とアプリケーシ

  • MySQLのベンチマークを用いたIntel X25-M SSDの評価 - SH2の日記

    X25-M、SSDで検索してくる方が非常に多いので、ブログ内のSSD関連記事をリストしておきます。 MySQLのベンチマークを用いたIntel X25-M SSDの評価 (記事) SSDの真の性能を引き出す MySQL 5.1.38 InnoDB Plugin (2009/09/07) 先週末IntelのSSD、X25-Mが突然7,000円ほど値下がりしたので、ついに我慢できず手を出してしまいました。初めてのSSD導入です。 SSDのベンチマーク記事は国内・海外問わずたくさんありますが、実際にデータベースを乗せて計測した記事はそれほど多くありません。そこで、先日ご紹介したtpcc-mysqlを用いてベンチマークテストを行ってみました。 データベースサーバ OS : Windows XP SP3 32bit CPU : Core2 Duo T7300 2.0GHz (EIST OFF)

    MySQLのベンチマークを用いたIntel X25-M SSDの評価 - SH2の日記
  • 限界までMySQLを使い尽くす!!

    どこまで出来るか?!やれるところまでやってやるぜ!!と、威勢が良いのは若い間だけの話。オトナのオトコは、攻めるときはとことん攻めるが自らの限界もわきまえて賢く振る舞うのがスマートってものである。というわけで、今日はMySQLのいろいろな限界についてまとめてみる。皆さんも是非MySQLの限界を知り、MySQLをもっとスマートに使って頂きたい。 SQL文の最大長 MySQLサーバーが実行出来るSQL文の最大長は、max_allowed_packetシステム変数で表される。max_allowed_packetの最大値は1GBである。max_allowed_packetの値はセッションごとにも設定可能なので、デフォルトではそこそこの値(16MBなど)に設定しておいて、必要に応じて大きな対を使うと良いだろう。 データベースの個数 データベースオブジェクトの個数に制限はない。データベースオブジェクトは

    限界までMySQLを使い尽くす!!
  • InnoDB Plugin 1.0.4 - InnoDB史上極めて重要なリリース

    時間の今日、InnoDB Pluginの新バージョン1.0.4がリリースされました。このバージョンでは、「バイナリログを有効にするとグループコミットが効かなくなる問題」が修正されています。ほとんどの環境にとって極めて効果の高い修正です。ほかにもI/Oスレッドの多重化(同様のものがMySQL5.4にも搭載)など効果的な修正が行なわれています。 InnoDB PluginはまだGA(安定版)ではないので、品質面では標準搭載されているInnoDBよりも落ちます。ただしMySQL Enterpriseサブスクリプションを買っている方であれば追加費用無しでInnoDB Pluginのサポートを受けることができるので、お気軽に試してみて頂ければと思います。 グループコミット問題修復の効果のほどは、一目瞭然なので図を見た方が分かりやすいでしょう。下図は、mysqlslapで、複数のコネクションから並

    InnoDB Plugin 1.0.4 - InnoDB史上極めて重要なリリース
  • Kazuho@Cybozu Labs: MySQL のクエリ最適化における、もうひとつの検証方法

    « メッセージキュー事始め with Q4M | メイン | フレンド・タイムライン処理の原理と実践 » 2008年06月09日 MySQL のクエリ最適化における、もうひとつの検証方法 EXPLAIN を使用して MySQLSQL を最適化するというのは、良く知られた手法だと思います。しかし、EXPLAIN の返す結果が、かならずしもアテになるわけではありません。たとえば、以下のような EXPLAIN を見て、このクエリが最適かどうか、判断ができるでしょうか。私には分かりません。 mysql> EXPLAIN SELECT message.id,message.user_id,message.body FROM message INNER JOIN mailbox ON message.id=mailbox.message_id WHERE mailbox.user_id=2 OR

  • Kazuho@Cybozu Labs: MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話

    « フレンド・タイムライン処理の原理と実践 | メイン | MySQL の ORDER BY を高速化 » 2008年06月12日 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 フレンド・タイムライン処理の原理と実践 の続きです。 先のエントリでは、プルモデルの速度が当初予測していたよりも遅かった (というより SQL レイヤでのオーバーヘッドが大きそうだった) ので、MySQL Internals メーリングリストで質問したりしながら、C++ で直接 InnoDB にアクセスするようなコードを書いてみました。 タイムライン構築速度 タイムライン/秒 SQL そしたら、10倍以上高速に! ベンチマークを perl ベースのものから mysqlslap に変えたのですが、プッシュモデルの 2/3 の速度が出ています。これなら、データサイズが約 1/10 にな

  • Kazuho@Cybozu Labs: MySQL の ORDER BY を高速化

    « MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 | メイン | なんとなくリフレクション in C++ » 2008年06月20日 MySQL の ORDER BY を高速化 Pathtraq の拡張にむけて、いろいろ技術的な可能性を調査していると、MySQL の ORDER BY に負荷がかかっていることが分かりました。他にもボトルネックはあるのですが、ここは比較的最適化しやすそうだったので、試しに書いてみました。 mysql51-sort-opt.patch やっていることは、ソートルーチンのベタな最適化です。ORDER BY 句によって悪名高き filesort が実行される場合に、最大30%〜50%ほど高速に動作するようになりました。ただ、自分が書く類いのクエリだと、質的には top n sort を実装すべきなので、どうしたものかと思っていま

  • Kazuho@Cybozu Labs: ウェブサービスの SSD 化について話してきました

    « 開発しているウェブアプリケーションフレームワーク NanoA について話してきました | メイン | なぜサイボウズ・ラボで働くのか » 2008年11月27日 ウェブサービスの SSD 化について話してきました 日 (11/27) 開催の Shibuya Perl Mongersテクニカルトーク#10 で、ウェブサービスの SSD 化について話しました。スライドを置いておきますので、開発しているウェブアプリケーションフレームワーク NanoA について話してきました とあわせてご覧いただければ幸いです。 末筆となりますが、Shibuya.pm の実行委員(?)の方々、ありがとうございました&おつかれさまです。 (まだ終わってないけど ^^;)

  • Kazuho@Cybozu Labs: ウェブサービスにおけるダメージコントロール (MySQL のスロークエリを自動的に kill する方法)

    « ウェブサービスにおける SSD 導入にむけて〜検索サービスの可能性 | メイン | ウェブアプリケーションのインストーラジェネレータ » 2008年11月04日 ウェブサービスにおけるダメージコントロール (MySQL のスロークエリを自動的に kill する方法) 適切な設計によって、信頼性の高いソフトウェアやサービスを構築することが重要なのは、言うまでもないことです。一方で、なんらかの原因で問題が発生した際に、障害を局所化し、損害を小さくい止める「ダメージコントロール」という概念もあります。ウェブサービスの場合も、特に検索や集計といった、計算量がクエリの種類によって大幅に異なるようなケースでは、次善の策として後者の手法が有効に働く場合もあるかと思います。 ともかくそういうわけで、MySQL のスロークエリを強制終了するようなタスクを書きやすくする Perl モジュール MySQL

  • moved

    This site has been moved. Please visit the new site.

  • Phoronix Test Suite

    The Phoronix Test Suite is the most comprehensive testing and benchmarking platform available that provides an extensible framework for which new tests can be easily added. The Phoronix Test Suite is designed to effectively carry out both benchmarks in a clean, reproducible, and easy-to-use manner. Features Easy-To-UseExtensible ArchitectureStatistical AccuracySystem MonitoringMulti-PlatformAutono

  • SDC SQUARE April 2009

    昨年12月8日、MySQL5.1がリリースされました。一般提供開始後わずか10日で25万ダウンロードを記録し、デベロッパーの関心がひときわ高い製品です。今回、MySQLのパフォーマンスチューニングのポイントを、サン・マイクロシステムズ株式会社の島拓也さんと奥野幹也さんにうかがいました。(取材:SDC編集局) 編集局:現在のお仕事について教えてください。 奥野さん:私はMySQLの有償版のサポート業務に携わっています。お客様からいただくいろいろな問い合わせ、たとえば、MySQLの使い方や仕様・動作の細かい質問にお答えしています。トラブルシューティングやパフォーマンスチューニングなども含まれます。 島さん:私はx86サーバの販売を担当しています。x86サーバの差別化要因としてMySQLなどの上位のアプリケーションを含めたソリューションのご提案が主な仕事の内容となります。 編集局:サポートチーム

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

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

    やってはいけない!!MySQLに悲鳴をあげさせる10の方法
  • Distribution Awareness - MySQL Clusterにおけるスキーマチューニングの定石

    MySQL Clusterはデータノードが増えると性能が低下する??? そのような噂を聞いたことがないだろうか。この噂は事実を含んでいる面もあるが、殆どの場合は適切にスキーマを設計していないことが原因で起きる。実はMySQL Clusterはその性能を遺憾なく発揮するためにはスキーマの設計が非常に大事なのである。 MySQL Clusterは複数のデータノード(ノードグループ)に対して主キーの値に基づいて行単位で分散されている。主キーに偏りがなければ各データノードに格納される行数は均等になる。つまり、MySQL ClusterはSharding(アプリケーションパーティショニング/Level2分散)を自ら行っていると言えるだろう。 MySQL Clusterでは主キーによるルックアップは、どのデータノードにデータが格納されているかが主キーから分かるため非常に高速である。逆に、主キー以外のキ

    Distribution Awareness - MySQL Clusterにおけるスキーマチューニングの定石
  • ハードディスク速度評価 | Carpe Diem

    今までコストと容量を重視して、SATA 7200RPM のハードディスクだけを使っていたけれど、試しに SAS 15000RPM のハードディスクのサーバを導入してみることにした。用途は、Flickr のパクリで Slave データベースサーバとして使う。 今回比較した s1 と s2 のスペックは、次のとおり。 s1: DELL R300, Xeon L5410  @ 2.33GHz, 8GB RAM, SAS 300GB 15000RPM s2: DELL R200, Xeon L3210  @ 2.13GHz, 4GB RAM, SATA 160GB 7200RPM 来なら同じスペックのマシンで比較したところが仕方がない。 bonnie++ で速度面を評価してみた結果は、次のとおり。 s1 SATA Version 1.03e       ——Sequential Output——