タグ

MySQLに関するhamacoのブックマーク (130)

  • MySQLについてLTしたのこと。 - NullPointer's

    ある日いきなり社内勉強会でライトニングトークしてねwwと指命されたので、MySQLの話してきました。以前サイバーエージェントエンジニアブログに掲載された「redis、それは危険なほどのスピード」という記事で比較対象になったMySQLに関して考察した内容です。 内容を4行でまとめると、 はてブのツッコミ通りHashインデックス意味ないです rangeスキャンの範囲が広すぎるとB-Treeインデックスはむしろ遅い 2倍速いはread件数の差。アルゴリズムとデータ構造はDBだって重要 パーティション刈り込みでRedisレベルにMySQLを高速化 という内容になります。 俺のSQLがこんなに遅いわけがない 資料では触れていませんが、テーブルの大部分を取得するrangeスキャンであっても、B-Treeインデックスが有効になるケースがあります。例えばテストに用いたテーブルに対して以下のクエリを投げる

    MySQLについてLTしたのこと。 - NullPointer's
    hamaco
    hamaco 2012/05/17
  • MySQLスレーブのmy.cnfにはreport-hostを必ず書こう

    (2012.10.15追記) report-hostではなくslave-hostになってたと@ishikawa84gさんから指摘を受けたので修正。 これで、マスターでshow slave hostsコマンドを打つだけで、スレーブの一覧が表示される。 > show slave hosts +----+------+--+----+ | Server\_id | Host | Port | Master\_id | +----+------+--+----+ | 16800111 | nanikano-dbs01 | 3306 | 16800101 | | 16800112 | nanikano-dbs02 | 3306 | 16800101 | | 16800113 | nanikano-dbs03 | 3306 | 16800101 | +----+------+--+----+ repo

    hamaco
    hamaco 2012/04/15
  • MySQLパフォーマンスチューニングのためのインデックスの基礎知識 - 久保清隆のブログ

    仕事MySQLのパフォーマンスチューニングをしていて、インデックスについて分かっていないことが多かったので調べたことをメモ。基的なところから学習しなおした。 MySQLのインデックスは、カラムが特定の値をもつレコードの迅速な検索に使用される。インデックスを使用すれば、数百とか数億ものレコードが入っているテーブルから、一組のレコードを迅速に見つけて取り出すことが可能になる。 しかし、インデックスは速度を改善することもあるが、挿入の邪魔になって遅くなることもある。 インデックスを適切に使うために、まずはインデックスの基概念をおさえる必要がある。 インデックスの概念 インデックスとは インデックスの仕組みを理解するには、まずMySQLがどのようにクエリに応答するかを知る必要がある。 例えば、 SELECT * FROM phone_book WHERE last_name = 'Hoge'

    MySQLパフォーマンスチューニングのためのインデックスの基礎知識 - 久保清隆のブログ
    hamaco
    hamaco 2012/03/30
  • MySQL SQLオプティマイザのコスト計算アルゴリズム - SH2の日記

    いちいさんにお誘いいただいて、勉強会で発表をすることになりました。 InnoDB Deep Talk #1 : ATND おそらく初見では内容が難しいと思いますので、先に資料を公開しておきます。 プレゼンテーション資料 (PDF) テストデータ生成スクリプト (JdbcRunnerで利用します。) プレゼンテーション資料からリンクしているウェブサイトの一覧です。 MySQL Bugs: #64567: Last_query_cost is not updated when executing an unique key lookup Understanding and Control of MySQL Query Optimizer: Traditional and Novel Tools and Techniques: MySQL Conference & Expo 2009 - O'R

    MySQL SQLオプティマイザのコスト計算アルゴリズム - SH2の日記
    hamaco
    hamaco 2012/03/13
  • mysqldumpの--order-by-primaryオプションについて - SH2の日記

    TIPSです。このようなテーブルがありまして、 CREATE TABLE `link` ( `id1` int(11) NOT NULL DEFAULT '0', `id2` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id1`,`id2`), KEY `ix1` (`id2`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;データは以下のような感じで、このときは2,900万レコードありました。 +---------+---------+ | id1 | id2 | +---------+---------+ | 5 | 69 | | 5 | 1022 | | 5 | 1487 | … | 1081 | 2021414 | | 1081 | 2087813 | | 1082 | 11 | | 1082 | 225

    mysqldumpの--order-by-primaryオプションについて - SH2の日記
  • カジュアルに MySQL を監視する方法 | Carpe Diem

    このエントリーは、MySQL Casual Advent Calendar 2011 – MySQL Casual の第 19 日目のエントリーです。 皆さんこんにちは、n0ts こと、Naoya Nakazawa です。 今日は、みなさん日頃からカジュアルに MySQL を運用して、日々生活されていることと思います。MySQL は、非常に安定したオープンソースソフトウェアだと思いますが、どんなものでもときにはおかしくなったりするものです。 「備えあれば憂いなし」ということで、僕は日頃から Nagios というオープンソースソフトウェアを利用して、MySQL がおかしくなっていかいか日々カジュアルに監視しています。 今日は、カジュアルに MySQL を Nagios を使って監視する方法を紹介したいと思います。なお、今回は CentOS 5.7 x86_64 というカジュアルな Linux

  • レプリケーションが追いつかないときに試すこと - Hatak::Techlog

    MySQL Casual Advent Calendar 2011” 7 日目を担当させていただく、hatak (@hisashi) です。 普段はモバイルゲームのインフラをメインにみているのですが、今回はそんな業務で経験したことを基に記事を書かせていただきます。 カジュアルすぎる内容かもしれませんが、お付き合いいただければと思います。 MySQL のレプリケーション MySQL のレプリケーションは、安定稼働やバックアップ、負荷分散などの目的に利用できる優れた機能です。 bin-log (バイナリログ) を利用して Master サーバから Slave サーバに更新を伝播させ、データの複製を行います。Slave サーバでは、2 つのスレッドが動作しています。 IO_THREAD – Master から送られてきたデータを受け取り、relay-log (リレーログ) として書き出す SQ

  • nabokov7; rehash : mysql の気持ちになって考えよう

    November 08, 201100:12 カテゴリmysqlプログラミング mysql の気持ちになって考えよう 先のエントリで書いた「ソフトウェアの気持ちになって考える」というのを、データベースに応用してみよう。 例えば mysql でマルチカラムインデックスを3つのカラム (A,B,C) に張った場合、 「where A=? and B=? and C > ?」や「where A=? and B = ?」にはそのインデックスが使われるが 「where C=?」や「where B=? and C=?」には有効に働かない、という点に注意する必要がある。 これを、where句に指定されるカラムは複合インデックスのleft most prefixでなければならないと表現するのだけど、それだけ聞くとなにやら小難しい複雑なルールに見える。なぜそのような制約があるんだろう? mysql の気持ち

    hamaco
    hamaco 2011/11/11
    「データベースチューニングとは、データベースに対する思いやりの心である!」
  • すべてのMySQLユーザーに高速な全文検索機能を! - OSC2011.DB用資料 - 2011-11-07 - ククログ

    オープンソースカンファレンス2011 DBのOSSDB MySQLセッションでgroongaストレージエンジンについて紹介してきました。 内容はgroongaストレージエンジンが得意なシチュエーションについてベンチマークデータを紹介するというものです。どういうときにgroongaストレージエンジンが高速に動作するかがわかります。 groongaストレージエンジンが得意なシチュエーション groongaストレージエンジンは以下のような処理が得意です。 全文検索 位置情報検索 リアルタイム更新 groongaストレージエンジンの性能特性を紹介するためにベンチマークデータを紹介しました。ベンチマークはこれらの得意な処理を実行するシチュエーション向けに複数のパターンで行いました。 高速な全文検索 groongaの全文検索処理の性能を示すためにtwitterから取得したデータを利用しました。測定する

    すべてのMySQLユーザーに高速な全文検索機能を! - OSC2011.DB用資料 - 2011-11-07 - ククログ
  • ** YAPC::Asia Tokyo 2011 RejectConf 本当は難しいフレンド・タイムライン処理

    TopicsPlaceHolder SectionTitlePlaceHolder TIME rest time current/total

  • 社内サーバインフラ勉強会(DB)

    2. 今回の目的 1. 「データを保存する」ということが、実際にど ういうことなのかを知る。 2. 中の動作を踏まえることで、効率のよいアプ リを書けるようになる。 3. 問題が起きたときに、その原因を突き止めら れるようになる。 一般論をメインとし、MySQL等の細かい 個別ノウハウは取り上げません。 3. おしながき 1. 「データを保存する」とはどういうことか 2. MySQLがディスクに書くまで 3. 仮想メモリとページキャッシュ 4. とっても複雑なストレージの動作 5. MySQLのインデックスとメモリの関係

    社内サーバインフラ勉強会(DB)
    hamaco
    hamaco 2011/09/29
    MySQLのディスクアクセス回りについて
  • libmysqlclientを使うプログラムはset namesをutf8であっても使ってはいけない | へぼい日記

    mysql_enable_utf8 => 1 で DBIC::UTF8Columns 要らなくなるっぽいComments 上記の記事のブクマに set namesを直接実行しちゃうのはutf8であってもコンパイルオプションによっては問題起こるのでお勧めできない http://b.hatena.ne.jp/nihen/20090204#bookmark-11950629 ってことを書かせてもらったんだけど、この最後のset namesはutf8でも使っちゃダメという話を軽く説明します。 まずは、基的なことはMySQL5開拓団 – 日語処理の鉄則 / KLab株式会社を読んでください。mysqlの日語処理についてのドキュメントとしては、私は今一番信頼できるドキュメントだと思っています。 さて、上記のページの< 図3:クライアント側文字コードの指定チャート>を、勝手ながらすべて引用させてい

  • Covering Index と self-join と MySQL - blog.nomadscafe.jp

    某サービスのクエリチューニングのお話。 ブログとか日記とかそういうサービス系で次のようなテーブルがあったとします。 CREATE TABLE entries ( id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL, posted_by TINYINT UNSIGNED NOT NULL, --#PC、mobileなどどこから投稿されたかのフラグ title VARCHAR(512) NOT NULL, body TEXT NOT NULL, created_at DATETIME NOT NULL, updated_at TIMESTAMP NOT NULL, status TINYINT UNSIGNED NOT NULL, INDEX (user_id,created_at

    hamaco
    hamaco 2011/08/17
  • 20110809 mysql casual talks vol2

    18. レプリケーション(スレーブ)SlaveMaster からIOSQLCHANGE MASTER で消されるdatarelay logエキスパートのためのMySQL運用+管理トラブルシューティングガイド より 19. binlogの 位置(SHOW SLAVE STATUS)IO thread: Master_Log_FileRead_Master_Log_PosSQL thread : Relay_Master_Log_FileExec_Master_Log_Pos 21. IO thread の位置まで待つMASTER_POS_WAIT(log_name,log_pos[,timeout])この関数は、マスター / スレーブの同期化のコントロールに役立ちます。スレーブがマスターログで指定された位置まで読み取り、すべてのアップデートを適用するまでブロックします。戻り値は、指定の位置ま

    20110809 mysql casual talks vol2
  • 超カジュアルに使うMySQL @ MySQL Casual Talks #2

    This document discusses different database technologies including MySQL, NoSQL databases like MongoDB, and how to perform online schema changes with MySQL. It provides several links to resources about using MySQL at scale, including using MessagePack and Snappy for serialization, and different tools for performing online schema changes without taking the database offline.Read less

    超カジュアルに使うMySQL @ MySQL Casual Talks #2
  • MySQLのindexチューニングまとめ|Around the World

    MySQLのクロスチェックもぼちぼち場数踏んできたのでIndexまわりのまとめ。 まず ・ストレージエンジンは必ず確認する。 →indexの構成も変わるし、できればどっちでも試験したほうが○。 ・InnoDBはプライマリキーの値がセカンダリに載ってる。 →MyISAMでプライマリ含んだ複合とか張ってるところはInnoだと省略できる。 ・InnoDBいいけどcountはMyISAMのほうが速い。 ・テーブルのデータ件数を想定する。 →多くなるとこはなるべくindex張りたい(テーブル分割も考慮せよ)。 ・InnoDBだったら可能な限りプライマリキーを使う。 →indexに実データが載ってる。 ・張りまくってもメモリうし、index作るの時間かかるのでよくない。 EXPLAINで確認するとき ・typeにALLかrangeがきたら要チェック。 ・ExtraにUsing filesort, U

    MySQLのindexチューニングまとめ|Around the World
  • my.cnfの設定例 – OpenGroove

    my.cnfの設定例について。以下、重要と思われる箇所をピックアップしてみた。 特に指定がない限り[mysqld]セクションの記述。値はあくまで例。 基的なパラメータ [mysqld] user = mysql ←MySQLインスタンスの実行OSユーザがmysqlになる。 basedir = /usr/mysql ←MySQLバイナリのインストールディレクトリ。 datadir = /data/mysql ←DB領域のトップディレクトリ。新規DBが置かれる。 port = 3306 ←インスタンス起動時TCP/IP接続の受付ポート。 socket = /data/mysql/mysql.sock ←ローカルからの接続時に使用するソケットファイルの指定。 基的にMySQLインスタンスの起動はrootかユーザmysqlで行う。 どちらにしてもプロセスオーナーはmysqlとなる。 datad

  • DBチューニングできますか? - Perl日誌

    あらすじ 面接に行くとDBに関しての知識はどれぐらいあるのかを問われる事が多々あります。 それは良いのですがその質問がざっくりとしている事が多々あります。たとえば次のように広い質問をうけたりします。 「DBのチューニングはできますか?」 何を基準にした質問なのか、何を基準にして答えればよいのかいつも困るので事前に回答をまとめてから面接に行くとしようという試みです。*1。 そもそもDBのチューニングって何? DBのチューニングできますか?と言われて困ったのは、「相手が期待している回答は何?」という事です。 前提が異なる両者が会話をしても収束しないのでまずは言葉の定義を明確にしたいと思います。 ちなみにこの質問に「ファイルに保存されている情報をより少ない手順で引き出せるか、という質問なのでしょうか?」と逆に質問したところ相手も困惑していました。 今思えば「WEBアプリ作って運営してるとしょっち

    DBチューニングできますか? - Perl日誌
  • オープンソース開発者がDeNAを選ぶ理由

    This document discusses the history and capabilities of Q4M, an open-source message queue plugin for MySQL. It was created in 2008 by Cybozu to provide a robust, fast messaging system accessible via SQL. Major Japanese companies like DeNA, Livedoor and Mixi use Q4M for asynchronous communication between services. The document also covers related projects like Mycached, a memcached-like plugin, and

    オープンソース開発者がDeNAを選ぶ理由
  • mysqldump --single-transaction に --flush-logs をつけてはいけない - tmtms のメモ

    (いまだに時々ブクマされていたりしますが、これはバグで MySQL 5.5.21 以降では修正されています。) mysqldumpMySQL のデータのバックアップを取得するコマンドです。 mysqldump に --single-transaction を指定すると一貫性を保持したバックアップを取得することができます*1。 この時に mysqldump が発行しているクエリは次のような感じです。 [mysqldump --single-transaction DB名] SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ START TRANSACTION WITH CONSISTENT SNAPSHOT UNLOCK TABLES DB選択 テーブルからデータの読み込み「START TRANSACTION WITH CON

    mysqldump --single-transaction に --flush-logs をつけてはいけない - tmtms のメモ