ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2009-03-31

MySQLのEXPLAINを徹底解説!!

以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。

2009-03-25

なぜMySQLのサブクエリは遅いのか。

よくMySQLはサブクエリが弱いと言われるが、これは本当だろうか?半分は本当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。

EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。

2009-03-22

DBT-2によるベンチマーク手順

DBT-2とはTPC-Cライクなオープンソースのベンチマークソフトで、OLTP系の負荷を擬似的に作り出すように設計されている。細かい更新系の処理を測定したい時には便利なベンチマークツールである。しかしながら、DBT-2の実行手順は多少面倒くさく、さらにREADMEには偽の(?)情報まで含まれている上にDBT-2の実行手順はあまりWeb上では解説されていない。そこで、今日は簡単ではあるがDBT-2によるベンチマークのやり方を紹介しよう。(以下の例では利用するデータベースをMySQL、DBT-2のバージョンを0.40であると仮定している。)

2009-03-19

MySQL Cluster 7.0.4 beta has been released

ナニッ!!7.0??そんなの聞いてないよっ!まじかよっっっ!!!

と思った方ごめんなさい。実はMySQL Cluster 6.4はMySQL Cluster 7.0にバージョンが変更されたのである。従って7.0.4は6.4.4の代わりにリリースされたということになる。MySQL Cluster 7.0.4のリリースノートはこちら。

http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-news-5-1-32-ndb-7-0-4.html

Removing Haloscan

BloggerからTrackbackを飛ばそうと思ってHaloscanを使っていたのだが、Haloscanにはコメント機能を置き換えるというオマケまでついており、最近コメント機能の調子が悪いのでどうしたものかと思っていた。そもそもTrackbackを飛ばすこともそれほど多くないし、飛ばしたところでCNetなどはスパム対策としてHaloscanからのTrackbackを受け付けてくれないようである。以下、CNetの説明から抜粋。

スパムトラックバック対策として、トラックバックで指定されるURLとPingを打ってきたサーバのアドレスが一致するかどうかを確認し、違う場合はトラックバックを受けない仕組みとなっております。このため、ご利用のサービスやソフトウェアの種類によってはトラックバックができない場合がございます。ご了承下さい。

HaloscanとBloggerのサーバのアドレスは異なるので、Haloscanはデフォルトではじかれてしまうわけである。編集部に問い合わせれば載せてくれるようだが、毎回問い合わせを行うのも面倒臭いし手間を掛けても申し訳ない。

というわけでHaloscanの利用を停止しよう!と思ったわけであるが、このHaloscanというヤツはなかなか取り除くのが面倒なのである。

2009-03-18

パーソナルスーパーコンピューター

オトコはいつの世もロマンを求めている。もし幸運にも大金を手にすることが出来たら・・・
  • フェラーリやポルシェなどの高級車を買う。
  • クルーザーを買う。
  • 豪邸を建てる。
  • 別荘を買う。
  • 競走馬を買う。
  • 毎日ゴルフ三昧。
などなど、大金があれば大抵のロマンは手に入ってしまうわけである。このような一般的なロマンもいいが、ギークたるものそのような軟派なことを考えてはいけない。もし俺が大金を手にしたならばこれを買うだろう。

Using filesort

去年ソートに関する記事を書いたが、今日はその続きである。

MySQLでEXPLAIN SELECT...を実行するとExtraフィールドでよく見かける「Using filesort」という文字列。Filesortって一体なんだろう?と思ったことはないだろうか。単刀直入に言ってFilesortの正体はクイックソートである。

2009-03-17

MySQLのプロンプトを変更する。

MySQLのCLI(コマンドラインインターフェイス)を利用しているとおなじみの mysql> というプロンプトがあるが、実はこれは変更が可能である。MySQL CLIを利用している最中なら、promptコマンドを実行すれば良い。例えば次のように。

mysql> prompt \U [\d] >\_
PROMPT set to '\U [\d] >\_'
mikiya@localhost [test] > 

2009-03-16

爆速SSD Fusion-io ioDrive Duo現る。ただしインターフェイスはPCI Expiress

PC Watchの記事で

Fusion-io、読み取り1.5GB/secの世界最速SSD 〜 PCI Express接続で最大容量1.2TB

というニュースを見かけたのだが、この製品がなんとも凄い。

シーケンシャルリードは1.5GB/sec、シーケンシャルライトは1.4GB/secというからまさに爆速!!最近人気のインテル製SSDでもシーケンシャルリードが250MB/sec、シーケンシャルライトは170M/secぐらいだからまさに桁が違う。ただしこの製品、インターフェイスはPCI Expressであり、残念ながらノートPCでは利用出来ない。MacBook Proでウハウハ快適生活!!は出来ないわけである・・・残念。

2009-03-15

自動車業界の変遷予測

最近はホンダのインサイトがとても人気を博しているようである。プリウスも依然として人気が高いし、その他のハイブリッド車(エスティマなど)も人気だ。しかし、このハイブリッド車にはとても違和感がある。

2種類も動力源を搭載したら重くなるし
製造コストも上がってしまうのではないか?

燃費が良くなるのは確かだが、産廃物が増えることから必ずしもエコではないだろう。ちなみに、Yahoo! Japanの自動車カタログによると、エスティマエスティマハイブリッドでは車重が200kgも違う。もちろん後者の方が重い。バッテリーを搭載するだけでこれだけの重量差が出てきてしまうのである。

2009-03-12

Macユーザーはcurlでゴッソリ画像をゲット

カナ速 【339枚】美しすぎて即壁紙決定な画像に年甲斐もなく反応してしまった。一部俺の趣味とはそぐわない画像もあるが、壁紙にしたい!と思うものも結構ある。しかし399枚もの画像をチマチマとWebブラウザーで保存するのは面倒臭い。そんな時役立つのがcurlコマンドだ。curlコマンドはMacOS Xに標準搭載されている。上記のページの画像をごっそり頂くには次のようにコマンドを実行すれば良い。

curl -O http://blog-imgs-29.fc2.com/o/n/l/onlinegameinside/2009311000[001-399].jpg

ミソは-Oオプションを指定すること(ファイルを保存するためのオプション)と[001-399]という部分で連番を生成しているところだ。これならコマンド一つで399枚の画像をゲット出来るので楽ちんというわけである。

curlコマンドはもちろん他のOS用もあるので、使いたい人はインストールするといいだろう。

cURL
http://curl.haxx.se/

2009-03-11

MySQLレプリケーションを安全に利用するための10のテクニック

MySQLのレプリケーションは非常に簡単に使える割には応用の幅が広いので非常に人気のある機能の一つである。レプリケーションの応用分野は例えば、
  • バックアップ
  • 参照系の負荷分散
  • HA(高可用性)
  • ディザスタリカバリ(サイト間レプリケーション)
  • BI(レポーティングetc)
という風にとても多くのバリエーションがある。このブログを読んで頂いている皆さんの中にもレプリケーションを使っている方は多いのではないだろうか。ご覧の通りMySQLのレプリケーション機能はミッションクリティカル分野でも利用されているが、レプリケーションの使い方が適切でないとシステムの安定稼働に支障を来してしまってDBAやシステム管理者の肉体的、精神的負担が増大してしまう。逆にレプリケーションを堅牢に運用することが出来ればマクラを高くして眠れるというものだ。レプリケーションはMySQLの代表的な機能であるので、レプリケーションを使いこなしてこそ真のMySQLエンジニアであると言えよう。

というわけで、今日はMySQLのレプリケーションをトラブルから守って安全に利用するポイントを10個紹介する。

2009-03-09

FreeBSDを愛する人達に捧げるMySQL 5.1バイナリ

日本はかねてよりFreeBSDの人気が高い。最近はLinux人気に押されてしまったように思うけれども、依然として現場でFreeBSDを使ってます!という話を聞く。WikipediaのページにはわざわざFreeBSDを使ってる人達(例は3つしか挙げられてないがビッグネームばかりである)が掲載されている。これにはユーザー達のFreeBSDに対する深い愛情を感じざるを得ない。

FreeBSD 7.0がリリースされてから長らく経つが、FreeBSD 7.0向けのMySQL公式バイナリはこれまで存在していなかった。が、5.1.32からFreeBSD 7.0向けのバイナリの提供が開始されたので、FreeBSD 7.0上でMySQLを使うときにはこちらを利用して欲しい。

Unicode汚染の危機 - Googleによる絵文字収録の愚行

CNetの記事によると、Googleが携帯電話で使われる絵文字を国際的な文字コード規格、Unicodeに収録しようというプロジェクトを進行中だそうである。

しかしこれはデータの設計という観点からすると極めて愚かな行為である。今日は声を大にしてこのような愚行に対して異を唱えたい。

2009-03-06

高速SSDの落とし穴。データベースで利用するときはご注意を!

今年はSSDの台頭がめざましい。価格の低下、大容量化、そして高速化、さらには低電力化まで期待できるというからもうHDDの出番はなくなるんじゃないだろうかというぐらいの勢いである。しかしそんなSSDもデータベースで利用する時には気をつけてもらいたい。

2009-03-05

オトコのぷちトリビア - WAL

データベースには、WAL = Write Ahead Log(ログ先行書き込み)というテクニックが利用されていることが多い。WALとは、テーブルスペースなどに存在する実際のテーブルデータに対して更新を反映するまえに、ログに更新の内容を書き込もうというものである。

2009-03-04

さらにMySQLを高速化する7つの方法

MySQLを高速化する10の方法という記事がとても好評だったようである。記事を読んで頂いた皆さん、ありがとう。

この記事に対する便乗(?)でWeb屋のネタ帳: PostgreSQLを高速化する16のポイントという記事を書いて頂いたようだが、そちらの方もかなり人気だったようである。他人が作ったソフトウェアに改良を加えるというフリーソフトウェアやオープンソースソフトウェアの精神も基本は便乗であるので、便乗については大いに賛成したいというかむしろ取り上げてくれてありがとう!!と思うわけであるが、ここでさらに俺はこう考える。

さらに自分も便乗するしかない!!

と。

2009-03-02

最強のMySQL HA化手法 - Semi-Synchronous Replication

MySQL 6.0で搭載される予定の機能の一つに、Semi-Synchronous Replicationというものがある。コイツを使うととんでもなく凄いHA化ができるので、今日はその方法を紹介しよう。

まずはSemi-Synchronous Replicationの機能説明から。そもそもSemi-Synchrounousってナニ?どうして完全な同期でもなく非同期でもなくSemi-Synchronousなの?という疑問をまずは解消したいと思う。さっそく次の図を見て欲しい。