タグ

ブックマーク / sh2.hatenablog.jp (9)

  • MySQL InnoDBだけで全文検索 - SH2の日記

    実験エントリです。 予習してみる 「転置インデックス」というキーワードで検索して、しばらく勉強してみます。 転置インデックス - Wikipedia mixi Engineers’ Blog » 転置インデックスを実装しよう ASCII.jp:悟空、秘剣「転置インデックス」を手に入れる |Googleはなぜ的確に探せるのか? [を] 転置インデックスによる検索システムを作ってみよう! 転置インデックスで学ぶ検索エンジンの中身アプリ - 睡眠不足?! うーんなるほど。分かったような分からないような。 作ってみる とりあえず、Twitter4Jを使ってこんなデータを用意しました。ちなみに人選は漢(オトコ)のコンピュータ道: MySQLerのTwitterアカウントまとめ。を参考にさせていただきました。 5707049458,2009-11-14 20:28:34,sakaik,@hbstudy

    MySQL InnoDBだけで全文検索 - SH2の日記
  • MySQL EXPLAINの読み方をJavaで理解する(1) - SH2の日記

    はてなブックマークの人気エントリで「SQLを使うなら理解しておきたいアルゴリズム?…」という記事を眺めていて、実際にSQLのアルゴリズムを説明するにはどうすればよいか考えてみました。そこで、試しにSQLの実行計画をJavaで再現してみることにしました。 今回は索引アクセスとテーブル結合に関する7種類のSQLについて、MySQLのEXPLAIN結果とそれに対応するJavaのコードを記述しました。EXPLAINの読み方を言葉で説明するのは非常に難しいのですが、プログラムを読める方ならこうした説明が一番分かりやすいのではないでしょうか。 import java.util.ArrayList; import java.util.List; import java.util.SortedMap; import java.util.TreeMap; public class Study { publi

    MySQL EXPLAINの読み方をJavaで理解する(1) - SH2の日記
  • MySQL Plugin ’FEDERATED’ is disabled. について - SH2の日記

    ときどき「Plugin 'FEDERATED' is disabled.」で検索してくる方がいらっしゃるようなので。 MySQL 5.1.26以降、FEDERATEDストレージエンジンはデフォルトで無効化されるようになりました。そのためMySQL 5.1のバイナリディストリビューションを使用している場合、mysqldの起動時に以下のようなNoteがエラーログに出力されます。これは正常な動作です。 090925 11:11:38 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 090925 11:11:38 [Note] Plugin 'FEDERATED' is disabled. InnoDB: The InnoDB memory heap is disabled InnoDB: Neither

    MySQL Plugin ’FEDERATED’ is disabled. について - SH2の日記
  • SSDの真の性能を引き出す MySQL 5.1.38 InnoDB Plugin - SH2の日記

    X25-M、SSDで検索してくる方が非常に多いので、ブログ内のSSD関連記事をリストしておきます。 MySQLのベンチマークを用いたIntel X25-M SSDの評価 (2009/03/25) SSDの真の性能を引き出す MySQL 5.1.38 InnoDB Plugin (記事) MySQL 5.1.38から体に同梱されるようになった、InnoDB Pluginの性能検証結果です。前回ご紹介したようにInnoDB Pluginには以下の強化点がありますが、日はこのうちバックグラウンドI/Oスレッドの増加に焦点を当ててみたいと思います。 高速なインデックス作成。従来InnoDBCREATE INDEXはテーブルの再作成を伴っていました テーブルとインデックスの圧縮 (検証結果その1、その2) INFORMATION_SCHEMAによるロック競合の検出 (検証結果) CPUスケ

    SSDの真の性能を引き出す MySQL 5.1.38 InnoDB Plugin - SH2の日記
  • MySQL 5.1.37リリース - SH2の日記

    出ました。 今回は37件のバグ修正があり、そのうち7件がレプリケーション関連、さらにそのうち2件がImportant Changeになっています。Important Changeの2件について、内容を簡単にご紹介します。 RESET MASTER文とRESET SLAVE文が、SHOW SLAVE STATUSにおける以下の値をリセットするようになりました。Last_IO_Error、Last_IO_Errno、Last_SQL_Error、Last_SQL_Errno。(Bug#44270) レプリケーションのSLAVE側において、以下のエラーが無視されるようになりました。ER_LOCK_WAIT_TIMEOUT、ER_LOCK_DEADLOCK、ER_XA_RBDEADLOCK。これらのエラーはMASTER側において同時並行性の問題によって起こるものであり、SLAVE側で同じエラーを再

    MySQL 5.1.37リリース - SH2の日記
  • MySQL InnoDBにおけるロック競合の解析手順 - SH2の日記

    データベースの運用で避けられないのが、ロック競合によって起こるシステムトラブルへの対応です。「2時までに終わるはずのバッチ処理が朝になっても終わっていない」とか「負荷が高いわけでもないのにシステムが無応答になっている」といったトラブルが発生したとき、DBエンジニアはそれがロック競合によるものなのかどうかを切り分けて、適切に対処しなければなりません。 これまでInnoDBはロック競合に対してほとんど打つ手がなかったのですが、最近ようやく対処方法がでてきました。今日はその手順を確認していきたいと思います。 前提 今回ご紹介する手順は、MySQLの以下のバージョンを対象にしています。 MySQL 5.1+InnoDB Plugin 1.0 MySQL 5.4 いきなりハードルを上げてしまって申し訳ありませんが、バージョン5.0以下や素の5.1では使えませんのでご注意ください。以降の実行例はすべて

    MySQL InnoDBにおけるロック競合の解析手順 - SH2の日記
  • MySQL 5.1のmysqldumpslowで快速チューニング - SH2の日記

    MySQL 5.1のmysqldumpslowを使うとチューニングが楽になる!という話題です。 mysqldumpslowはもともとMySQLに付属しているツールで、スロークエリログを集計してくれるものです。これ自体はMySQL 5.1で特に変わったところはありませんが、スロークエリログ体の方が機能強化されているため、組み合わせるとなかなか便利になっています。MySQL 5.1におけるスロークエリログの主な機能強化は以下の三点です。 long_query_timeに1秒未満の値を設定できるようになった。 出力先を設定できるようになった。 これらの設定をオンラインで変更できるようになった。 これでどうなるかというと、MySQLの性能分析をしたいと思ったときに、サーバを止めずにその場で mysql> set global slow_query_log = 1; mysql> set glob

    MySQL 5.1のmysqldumpslowで快速チューニング - SH2の日記
  • MySQL 5.1.32リリース - SH2の日記

    MySQL 5.1.32でました。といってもCommunity Serverは日時点でまだのようで、リリースを確認したのは有償のEnterprise Serverの方です。(2009/03/05追記 Community Serverもリリースされました) MySQL 5.1.32のリリースノートを確認すると、今回は約40個のバグが修正されています。と、これだけだと面白くないので、私が個人的に衝撃を受けたバグをご紹介します。Bug#42634です。 my.cnfでバイナリログをONにして、ステートメントベースにします。 log-bin = server01-bin binlog_format = STATEMENT以下のようなテーブルを作って、1レコードINSERTしておきます。 mysql> create table t (c1 int primary key, c2 varchar(1

    MySQL 5.1.32リリース - SH2の日記
  • MySQL InnoDBのネクストキーロック おさらい - SH2の日記

    MySQLのInnoDBストレージエンジンは行ロックをサポートしています。しかしOracleと同じ感覚でアプリケーションを作っていると、思わぬところでデッドロックに出くわすことがあります。これはInnoDBのロック範囲がOracleよりも微妙に広いためです。 実際の例で確認してみましょう。 mysql> select * from t; +----+------+ | c1 | c2 | +----+------+ | 10 | a | | 15 | a | | 20 | a | | 25 | a | | 30 | a | | 35 | a | | 40 | a | | 45 | a | | 50 | a | +----+------+c1列は主キーになっています。1つめのセッションで以下のSQLを実行します。 mysql> set tx_isolation = 'repeatable-r

    MySQL InnoDBのネクストキーロック おさらい - SH2の日記
    kistame228
    kistame228 2009/02/03
    範囲でロックすると一つ余分にロックするのかー
  • 1