MySQLとInfiniDB でリアルタイムDWHを作る PART1


むかしむかし、僕のブログでこんなことを書きました。
(OSSなDWH InfiniDB の話 ⑤ ~リアルタイムDWH化について)
もう一年以上経っちゃいました・・・。この話、もちろん忘れていたわけでもなく、需要があまりなかったので、「ふーん、世間ではそんなにニーズがないのかな?」と思いつつ、特になにもしていなかったのですが、ようやく世間が僕に追い付いた(嘘)ので、そろそろ書こうと思った次第です。

続きを読む “MySQLとInfiniDB でリアルタイムDWHを作る PART1”

MySQL レプリケーション時の注意点など・メモメモ


MySQLといえば、レプリケーション、レプリケーションといえばMySQLというくらい、MySQLのレプリケーションは簡単、かつ有効に活用できる機能の一つ、MySQLを利用しているサービスでレプリケーションを利用していないサービスはほぼ無いと思ってよいでしょう、でも注意してくださいね。ちょっと特殊なことを試みると、色々な問題にぶち当たります。そんな経験をメモ代わりに記載していきます。

logomysql

続きを読む “MySQL レプリケーション時の注意点など・メモメモ”

MySQL Blackhole & Replication パフォーマンス検証


昔書いたのですが、再度掲載します。
昔書いた内容としては、結果的に話と、マスタ: をBlackholeエンジンでスレーブを、MyIsamエンジンにすると、BlackHoleエンジンが、データをキューイングする働きをし、更新のパフォーマンスが大幅に向上するよって話でした。

テストとしては以下のような方法をとりました。

上記の環境で、

マスタ スレーブ
MyISAM MyISAM
Blackhole MyISAM

で試験を行った結果、どれくらいパフォーマンスに差が出るのか検証したグラフが以下のものになります。

▼インサートでのパフォーマンス速度差

INSERT処理に関しては、BLACKHOLEエンジン、MyISAMほぼ変わらない速度でした。ただし、MyISAMと違う点につきましては、BLACKHOLEエンジンは、更新データキューイングのみを行っているため、アプリケーションからの更新処理負荷になることがありません。このメリットを大きい!!

▼UPDATE処理での速度差

MyISAMの場合、10000件の、更新処理を境に処理パフォーマンスが大幅に劣化しました。原因としましては、MyISAMのロックメカニズム(表ロック)の関係で、ロック開放を待ちながらの更新が起因しているものと思われます。
また、100000件処理時のBLACKHOLEエンジンと、MyISAMの時間差は、2時間51分37秒です。この大幅の速度差は、やはり、BLACKHOLEエンジンのテーブルは値そのものを持っていないことが大きな要因かと思います。

▼DELETEでの速度差

更新処理同様、MyISAMの場合、10000件を境に処理パフォーマンスが大幅に劣化しました。原因としましては、MyISAMのロックメカニズム(表ロック)の関係で、ロック開放を待ちながらの更新が起因しているものと思われます。
また、100000件処理時のBLACKHOLEエンジンと、MyISAMの時間差は、34分7秒です。この大幅の速度差は、やはり、BLACKHOLEエンジンのテーブルは値そのものを持っていないことが、大きな要因です。

とこんな結果でした。実際の測定はマスタのみの時間を計測しただけなので、スレーブ側に変更されたデータがレプリケーションされる部分については、ほとんど変わらないかと思います。ここで重要な部分は、「マスタ」に負荷をかけていない部分なので、要件に合うのであれば、BLACKHOLEエンジンを採用してみてもいいのかも?というだけです。^^;

BLACKHOLEエンジンが利用される想定としては

  • 更新の負荷を下げたい、参照DBへの反映は多少遅れても良い
    ミッションクリティカルな部分での採用にはお勧めできませんが、たとえば、FACEBOOKでの「いいね!」ボタンでのデータ反映とかメインシステムに影響が少ない部分で利用できるかと思います。
  • マスタ&スレーブの構成で、スレーブを参照専用にしているシステムである
    というか、その前提で上記の例も書いているので、あえて説明するまでもないですが、BackHole -> MyISAM、MyISAM -> MyISAM, InnoDB -> InnoDBの構成であり、マスタがなんらかの負荷でマスタがダウンしたとしても、結局スレーブ側の反映どんな形式であってもリスクは同じです。

 

MySQL レプリケーションとブラックホール化


MySQLレプリケーション。。すっごく簡単なのはわかっているのですが、いざやろうとすると、あれ?どうやるんだっけ?
といつも悩んでしまうので、他サイトにいっぱい掲載されてることを知りつつも、こちらにも証跡として残しておこうと思います。
あと、先日、某BLOGサイトの方が、MySQLエンジンのBLACKHOLE(ブラックホールエンジン)の活用の方法をつぶやいており
おぉこれは、いける使い方だ!!なんてものも発見できたので、それもあわせて証跡に残しました。

証跡がすっごく長いのでBACKHOLEエンジンを利用した、レプリケーションの設定だけを見たい方は、ずーーーーっと下のほうまでブラウザをスクロールしてみてください。(ちょこっとしか書いていませんが)
続きを読む “MySQL レプリケーションとブラックホール化”