タグ

MySQLに関するlucky_poolのブックマーク (21)

  • MySQLとインデックスと私

    2021/05/24 サイボウズ開運研修 動画が以下のサイトからリンクされています - https://blog.cybozu.io/entry/2021/07/20/100000 - これに矢印を書きながらぐりぐりやっていたわけなので、資料単体だとわかりづらいと思います…

    MySQLとインデックスと私
  • Kazuho@Cybozu Labs: MySQL のボトルネックを統計的に監視・解析する方法

    MySQL のチューニング、と言った場合には、サーバーパラメータの調整や EXPLAIN コマンドを利用したクエリ実行計画の最適化が話題に上ることが多いです。しかし、発行する全ての SQL について、いちいち EXPLAIN コマンドを使って確認していては、いくら時間があってもたりません。チューニングを効率的に進めるには、まず、ボトルネックとなっている SQL クエリを特定し、次にその最適化を行うべきです。 ではどのようにして、ボトルネックを特定するのか。MySQL Conference & Expo 2009 のキーノートにおいて Mark Callaghan 氏は、Google では SHOW PROCESSLIST コマンドを使った統計的アプローチを使っていると述べていらっしゃいます (参照: MySQLConf 09: Mark Callaghan, "This is Not a

  • MySQL のチューニング (ボトルネックの検出) - onk.ninja

    MySQL のチューニング (ボトルネックの検出) こんにちは! onk です。 SAPさんが各社とも「ソーシャルアプリは負荷対策が大事」って言っていますね。 弊社でも mixi アプリ(PC),mixi アプリモバイルをリリースしたときはお祭り状態だったので, ふりかえりも兼ねて MySQL のボトルネックを調べる方法を書いてみました。 (幸い,モバゲーオープンゲームのリリース時はこれらの経験が役に立ったので何ともなかったです) といっても 9 割方 そもそもサーバの設定がおかしい 更新が多いテーブルなのに MyISAM エンジン for 文の中でクエリを発行 INDEX 張ってない データ量がえらいことになってる 辺りなんですけどねー。 基は下から まず,ボトルネックを調べるときは下の層から上がっていくのが基です。たぶん。 なので ssh でサーバに入って (LoadAverage

    MySQL のチューニング (ボトルネックの検出) - onk.ninja
  • クラウド時代の新常識はこれだ!「MySQL クラウド向け InnoDB チューニング」|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    クラウド時代の新常識はこれだ!「MySQL クラウド向け InnoDB チューニング」 こんにちは。インフラエンジニアの nobuh です。 株式会社インサイトテクノロジー様主催の db tech showcase sapporo 2015  が 9月10日、11日の2日間にわたって開催されました 。 今回、弊社も発表する機会を頂きましたので、インフラエンジニアとして日々 MySQL と格闘して培ったノウハウについてお話させて頂きました。その発表で使ったスライドがこちらです。 クラウド上の仮想サーバーを使って MySQL の管理やチューニングに日々邁進されている方々にご覧いただけると幸いです。 今までにも MySQL に関していくつか記事を掲載していますので、この機会に是非ご覧ください! → OSC2015北海道で「これだけみれば大丈夫ーCactiによるMySQLパフォーマンス監視のツボ」

    クラウド時代の新常識はこれだ!「MySQL クラウド向け InnoDB チューニング」|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
  • MySQLをmaster:slave=1:1構成にして参照をslaveに向けるのがなぜ良くないか - 酒日記 はてな支店

    MySQLのmasterとslave 1:1にして参照をslave向けるのってやりたがる人多いみたいだけど、性能たいして上がらない割に可用性落ちるだけだからやめようキャンペーン 2011-06-19 00:16:30 via YoruFukurou MySQL はレプリケーションが簡単に構成できるのですが、時折 master 1台 に対して slave 1台、更新処理は master に、参照は slave に、という構成を目にします。 個人的にはこの構成はお勧めでないと思っているので、その理由を考察してみます。 1. 可用性が落ちる 当然ですが、master, slave のどちらが落ちても影響を受けるために可用性が低下します。 2. 全体の性能がほとんど上がらない master 1台ですべてのクエリを処理する場合と比べて、可用性が落ちる引き換えとして見合った性能向上が得られるか、という

  • MySQLで参照の負荷分散を行うslaveは3台から構成するのがよいのでは - 酒日記 はてな支店

    前回の記事 MySQLをmaster:slave=1:1構成にして参照をslaveに向けるのがなぜ良くないか の続きです。 master : slave = 1 : 1 で参照を slave に分散してもまったく美味しくないわけですが、では参照の負荷分散を行いたい場合の slave は何台で構成するとよいのか考察してみます。具体的には slave 2台の場合と 3台の場合でどちらがお得か。 台数を増やすということは、どこかに障害が発生する確率が高まる、ということです。1台の slave に障害が発生してダウンした場合のことを考えてみます。 slave * 2 → 残り 1台で処理継続 生き残った1台あたりの処理が 2倍になる slave * 3 → 残り 2台で処理継続 生き残った1台あたりの処理が 1.5倍になる たとえば 1台あたり最大 1000qps の処理能力があるとします。sla

    MySQLで参照の負荷分散を行うslaveは3台から構成するのがよいのでは - 酒日記 はてな支店
  • データベースのmasterとslaveの使い分けの話。2014年版 - Hateburo: kazeburo hatenablog

    社内で少し話題になったので。 運用上の話はfujiwaraさんの MySQLをmaster:slave=1:1構成にして参照をslaveに向けるのがなぜ良くないか - 酒日記 はてな支店 MySQLで参照の負荷分散を行うslaveは3台から構成するのがよいのでは - 酒日記 はてな支店 をみてください。 最近、新しくサービスができたり、新規機能でデータベースを追加する際には必ず全ての参照をmasterに向けてもらっています。理由は上記のエントリを読んでください。このような構成が取れるのはもちろん性能的にそれで問題ないからです。 新しいハードウェアに、設定されたMySQL、問題のないように書かれたSQLであれば、数千QPSは余裕に、また少し頑張れば数万QPSを一台で賄えます。なので大体のサービスはmaster一台で十分です。 さらにこの考え方を進めて、Webアプリケーションの中で sub d

    データベースのmasterとslaveの使い分けの話。2014年版 - Hateburo: kazeburo hatenablog
  • mysql のメタコマンド『G』

    mysql のメタコマンドに『\G』っていう便利なのがあるのを今日、というかさっき知った。 SQL文の最後に「\G」ってつけると、問い合わせ結果をたてに表示してくれるというもの。 mogilefs> select * from device; +-------+--------+--------+--------+----------+---------+------------+ | devid | hostid | status | weight | mb_total | mb_used | mb_asof | +-------+--------+--------+--------+----------+---------+------------+ | 1 | 1 | alive | 100 | 2015 | 756 | 1158770599 | | 2 | 1 | alive |

    lucky_pool
    lucky_pool 2013/11/25
    7年前のエントリだった
  • Harriet ー テストのときつかうにデーモンの取扱を簡単にするためのフレームワーク - tokuhirom's blog

    https://github.com/tokuhirom/Harriet/https://metacpan.org/module/TOKUHIROM/Harriet-0.01/lib/Harriet.pmテストのときにつかう mysqld, memcached, stf, groonga あたりのデーモンを、.t 単位で起動していては遅くてかなわない。かといって、あらかじめ起動させておくというのも。。 というわけで prove のプラグインとしてよしなにする、みたいなのをがんばってかく、というような試みがおこなわれてきたわけですが、どうもめんどくさい。 なんか適当にやったらうまくうごく、っていうかんじのカジュアルなツールがほしいな、なんておもったりするわけですよ そこで、Harriet ってのをつくってみました。 なんかこう、t/harriet/mysqld.pl っていうファイル名でこん

  • RDBMSに関する典型的な誤解が絶えないという現実

    新入社員必読、データベースの基を理解しよう - データベースはなぜ必要なの?:ITproという記事に対するブクマで次のようなIDコールが来た。(現在はコメント返しへのお礼が入っているので、文字数制限のためオリジナルのコメントは少し切り詰められている。) "リレーショナルデータベースはすべてのデータを2次元の表形式で表現"こういうのもリレーションが2次元構造という誤解の一種なんだろうか。id:nippondanjiさんが書いてたような。 さて、この疑問に対する正解は如何なるものだろうか? つい先日「7つのデータベース 7つの世界」の書評で書いたばかりだが・・・ 言うまでもなくその通りである。 リレーションが2次元的な構造を持っているというのは典型的な誤解だ。(ちなみにリレーションの次元は属性の数に等しい。n個の属性があるリレーションはn次元。)リレーショナルモデルについてちゃんと学習してい

    RDBMSに関する典型的な誤解が絶えないという現実
  • tweets.zipをMySQLに突っ込んでSQLを学ぶ(導入編) · さよならインターネット

    April 4, 2013 Twitterの過去ログが落とせるようになったので SQLに学ぶには丁度いいや。ということで カジュアルにOSX上でhomebrewを使ってMySQLに入れてみました。 MySQL ver.5.6 (homebrew install) OS / OSX 10.8.3 なにはともあれアーカイブをダウンロード Twitterの個人設定っぽいところから ポチポチするとダウンロードリンクが貼られたメールが送られてくるので ポチポチしてtweets.zipをダウンロード。 tweets.csvを探す tweets.zipを解凍すると、中身がこんな感じに出てきて index.htmlをブラウザで開くと、過去のツウィートが見れたりします。 時間泥棒なのでおすすめしません そして、tweets.csvが目的のファイルで、中身を開くと "tweet_id","in_reply_t

  • にひりずむ::しんぷる - make test で Test::mysqld を永続化させる方法

    実際にどうやってんのかなーって話をあんまりしてなかったので。 まず、こんな感じのモジュールを t/lib/Test/MyApp/mysqld.pm とかで作って M::I::TestTarget の default_test_target() で `make test` を書き換えてやり、t/script/setup_mysqld.pl に とか書いてあげます。 それぞれのテストでは、Test::MyApp::mysqld->setup で mysqld を立ち上げるようにして置けば、 prove で個別にやった時は、それぞれ立ち上がる make test したときは、最初に立ち上げて、あとは使いまわす という感じになります。 ポイントとしては、 $ENV{TEST_MYSQLD} に Test::mysqld のデータ構造をそのまま JSON にして突っ込む Test::MyApp::m

  • Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT
    lucky_pool
    lucky_pool 2012/09/12
    回答が濃い
  • クリアネオの口コミって信じていい?効果は確実なの? | 愛と小町

    クリアネオの特徴 無添加・無着色だから肌が弱い人でも安心 ワキガや嫌な臭いの原因となる菌を殺菌・消毒 お得な定期コースは、購入縛りなし!いつでも解約可能 体臭の悩みは老若男女問わず共通の悩みですが、他人には相談しにくいので1人で悩んでいる人が多いんです。 体臭って、自分でニオイが気になった時は、他の人はもっとクサイと思っています。 もしあなたが、自分でワキガかも…と思うのであれば、周りの人はあなたのニオイに気づいているかも… クリアネオは、そんなワキガ臭や足のニオイなど、イヤーな体臭全般を10秒でカットしてくれるんです。 クリアネオの効果や口コミを調査しましたので徹底解説します。 購入時に特典が付いてくるのでお得 公式サイトはコチラ ※特典は毎月変わるので公式サイトでご確認ください クリアネオはどんな人におすすめ? クリアネオの殺菌率は、なんと99.999%!体臭の悩みを解消してくれるクリ

  • MySQLでSQL_CALC_FOUND_ROWSとFOUND_ROWSを使うと速いの? « ku

    速いです。 FOUND_ROWS() を使うと直前のLIMITつきSELECTでLIMITしなかったときに帰ってきたはずのレコード数が得られるのでページネーションしたいときに便利。でも SELECT のあとに SQL_CALC_FOUND_ROWS を入れとかないといけないというルールがある。 SELECT COUNT(*) .... するよりも高速ですよ、ってマニュアルには書いてあります。 書いてあるのをなんでそんなことを確認したくなったかというとcakePHPのSELECTステートメントを構築する部分が cake/libs/model/datasources/dbo_source.php で function renderStatement($data) { extract($data); return "SELECT {$fields} FROM {$table} {$alias}

    lucky_pool
    lucky_pool 2012/06/25
    なるほど "FOUND_ROWS() を使うと直前のLIMITつきSELECTでLIMITしなかったときに帰ってきたはずのレコード数が得られるのでページネーションしたいときに便利。でも SELECT のあとに SQL_CALC_FOUND_ROWS を入れとかないといけない"
  • MySQLのEXPLAINを徹底解説!!

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

    MySQLのEXPLAINを徹底解説!!
  • Kazuho@Cybozu Labs: フレンド・タイムライン処理の原理と実践

    « MySQL のクエリ最適化における、もうひとつの検証方法 | メイン | MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 » 2008年06月09日 フレンド・タイムライン処理の原理と実践 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話に続きます。 Twitter が注目されるようになって久しい今日この頃ですが、友人の投稿を時系列に並べて表示する、というのは、Twitter に限らず Mixi の「マイミクシィ最新日記」やはてなブックマークの「お気に入り」等、ソーシャルなウェブサービスにおいては一般的な手法です。ですが、この処理 (以下「フレンド・タイムライン」と呼ぶ) は、一見簡単そうに見えて、実装には様々な困難が伴います。記事では、「フレンド・タイムライン」を実現する、プッシュ型とプル型の二種類の手法について、その原

  • Kazuho@Cybozu Labs: MySQL のクエリ最適化における、もうひとつの検証方法

    « メッセージキュー事始め with Q4M | メイン | フレンド・タイムライン処理の原理と実践 » 2008年06月09日 MySQL のクエリ最適化における、もうひとつの検証方法 EXPLAIN を使用して MySQLSQL を最適化するというのは、良く知られた手法だと思います。しかし、EXPLAIN の返す結果が、かならずしもアテになるわけではありません。たとえば、以下のような EXPLAIN を見て、このクエリが最適かどうか、判断ができるでしょうか。私には分かりません。 mysql> EXPLAIN SELECT message.id,message.user_id,message.body FROM message INNER JOIN mailbox ON message.id=mailbox.message_id WHERE mailbox.user_id=2 OR

  • ゆとり★あいてぃ [ゆとり12] CatalystとMySQLの連携

  • MAMPでMySQLが起動しなくなった場合 « h-at-o.com

    最近MAMPを使い始めたのですが、MAMPを起動させてすぐに、MySQLが突然起動しなくなることが何度かありました。 ある程度作業をしたあとに、突然MySQLが起動しなくなってしまい、インストールし直しはできない!と思って、調べてみたところ、いろいろと原因はあるようなんですが、MAMP Forumに書かれていたことを実行してみるとあっさり直ったので、メモ程度に書いておきます。 MAMP Forum – Error: Could not connect to MySQL server! MAMPを起動させた状態で、MacTerminal.appで “killall -9 mysqld” を実行するだけです。 めでたしめでたし。