タグ

ブックマーク / mir.hatenadiary.org (16)

  • Understanding MySQL Internalsを読む(6) - mir the developer

    以前の記事 [MySQL] Understanding MySQL Internalsを読む(1) [MySQL] Understanding MySQL Internalsを読む(2) [MySQL] Understanding MySQL Internalsを読む(3) [MySQL] Understanding MySQL Internalsを読む(4) [MySQL] Understanding MySQL Internalsを読む(5) Fieldクラス Fieldクラスは、数値型、文字列型、時間型といった各種データ型を定義するための抽象クラスです。クエリを処理する際、ほとんどのケースでテーブルのフィールドが関連してくるため、このクラスは主にパーサとオプティマイザでの処理に使用されます。Fieldクラスはsql/field.hに定義されていますが、一部はsql/field.ssに

    Understanding MySQL Internalsを読む(6) - mir the developer
    kamipo
    kamipo 2013/02/15
  • Understanding MySQL Internalsを読む(3) - mir the developer

    前回の記事 [MySQL] Understanding MySQL Internalsを読む(2) gdbデバッグするときのお薦めbreakpoint個所 P.35の表より。これでgdbデバッグ効率UP〜。 操作対象 お薦めbreakpoint個所 見ると幸せになれるかもしれない変数 SELECT文を実行 mysql_select() *thd, thd->query, *tables, *join INSERT文を実行 mysql_insert() *thd, thd->query, *table, fields, values_list UPDATE文を実行 mysql_update() *thd, thd->query, *table_list, fields, values, *conds DELETE文を実行 mysql_delete() *thd, thd->query, *t

    Understanding MySQL Internalsを読む(3) - mir the developer
    kamipo
    kamipo 2013/02/15
  • Sort系ステータス変数について - mir the developer

    概要 http://dev.mysql.com/doc/refman/5.0/en/server-status-variables.html マニュアルでは以下のように説明されている。 変数名 意味 Sort_range レンジを使用して行われたソートの回数。 Sort_scan テーブルをスキャンすることによって行われたソートの回数。 Sort_merge_passes ソートアルゴリズムが必要としたマージパスの数。この値が大きい場合、システム変数のsort_buffer_sizeの値を増やすことを検討すべきです。 Sort_rows ソートされた行数。 ステータス変数の実体 変数名 実体 Sort_range STATUS_VAR.filesort_range_count Sort_scan STATUS_VAR.filesort_scan_count Sort_merge_passe

    Sort系ステータス変数について - mir the developer
    kamipo
    kamipo 2012/01/27
  • 2ind機能のおさらい - mir the developer

    とりあえずおさらいしておく。 2ind機能はMySQL+Sennaにおける、全文検索特有の性能問題を解消すべく実装された、Tritonnパッチの機能(Senna体じゃなくてパッチで実装している)です。 ここでいう全文検索特有の性能問題とは、以下の4つです。 limit指定で出力を制限しても応答が遅い問題 select columns from table where match(a) against(b) limit 1000, 10 count(*)等で件数を取得するだけでも応答が遅い問題 select count(*) from table where match(a) against(b); 全文検索以外の条件で絞り込む処理が遅い問題 select columns from table where match(a) against(b) and c like 'hoge%'; 全文

    2ind機能のおさらい - mir the developer
  • Sennaのマルチセクション機能に対応 - mir the developer

    Sennaのマルチセクション機能に対応しました! 次回のTritonnリリース(ver1.0.3)から利用可能になる予定です! Tritonn 1.0.3は来月あたりにリリースする予定です。 マルチセクション機能とは? マルチセクション機能とはテーブルに全文検索対象のカラムが複数あるような場合に、非常に便利使える機能です。 以下のようなテーブルがあって、c2/c3/c4の3つのカラムで全文検索をしたい、という場合を想定します。 CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT, c3 TEXT, c4 TEXT) DEFAULT CHARSET utf8;このとき、これまでは以下のように複合キーとしてFULLTEXTインデックスを作成することで、1度のMATCH検索でc2/c3/c4の何れかにキーワードを含むレコードを探すことができましたが、、、問題

    Sennaのマルチセクション機能に対応 - mir the developer
  • クエリキャッシュされないSELECT文 - mir the developer

    MySQLのクエリキャッシュ機能ですが、SELECT文の内容によってはquery_cache_XXX変数の値に依らず無条件に結果がキャッシュされませんよね。 ではどんなキーワードを含んでいるとキャッシュされないのでしょうか。sql_yacc.yyとlex.hで確認してみました。 SQL_NO_CAHCE FOR UPDATE LOCK IN SHARE MODE CURRENT_DATE CURDATE CURRENT_TIME CURRENT_TIMESTAMP CURTIME CURRENT_USER DATABASE DATABASES LAST_INSERT_ID MASTER_POS_WAIT NOW ROW_COUNT SYSDATE UNIX_TIMESTAMP USER UTC_DATE UTC_TIME UTC_TIMESTAMP (ユーザ定義関数) (ストアドプロシージ

    クエリキャッシュされないSELECT文 - mir the developer
    kamipo
    kamipo 2009/11/27
  • disassembleによるデバッグの方法 - mir the developer

    開発環境でのバイナリやデバッグバイナリではないもの、すなわち、 障害解析対象のプログラムは-gが付いていない(プロダクション用なら当然) というようなバイナリからとれたstacktraceを手がかりにsignal 11の位置を特定する方法について書きます。 (以前よりも少しやりかたを改善できたのでメモしておきます。もっと簡単にできる方法があればコメント下さい) 16進数のstacktraceを確認 まずエラーログを見る。mysqldの場合はエラーログにstacktraceを吐いてくれるので別にcoreファイルがなくても大丈夫。吐いてくれないプログラムの場合は"ulimit -c unlimited"でcoreを出すようにしておいてbtする。 こんな感じの16進数のstacktraceが取れる。 0x5c4ceb 0x6267de 0x626e63 ...hoge.logとでもしておく。 バ

    disassembleによるデバッグの方法 - mir the developer
    kamipo
    kamipo 2009/11/02
  • Yet Another Skeleton Engine を作ってみた (YASE 0.1リリース) - mir the affianced

    Brianが作った"Skeleton Storage Engine"というのが既に存在するので車輪の再発明なのですが、勉強がてらスクラッチで作ってみました。 Yet Another hogehoge ってのに何となく憧れがあっただけだったりもするのですがw 一応、BrianのSkeleton Engineよりもコード量が少なくシンプルなので(必要最小限のことのみを書きました)、Pluggable Storage Engineの仕組みをより理解しやすくなっているかと思います。 ここからダウンロードできます。 http://sourceforge.net/project/showfiles.php?group_id=232736&package_id=282554 使い方は簡単。--with-mysqlでソースディレクトリ、libdirでインストール先のpluginディレクトリを指定するだけで

    Yet Another Skeleton Engine を作ってみた (YASE 0.1リリース) - mir the affianced
    kamipo
    kamipo 2009/10/30
  • Pluggable Storage Engineの --with-mysql の実装 - mir the developer

    Brianが書いたコードはこんな感じだったのだけど、 AC_MSG_CHECKING(for mysql source code) AC_ARG_WITH(mysql, [[ --with-mysql[=mysql src directory] Source requir to build engine.]], [ if test -d "$withval/sql"; then MYSQL_SRC="$i/mysql_config" fi AC_DEFINE([MYSQL_SRC], [1], [Source directory for MySQL]) MYSQL_INC="-I$withval/sql -I$withval/include -I$withval/regex -I$withval" AC_MSG_RESULT(["$withval"]) ], [ AC_MSG_ERROR(

    Pluggable Storage Engineの --with-mysql の実装 - mir the developer
    kamipo
    kamipo 2009/10/30
  • Pluggable Storage Engineでは-fno-rttiをつける - mir the developer

    いまSkeleton Engineみたいなのを0から独自に作っているのですが、嵌ったのでメモ。 C++にはRTTI(Run Time Type Information、実行時型情報)という便利な機能があるそうなのですが、これを有効(G++ではデフォルト)にしたままビルドすると、Pluggable Storage Engineの場合には問題がでます。 INSTALL PLUGINの時にこんなメッセージが出る。 [test]> install plugin yase soname 'ha_yase.so'; ERROR 1126 (HY000): Can't open shared library '/usr/local/mysql-5.1.25-rc/lib/mysql/plugin/ha_yase.so' (errno: 22 undefined symbol: _ZTI7handler)

    Pluggable Storage Engineでは-fno-rttiをつける - mir the developer
    kamipo
    kamipo 2009/10/30
  • カカクコム社内勉強会に参加 - mir the developer

    id:kiskeさんにお誘いいただいて先週金曜日にカカクコムさんの社内勉強会でお話させていただきました。貴重な機会をいただきありがとうございました。 自由に話してOKですよとのことだったので、何にしようかなと少し考えた結果、こんなスライドができあがりました。 MySQLのパフォーマンスの話View more presentations from ikdttr. MySQLも今となってはかなり広く使われていて、パラメータチューニングとかも一通りのことは皆さんご存知だろうと思ったので「チューニングをする際にソースを読んで調べたいと思ったらどうしたらいいか」といったようなテーマに対する答えの一例見たいな感じの内容になりました。 普段使っている/参照しているサーバ変数やステータス変数がどのように実装されていて、それらをソース上で追いかけるにはどうしたらいいか、みたいな感じですね。 勉強会ではgdb

    カカクコム社内勉強会に参加 - mir the developer
    kamipo
    kamipo 2009/10/30
  • thd->proc_info="Sending data"について - mir the developer

    MySQLユーザ会MLにて面白そうなネタ(質問投稿)があったので、いつきちゅう。 # mixiの方にかいたけど、gdb中にフリーズ、かなしす。。。気をとりなおして再開。 thd->proc_info="Sendind data"をしているのはsql/sql_select.ccの1827行目。JOIN::exec関数。とりあえずthd->proc_infoが次の状態に移るまでをトレースすることに。 Breakpoint 1, JOIN::exec (this=0x8b017c0) at sql_select.cc:1827 (gdb) bt #0 JOIN::exec (this=0x8b017c0) at sql_select.cc:1827 #1 0x082005bc in mysql_select (thd=0x8ae1a68, rref_pointer_array=0x8ae1e5

    thd->proc_info="Sending data"について - mir the developer
    kamipo
    kamipo 2009/02/25
    "Sending data"中に、、ストレージエンジンから1行読んで、1行分送信、そして次の1行を読んで、、、とやってるわけです。
  • mysqld エラーログソース解析 - mir the developer

    語版のPlanet MySQLが立ち上がりました。 http://jp.planetmysql.org/ Planet MySQLというのはMySQLに関連するブログを集めたアグリゲーションサイトで、Sun Microsystems(MySQL開発元)が運営しています。英語版は以前からありましたが、今回新しく日語版が登場し、当ブログも登録しましたのでそれを記念してエントリを書いてみたいと思います。 公式マニュアルによるエラーログの解説 MySQLのエラーログについては以下の公式リファレンスマニュアルに説明がありますが、 http://dev.mysql.com/doc/refman/5.0/en/error-log.html http://dev.mysql.com/doc/refman/5.1/ja/error-log.html ログのレベルの話だとか、どんなエラーが出力されるのか

    mysqld エラーログソース解析 - mir the developer
    kamipo
    kamipo 2009/02/06
  • mysqldにおけるスロークエリログ判定実装 - mir the developer

    スロークエリログはどのように計測され、出力されているのかをまとめてみました。 測定方法 THDクラスのset_time関数で計測開始、end_time関数で計測終了。 計測開始ポイント mysqld --bootstrapを使用している場合はmysql_parse関数の直前 ネットワーク経由の場合はネットワークコマンド(COM_XXX)の種別判定直前 ただしQUERYコマンド(COM_QUERY、SQLCOM_XXX)の場合はmysql_parse関数の直前で再設定 というわけでまとめるとSQL文のparse直前に計測を開始 計測終了ポイント thd->end_time関数自体はlog_slow_statement関数の中で呼ばれるのみ log_slow_statement関数はSQL文の結果返却を含む全ての処理が終わった後、終了処理(お掃除)が走る直前で呼ばれる。 セミコロンによる複数行

    mysqldにおけるスロークエリログ判定実装 - mir the developer
  • 記事一覧 - mir the developer

    早いもので11月ですね。気が付くと、いくつかネタが出てきていますのでこそっとエントリを書いておこうと思います。 groongaストレージエンジン groongaストレージエンジンは8月のv0.1リリース以来、月1回のペースで順調にリリースが継続されています。リリ…

    記事一覧 - mir the developer
  • gitコマンド簡易一覧 for svnユーザ - mir the developer

    gitを使いはじめたのですが、わからないことだらけなのでとりあえずsvnコマンドとの対応一覧。 svn checkout url git clone url svn update git pull svn status git status svn revert path git checkout path svn add file git add file svn rm file git rm file svn mv file git mv file svn commit git commit -a svn log git log 参考:http://www.tempus.org/n-miyo/git-course-trans-ja/svn.ja.html

    gitコマンド簡易一覧 for svnユーザ - mir the developer
    kamipo
    kamipo 2009/01/22
  • 1