タグ

ブックマーク / nippondanji.blogspot.com (39)

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

    よくMySQLはサブクエリが弱いと言われるが、これは当だろうか?半分は当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし

    なぜMySQLのサブクエリは遅いのか。
    satoship
    satoship 2013/01/29
  • 開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!

    米国で行われているMySQL Connectというイベントで、ついにMySQL 5.6 RC(リリース候補版)が発表された。リリース候補版ということは、これが次の正式版になるということだ。MySQL 5.5は5.1から凄まじい進化を遂げたバージョンであった。だが、MySQL 5.6はさらにそれを上回る進化を遂げている!正直ここまでの進化を誰が予想しただろうか、いや誰も出来なかったであろう。これまで、α版が出たときから何度か新機能について紹介してきたが、今回改めてMySQL 5.6の新機能を振り返ってみようと思う。すべてまとめるともの凄い内容だ。興奮して夜も眠れなくなること請け合いだ。MySQLの進化が止まるのでは?などという心配は吹き飛び、もはやもうちょっと小出しにしなくて良かったのか?と心配してしまうレベルである。 それではMySQL 5.6の新機能について紹介していこう。 InnoDB

    開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!
    satoship
    satoship 2012/10/02
  • ダウンロード刑事罰化について考える

    先日、あろうことか国会において議員立法でダウンロードの刑事罰化の法案が可決してしまった。これは日という国の発展にとって由々しき事態である。これはまさに日の経済の発展にとって非常事態であると言っても過言ではない。しかしながら我々は今現在この日で暮らしている真っ最中であり、ただ黙って日が没落していくのを見ていくわけには行かないだろう。そこで、今回はダウンロード刑事罰化について、その問題点と我々が取るべき行動について論じてみようと思う。 これまで見ていたウェブページが見られなくなるか 我々にとって直接的に影響が出ると考えられるのはまずこの点だ。だが待って欲しい。我々はどうやってそのようなコンテンツを避けて通ればいいのだろうか。「このページの閲覧およびコンテンツのダウンロードは違法です」と宣伝しているウェブページがあるだろうか?あるファイルをダウンロードすることが違法だと判別するにはどうす

    ダウンロード刑事罰化について考える
    satoship
    satoship 2012/06/25
  • liveventの意義

    最近注目度ナンバーワンのmemcachedであるが、そのソースコードはシンプルでありビルドも非常に簡単なのだが、リンクするべきライブラリがただ一つだけ存在する。それがlibeventである。 http://monkey.org/~provos/libevent/ libeventとはその名の通りイベント通知ライブラリである。と言っただけではなんのこっちゃ?!と思われることだろう。別の言い方をすると非同期I/Oライブラリてな感じだろうか。 ※オトコたるもの滅多なことでそもそも論をしてはいけないが、非同期I/Oについて語らねば先に進まないので致し方なしとする。 そもそもディスクへの読み書きなどのI/O処理は他の電子部品とは違い、もの凄く遅い。電子部品はその名の通り電子の速さで処理が進むが、ディスク装置などには駆動部があったりするのでI/O処理はCPUなどの電子部品と比べると極めて遅いものになる

    liveventの意義
    satoship
    satoship 2012/03/29
  • [書評]MySQLをハックしまくりたい人のためのスゴ本「MySQL 5.1 Plugin Development」

    MySQLはGPLv2で頒布されているフリー(自由な)ソフトウェアだ。誰でも自由に改造、改善、機能追加して、GPLv2のもと再頒布することが出来る。 そうは言っても改造なんて敷居が高くて出来ないよ・・・という人に朗報なのが書「MySQL 5.1 Plugin Development」だ!MySQLはストレージエンジンによってデータを管理するレイヤーが独立しているのはよく知られているが、MySQL 5.1ではさらに一歩進んで、ストレージエンジンを含む様々なプラグインを作成できるようになった。プラグインAPIを使ってMySQLを拡張すれば、無造作に改造してしまうよりもずっと楽にMySQLをハック*1することが出来るだろう。 MySQL 5.1で利用可能なプラグインPlugin APIは、MySQL 5.1で新たに追加された機能である。これにより、共有ライブラリ形式で後から機能を追加することが

    [書評]MySQLをハックしまくりたい人のためのスゴ本「MySQL 5.1 Plugin Development」
  • MySQL Cluster 7.2見参!Webでも使える熱いヤツがやってきた。

    前回のエントリではMySQL 5.6の新機能についてレビューを行ったが、MySQL User Conferenceに合わせる形でMySQL Clusterの新しい開発版であるバージョン7.2も発表された。一見すると追加された新機能の数は少なくMySQL 5.6ほどのインパクトはないが(というかMySQL 5.6の新機能がありすぎなわけだが)、実は7.2ではMySQL Clusterにとって非常に重要な改善がなされているのだ! というわけで、今日はMySQL Cluster 7.2の新機能を紹介しよう。 JOINの性能が改善!まず最初に最も重要なことについて述べよう。MySQL Cluster 7.2ではJOINの性能が改善している。非常に大切なことなのでもう一度言おう。MySQL Cluster 7.2ではこれまで最大の弱点であったJOINの性能が改善している! MySQL Cluster

    MySQL Cluster 7.2見参!Webでも使える熱いヤツがやってきた。
    satoship
    satoship 2012/02/20
  • 10億IOPSの新技術「Auto Commit Memory」に見るコンピュータの展望

    先日、Publickeyにて"Fusion-io、10億IOPSの新技術「Auto Commit Memory」発表。ストレージなんてレベルじゃない、パーシステントなメモリだ"という記事が紹介された。10億IOPS!なんていうと、普段ITに携わっている人間としては信じがたい数字であり、思わず眉にたっぷり唾を塗って身構えてしまう。その一方で、「あのFusion-IOならやりかねない」という淡い期待も抱かずには居られない。記事を読んだところ、既存のioDrive2 Duoを使い、ソフトウェアで10億IOPSを達成したとのこと。同じハードウェアなのにいきなり性能が飛躍的に向上した!というのもにわかには信じがたい。一体どういうことだろうか?と色々考察したことをまとめてみた。(あくまでも筆者の考察および推測であるという点はご理解頂きたい。) どのようなソフトウェアだろうか?Auto Commit M

    10億IOPSの新技術「Auto Commit Memory」に見るコンピュータの展望
    satoship
    satoship 2012/01/29
  • MySQLにおけるレプリケーション遅延の傾向と対策

    レプリケーションはMySQLで最もよく使われる機能のひとつだ。レプリケーションは基的に非同期でデータの複製を行う仕組みになっているのだが、非同期故にどうしても逃れられない問題がある。そのひとつが今回のテーマ、遅延である。というと、MySQLのレプリケーションはすぐに遅延が生じてしまうように感じてしまうかも知れないが、そのようなことはない。ほとんどの場合は即座にスレーブの更新が行われる。 なぜ遅延は発生するのか、どのように遅延が起きていることを調べるのか、どのように回避するのかということをエントリでは解説したい。うまく遅延と付き合って、MySQLのレプリケーションをより快適に運用してもらえればと思う。 そもそも遅延とは何かMySQLのレプリケーションは非同期で行われる。これは準同期でも同じであり、スレーブにおいて更新が起きるのはマスターよりも一瞬遅れてしまう。これは非同期であるが故に逃れ

    MySQLにおけるレプリケーション遅延の傾向と対策
    satoship
    satoship 2011/12/14
  • MySQLコミュニティ騒然!MySQL 5.5.4が与えるインパクト。

    先週、MySQL Conference & Expo 2010が開催され、盛況のうちに終了した。カンファレンスに合わせる形で、MySQL 5.5.3および5.5.4がリリースされたのだが、これが目を見張るような進化を遂げている。特に性能面での進化には目を見張るものがある!Jeremy ZawodnyやMark Calleghanといったコミュニティの重鎮たちも「非常にエキサイティングなリリースだ!」などと表して歓迎の意を表している。 というわけで、日はMySQL 5.5.3/5.5.4の新機能および変更点についてレビューしてみよう! おさらい。 〜 MySQL 5.5の既存の機能 〜MySQL 5.5が登場したとき、その新機能については以前にもエントリで紹介したが、ここで改めておさらいしてみよう。MySQL 5.5は、正確にいうと現在最新バージョンであるMySQL 5.1の「次の次」のバ

    MySQLコミュニティ騒然!MySQL 5.5.4が与えるインパクト。
  • 残暑なんて吹き飛ばすぐらい熱いベンチマークをやろうぜ!!

    なんて幸運なことなんだろう。 実は最近、個人的にサーバーマシンを借りるという機会があった。そのマシンに搭載されているCPUコア数は合計48である!大事なのでもう一度いう。日語でいう。48CPUコアだ!一昔前なら数千万円もしたスペックだろうが、最近は実にリーズナブルにお求めいただけるようである。(価格についてはふせておく。)このマシンには2.2GHzのOpteron 6174が4つ搭載されている。つまり、ひとつのパッケージに12個のコアが格納されているのだ。これはすごい。いや、むしろどうしてこうなった?!というべきか。そのようなマシンを目の前にすると時代はメニイコアに向かっているんだなあと実感せざるを得ない。 今後、CPUがどんどんメニイコアに向かう流れはさけれない。コアを増やさなければCPUの性能が(システム全体としての性能が)向上しないからだ。CPUの演算回路に対して半導体素子をたくさ

    残暑なんて吹き飛ばすぐらい熱いベンチマークをやろうぜ!!
  • MySQL 5.5新機能徹底解説

    今年も残すところあとわずかとなった。2010年もIT業界にとっては変化の多い一年だったが、皆さんにとっては良い年だっただろうか?既に何度かMySQL 5.5の新機能については取り上げたが、ついに正式版がリリースされたということでここで改めて新機能を解説し、今年最後のエントリを締めくくろうと思う。 MySQL 5.5にはこれでもかっ!というぐらい新機能が追加されている。しかもいずれもナイスなものばかりだ。一般的には、ソフトウェアに新機能が追加されると重くなったり安定性が低下する事例が後を絶たないのだが、MySQL 5.5に関してはそのようなことは全くないので安心して利用して頂きたい! InnoDBの大幅な改善種々ある改善点の中でも特に目をひくのがInnoDBストレージエンジンへの改良だ。実は、InnoDBMySQL 5.1が最初にリリースされたときから、2回アップデートが行われている。My

    MySQL 5.5新機能徹底解説
    satoship
    satoship 2011/12/10
  • mysqlsnifferでMySQLのプロトコルをキャプチャリング

    MySQLで接続関係の問題、具体的に言うとAborted_clientsやAborted_connectionsというステータス変数が増え続けてしまうような現象に遭遇することがある。MySQLは、そういったネットワーク関係の問題をあまりたくさんログに記録しないようになっている。DoS攻撃などでログが溢れかえってしまわないようにするためだ。そんなとき、試して頂きたいのがmysqlsniffer。 mysqlsnifferとは。http://hackmysql.com/mysqlsniffer mysqlsnifferは、tcpdumpのようにネットワークインターフェイスからパケットをキャプチャするプログラムだが、tcpdumpとはMySQLのプロトコルを理解するという点で異なる。というかMySQLのプロトコル専門のキャプチャプログラムだ。OSのroot権限さえあれば、MySQLサーバーに対し

    mysqlsnifferでMySQLのプロトコルをキャプチャリング
  • MySQLレプリケーションを安全に利用するための10のテクニック

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

    MySQLレプリケーションを安全に利用するための10のテクニック
  • 優れたMySQL DBAを見分ける27+3の質問

    「優れたPerlプログラマを見分ける27の質問」の日語訳というエントリが人気だったので、MySQL版をやってみた。題して、「優れたMySQL DBAを見分ける27+3の質問(漢バージョン)」。腕に覚えのある人はぜひ試してみて欲しい。 MySQLのサーバープロセスはいくつある? rootユーザーのパスワードを忘れたときの回復手順 MySQLをオンラインバックアップする方法を3つ。(もっとでも可) InnoDBのデータファイルが作成可能な場所はどこか。 InnoDBのデフォルトの分離レベルは? ネクストキーロックについて説明せよ。 ロールバックセグメントにはどのようなデータが格納されるか? InnoDBでデッドロックが発生したときの挙動、および詳細な状態を確認する方法。 MyISAMがサポートしている特殊なインデックス2つ。 MySQLにおけるテーブル1行あたりの最大サイズ。 構成可能なレプ

    優れたMySQL DBAを見分ける27+3の質問
  • 自分で育む快適英語生活!

    英語のドキュメントを日々閲覧するギークにとって、英和・和英辞書は手放せない。より快適に英語の文章を読んだり翻訳したりするため、Webページ内で文章を選択するとポップアップして辞書へのリンクを表示してくれるChrome拡張を作成した。ポップアップには選択した文章を「英辞郎 on the WEB」で検索するためのリンクと、Google Translateによる訳が表示されるようになっている。 即興で作ったのであんまり凝ったことはしていないが、次のようなところにこだわってみた。 ポップアップ表示、非表示時のアニメーション。 テキスト選択領域の近くにポップアップを表示。 AJAXを使って非同期にGoogle Translateの情報を取得。(backgroundページを活用) 随所でjQueryを使いまくったが、やはりjQueryは便利過ぎると思った。今回、特定のページ(jQuery 1.4.2を

    自分で育む快適英語生活!
  • なぜデジタルコンテンツが売れないか?ビジネスモデルがダメか

    ドワンゴ会長の川上氏であると噂されている(?)kawango氏が、ブログで次のようなエントリを綴っている。 なぜデジタルコンテンツが売れないか?DRMがダメか - はてなポイント3万を使い切るまで死なない日記 興味深いエントリなので皆さんにも読んでみていただきたいが、時間のない人のために要約すると話の骨子はこうだ。「日で今コンテンツビジネスの売上高は凄いが、それはガラケーでDRMがうまく機能しているからだ。スマフォが台頭するとコンテンツビジネスがダメージを受けるので、DRMの代わりになるクラウド型のコンテンツサービスを構築せねば!」 正直意味が分からない。そのようなコンテンツサービスがあったところで誰が利用するのか謎である。DRMつきの楽曲ファイルよりもさらに不便なのだから。 今日は、kawango氏に目を覚ましてもらいたい一心で、何故そのサービスがいけないかということについて論じてみよ

    なぜデジタルコンテンツが売れないか?ビジネスモデルがダメか
  • Using filesort

    去年ソートに関する記事を書いたが、今日はその続きである。 MySQLでEXPLAIN SELECT...を実行するとExtraフィールドでよく見かける「Using filesort」という文字列。Filesortって一体なんだろう?と思ったことはないだろうか。単刀直入に言ってFilesortの正体はクイックソートである。 クエリにORDER BYが含まれる場合、MySQLはある程度の大きさまでは全てメモリ内でクイックソートを処理する。ある程度の大きさとはsort_buffer_sizeであり、これはセッションごとに変更可能である。ソートに必要なメモリがsort_buffer_sizeより大きくなると、テンポラリファイル(テンポラリテーブルではない)が作成され、メモリとファイルを併用してクイックソートが実行される。 Filesortは全てのソート処理において実行されるわけではない。前回の記事

    Using filesort
  • オトコのソートテクニック2008

    今日は仕事納めだったので、一年の締めくくりとしてMySQLにおけるソートの話でもしようと思う。 インデックスを利用しないクエリで最もよく見かけるもののひとつは、ORDER BYを用いたソート処理だろう。もし、ソート処理においてインデックスを用いることが出来れば、MySQLは結果を抽出してから結果行をソートするのではなく、インデックス順に行を取り出せば良いので高速にソート処理することが可能になる。特に、LIMIT句やWHERE句を用いて行の絞り込みを行う場合は効果が絶大である。しかし、ひとたびインデックスを利用できない状況に直面すると、たちまちテーブルスキャンが発生して性能が劣化してしまう。 例えば、100万行のレコードを格納したt1というテーブルがあるとする。そのテーブルに対して以下のようなクエリを実行した場合を考えよう。 mysql> SELECT col1, col2 ... colx

    オトコのソートテクニック2008
  • 自由なソフトウェアと自由なWeb

    先日、ソフトウェアライセンスの勉強会に参加したり、オープンソースライセンスの議論が炎上白熱したりしているので、俺自身ソフトウェアライセンスについて考える機会が増えたように思う。プロフィールにも書いてある通り、俺はフリーソフトウェアが大好きである。フリーソフトウェアライセンスは(乱立したので)星のかずほど存在するのだが、その中でもやはりフリーソフトウェアという概念を提唱したリチャード・ストールマン等によるGPLを支持せずには居られない。GPLにもいくつかバリエーションが存在するのだが、その中でももっともとんがっている(最も強いコピーレフト条項が盛り込まれた)AGPLの採用事例が少ないように思う。なぜ採用があまり進まないのだろうかと考えた結果、ある重大な事実、特にWeb業界にまつわる事実に気がついたので、今日はそのことについて紹介しようと思う。結論は最後の方にあるが、あきらめずに頑張って読んで

    自由なソフトウェアと自由なWeb
  • 恵比寿にあるLinux会社の熱いギークたちに会ってきた話。

    先日、友人の紹介でRed Hat社に勤めるエンジニアの方たちと事をした。Red Hat社のエンジニアの方々とはあんまり交流が無かったのだが、やはりLinuxに、そしてフリーソフトウェアに魂を燃やす漢たちの発想は一味違う!!興味深い話を聴き、とても良い刺激を受けることができたので皆さんにも紹介したいと思う。 再会参加者の面子を事前に聞いていなかったので驚いたのだが、なんとそこには古い知り合いの顔があった。KVM徹底入門の共著者である森若和雄氏である。彼とは大学院時代、同じ研究室の先輩後輩の間柄(自分の方が一年先輩)なのだが、当時自分は落ちこぼれであり、森若氏は自分より遥かに高いスキルを持ち合わせていたのをよく覚えている。卒業後お互い別々の道を歩いた末に、同じフリーソフトウェア支持者として再会出来たのは大変喜ばしい。 学生時代の森若氏の口ぐせは「Perl最高!Perlがあれば何でもできる!ヒ

    恵比寿にあるLinux会社の熱いギークたちに会ってきた話。