MySQL のチューニング、と言った場合には、サーバーパラメータの調整や EXPLAIN コマンドを利用したクエリ実行計画の最適化が話題に上ることが多いです。しかし、発行する全ての SQL について、いちいち EXPLAIN コマンドを使って確認していては、いくら時間があってもたりません。チューニングを効率的に進めるには、まず、ボトルネックとなっている SQL クエリを特定し、次にその最適化を行うべきです。 ではどのようにして、ボトルネックを特定するのか。MySQL Conference & Expo 2009 のキーノートにおいて Mark Callaghan 氏は、Google では SHOW PROCESSLIST コマンドを使った統計的アプローチを使っていると述べていらっしゃいます (参照: MySQLConf 09: Mark Callaghan, "This is Not a
OSS iPedia 記事 オープンソース情報データベースシステム(OSS iPedia) は、2013年5月17日(金) をもちまして運用を終了いたしました。
tmaesakaさんがやってくれました。 ずいぶん前からSQLのベンチマークを測定するのに使いやすいプログラムないかなーと思ってました。個人的にはmysqlslapというのを使ってたのですが、幾らか気に入らない所があったりコマンドラインオプションが複雑で毎回 --help を読んだりしていました。余計な機能なんかなくて、指定したSQLを高速にくりかえしてくれる物が欲しいなぁって思ってたんです。 とあるIRCでこの前、tmaesakaさんから「いま作ってる」という話を聞いて、いろいろ要望を言ってたんですが、ついさっきチュートリアルが公開されました。速いw 名前はskyload。とても小さく、実装コードだと800行程度です。しかもオプションが少ないので使い方が単純です。試しに適当な INSERT の速度を測ってみました。 $ skyload --server=localhost --mysql
MySQL InnoDB Pluginのデータ圧縮機能の続きです。前回はInnoDB Pluginの独自機能であるデータ圧縮の仕組みを解説し、Wikipedia日本語版のデータが約半分にまで圧縮されることを確認しました。今回はデータ圧縮によって性能がどのように変化するかを、実際にベンチマーク試験を行って見ていきます。 試験の方針 データ圧縮による性能への影響は、以下の二点が考えられます。 メリット:データサイズが小さくなるため、ディスクI/Oが減る デメリット:圧縮・展開の処理が行われるため、CPU負荷が高くなる そこで、これらの特徴がよく分かるように試験パターンを工夫します。Wikipedia日本語版のデータはInnoDB上でおよそ5GBありますが、まず狭い範囲に絞って読み取り処理を行うことでディスクI/Oがあまり発生しないようにします。これでCPU負荷の傾向を確認することができます。次
これまで数回に渡ってInnoDB Pluginのエントリを書いてきたので、InnoDB Pluginを試してみたくなったという方がいるかもしれませんね。そこで本日はそのような方がいることを期待して、InnoDB Pluginを組み込んだMySQLの簡単なビルド手順をご紹介します。本手順には以下のような特長があります。 MySQLの長いconfigureオプションを覚えなくてよい。というかMySQLが何なのか知らなくてもできるレベル RPMができるのでインストール/アンインストールが簡単。試してみて飽きたらアンインストール可能 今後バージョンが上がってもおそらく手順は変わらない コピペでおk 対象OSはRed Hat Enterprise Linux 5とCentOS 5です。 一般ユーザでrpmbuidコマンドが使えるようにする(初回のみ) $ cd $ echo "%_topdir $H
今回は、データベースとして広く普及しているMySQLを例に、Amazon EC2上でMySQLのレプリケーション機能を用いてMaster-Slave構成を作り、そのSlaveを実に手軽に追加できるようにするための手順について説明します。 MySQLのレプリケーション機能でWakameは本領を発揮する 一般的に、MySQLのレプリケーションとは、Masterと呼ばれるデータの原本1つを、可能な限り同期複製させることが出来る機能のことを言います。複製されたものはSlaveと呼ばれ、1つのMasterに対して複数接続することが可能です。 より複雑な構成も取れるのですが、基本的なトポロジはスター型となります。レコードの読み出しクエリであれば、各Slaveへ分散させて性能を向上させることが出来ます。そのため、サイトのトラフィックが増加して来た時、まず最初に行われる対策として良く利用される機能でもあり
などという心配はしないで頂きたい。至って快調にマイペースで筆を進める毎日を送っている。ただしブログにではなくMySQL関連の書籍として。ブログは書籍の執筆が完了してから本格的に再開しようと思うので、その際にはまた是非お付き合い頂きたい。書籍も頑張って書いているので是非よろしくお願いしたい。 今書いてるのはこんな内容のものだ。原稿からプチ抜粋。 クエリキャッシュのヒット率はどのように計算すれば良いのでしょうか?ここで改めて説明するために、上の一覧ではクエリキャッシュについては敢えて省略しましたが、クエリキャッシュのヒット率は次の計算式で求めることが可能です。 Qcache_hits / (Qcache_hits + Com_select) Qcache_hitsは文字通り、クエリキャッシュにヒットして、キャッシュからクライアントへ結果が送信された回数です。キャッシュミスが発生すると、MySQ
InnoDB Pluginの面白い機能の一つに、データ圧縮機能があります。今回はその仕組みと効果について見ていきたいと思います。まずはグラフをご覧ください。 これはWikipedia日本語版のデータベースをダウンロードし、記事本文の格納されているtextテーブルをMySQL 5.1+InnoDB Plugin 1.0の環境にロードしたものです。 元テキスト:今回利用したデータは2009/06/21版のものです(jawiki-20090621-pages-articles.xml.bz2)。元テキストはここからXml2sqlを用いてタブ区切りテキストを取り出したものを用いています。このファイルには1,167,411件の記事が格納されており、容量は3,436MBとなっています。 元テキスト gzip:元テキストをgzipコマンドで圧縮したものです。 MyISAM:記事をMyISAMのテーブルに
先日「MySQL4.0からのバージョンアップ時のハマリ点〜不正な日付の扱い〜」というエントリーで、MySQL 4.0 以前では日付型に「どの月でも "31"日までの日付を登録できる」ということを紹介しました。併せて、MySQL 5.0以降でも sql-mode に ALLOW_INVALID_DATES を指定すれば従来どおりの「2月30日」や「2月31日」が登録可能であることも紹介しました。 ではこれらの「不正な」日付は処理の中ではいったいどのように扱われるのでしょうか。足し引きの計算はできるのでしょうか。 試してみました。 結論は、 ・その月の日を超えた部分は翌月の 1日、2日、、として扱われる 例:6月31日→7月1日 (閏年でない)2月30日→3月2日 以下、試した足跡です。なお今回はたまたま手元の使いやすい環境にあった MySQL 5.0.45 を使用しました。 データをつくる
最近 RDBMS のトリガーを色々書いているのですが、知らない人にトリガーが何かいちいち説明するのに簡単な例はないかな、というのと、MySQL の処理速度はトリガーによってどの程度変化するか、ということを確認するために、以下のような実験を行ってみました。 InnoDB はしばしば、「SELECT COUNT(*) が遅い!」と批判されます。では、トリガーを使って行数を別のテーブルにキャッシュすればいいのではないでしょうか? 以下のように、極めて小さなテーブル t1 を作り、その行数を t1_cnt にキャッシュしてみることにします。 mysql> create table t1 ( -> id int unsigned not null primary key auto_increment, -> v int unsigned not null -> ) engine=innodb
binlog の設定等によって大きく変わると思うので要注意ですが、テストによっては、これぐらい差が出ます。 hdparm -W trx_commit 秒 0 0 25.492 0 1 281.078 1 0 24.138 1 1 67.051 測定環境は MySQL 5.1.35; linux 2.6.18; x86_64。 テーブルのスキーマは、 CREATE TABLE `hoge` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `text` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=500001 DEFAULT CHARSET=utf8;mysqlslap のパラメータは、 mysqlslap -c 20 -i 5000 -q '
低価格なPCサーバ1000台で1日6億PVをさばく 「モバゲータウン」(以下、モバゲー)といえば、誰しも「中高生に絶大な人気を誇る携帯サイト」という認識ぐらいはあるだろう。ゲーム、ニュースに小説、占いなどのコンテンツ、アバター(仮想キャラクター)を装ったSNSコミュニケーション、ディー・エヌ・エー(以下、DeNA)が運営するショッピングやオークションサイトなどが利用できる、携帯電話向けの総合ポータルサイトだ。 DeNAのポータル事業本部 システム部 部長、武部氏 モバゲーは2009年5月現在で会員数1419万人、月間ページビュー(PV)は約183億を誇る。つまり、1日当たり6億PVである。さぞかし大掛かりなシステムを運用しているのだろうと想像してしまうが、意外にそうではない。 DeNAポータル事業本部 システム部の部長、武部雄一氏は「モバゲーのシステムは、比較的低価格なPCサーバ機1000
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
{{#tags}}- {{label}}
{{/tags}}