MySQL PS EMEA



Similar documents
MySQL PS EMEA

戦略担当者のための

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

PowerPoint プレゼンテーション

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

1 書 誌 作 成 機 能 (NACSIS-CAT)の 軽 量 化 合 理 化 電 子 情 報 資 源 への 適 切 な 対 応 のための 資 源 ( 人 的 資 源,システム 資 源, 経 費 を 含 む) の 確 保 のために, 書 誌 作 成 と 書 誌 管 理 作 業 の 軽 量 化 を 図

った 場 合 など 監 事 の 任 務 懈 怠 の 場 合 は その 程 度 に 応 じて 業 績 勘 案 率 を 減 算 する (8) 役 員 の 法 人 に 対 する 特 段 の 貢 献 が 認 められる 場 合 は その 程 度 に 応 じて 業 績 勘 案 率 を 加 算 することができる

研究者情報データベース

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

ファイルサーバー(NFS) 構築ガイド

目 次 1. 積 算 内 訳 書 に 関 する 留 意 事 項 1 ページ 2. 積 算 内 訳 書 のダウンロード 3 ページ 3. 積 算 内 訳 書 の 作 成 (Excel 2003の 場 合 ) 6 ページ 4. 積 算 内 訳 書 の 作 成 (Excel 2007の 場 合 ) 13

<4D F736F F D203193FA8AD45F95CA8E86325F89898F4B315F94F093EF8AA98D AD97DF914F82CC8FEE95F182CC8EFB8F C28E8B89BB2E646F63>

01_07_01 データのインポート_エクスポート_1

(Microsoft PowerPoint - Ver12\203o\201[\203W\203\207\203\223\203A\203b\203v\216\221\227\277.ppt)

Microsoft Word - 不正アクセス行為の禁止等に関する法律等に基づく公安

質 問 票 ( 様 式 3) 質 問 番 号 62-1 質 問 内 容 鑑 定 評 価 依 頼 先 は 千 葉 県 などは 入 札 制 度 にしているが 神 奈 川 県 は 入 札 なのか?または 随 契 なのか?その 理 由 は? 地 価 調 査 業 務 は 単 にそれぞれの 地 点 の 鑑 定


通 知 カード と 個 人 番 号 カード の 違 い 2 通 知 カード ( 紙 )/H27.10 個 人 番 号 カード (ICカード)/H28.1 様 式 (おもて) (うら) 作 成 交 付 主 な 記 載 事 項 全 国 ( 外 国 人 含 む)に 郵 送 で 配 布 希 望 者 に 交

スライド 1

<4D F736F F D E598BC68A8897CD82CC8DC490B68B7982D18E598BC68A8893AE82CC8A C98AD682B782E993C195CA915B C98AEE82C382AD936F985E96C68B9690C582CC93C197E1915B927582CC898492B75F8E96914F955D89BF8F915F2E646F6

Microsoft Word - 佐野市生活排水処理構想(案).doc

●電力自由化推進法案

1-1 一覧画面からの印刷

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

スライド 0

その 他 事 業 推 進 体 制 平 成 20 年 3 月 26 日 に 石 垣 島 国 営 土 地 改 良 事 業 推 進 協 議 会 を 設 立 し 事 業 を 推 進 ( 構 成 : 石 垣 市 石 垣 市 議 会 石 垣 島 土 地 改 良 区 石 垣 市 農 業 委 員 会 沖 縄 県 農

医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート - 目 次 - < 第 1 章 > 共 通 事 項 説 明 医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート 目 次 1.1 本 システムの 注 意 点 入 力 項 目 について 基 本 情

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

国 税 クレジットカード 納 付 の 創 設 国 税 のクレジットカード 納 付 については マイナンバー 制 度 の 活 用 による 年 金 保 険 料 税 に 係 る 利 便 性 向 上 に 関 するアクションプログラム( 報 告 書 ) においてその 導 入 の 方 向 性 が 示 されている

2 役 員 の 報 酬 等 の 支 給 状 況 平 成 27 年 度 年 間 報 酬 等 の 総 額 就 任 退 任 の 状 況 役 名 報 酬 ( 給 与 ) 賞 与 その 他 ( 内 容 ) 就 任 退 任 2,142 ( 地 域 手 当 ) 17,205 11,580 3,311 4 月 1

<4D F736F F D D3188C091538AC7979D8B4B92F F292B98CF092CA81698A94816A2E646F63>

Ⅰ 調 査 の 概 要 1 目 的 義 務 教 育 の 機 会 均 等 その 水 準 の 維 持 向 上 の 観 点 から 的 な 児 童 生 徒 の 学 力 や 学 習 状 況 を 把 握 分 析 し 教 育 施 策 の 成 果 課 題 を 検 証 し その 改 善 を 図 るもに 学 校 におけ

平成25年度 独立行政法人日本学生支援機構の役職員の報酬・給与等について

<4D F736F F D AC90D1955D92E CC82CC895E DD8C D2816A2E646F63>

R4財務対応障害一覧

スライド 1

<4D F736F F D F5A91EE8BC F368C8E3393FA8DC48D F C8E323893FA916493C B95AA8D CE3816A>

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設

< 目 次 > 8. 雇 用 保 険 高 年 齢 雇 用 継 続 給 付 27 ( 育 児 休 業 給 付 介 護 休 業 給 付 ) 8.1 高 年 齢 雇 用 継 続 給 付 画 面 のマイナンバー 設 定 高 年 齢 雇 用 継 続 給 付 の 電 子 申 請 高

PowerPoint プレゼンテーション

検 討 検 討 の 進 め 方 検 討 状 況 簡 易 収 支 の 世 帯 からサンプリング 世 帯 名 作 成 事 務 の 廃 止 4 5 必 要 な 世 帯 数 の 確 保 が 可 能 か 簡 易 収 支 を 実 施 している 民 間 事 業 者 との 連 絡 等 に 伴 う 事 務 の 複 雑

< F2D A C5817A C495B6817A>

する ( 評 定 の 時 期 ) 第 条 成 績 評 定 の 時 期 は 第 3 次 評 定 者 にあっては 完 成 検 査 及 び 部 分 引 渡 しに 伴 う 検 査 の 時 とし 第 次 評 定 者 及 び 第 次 評 定 者 にあっては 工 事 の 完 成 の 時 とする ( 成 績 評 定


PowerPoint Presentation

第2回 制度設計専門会合 事務局提出資料

(Microsoft Word - \221\346\202P\202U\201@\214i\212\317.doc)

Microsoft Word - MC_v4.1.1_Release_Notes_Japanese.doc

スライド 1

Microsoft Word - 03accessデータベース演習レジメ.doc

55

Microsoft Word - 311Tools_END

文科省様式3-2集計オプションマニュアル

よりメンバーに 配 布 した 第 2 期 は 第 1 期 に 開 発 した 大 気 時 間 値 集 計 解 析 ツールをベースに 機 能 改 良 を 行 った 国 立 環 境 研 究 所 では メンバーから 寄 せられる 要 望 使 い 勝 手 に 関 する 意 見 感 想 不 具 合 発 生 など

( 別 途 調 査 様 式 1) 減 損 損 失 を 認 識 するに 至 った 経 緯 等 1 列 2 列 3 列 4 列 5 列 6 列 7 列 8 列 9 列 10 列 11 列 12 列 13 列 14 列 15 列 16 列 17 列 18 列 19 列 20 列 21 列 22 列 固 定

端 末 型 払 い 出 しの 場 合 接 続 構 成 図 フレッツ グループから 払 出 されたIPアドレス /32 NTT 西 日 本 地 域 IP 網 フレッツ グループ フレッツ グループから 払 出 されたIPアドレス /

DN6(R04).vin

Taro-条文.jtd

預 金 を 確 保 しつつ 資 金 調 達 手 段 も 確 保 する 収 益 性 を 示 す 指 標 として 営 業 利 益 率 を 採 用 し 営 業 利 益 率 の 目 安 となる 数 値 を 公 表 する 株 主 の 皆 様 への 還 元 については 持 続 的 な 成 長 による 配 当 可

長崎市民間建築物耐震化推進事業の概要

PowerPoint プレゼンテーション

<4D F736F F F696E74202D2082C882E982D982C DD8ED88EE688F882CC82B582AD82DD C668DDA9770>

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

(別紙3)保険会社向けの総合的な監督指針の一部を改正する(案)

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

高松市緊急輸送道路沿道建築物耐震改修等事業補助金交付要綱(案)

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

(2) 実 務 上 の 取 扱 い 減 価 償 却 の 方 法 は 会 計 方 針 にあたるため その 変 更 は 本 来 会 計 方 針 の 変 更 として 遡 及 適 用 の 対 象 と なります しかしながら 減 価 償 却 方 法 の 変 更 については 会 計 方 針 の 変 更 を 会

二 資本金の管理

Microsoft PowerPoint - KeySQL50_10g_vlo3.ppt

目 次 1. ログイン ユーザー 登 録 TOP 職 員...8 (1) 職 員 の 名 刺 表 示...8 (2) 職 員 の 名 刺 一 括 ダウンロード...8 (3) 職 員 の 名 刺 帳 から 検 索 検 索...9 (1) 氏 名

入 札 参 加 者 は 入 札 の 執 行 完 了 に 至 るまではいつでも 入 札 を 辞 退 することができ これを 理 由 として 以 降 の 指 名 等 において 不 利 益 な 取 扱 いを 受 けることはない 12 入 札 保 証 金 免 除 13 契 約 保 証 金 免 除 14 入

Microsoft PowerPoint - 報告書(概要).ppt

セルフメディケーション推進のための一般用医薬品等に関する所得控除制度の創設(個別要望事項:HP掲載用)

1.システム 構 成 1.1 ハードウェア 及 ぶ 基 本 ソフトウェア (1) システム 構 成 の 基 本 方 針 システム 構 成 のコンセンプトについて 2 頁 以 内 で 記 述 してください 1ハードウェア 構 成 のコンセプト

公 的 年 金 制 度 について 制 度 の 持 続 可 能 性 を 高 め 将 来 の 世 代 の 給 付 水 準 の 確 保 等 を 図 るため 持 続 可 能 な 社 会 保 障 制 度 の 確 立 を 図 るための 改 革 の 推 進 に 関 する 法 律 に 基 づく 社 会 経 済 情

Microsoft Word - ML_ListManager_10j.doc

2 課 題 管 理 ( 科 学 研 究 費 補 助 金 ) 画 面 が 表 示 されます 補 助 事 業 期 間 終 了 後 欄 の[ 入 力 ] をクリックします [ 入 力 ]ボタンが 表 示 されていない 場 合 には 所 属 する 研 究 機 関 の 事 務 局 等 へお 問 い 合 わせく

社会保険加入促進計画に盛込むべき内容

説 明 内 容 料 金 の 算 定 期 間 と 請 求 の 単 位 について 分 散 検 針 制 日 程 等 別 料 金 料 金 の 算 定 期 間 と 支 払 義 務 発 生 日 日 程 等 別 料 金 の 請 求 スケジュール 料 金 のお 支 払 い 方 法 その 他 各 種 料 金 支 払

<6E32355F8D918DDB8BA697CD8BE28D C8EAE312E786C73>

SchITコモンズ【活用編】

能勢町市街化調整区域における地区計画のガイドライン

CENTNET 導 入 の 手 引 き 変 更 履 歴 No. 変 更 日 変 更 番 号 変 更 枚 数 備 考 /07/ 版 発 行 - システムリプレースにより 全 面 刷 新 //07/ 版 発 行 3 誤 字 等 の 修 正 /

マネジメントシステム 認 証 規 則 目 次 1 章 総 則 1.1 一 般 2 章 マネジメントシステムの 登 録 2.1 一 般 2.2 登 録 原 簿 2.3 登 録 証 書 2.4 登 録 マークの 使 用 及 び 認 証 の 引 用 2.5 登 録 維 持 2.6 登 録 継 続 2.7

<4D F736F F D F93878CA797708F4390B3816A819A95CA8B4C976C8EAE91E682538B4C8DDA97E12E646F6378>

連結計算書

参 考 1 無 線 局 情 報 入 力 支 援 ( 基 地 局 と 固 定 局 の 事 項 書 のみに 対 応 ) 無 線 局 情 報 入 力 支 援 機 能 とは 過 去 に 申 請 したデータをダウンロードし 無 線 局 インターネット 申 請 アプリケーション で 利 用 できる 便 利 な

Sea-NACCS 利用者研修 【通関編】

18 国立高等専門学校機構

<4D F736F F D2095BD90AC E937890C590A789FC90B382CC8EE582C893E09765>

OKIKAE-KAIRYOU-V3.xdw

節 実 施 期 間 実 施 級 実 施 期 間 情 報 処 理 第 回 は 級 と 級 のみ 実 施 各 期 間 内 回 の 受 験 となります C 言 語 Java Visual Basic ワードプロセッサ 第 回 は 級 のみ 実 施 第 回 は 級 のみ 実 施 第 回 は 級 と 級 のみ

iStorage ソフトウェア VMware vSphere Web Client Plug-in インストールガイド

文化政策情報システムの運用等

もくじ はじめに 本 書 はスマートフォンやタブレットのアプリ LINE の 設 定 を 行 うためのマニュアルとなります 詳 しい 操 作 方 法 については メーカーホームページ 上 の 基 本 的 な 使 い 方 を 参 照 ください LINE 基 本 的 な 使 い 方

2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e

HDC-EDI BaseのAny変換における閏年の取り扱いに関する重要なお知らせ

スライド 1

Transcription:

MySQLハッキングの 手 引 き 松 信 嘉 範 (MATSUNOBU Yoshinori) 日 本 MySQLユーザー 会 http://opendatabaselife.blogspot.com http://twitter.com/matsunobu 1

今 日 のテーマ MySQLのアーキテクチャ ソースコードの 入 手 とビルド 方 法 デバッグ 方 法 プラグイン 開 発 の 方 法 本 体 拡 張 の 方 法 本 家 へのコントリビュートの 方 法 2

自 己 紹 介 本 業 は MySQLコンサルタント パフォーマンスチューニング HA 等 たまにMySQL 開 発 案 件 を 行 なう 書 籍 / 連 載 現 場 で 使 えるMySQL 2006.3 Javaデータアクセス 実 践 講 座 2008.2 Linux-DBに 関 する 本 2009.9( 予 定 ) 新 連 載 Real World MySQL DBマガジン 10 月 くらいから そろそろ RDBMS 自 作 入 門 のような 本 に 挑 戦 しようかと 3

MySQLとは オープンソースのリレーショナルデータベース C/C++ 一 部 アセンブラで 実 装 現 在 提 供 されているバージョン 5.4 パフォーマンス 改 善 版 MySQL beta 5.1 最 新 の 安 定 版 (5.2/5.3は 欠 番 ) 5.0 安 定 版 4.1 安 定 版 4.0 安 定 版 (サポート 切 れ) マイナーリリースが 数 ヶ 月 程 度 のサイクルで 登 場 ソースコード およびプラットフォームごとのバイナリが 提 供 4

MySQLのアーキテクチャ 接 続 / 操 作 監 査 ログ (プラグイン) リスナー ( 固 定 ) 認 証 ロジック ( 固 定 ) login_connection() UDF (プラグイン) Information Schema (プラグイン) パーサ ( 固 定 ) オプティマイザ ( 固 定 ) mysql_parse() JOIN::optimize() 全 文 検 索 パーサ (プラグイン) 全 文 検 索 Index ( 固 定 ) レプリケーション /バイナリログ ( 固 定 ) テーブルアクセス/ジョイン ( 固 定 ) ストレージエンジン (プラグイン) JOIN::exec() Storage Engine API 5

さまざまな 特 徴 (1) 外 部 ライブラリには 極 力 依 存 しない 作 り STLとかboostとかも 使 っていない プラットフォーム 依 存 性 を 減 らすため OS 依 存 の 命 令 は my_xxxというラッパー 関 数 で 吸 収 Drizzleでは 方 針 が 逆 転 している STL ProtocolBuffer Gearman etc.. デバッグ 用 の 機 能 malloc/free pthread_*などはラッパーを 用 意 して 二 重 ロックや 不 正 アクセス 等 を 検 知 しやすくしている 主 要 関 数 へのIN/OUT 時 にトレースを 出 すようにしている Production 用 では 無 効 化 するように マクロで 制 御 している MySQL5.4 以 降 では Dtraceプローブが 埋 め 込 まれている 6

さまざまな 特 徴 (2) エンディアンフリー 基 本 的 にリトルエンディアンに 統 一 1 の2バイト 表 現 は0x01 00 通 信 プロトコルもエンディアンフリー 関 数 ポインタ サブクラスを 多 用 し 汎 用 性 を 上 げる オブジェクト 指 向 の 定 石 でもある ストレージエンジンAPIなどプラグインを 実 現 するために 重 要 SQL 関 数 ごとにサブクラス 1レコードの 処 理 ハンドラ 用 に 関 数 ポ インタ 等 実 行 速 度 重 視 のビルド 標 準 ビルドではRTTIを 無 効 化 この 影 響 で 実 行 時 にPASSWORD() 関 数 の 場 合 にはこうして という 特 殊 な 処 理 が 難 しい 7

MySQLを 拡 張 する MySQLハッキングのパターンは 大 きく 分 けて2 種 類 MySQL 本 体 に 手 を 入 れる MySQLの プラグイン を 開 発 する プラグインは 共 有 ライブラリ (*.so, *.dll) MySQL 本 体 の 改 変 が 不 要 標 準 バイナリにインストール 可 能 プラグインインターフェイスの 範 囲 内 で 好 きなように 実 装 可 能 要 件 によっては 実 装 できない( 本 体 の 改 変 が 必 須 な) 場 合 がある 例 :ファイル 内 static 変 数 には 外 部 からアクセスできない 例 : 監 査 ログインターフェイスはデバッグ 目 的 では 使 えない (SQL 文 の 実 行 後 に 呼 ばれるため 実 行 時 にクラッシュしても 呼 ばれない) MySQL 本 体 を 改 変 すれば 何 でもできる 標 準 バイナリは 当 然 ながら 使 えなくなる 有 用 なものはMySQL 本 家 にコントリビュートすることも 可 能 8

MySQLのソースコード 入 手 方 法 MySQL 本 家 サイトから 入 手 http://dev.mysql.com/downloads/mysql/5.1.html tar.gz 形 式 マイナーリリースごとに 公 開 MySQLソースコードツリーから 入 手 MySQLはソースコード 管 理 に bzr を 使 用 Launchpad 上 でホストしている https://code.launchpad.net/mysql-server shell> bzr branch lp:mysql-server/5.4 mysql-5.4 最 新 のものがほしい 場 合 はこちらから 9

開 発 の 流 れ 改 変 したいバージョンのソースコードをダウンロード 初 期 ビルド 改 変 デバッグビルド テスト 改 変 cd /path/to/mysql-top BUILD/autorun.sh./configure -- 多 数 のオプション make make install プラグイン 開 発 の 場 合 も デバッグビルドしたMySQLを 使 う プラグイン/MySQL 本 体 ともにデバッグビルドで 開 発 ビルド デバッグ 手 段 Linux/その 他 : gcc, gdb, ddd, Eclipse/NetBeans, etc Windows: Visual Studio 10

Configureオプション BUILD/ 以 下 にテンプレートがある バージョンによってconfigureオプションが 違 うので 注 意 --prefix.. インストール 先 のディレクトリ --with-debug.. デバッグビルドか 通 常 ビルドか --with-comment.. 接 続 時 に 表 示 される 文 字 列 --with-plugins= partitions パーティション 機 能 をサポートする innobase InnoDBストレージエンジンを 入 れる archive Archiveストレージエンジンを 入 れる --with-extra-charsets=complex.. 日 本 語 等 の 対 応 --with-fast-mutexes --enable-thread-safe-client --enable-local-infile --with-pic. 11

Visual Studio DOSプロンプトからwin configure.js を 実 行 引 数 にWITH_PARTITION_STORAGE_ENGINE WITH_INNOBASE_STORAGE_ENGINE などをつける DOSプロンプトからwin build-v8.batを 実 行 Visual Studioを 起 動 ビルド ボタンを 押 す (sql_locale.ccなどは UTF-8N (BOMなし) で 保 存 し なおす 必 要 がある) mysqldプロジェクトを スタートアップ プロジェクト に 指 定 右 クリック プロパティ デバッグ コマンド 引 数 に 起 動 オプションを 指 定 mysqlデータベースをデータディレクトリに 配 置 MySQLを 起 動 12

デモ(1) デバッグ / トレース MySQLに 手 を 入 れる 予 定 が 無 くても デバッグスキルを 持 つことには 意 味 がある クラッシュの 原 因 分 析 のため 動 作 原 理 を 知 るため プロトコルの 動 作 原 理 クエリの 実 行 の 流 れ Visual Studioから 起 動 したMySQLサーバに 対 し MySQLクライアントから 接 続 を 行 い どのように 処 理 が 流 れていくかを 紹 介 13

プラグイン 化 の 流 れ 本 体 への 機 能 改 変 やコントリビュートで 起 こる 問 題 そもそも 本 体 の 改 変 は 難 易 度 が 高 い 投 稿 したパッチがいつまでもマージされない 本 体 はQAの 観 点 からもパッチの 取 り 入 れには 保 守 的 プラグインは 本 体 を 改 変 せずに 使 うことができる MySQL 本 体 でパッチが 取 り 込 まれるのを 待 つ 必 要 が 無 い 本 体 側 の 改 変 が 必 要 な 場 合 は バグレポートやWork Logが 必 要 全 体 的 にはプラグイン 化 を 推 し 進 める 流 れ プラグイン 化 の 流 れをさらに 推 し 進 めたのがDrizzle MySQLでプラグインになっているもの ユーザ 定 義 関 数 (4.0 -) ストレージエンジン (5.1 -) Information Schemaプラグイン (5.1 -) 全 文 検 索 用 パーサ (5.1 -) 監 査 証 跡 (5.4 次 -) セミ 同 期 レプリケーション (5.4 次 -) 14

デモ (2) プラグイン 開 発 Information Schemaプラグイン cat /proc/meminfoの 結 果 を 返 してみる UDF ストレージエンジンAPIを 呼 んで テーブルに 直 接 アクセスしてみる Key Value Storeを 使 うような 感 覚 友 人 100 人 の 最 新 の 投 稿 メッセージIDを 取 得 する クエリを 考 えてみ る SELECT id FROM message WHERE user_id=? ORDER BY id DESC LIMIT 1; これをuser_idを 変 えて100 回 繰 り 返 す (user_id IN ( )だとMySQLではフルインデックススキャンになってしま う) ストアド 化 すると 高 速 化 が 期 待 できる UDFをストアドのかわりに 使 うという 例 15

プラグイン 開 発 の 一 般 的 な 注 意 事 項 MySQL 本 体 をクラッシュさせてしまう 危 険 がある プラグインを 実 行 するプロセスはmysqld プラグイン 内 部 の 不 正 メモリアクセスでも mysqldがsigsegvで 落 ちる 悪 意 あるユーザがバグつきプラグインをINSTALLしてクラッシュさせるこ とも 可 能 一 般 ユーザに 権 限 付 与 しないこと セキュリティホールになりうるので 権 限 管 理 に 注 意 mysqldをroot 権 限 で 動 かさないこと プラグインはOSコマンドを 実 行 できる 実 行 者 はmysqldの 権 限 になる プラグインの 中 身 によっては バージョン 依 存 性 が 高 くなる MySQL 本 体 で 使 っているマクロの 一 部 は 展 開 のされ 方 がデバッグ 版 と 通 常 版 configureオプションなどによって 変 わる そのマクロをプラグインから 使 う 場 合 には 当 然 依 存 性 が 出 る 16

次 世 代 のRDBMSアーキテクチャ? 接 続 / 操 作 リスナー 多 様 なプラグイン (レプリケーション Information Schema 監 査 ログ UDF 認 証 etc) パーサ オプティマイザ テーブルアクセス/ジョイン Storage Engine API クエリ 書 き 換 え ストレージエンジン 17

MySQL 本 体 に 手 を 入 れる 自 分 で 使 うだけなら ソース 改 変 ビルド テストで 良 い MySQL 本 家 に 反 映 してもらうには レビュー のプロセスが 必 要 多 くの 場 合 互 換 性 の 確 保 が 大 きな 壁 になる WorkLogに 登 録 http://forge.mysql.com/worklog/ 新 機 能 の 場 合 はこちらが 良 い またはバグレポートに 投 稿 単 なるバグの 場 合 はこちらが 良 い 18

デモ(3) MySQL 本 体 拡 張 レコードの 最 大 サイズ(TEXT/BLOB 除 く)を64KBから 拡 張 バイナリログの 追 記 上 書 き への 変 更 インデックスへのコメント 記 述 機 能 レコードサイズ 拡 張 CREATE TABLE t1 (c1 VARCHAR(50000), c2 VARCHAR(50000)); を 作 れるようにする max_row_lengthは2バイトで.frm 上 で 管 理 されている.frmのフォーマット 変 更 が 必 要 バージョン 互 換 への 配 慮 が 必 要 19

ソースコードレベルの 議 論 技 術 的 な 議 論 internals@lists.mysql.com バグレポート http://bugs.mysql.com パッチの 投 稿 も 可 能 パッチの 投 稿 レビュー 議 論 commits@lists.mysql.com コミットメールをここに 投 稿 する レビューおよびその 後 の 議 論 は すべてこれをCCに 入 れて 行 なう 20

WorkLogとは MySQLの 新 機 能 の 開 発 計 画 を 管 理 http://forge.mysql.com/worklog/ 流 れ WorkLogに 新 規 エントリを 投 稿 SunのMySQL 開 発 者 がレビュー 担 当 になる Sun Contributor Agreement (SCA)を 締 結 パッチをコミット パッチをレビュー レビュー 結 果 を 踏 まえてパッチをコミット レビュー 完 了 本 家 にマージ 21

パッチのレビュー コーディング 規 約 に 準 拠 していること テストケースが 用 意 されていること mysql-testテストケース その 他 常 識 的 なコードであること スレッドセーフである 効 率 的 な 実 装 になっている 変 数 名 が 自 然 コメントが 読 みやすい 22

コーディング 規 約 ( 抜 粋 ) http://forge.mysql.com/wiki/mysql_internals_coding_guideline s インデント/スペース/ 行 管 理 インデントには 半 角 スペース2 個 タブは 使 用 禁 止 改 行 は nを 使 用 CR+LF( r n)は 禁 止 1 行 は 最 大 80バイト 1つの 関 数 内 に 連 続 した2 行 以 上 の 空 白 行 を 入 れてはいけない 関 数 と 関 数 の 区 切 りには2 行 の 改 行 を 入 れる 変 数 の 代 入 条 件 分 岐 x= 1; のように 変 数 名 と 演 算 子 の 間 にスペースを 入 れない 演 算 子 の 後 にはスペースを1 個 入 れる ifと(の 間 には 半 角 スペースを1 個 入 れる If { ではなく ifと{の 間 には 改 行 を 入 れる などなど 多 数 23

テスト mysql-testという 単 体 テストツールを 走 らせる http://dev.mysql.com/doc/mysqltest/en/index.html 単 体 テストツール mysql-test-run perl mysql-test-run.pl ストレステストツール mysql-stress-test.pl 回 帰 テスト 用 に 使 う 1つの 機 能 追 加 にあたり 最 低 でも1 個 の 妥 当 な テストケースを 追 加 24

WorkLogの 例 監 査 プラグイン http://forge.mysql.com/worklog/task.php?id=3771 セミ 同 期 レプリケーション http://forge.mysql.com/worklog/task.php?id=1720 Preallocating Binlog http://forge.mysql.com/worklog/task.php?id=4925 25

バイナリログの 追 記 上 書 きへの 変 更 パッチ (1) 耐 障 害 性 のため コミット 時 に 同 期 書 き 込 みするニーズ がある sync-binlog=1 大 半 のファイルシステムで 追 記 同 期 書 き 込 みは 上 書 き 同 期 書 き 込 みに 比 べて 圧 倒 的 に 遅 い 10,000+ fsync/s vs 3,000 fsync/sくらいの 違 いはある ファイルサイズを 増 やすための 領 域 確 保 のオーバーヘッドが 大 きい バイナリログは 追 記 で 書 き 込 みのたびにファイルサイズ が 増 える 最 初 から 上 書 きしておけば 速 くなるはず 26

バイナリログの 追 記 上 書 きへの 変 更 パッチ (2) 技 術 的 課 題 最 初 にサイズを 割 り 当 てるが そのコストをゼロにしたい 専 用 コマンドを 用 意 して 割 り 当 てておく( 手 動 ) posix_fallocate() 使 用 ( 自 動 ) レプリケーション mysqlbinlog SHOW BINLOG EVENTS 等 既 存 のすべてのコマンドが 正 常 動 作 する 必 要 がある バイナリログを 転 送 しきったら 次 のイベントが 来 るまで 待 つという 動 作 転 送 しきったかどうかはEOFで 判 定 これは 上 書 き 確 保 した 場 合 にはできない ファイルサイズを 内 部 的 に 管 理 しておく 必 要 がある ファイルサイズが 都 度 更 新 されるので スレッドセーフになるように ファイルサイズを 管 理 する 必 要 がある 今 は すでに 存 在 しているバイナリログの 最 大 番 号 +1 を 新 規 作 成 して 使 用 する これでは 手 動 で 割 り 当 てたバイナリログが 使 われない 27

バグレポートの 投 稿 バグレポートの 投 稿 http://bugs.mysql.com/report.php アカウント 登 録 が 必 要 Synopsis: 現 象 を1 行 程 度 で 登 録 Category Severity Version OS Description How to repeat パッチをここで 投 稿 することもできる 28

バグレポートから 本 体 マージの 例 UPPER()/LOWER() 関 数 がシフトJIS 環 境 で 正 しく 動 作 しない http://bugs.mysql.com/bug.php?id=44352 4 月 18 日 に 立 岡 さんよりパッチ 含 めて 投 稿 5 月 4 日 に 修 正 版 パッチのレビューが 開 始 5 月 28 日 にMySQL5.1.36 本 体 への 反 映 簡 単 なものでも 数 ヶ 月 かかるものもあるし 1 年 以 上 放 置 される 場 合 もありますorz 29

参 考 文 献 基 本 はオンライン 上 で 英 語 (Web メーリングリスト IRC) http://forge.mysql.com internals@lists.mysql.com #mysql-dev 書 籍 の 情 報 はどれも 古 いので 参 考 程 度 に Expert MySQL UDF ストレージエンジンを 自 作 する 方 法 など Understanding MySQL Internals ( 翻 訳 本 : 詳 解 MySQL オライリー) THDやTABLEなど 主 要 なデータ 構 造 MySQL 構 築 バイブル ( 毎 日 コミュニケーションズ) 通 信 プロトコル 関 数 の 自 作 など 超 極 める MySQL ( 翔 泳 社 ) ひろせさんのUDF 解 説 記 事 30

ありがとうございました Q & A 31