MySQL

ストレージエンジンの実装、4.1、5.0、5.1で結構違うのね

どのバージョンで自作ストレージエンジンの練習をするか悩んでいるわけですが、kdiff3あたりで3つのソースを並べて見てみたりしてるんですが、5.1はプラガブルストレージエンジンになり明らかに一線を画してるのは予想通りではあるんですが、4.1と5.0でも結…

unlikelyマクロについて

MySQLのソースやLinuxカーネルのソースを眺めるとしばしば出てくる、 if (unlikely(a == b)){ .... }みたいな構文ですが、これの解説。このunlikelyはマクロ関数で、引数として渡された条件がほとんどの場合に偽になることをコンパイラに教えるものです。コ…

MySQLソースコード解析ことはじめ

環境 FreeBSD-6.2 準備 MySQLソースコードの取得 $ fetch "http://mirror.mysql-partners-jp.biz/Downloads/MySQL-5.0/mysql-5.0.45.tar.gz"; $ tar xzf fetch.out; MySQLコンパイル $ cd mysql-5.0.45; $ CC=gcc CXX=gcc CFLAGS=-g CXXFLAGS=-g ./configure…

FreeBSD-6.2環境にTritonn-1.0.3をセットアップする

Tritonn(Senna)、チョーいいです http://qwik.jp/tritonn/ http://qwik.jp/senna/TritonnはMySQLに全文検索エンジンのSennaを組み込むためのパッチ(以下、MySQLバインディングパッチ)を開発する、Sennaのサブプロジェクトです。開発者mirこと池田さんのブ…

MySQLのSQLチューニング(IN 演算子)

なかなか面白い結果が出たので備忘録。TBLテーブルに対し add index idx(COL0,COL1)としてある状況では、 SELECT A.* FROM TBL A WHERE A.COL0 = "hoge" AND A.COL1 IN ('A', 'B', 'C');よりも SELECT A.* FROM TBL A JOIN ( SELECT 'A' COL1 FROM DUAL UNIO…

MySQL 5.0, 5.1 でクラスタを組んでみる

目的 「書き込みするDBの可用性確保」を焦点に、 MySQL4.1以降で実装されているNDB Clusterについて調査・構築・動作テストした。 基本的にはGAになっているMySQL5.0をメインに調査したが、5.0のクラスタは オンメモリという致命的な制限があるため、現在は…

MySQLのレプリケーションでスレーブ側でエラー発生時、そのエラーが発生しているSQL文だけスキップする方法

SHOW SLAVE STATUS 等でスレーブのステータスを見ると、なんらかの原因であるSQL文でエラーが発生していることが稀にあります。 データの整合性的にそのSQL文をスキップしても問題ないことがわかっている場合は下記のSQL文を発行することでスキップさせるこ…