タグ

MySQLに関するs-edyのブックマーク (68)

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

    2. 自己紹介  MySQL/Linux周りのスペシャリスト  2006年9月から2010年8月までMySQL家(MySQL/Sun/Oracle)で APAC/US圏のMySQLコンサルティングに従事  主な著書に「現場で使えるMySQL」「Linux-DBシステム構築/ 運用入門」「Javaデータアクセス実践講座」  DeNAでの主な役割  安定化/パフォーマンス/運用周りの中長期的な改善活動  L3サポート/運用/トラブルシューティング – 難度の高いMySQL周りの問題の根原因の特定と解決  多くのプロジェクト支援  社内勉強会/トレーニング – MySQLやデータベース周りのベストプラクティスを社内で共有し、 技術スキルを底上げする  技術マーケティング – 国内外のカンファレンスや、技術雑誌等

    ソーシャルゲームのためのデータベース設計
    s-edy
    s-edy 2011/01/17
  • MySQL InnoDBにおけるロック競合の解析手順 - SH2の日記

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

    MySQL InnoDBにおけるロック競合の解析手順 - SH2の日記
    s-edy
    s-edy 2010/10/06
  • デブサミ2010「高性能・安定運用のためのLinux-DBシステム構築/運用技術」行ってきた - hiroyのブログ

    デブサミに会社を抜け出して行ってきた。参加したのは1つだけだけど。気になった部分とかのメモを公開。 DB製品の品質、という観点が重要 一般解を求めすぎないこと 社内標準で全部揃えようとしたりすると効率が悪いことも アプリの性質によって設定は変えるべき よいところより悪いところを見よう 安定性重要 メモリ ダイレクトI/Oを使おう innodb_flush_method = O_DIRECT スワップ/OOMキラーを避ける vm.swappiness = 0 Innodb Pluginならmallocの設定ができる innodb_use_sys_malloc I/Oスケジューラ noopやdeadlineに変更するのもいいかも(デフォルトはcfq) MySQL 5.4だと大差ないけど MySQL 5.1だとそれなりに差がある I/Oスレッドの数に差があるため MyISAMならI/Oのキューサ

    デブサミ2010「高性能・安定運用のためのLinux-DBシステム構築/運用技術」行ってきた - hiroyのブログ
    s-edy
    s-edy 2010/10/06
  • 漢(オトコ)のコンピュータ道: MySQLを高速化する10の方法

    ちょっとキャッチ−なタイトルをつけてしまったが、今日は独断と偏見でMySQLを高速化する方法を10個紹介しよう。MySQLサーバをチューニングするときや初期導入する場合などに参考にしてもらいたい。 1. バッファを増やす、または減らす チューニングの基中の基であるが、適切なバッファサイズを設定することはパフォーマンスチューニングの要である。主なバッファは次の通り。 innodb_buffer_pool_size・・・InnoDBだけを利用する場合は空きメモリの7〜8割程度を割り当てる最も重要なバッファである。余談だが、実際にはここで割り当てた値の5〜10%ぐらいを多めにメモリを使うので注意が必要だ。 key_buffer_size・・・MyISAMだけを利用する場合は、空きメモリの3割程度を割り当てるといい。残りはファイルシステムのキャッシュ用に残しておこう。 sort_buffer_

    漢(オトコ)のコンピュータ道: MySQLを高速化する10の方法
    s-edy
    s-edy 2010/10/05
  • オトコのソートテクニック2008

    今日は仕事納めだったので、一年の締めくくりとしてMySQLにおけるソートの話でもしようと思う。 インデックスを利用しないクエリで最もよく見かけるもののひとつは、ORDER BYを用いたソート処理だろう。もし、ソート処理においてインデックスを用いることが出来れば、MySQLは結果を抽出してから結果行をソートするのではなく、インデックス順に行を取り出せば良いので高速にソート処理することが可能になる。特に、LIMIT句やWHERE句を用いて行の絞り込みを行う場合は効果が絶大である。しかし、ひとたびインデックスを利用できない状況に直面すると、たちまちテーブルスキャンが発生して性能が劣化してしまう。 例えば、100万行のレコードを格納したt1というテーブルがあるとする。そのテーブルに対して以下のようなクエリを実行した場合を考えよう。 mysql> SELECT col1, col2 ... colx

    オトコのソートテクニック2008
    s-edy
    s-edy 2010/10/05
  • MySQL複合INDEXの威力

    予想以上の効果がでたので記事に残します。 DBの情報を元に統計を行うSQLとプログラムの性能改善で、複合INDEXを試してみました。 MySQLは、4.2です。 対象となったSQLは複数ありますが、そのうちほとんどは4つのテーブルをJOINしています。取得条件を変えながら情報を取得し、最後に目的別に合算するっていうことをやっています。4つのテーブルのうち3つはデータ数200万オーバー、1つは100万オーバー。 最初は、こんな状態 +----+-------------+-------+--------+----------------------------------------------+ | id | select_type | table | type | Extra | +----+-------------+-------+--------+-----------------

    MySQL複合INDEXの威力
    s-edy
    s-edy 2010/09/29
    複合INDEX
  • skip-name-resolve重要 - hiroyのブログ

    MySQLを使っていて、サーバーの負荷は高くないのに接続できないクライアントが発生、状況を見ようとshow processlistするとunauthenticated userがたくさんいることがわかった。そのコネクションがあふれてmax connectionsに到達、接続できないクライアントがあるらしかった。 いろいろ調べてみるとクライアントのIPアドレスDNS逆引きをしていて、その処理が追いつかなくなるとそうなるらしく、解決方法としては2つあった。 /etc/hostsでクライアントの名前解決をできるようにする /etc/my.cnfにskip-name-resolveを設定してMySQLをrestart /etc/hostsでの対策はお手軽だがメンテナンスが面倒な感じ。 skip-name-resolveのオプション付けていなかったっけ…と調べたら付いていないことが発覚。/etc/

    skip-name-resolve重要 - hiroyのブログ
    s-edy
    s-edy 2010/09/24
    タイミングがわかれば別方向から防げる可能性がありそうだなーとか妄想
  • 漢(オトコ)のコンピュータ道: モダンなMySQLの開発環境の構築方法

    遅ればせながら モダンな Perl の開発環境の構築方法 モダンなPHPの開発環境の構築方法 モダンなPythonの開発環境の構築方法 モダンな Java の開発環境の構築方法 に続いてみる。MySQLは言語じゃないけど。 コンパイラ等MySQLをソースからビルドするのでなければコンパイラ等は必要ないけど、どうせアプリ開発に必要なので「MySQLなんかいつでもハックしてやるぞ!」という意気込みを示すために入れておこう。OSXならXcode、LinuxならGCC。最新のソースコードじゃないとヤダ!という粋な人にはBazaarのインストールもお勧めしたい。Bazaarは言わずと知れた分散バージョン管理システムであり、MySQL開発チームも採用している。最新のソースコードは次のコマンドでゲット可能だ。 shell> bzr branch lp:mysql-server/5.1 mysql-5.1

    漢(オトコ)のコンピュータ道: モダンなMySQLの開発環境の構築方法
    s-edy
    s-edy 2010/07/29
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
    s-edy
    s-edy 2010/07/17
  • Cassandraのはじめ方─手を動かしてNoSQLを体感しよう 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    Cassandraのはじめ方─手を動かしてNoSQLを体感しよう 記事一覧 | gihyo.jp
  • インフラ系エンジニア勉強会 "hbstudy"でMaatKitについて発表してきました - marqs blog

    株式会社ハートビーツさんが主催されているインフラエンジニア勉強会でMaatKitというMySQL管理用の便利ツールに関する発表をしてきました。日ではまだまだ使われている方が少ないようですが、とても便利なツールなので、この発表を機会にもっとユーザが増えるといいなーと思っています。 http://www.maatkit.org/

    インフラ系エンジニア勉強会 "hbstudy"でMaatKitについて発表してきました - marqs blog
  • mysqld_multiで複数のmysqldの一括管理 - (゚∀゚)o彡 sasata299's blog

    2009年02月20日01:50 MySQL mysqld_multiで複数のmysqldの一括管理 現在、自サーバのmysqlは、勉強も兼ねてマスター x 1、スレーブ x 2という計3台の構成にしています。 そのため、起動させるときとか面倒です。 毎回、ほぼ同じコマンドを3回も叩いていました。。。 ↓ x 3 ....orz /usr/local/mysql/bin/mysqld_safe \ --defaults-file=/usr/local/mysql/conf/my.cnf \ -ledir=/usr/local/mysql/bin \ >> /var/log/mysql/mysqld_safe.log 2>&1 & めんどくさいよ!!そこで、mysqld_multiというものを試してみることにしました。 これは、同じサーバ内に複数のmysqlがある場合、それらを一括して起動し

    s-edy
    s-edy 2010/04/20
  • 漢(オトコ)のコンピュータ道: InnoDBでCOUNT()を扱う際の注意事項あれこれ。

    InnoDBを使うとき、MyISAMと比較して度々やり玉に挙げられるポイントとして「COUNT()が遅い」というものがある。確かにInnoDBにおいて行数を弾き出すのにはテーブルスキャンが必要なのだが、そもそもMyISAMのCOUNT()が速い(テーブルの行数を保持してる)のが特殊なのであって、InnoDBが遅いわけではないのである。とはいえ、高速なCOUNT()については需要が多く、この問題には多くの人取り組んでおられるようだ。しかしながら、COUNT()のチューニングについては未だ語られていない点があるように見受けられるので、今日はCOUNT()のチューニングについて解説しようと思う。 COUNT(*)、COUNT(col)、COUNT(1)の違い基的なことではあるが、COUNT(*)とCOUNT(col)では意味が異なるため、異なる結果が返される場合がある。COUNT(*)はフェッ

    漢(オトコ)のコンピュータ道: InnoDBでCOUNT()を扱う際の注意事項あれこれ。
  • MySQL AB :: Managing Hierarchical Data in MySQL

    "The Documents contained within this site may include statements about Oracle's product development plans. Many factors can materially affect Oracle's product development plans and the nature and timing of future product releases. Accordingly, this Information is provided to you solely for information only, is not a commitment to deliver any material, code, or functionality, and should not be reli

    s-edy
    s-edy 2010/02/12
    階層構造。
  • MySQL管理者最速マスター

    巷ではプログラミング言語の最速マスターが流行ってるので、MySQLも参戦。ただし管理者向け。 まずはダウンロードとインストールダウンロードサイト http://dev.mysql.com/downloads/ バイナリにはインストールパッケージ(Windows=MSI、Mac=DMG、Linux=RPMとか)とアーカイブ(*NIX=tar.gz/Windows=zip)があるけど、初心者は黙ってパッケージをチョイス。インストールはウィザードに従うだけ。英語だけどそこはガマン! パッケージリポジトリがあるOSを使ってるなら、リポジトリからインストールするのもありだ。例えば、 shell> sudo yum install mysqlとか shell$gt; sudo apt-get install mysqlとか。これは楽チンだけどMySQLのバージョンがちょっと古くなるので注意。 もちろん

    MySQL管理者最速マスター
    s-edy
    s-edy 2010/02/06
    MySQLの構築について。
  • メモ: InnoDB Pluginのバグ - (ひ)メモ

    自分も含め、InnoDB Pluginの使用を検討してる人も多いのではないかと思うのですが、ちと気になるバグを見かけたので追試してみました。 Bug #47621 MySQL and InnoDB data dictionaries will become out of sync when renaming columns http://bugs.mysql.com/bug.php?id=47621 http://bugs.mysql.com/bug.php?id=44571 現象 カラムの名前を替えて、新しい名前のカラムに対して index をつけると、InnoDB Plugin 1.0.4 以前は mysqld がクラッシュし、1.0.5 以降はエラーが出て index がつけられない。 対処法 別テーブルを作ってデータをコピーする。 再現方法 DROP TABLE IF EXISTS

    メモ: InnoDB Pluginのバグ - (ひ)メモ
    s-edy
    s-edy 2010/01/11
    カラムの名前を変えてIndex付けるとクラッシュするバグ
  • 違いが分かるエンジニアのためのMySQL/InnoDB/ZFSチューニング!

    明けましておめでとうございます。今年もコンピューター道に邁進して参りますのでよろしくお願いします! さて、今年一発目のネタはMySQL利用時におけるZFSのチューニングについて取り上げようと思う。Solarisに搭載されている機能の中でも最も注目度の高いものの一つであるZFSであるが、MySQLのバックエンドとしてはあまり利用されていないように思う。(そもそもSolarisのユーザー数自体がそれほど多くないという話もあるが。)ZFSは優れたファイルシステムであり、ファイルシステム自体にスナップショット機能が搭載されていたり容量の限界に先が見えない(充分すぎるほど余裕がある)といった管理上のメリットがあり、DBAにとっては垂涎のファイルシステムであると言える。(Linuxで利用出来ないのが難点だが、ZFSを使うためにSolarisを使うのもアリだろう。) MySQL利用時におけるZFSのチュ

    違いが分かるエンジニアのためのMySQL/InnoDB/ZFSチューニング!
  • MySQLバックアップ頂上決戦!! LVMスナップショット vs InnoDB Hot Backup

    スナップショットを使えばとある瞬間のディスクやファイルシステムのデータをいつでも後から参照することができる。しかもスナップショットの作成は一瞬だ。スナップショット機能を活用すれば最強のオンラインバックアップソリューションが出来るだろう。 しかし、スナップショットでバックアップを取るなんて危険な操作じゃないのか?!と不安に思われる方もいらっしゃるかも知れない。MySQL Serverが稼働中にいきなりデータだけをとってくるのだから、そのような疑問を持たれるのは頷ける。しかし仕組みさえ分かればスナップショットによるバックアップは怖くないということが分かるはずだ。そこで、まずはスナップショットによるバックアップの仕組みについて説明する。スナップショットを取る際の要件は次の通りである。 全てのデータを単一のボリュームに置くこと。つまり、一回のスナップショット操作でバックアップが取れることだ。 ディ

    MySQLバックアップ頂上決戦!! LVMスナップショット vs InnoDB Hot Backup
  • Kazuho@Cybozu Labs: Q4M - MySQL 上で動作するメッセージキュー

  • mixi Engineers’ Blog javascript