タグ

MySQLに関するICHIROのブックマーク (44)

  • MySQL with InnoDB のインデックスの基礎知識とありがちな間違い - クックパッド開発者ブログ

    こんにちは、サービス開発部の荒引 (@a_bicky) です。 突然ですが、RDBMS の既存のテーブルを見てみたら「何でこんなにインデックスだらけなの?」みたいな経験はありませんか?不要なインデックスは容量を圧迫したり、挿入が遅くなったりと良いことがありません。 そんなわけで、今回はレコードを検索するために必要なインデックスの基礎知識と、よく見かける不適切なインデックスについて解説します。クックパッドでは Rails のデータベースとして主に MySQL 5.6、MySQL のストレージエンジンとして主に InnoDB を使っているので、MySQL 5.6 の InnoDB について解説します。 InnoDB のインデックスに関する基礎知識 インデックスの構造 (B+ 木) InnoDB では B+ 木が使われています。B+ 木は次のような特徴を持った木構造です。 次数を b とすると、

    MySQL with InnoDB のインデックスの基礎知識とありがちな間違い - クックパッド開発者ブログ
  • MySQL :: MySQL 5.5 Reference Manual :: 27 MySQL for Excel

    MySQL for Excel allows you to work directly and access a MySQL Server database from within Microsoft Excel. The main features include: Importing data into a new or existing Microsoft Excel spreadsheet. Exporting data from a Microsoft Excel spreadsheet to a MySQL Server database. Appending Microsoft Excel data into an existing MySQL Server database table. Editing MySQL Server data directly from a M

  • 開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!

    米国で行われているMySQL Connectというイベントで、ついにMySQL 5.6 RC(リリース候補版)が発表された。リリース候補版ということは、これが次の正式版になるということだ。MySQL 5.5は5.1から凄まじい進化を遂げたバージョンであった。だが、MySQL 5.6はさらにそれを上回る進化を遂げている!正直ここまでの進化を誰が予想しただろうか、いや誰も出来なかったであろう。これまで、α版が出たときから何度か新機能について紹介してきたが、今回改めてMySQL 5.6の新機能を振り返ってみようと思う。すべてまとめるともの凄い内容だ。興奮して夜も眠れなくなること請け合いだ。MySQLの進化が止まるのでは?などという心配は吹き飛び、もはやもうちょっと小出しにしなくて良かったのか?と心配してしまうレベルである。 それではMySQL 5.6の新機能について紹介していこう。 InnoDB

    開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!
    ICHIRO
    ICHIRO 2012/10/01
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

    ICHIRO
    ICHIRO 2012/08/11
  • 便利なスクリプト集 MySQL Utilities - rkajiyama’s diary

    実は1.0.0が2010年12月にリリースされていたのに全く知名度の無い"MySQL Utilities"。実は便利な機能が複数用意されているので、スクリプトを手作りしなくても済む可能性大です。またリリースに向けて新たなマイルストーンリリースが出てきたMySQL 5.6でのレプリケーションの追加機能と組み合わせる便利機能もあります。 MySQL UtilitiesはPythonで書かれたスクリプト集で、MySQL Workbenchに同梱されて配布されています。ライセンスは「もちろん」GPLです。2012年7月上旬時点での最新版は1.0.5です。また実行可能なスクリプトの他に、ライブラリとして細かな機能が用意されているため、独自のスクリプト作成にも役立ちます。 起動にはMySQL Workbenchのメニューの【Plugins】から【Start Shell for MySQL Utilit

    便利なスクリプト集 MySQL Utilities - rkajiyama’s diary
    ICHIRO
    ICHIRO 2012/07/30
  • MySQL Binlog APIを試してみる - As a Futurist...

    MySQL のレプリケーションは素晴らしい仕組みなのですが、ちょっと凝ったことをしようとするには機能が限られています。特に、MySQL の更新を他のデータストアにマイグレーションしたいような時は、Trigger を使って超頑張るのはイマイチで、バイナリログを使ったレプリケーションの仕組みをそのまま拡張してマイグレーションするようなワーカーを書きたくなるものです。 そんな時に使える便利な API として、Binlog API というものがあります。まだ開発途上ではありますが、期待の持てる API です。 assets.en.oreilly.com/1/event/61/Binary log API_ A Library for Change Data Capture using MySQL Presentation.pdf 試しにどんなもんなのか使ってみました。 追記 2012/07/09

    MySQL Binlog APIを試してみる - As a Futurist...
    ICHIRO
    ICHIRO 2012/07/26
  • MySQL Search Team: A Binary Log API and a Replication Listener

    måndagen den 25:e juli 2011 A Binary Log API and a Replication Listener This blog will be about the binary log API found in the MySQL Replication Listener package. What does that have to do with intuitive searching in a MySQL database you ask? Because you can use the binary log to update any external index through a technique called Change-Data-Capture (CDC). When writing this blog I imagine that

    ICHIRO
    ICHIRO 2012/07/26
  • ここが新しい!MySQL 5.1

    行ベースレプリケーション MySQLにはマスター/スレーブ型のレプリケーション機能があります。MySQLでサポートしているのは非同期型のレプリケーションで、マスターサーバーで実行されたSQLステートメントをスレーブサーバーへ転送し、スレーブで再実行することでデータを一貫に保つという手法を用いています。 これはステートメントベースレプリケーション(SBR)と呼ばれています。SBRではその仕組み上、根的な問題があります。例えばUUID()という関数がありますが、マスターとスレーブでUUID()を実行するとそれぞれ違う結果になってしまいます。 その結果、マスターとスレーブにはデータの不整合が生じてしまいます。この問題を解決するには、スレーブへ伝達する情報をステートメントではなく、実際にテーブルへ書き込まれた内容、つまり行そのものにする必要があります。それを実装したのが行ベースレプリケーション(

    ICHIRO
    ICHIRO 2012/07/26
  • 大人のためのInnoDBテーブルとの正しい付き合い方。

    InnoDB関連でよくある質問のひとつに「テーブルのメンテナンスは何をすればいいんですか?」というものがある。InnoDBMySQL 5.5でデフォルトストレージエンジンとなるため、InnoDBのテーブルメンテナンス計画を立ようと思う機会も増えることだろう。そこで、今日はInnoDBのテーブルメンテナンスの各種方法となぜそうしなければいけないかという理由を解説しようと思う。 ANALYZE TABLEテーブルメンテナンスの代名詞といえば、インデックス統計情報の更新ではなかろうか。運用を続けるうちに、知らず知らずインデックス統計情報が狂ってしまい、思うような性能が出ない。RDBMSにはそのような問題がつきものであるが、InnoDBの場合、ANALYZE TABLEは不要である。なぜなら、InnoDBが自発的に統計情報を更新するからだ。InnoDBは以下の条件に適合すると、ANALYZE T

    大人のためのInnoDBテーブルとの正しい付き合い方。
    ICHIRO
    ICHIRO 2012/07/19
  • MySQL 5.6におけるsync_binlog=1の改善について&勉強会のお知らせ - SH2の日記

    2012年6月のエントリの続きです。前回は同期レプリケーションによるネットワーク遅延のある環境において、MySQLの性能がどの程度低下するのかということを確認しました。その中でも特にsync_binlogが1に設定されている場合、性能が大きく低下するということが分かりました。参考としてAmazon RDSのマルチAZデプロイメントにおいては、性能と信頼性のトレードオフを考慮した結果、sync_binlogがデフォルトで0に設定されているということを調査しました。 タイトルでネタバレしていますが、MySQLの次期バージョン、MySQL 5.6でこのsync_binlog=1の性能が大きく改善します。前回と同じ負荷テストMySQL 5.5.25からMySQL 5.6.6-labsに差し替えて行った結果を、以下に示します。 前回のMySQL 5.5.25と異なり、sync_binlog=1にお

    MySQL 5.6におけるsync_binlog=1の改善について&勉強会のお知らせ - SH2の日記
    ICHIRO
    ICHIRO 2012/07/17
  • MySQL binlog API は row based mode でこそ、その真価を発揮する!! - tokuhirom's blog

    空前の MySQL binlog API ブームですが、みなさん libreplication の examples/basic-[12] を実行するだけで満足してしまっているようです。しかし、libreplication のおもしろいのは examples/mysql2lucene の方なんです。 3つのロギングモード普段はあまり意識しないかもしれないですが mysql の binlog には statement based, row based, mixed の3種類があります。 statement based は、実際に実行された SQL が記録されます。一部の関数でちょっと危険です。 row based では、実際に変更された行のデータが記録されます。 mixed では、危険な関数をつかった場合などには row based で記録し、そうでなければ statement based

    ICHIRO
    ICHIRO 2012/07/11
  • MySQLのDRBD構成におけるネットワーク遅延の影響について - SH2の日記

    今さらですが、Amazon RDSのマルチAZデプロイメントについて調べていました。マルチAZデプロイメントとは、独立した電源、空調、ネットワーク、セキュリティを備えた物理的に異なるロケーションに対して同期レプリケーションを行うことで、データベースの耐障害性を高める機能です。AZはAvailability Zoneの略です。 異なるロケーションに対する同期レプリケーションと聞くと、性能が出ないのではないかという懸念がどうしても出てきます。そこで、どの程度性能が落ちるものなのか検証を行いました。なお、すでに実際のAmazon RDSを利用して検証を行った方がいらっしゃいましたので、今回は手元の環境を利用して、ネットワーク遅延やMySQLパラメータと性能との関連性を確認していきたいと思います。 Amazon RDS MYSQL Performance Benchmarking - Cloud

    MySQLのDRBD構成におけるネットワーク遅延の影響について - SH2の日記
    ICHIRO
    ICHIRO 2012/06/25
  • 米国への引越とFacebook入社のご報告

    件名の通り、私は米Facebookに最近入社したことをここでご報告します。 相変わらずMySQL関係の仕事をすることになります。 チームメンバーはアジアには誰もおらず大半が米国社(Menlo Park)にいるため、自分も引っ越すこととなりました。 すでに生活の拠点を会社から10km未満というそう遠くないところに移しています。 当然ながら入社前に話をオープンにするわけにもいかないので、DeNAの中の方たちや、ごく親しい人にしかご挨拶ができずにすみませんでした。 このBlogの読者であればご存知のように、私はキャリアの途中からほぼMySQL仕事をしてきています。 実はDeNAは、世界でも指折りのMySQLのヘビーユーザとして認知されています。 去年の米MySQL Conferenceでは会社としてAwardを受けました。それも純粋に技術的な貢献が評価された上での受賞であり、「日でのコ

  • Microsoft PowerPoint - mysql_costcalc.ppt

    1 MySQL SQLオプティマイザのコスト計算アルゴリズム InnoDB Deep Talk #1 2012/03/10 平塚 貞夫 2 自己紹介 • DBエンジニアやってます。専門はOracleMySQL。 – システムインテグレータで主にRDBMSのトラブル対応をしています。 – 仕事の割合はOracleMySQL=8:2ぐらいです。 • Twitter:@sh2nd • はてな:id:sh2 • 写真は実家で飼っているミニチュアダックスのオス、アトムです。 3 日のお題 • MySQLのステータス変数にLast_query_costというものがありまして、これを参照 すると直前に実行したSQLのコストを確認することができるようになっています。こ の値は実績値ではなく、SQLオプティマイザがSQL実行計画を選択するために算 出した推定値を表しています。 • 日は、みなさんにこ

    ICHIRO
    ICHIRO 2012/03/15
  • これだけ見れば大丈夫!ーMySQLパフォーマンス監視のツボ(クエリ編)|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    これだけ見れば大丈夫!ーMySQLパフォーマンス監視のツボ(クエリ編) こんにちは、インフラ担当新人の nob です。 サーバー監視ツールで MySQL を監視しているのにデータが多すぎて活用していない。という方はいませんか?その豊富なデータをパフォーマンス・チューニングに活用しない手はありません。今回はサーバー監視ツールのグラフを読み解いた実戦経験を元に、「これだけ見れば大丈夫」というツボをまとめてみました。 これだけ見れば大丈夫! クエリ編 3つのつぼと5つのグラフ (その1)監視ツールが何を見ているのか知る (その2)監視のキモ、グラフ3点セット (Questions, Lock Waits と Transaction Handler) (その3)グラフでチェックする SQL チューニング ( Select Type と Handler) シンプルでお勧め、サーバー監視グラフ化ツール

    これだけ見れば大丈夫!ーMySQLパフォーマンス監視のツボ(クエリ編)|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
    ICHIRO
    ICHIRO 2012/03/09
  • MySQLのEXPLAINを徹底解説!!

    以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ

    MySQLのEXPLAINを徹底解説!!
    ICHIRO
    ICHIRO 2012/02/29
  • DeNAによる大規模なMySQLノンストップ運用の裏側にある、フェイルオーバー自動化ツール

    4月11日から米サンタクララで行われた「MySQL Conference & Expo 2011」。このイベントでDeNAの松信嘉範(まつのぶよしのり)氏が、同社の大規模なMySQLの運用を支えている技術とツールについてのセッション「Automated, Non-Stop MySQL Operations and Failover」を行いました。 プレゼンテーションの中で、社内で利用しているフェイルオーバーの自動化ツールをオープンソース化することにも触れています(英語のドキュメントも作成中とのこと)。 MySQLの大規模運用における自動フェイルオーバーは、特にクラウドでのMySQLの利用が増えるにつれてニーズが高まる分野と思われます。セッションのスライドが公開されていますので、そのポイントを紹介していきます。 自動化されたノンストップなMySQLの運用 ソーシャルゲームでは高可用性が強く求

    DeNAによる大規模なMySQLノンストップ運用の裏側にある、フェイルオーバー自動化ツール
  • MySQL Cluster 7.2見参!Webでも使える熱いヤツがやってきた。

    前回のエントリではMySQL 5.6の新機能についてレビューを行ったが、MySQL User Conferenceに合わせる形でMySQL Clusterの新しい開発版であるバージョン7.2も発表された。一見すると追加された新機能の数は少なくMySQL 5.6ほどのインパクトはないが(というかMySQL 5.6の新機能がありすぎなわけだが)、実は7.2ではMySQL Clusterにとって非常に重要な改善がなされているのだ! というわけで、今日はMySQL Cluster 7.2の新機能を紹介しよう。 JOINの性能が改善!まず最初に最も重要なことについて述べよう。MySQL Cluster 7.2ではJOINの性能が改善している。非常に大切なことなのでもう一度言おう。MySQL Cluster 7.2ではこれまで最大の弱点であったJOINの性能が改善している! MySQL Cluster

    MySQL Cluster 7.2見参!Webでも使える熱いヤツがやってきた。
    ICHIRO
    ICHIRO 2011/04/14
  • mysqlコマンドをより便利に安全にするための小粒なTIPS集|サイバーエージェント 公式エンジニアブログ

    初めまして。2010年の3月に入社した oinume です。新年1月からウィルス性胃腸炎に罹りながらもなんとかこのエントリーを書いています。今回は、mysqlコマンドに関する自分が今まで学んだ&教えてもらった細かい実践的なTIPSを紹介します。小粒ですが何かの役に立てば幸いです。 edit (¥e)コマンド mysqlプロンプトにいながら任意のエディタでSQLが編集できちゃいます。具体的には、mysqlコマンドでプロンプト待ちの状態で mysql> edit のように edit または ¥e と入力すると、環境変数EDITORで設定してあるエディタが立ち上がりSQLが編集可能になります。編集が終わったらエディタを終了して ; とやればSQLが実行されます。viなどターミナルで動くエディタに慣れている人は長いSQLを編集する時に重宝する機能でしょう。この技は前職の同僚に教えてもらって、以降便

    mysqlコマンドをより便利に安全にするための小粒なTIPS集|サイバーエージェント 公式エンジニアブログ
  • ソーシャルゲームのためのデータベース設計

    ・データベース的な観点でのソーシャルゲームの特徴 ・データモデル ・ソーシャルゲームに従来型RDBMSを使うべきか、�流行りのNoSQLで行くべきか ・負荷対策 (アーキテクチャ面) ・負荷対策 (ツール面) ・インフラエンジニアのキャリアについて

    ソーシャルゲームのためのデータベース設計