タグ

MySQLに関するdeeekiのブックマーク (90)

  • ActiveRecordでデフォルトの照合順序を変更する - Qiita

    MySQLには文字列の照合順序(collation)というのがあって、MySQL側でのcharset utf8のときのデフォルトの照合順序はutf8_general_ciです。 ActiveRecord::Migrationでは明示的に照合順序を指定しない場合、charset utf8で照合順序utf8_unicode_ciのデータベースを作成しますが、これは少なくとも日語圏では多くの人が期待する挙動ではないと思われるので注意が必要です。 たとえば、以下のようなファミリーテーブルをrake db:migrateすると # coding: utf-8 class CreateFamilies < ActiveRecord::Migration def change create_table :families do |t| t.string :name t.string :relation

    ActiveRecordでデフォルトの照合順序を変更する - Qiita
  • 『MySQL初心者に贈るインデックスチューニングのポイントまとめ2014』

    サイバーエージェント公式ブログをご覧の皆さんこんばんは、インフラ&コアテク部の須藤(@strsk)です。普段はAmebaのソーシャルゲーム全般のインフラを見つつ、日語ラップの啓蒙をしながら弊社社員を素材にコラ画像をつくったりしています。好きなAAは麻呂です。 はい、というわけで今回はMySQLインデックスチューニングの基的な流れについてまとめてみました。 ソーシャルゲームは更新も参照もめちゃくちゃ多いです。数秒のレプリケーション遅延も致命的なので適切なテーブル、クエリとインデックス設計が重要です。(何でもそうですけど)インデックスが多くなると更新コストなどが懸念されますが、インデックスが正しく使われていないクエリを放置している方が悪です。そんなこんなで、割と例も偏ったりしてるかもしれませんがあしからず。 前提としてはInnoDBを想定しています。MyISAMはほとんど使っていません。

    『MySQL初心者に贈るインデックスチューニングのポイントまとめ2014』
    deeeki
    deeeki 2014/09/19
  • [Q&A]MySQL開発でやってしまいがちな致命的ミス | Yakst

    Percona MySQL Webinarsの発表(MYSQL開発でやってしまいがちな致命的なミスについて)のQAをご紹介します。 発表はSQLアンチパターン著者のBill Karwinさんの発表です。 オリジナル: http://www.percona.com/resources/mysql-webinars/how-avoid-even-more-common-deadly-mysql-development-mistakes July 17, 2014 by Bill Karwin 水曜日に「MySQLを開発する上でよく起こる(そして致命的な)ミスをどのように回避するか」をPercona MySQL webinarsで発表した。お見逃の際は、ビデオとスライドを見る為に登録すればまだご覧にいただける。 参加いただいた皆様、そしてとりわけすばらしい質問をしていただきありがたく思っている

    [Q&A]MySQL開発でやってしまいがちな致命的ミス | Yakst
    deeeki
    deeeki 2014/08/11
  • Chef SoloでVagrant上にMySQLをインストールする - 5次元のカオス

    2014-01-19 Chef SoloでVagrant上にMySQLをインストールする chef mysql Chef SoloでVagrant上にMySQLをインストールする Vagrantの導入とちょっとしたサーバの初期設定をしてみた を書いてから、 自分でもレシピを書いてみようと思い, mysqlのインストールを行うレシピを書いてみました. しかし、なかなかまとまった情報や、コレ!といったものがないため 自分自身で色々と試さなければいけないことも多く学習コストは高いかもと感じました. とりあえず、動くものが書けてよかった... 初めてのレシピですが, 一応 githubにて公開してみたので、色々とフィードバックして頂けると幸いです. MyChef-repo/mysql at master · seka/MyChef-repo なかなか時間はかかってしまったのですが, 一度書いてしま

  • ChefでMySQL5.6をインストール - Qiita

    MySQLの提供しているYumリポジトリを利用してMySQLの5.6を「セキュアインストール」したい DBサーバ建てるからにはひとつはDB欲しいしそれ用のユーザも欲しい ということでそのあたりをカバーするChefレシピを作成してみました。 「変数」に当たる部分は適宜DataBagなりを使っていただくほうがベターでしょうね。 まずはレシピ # add mysql yum repository remote_file "#{chef::config[:file_cache_path]}/mysql-community-release-el6-5.noarch.rpm" do source 'http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm' action :create end rpm_package "mysql-c

    ChefでMySQL5.6をインストール - Qiita
  • いまどきのカジュアルなデータベース関連開発

    profile id: Songmu (ソンムー) Masayuki Matsuki http://www.songmu.jp/riji/ https://metacpan.org/author/SONGMU カヤック技術部ソーシャルゲーム事業部 二年半ソーシャルゲーム漬け 今年新たに上げたCPANモジュール Riji Puncheur DBIx::Schema::DSL Cache::Redis Config::PL Redis::LeaderBoard DBIx::FixtureLoader SQL::Maker::Plugin::JoinSelect Teng::Plugin::SearchJoined Git::Repository::FileHistory GitDDL::Migrator UnazuSan Plack::Middleware::Woothee Plack::Mi

  • Rails3からMySQLのパーティショニングを扱う時の注意点 - Qiita

    10月に札幌でMySQL勉強会というのがありまして、その時はもくもく作業して成果発表という形だったのですが、そのときにRailsMySQLを組み合わせて色々試したのでそれを記事にしたいと思います。 今回はパーティショニング用のgemを使っていない状態です(後で見たら存在していることに気づきました... パーティショニングについてですが、DB内部で物理的にファイルを分けるようなものです。 例えば、MySQLのDELETE文はとても遅いですが、パーティション自体を消す場合はTRUNCATE並に早いです(1ヶ月ごとにパーティションを切って、月頭に3ヶ月より前のログを削除する時とかに便利 他にも、MySQLのオプティマイザが必要なパーティションを探しだして、そのパーティションに絞ってから検索してくれるメリットもあります。 基形はこちらです class CreateNoPartItems < A

    Rails3からMySQLのパーティショニングを扱う時の注意点 - Qiita
  • Rails、ActiveRecord+mysql2、SQL実行時にwarning出たらエラーにする - &lt;s&gt;gnarl,&lt;/s&gt;技術メモ”’&lt;marquee&gt;&lt;textarea&gt;¥

    MySQLのwarningって、 文字列が長すぎたから勝手に短くして保存しておいたよ! 数字が大きすぎたから適当な数字を保存しておいたよ!! 数値として解釈できない文字列があったから0とみなして比較したよ!!! など、無視すると死ぬ系メッセージであることが多いんだけど無視されがちなので困り者。 insert系のwarningについてはsql_modeの設定を変えることでエラーにできるんだけど、その設定がなされてなかったり、selectがヤバイみたいなケースもあったりしてな(;´Д`) というわけで、ActiveRecord側でチェックするモンキーパッチを書きました(for mysql2)。 1クエリ実行ごとにshow warning投げてるので番にはおすすめしない。 Mysql2::Client、リリースバージョンにはwarning_countがないので……。HEAD使うか、次バージョン

    Rails、ActiveRecord+mysql2、SQL実行時にwarning出たらエラーにする - &lt;s&gt;gnarl,&lt;/s&gt;技術メモ”’&lt;marquee&gt;&lt;textarea&gt;¥
  • パフォーマンス比較 Cassandra、Mongodb、SQLite、H2、MySQL、Postgres - cypher256's blog

    下記のようなシステムでパフォーマンスが良さげな SQLite を使用予定ですが、もっと速いものが無いか確認のため他のデータベースのパフォーマンスを計測してみました。SQL 利用前提ですが、NoSQL が圧倒的な性能を出す場合は検討する必要があるので KVS も確認しました。 データ件数は 1 億件程度、JDBC SQL 利用可能 INSERT、UPDATE はバッチ SELECT は主キーアクセス性能を重視 将来スケールアウトのための分散はありえるが、スタンドアロンで遅いのはだめ データベースのパフォーマンス比較 計測したデータベース データベース名 タイプ 形態 評判 計測についての備考 SQLite RDB 組み込み ※2 おもちゃ、Android標準 JDBC操作 ※1 H2 RDB 組み込み ※2 組み込み最速 JDBC操作 ※1 Derby RDB 組み込み ※2 Java標準で

    パフォーマンス比較 Cassandra、Mongodb、SQLite、H2、MySQL、Postgres - cypher256's blog
  • MySQLの設定ファイル my.cnf をgithubにて公開しました & チューニングポイントの紹介 - blog.nomadscafe.jp

    YAPC::Asiaのスライドで予告していた通り、実際に弊社のいくつかのサービスで使っている my.cnf を公開しました。 github: https://github.com/kazeburo/mysetup/tree/master/mysql 今回、公開した理由はMySQl Beginners Talksの発表の中でも触れている通りです。MySQLのソースコード中に含まれるサンプルのmy.cnfが最近のサーバハードウェアや運用に合わなくなって来ているという状況で、自分の設定にイマイチ自信が持てていない人は少なくないはず。そこで各社秘伝のタレ的な my.cnf をOpen & Shareすることで、モダンなmy.cnfを作り上げる事ができるんじゃないかという考えの下、今回 github にて公開しました。 ファイルは4つあり、それぞれ MySQL 4.0、5.1、5.5、そしてテスト中

    deeeki
    deeeki 2012/10/06
  • 実践 ハイパフォーマンスMySQL(第2版)を斜め読みして前半の重要なポイントだけをまとめてみた - Y's note

    実践ハイパフォーマンスMySQL 第2版 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling,伊藤直也(監訳),田中慎司(監訳),吉川英興(監訳),株式会社クイープ出版社/メーカー: オライリージャパン発売日: 2009/12/14メディア: 大型購入: 17人 クリック: 373回この商品を含むブログ (46件) を見る 実践ハイパフォーマンスMySQLですがMySQL開発者にとっては誰もが目を通しておいた方が良いと推薦されるなので重要なポイントだけをまとめてみたいと思います。まだ前半しか読んでいませんがMySQLの細かいテクニックが載っていて感動です。全部で700ページ近くあるなので斜め読みをした結果を載せて行きます。内容としては実践的なもの

    実践 ハイパフォーマンスMySQL(第2版)を斜め読みして前半の重要なポイントだけをまとめてみた - Y's note
    deeeki
    deeeki 2012/09/25
  • HomebrewでMySQLをインストールする時に知っておきたいこと | Macとかの雑記帳

    HomebrewでMySQLをインストールする際の注意点などについてです。MySQL自体はインストール時に表示される注意書きどおりに設定すれば問題なかったのですが、起動スクリプトで少しトラブったので備忘録です。 その他にもメモっておきたいことがあったので記事にしました。HomebrewでMySQLをインストールした方の参考になればと思います。 MySQLのインストールと初期設定 まずはMySQLのインストール。 インストールが終了すると、下のように色々と表示されるので、その通りに進めていけばとりあえず使えるようになります。 ちなみに、これらの注意書きは$ brew info mysqlを実行すればいつでも見れます。 データベースとユーザーの設定 インストールが済んだら、表示された内容に従って順に設定していきます。最初にデータベースのインストールとデータを格納する場所の設定をします。 $ u

    HomebrewでMySQLをインストールする時に知っておきたいこと | Macとかの雑記帳
    deeeki
    deeeki 2012/07/11
  • これだけ見れば大丈夫!ーMySQLパフォーマンス監視のツボ(クエリ編)|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

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

    これだけ見れば大丈夫!ーMySQLパフォーマンス監視のツボ(クエリ編)|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
    deeeki
    deeeki 2012/03/10
  • レプリケーション作成を簡単にする mysql40dump という mysqldump の wrapper を作った話 - blog.nomadscafe.jp

    みなさん mysqldump は好きですか? 自分はどっちでもありません。 MySQLでよくあるMaster-Slave構成を作る手順は以下のようになると思います MasterからSlaveとなるサーバに一貫性を保った状態のコピーをし、そのデータのバイナリログのファイル・ポジションをメモ。 SLAVEでデータをリストアし、Masterのホスト名、レプリケーションに使うユーザ名・パスワードとメモしたバイナリログのポジションをCHANGE MASTER文に渡し、START SLAVE 一貫性の取れたコピーを作成するためにmysqldumpやxtrabackup、LVMなどでのスナップショットが利用できますが、もっとも簡単な方法がmysqldumpだと思います。 mysqldumpで一貫性のあるデータをとり、その際のバイナリログポジションを記録するには $ mysqldump --single-

    deeeki
    deeeki 2011/12/25
  • 大規模ソーシャルゲーム「ドラゴンコレクション」運営の最前線で得られたノウハウ ~チューニングと運用、18のポイント~

    11月25日、「mobidec 2011」においてコナミデジタルエンタテインメントのスタジオITセンター長である正延光弘氏によるセッション「大ヒットSNSゲーム『ドラゴンコレクション』を支えるコナミのクラウド技術の活用」が行われました。 ドラゴンコレクションは、GREEで提供されている携帯電話向けのカードゲームタイプのRPG。プレイヤーは、エリアごとにある複数のクエストをクリアしていき、モンスターカードや「秘宝」を手に入れ、さらに「ドラゴンカード」を集めていきます。また、ほかのプレイヤーとバトルすることでも秘宝を入手できるというSNS要素も取り入れられていました。2010年9月のサービス開始後、順調にプレイヤー数を伸ばし、現在では登録人数が500万人を超えています。 サービス開始当初は社内でサーバを構築し、フロントエンドに6台のサーバ、バックエンドに3台のデータベースサーバ、そしてロードバ

    大規模ソーシャルゲーム「ドラゴンコレクション」運営の最前線で得られたノウハウ ~チューニングと運用、18のポイント~
  • MySQLにおけるレプリケーション遅延の傾向と対策

    レプリケーションはMySQLで最もよく使われる機能のひとつだ。レプリケーションは基的に非同期でデータの複製を行う仕組みになっているのだが、非同期故にどうしても逃れられない問題がある。そのひとつが今回のテーマ、遅延である。というと、MySQLのレプリケーションはすぐに遅延が生じてしまうように感じてしまうかも知れないが、そのようなことはない。ほとんどの場合は即座にスレーブの更新が行われる。 なぜ遅延は発生するのか、どのように遅延が起きていることを調べるのか、どのように回避するのかということをエントリでは解説したい。うまく遅延と付き合って、MySQLのレプリケーションをより快適に運用してもらえればと思う。 そもそも遅延とは何かMySQLのレプリケーションは非同期で行われる。これは準同期でも同じであり、スレーブにおいて更新が起きるのはマスターよりも一瞬遅れてしまう。これは非同期であるが故に逃れ

    MySQLにおけるレプリケーション遅延の傾向と対策
    deeeki
    deeeki 2011/12/14
  • RubyでMySQLに繋ぐためのruby-mysqlとmysql2 - たごもりすメモ

    このエントリは MySQL Casual Advent Calendar 2011 - MySQL Casual の10日目の記事です。 こんばんは。tagomorisです。さとしです。タゴモリスの s はさとしの s です(実話)。Twitterで #さとし というハッシュタグが流れるたび、ひそかにびくっとしてます。 RubyからMySQLに繋ぐときにどうするの、ととりあえず gem search -r mysql とかやると思います。そして大量にあれこれ出てきてどうすればいいんだ! という気分になると思います。そういう気分になったことがあるので、現状を簡単にまとめてみました。 ruby-mysql 昔からの定番ですね。作者は id:tmtms のとみたまさひろさん。rubygemsとか使われる前から Ruby/MySQL というライブラリ名で知られていました。Googleで検索するとト

    RubyでMySQLに繋ぐためのruby-mysqlとmysql2 - たごもりすメモ
  • MySQLにおけるJOINのチューニングの定石

    EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

    MySQLにおけるJOINのチューニングの定石
    deeeki
    deeeki 2011/10/20
  • mysql コマンドの履歴を残したくない場合は MYSQL_HISTFILE=/dev/null - 酒日記 はてな支店

    タイトルで内容を全部書いてしまった。 SQL を直接 mysql コマンドから発行する場合、デフォルトでは履歴が $HOME/.mysql_history に残ります。次回起動した場合にも履歴をさかのぼれるわけですが、たとえば「番データベースに繋いで更新、削除系の操作を実行する」ような場合。これは履歴に残ったものを間違って再実行してしまうと、大変な悲劇を引き起こす可能性があります。 とうことで、(緊張しながら番で) 削除 SQL を実行した場合、手作業で .mysql_history をエディタで編集して消したりしていましたが、ここでよいツッコミが @n0ts さんから。 直に削除系SQL叩いたらじっとり手に汗が 2011-09-01 15:34:46 via YoruFukurou ヒストリ誤爆しないように.mysql_historyからも消す 2011-09-01 15:36:22

    deeeki
    deeeki 2011/09/03
  • DSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!

    MySQLのチューニングにおいて非常に重要となるメモリ(バッファ)関連のパラメータについて、 チューニングのポイント DSASのとあるDBサーバ(実メモリ4GB)の実際の設定値 をまとめてみます。 また、必要メモリの総量の計算や限界値を越えてないかチェックしてくれるスクリプトも紹介します。 是非、参考にしてみてください! まず最初に注意点を。 バッファには2つのタイプがあります。 グローバルバッファ スレッドバッファ グローバルバッファはmysqld全体でそのバッファが1つだけ確保されるもので、 これに対し、 スレッドバッファはスレッド(コネクション)ごとに確保されるものです。 チューニングの際にはグローバル/スレッドの違いを意識するようにしましょう。 なぜなら、スレッドバッファに多くのメモリを割り当てると、コネクションが増えたとたんにアッという間にメモリ不足になってしまうからです。 in

    DSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!
    deeeki
    deeeki 2011/06/23