You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
社内で, 主に MySQL 初学者を対象とした勉強会をやってきました. 社内勉強会ということで, というと言い訳になりますが, いつも以上にゆるふわな内容となっています. 改めて見るとソースどこだよ? っていう情報がいくつかあるので反省. (「RDBMS を使いつつ, NOSQL で最適化というパターンがほとんど」とかどこのことだよと. まぁ Tumblr とかはそれにあたるみたいですが) あと, インデックスの仕組みを単純化して話すために B-Tree じゃなくて Binary Search Tree について紹介してますが, この辺も詳しい方の突っ込みが欲しい所です. ところで勉強会に参加していてよく思うのですが, 勉強会というのは自分で発表してナンボだということです. これは勉強会で人の話を聞くのは意味が無い, ということではなくて, 自分で調べたときの方が 30 倍ぐらい身に付くん
速いです。 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}
http://d.hatena.ne.jp/ZIGOROu/20091126/1259218194 http://dev.mysql.com/doc/refman/5.1/ja/information-functions.html#function_found-rows mysqlって、SQL_CALC_FOUND_ROWS で LIMIT句なしで書かれた行数を取得できるんですね。 ということは、Data::Pageと組み合わせて、次のように書けばいいのかな? use Data::Page; my $PER_PAGE = 50; #1page毎の表示件数 sub get_item_list { my ($self,$pno) = @_; #とりあえず、total size = $pno * $PER_PAGE にしときます my $page = Data::Page->new($pno *
LIMIT 〜 OFFSET なんか使う SELECT 文をページ送りとかしたい場合、全体の件数が必要だったりして、 SELECT * FROM people LIMIT 50 OFFSET 0; SELECT COUNT(guid) FROM people; みたいな感じの事やりたい訳だけど MySQL の場合だと、そういう枠組みがあるんですよね。 MySQL :: MySQL 5.1 リファレンスマニュアル :: 11.10.3 情報関数 - FOUND_ROWS() さっきのクエリはこんな風になる、 SELECT SQL_CALC_FOUND_ROWS * FROM people; SELECT FOUND_ROWS(); これ、使いたいなと思った時に毎回忘れてググってたので備忘録として書いた。
MySQL 5.1のmysqldumpslowを使うとチューニングが楽になる!という話題です。 mysqldumpslowはもともとMySQLに付属しているツールで、スロークエリログを集計してくれるものです。これ自体はMySQL 5.1で特に変わったところはありませんが、スロークエリログ本体の方が機能強化されているため、組み合わせるとなかなか便利になっています。MySQL 5.1におけるスロークエリログの主な機能強化は以下の三点です。 long_query_timeに1秒未満の値を設定できるようになった。 出力先を設定できるようになった。 これらの設定をオンラインで変更できるようになった。 これでどうなるかというと、MySQLの性能分析をしたいと思ったときに、サーバを止めずにその場で mysql> set global slow_query_log = 1; mysql> set glob
HowFriendFeedUsesMySqlToStoreSchemaLessData - FriendFeed では MySQL を使いどのようにスキーマレスのデータを保存しているのか 目次 この記事について FriendFeed? では MySQL を使いどのようにスキーマレスのデータを保存しているのか 背景 概観 詳細 一貫性と原子性 性能 FriendFeed? では MySQL を使いどのようにスキーマレスのデータを保存しているのか この記事について "How FriendFeed? uses MySQL to store schema-less data" の日本語訳です http://bret.appspot.com/entry/how-friendfeed-uses-mysql CC 2.5 でライセンスされています: http://creativecommons.org/
もしもこの世から「残業」が完全になくなったら 3年ぐらい前に読んだ本を思い出した。 1980−90年代の話ですが、残業について、 「時間外・休日労働の弾力的運用が我が国の労使慣行の下で雇用維持の機能をはたしている」(1985年労働基準法研究会報告)とか、「我が国の労働慣行の実情に合うような上限設定が可能かどうか定かでない」(1992年同報告)と、雇用維持の為のコストとして恒常的な長時間労働を是認する考え方が主流でした。 需要の低下に応じて、生産水準を下げなくてはならなくなっても、バッファがあるから解雇せずに大丈夫でしょ、という。。。 まぁ、 ところが、その後、労働法政策が内部労働市場の雇用維持から外部労働市場における移動促進に徐々にシフトしていったにもかかわらず、この長時間労働哲学には疑問が呈されないまま21世紀に至っているのです。 と著者は問題視しているわけだけど。 話変わって、最近友人
ここ数年の大規模サービスのシステム運用について調べてみたので参照したページやファイル、本へのリンクをまとめておく。PDF へのリンクも多数含まれているのでご注意を。 時代が時代なら企業のノウハウとして隠されていたような情報がこれだけ公開してもらえているというのが非常にありがたい。公開してくれている各企業や公開してくれている人に感謝。 あとで気付いたが、Google や Facebook の事例も探しておけばよかった。Thrift とかあったのに。「こんな情報もあったよ」などあればぜひ教えてください。追記していきます。 youtube http://d.hatena.ne.jp/stanaka/20070427/1177651323 digg http://d.hatena.ne.jp/stanaka/20070427/1177651323 livedoor http://labs.cybo
午後一のセッションだったので眠さMAXでした。。SixApartの人のTypepadの仕組みのところは上の空であんまり聞けてません。印象的だったのはレプリケーションをバックアップに使ってること。ブログサービスなので書き込みの負荷が高いからでしょうか。 エンタープライズ用途への導入サンプルのようなプレゼンでした。やっぱMySQLもエンタープライズ向けになると色々とお金がかかってそうな感じです。 Cololog ベースはTypepad by SixApart 数百万PV/month 70万ユーザ(2008/04) technology Typepadを動かせるプラットフォーム ( Perl ) Monitoring PostgreSQLはVACUUMの監視が必要 memcached使ってごまかしてた (扱うデータが巨大すぎて処理がし辛く)PostgreSQLは腫れ物扱い DBP: Databa
MySQL5.1で実装される機能の紹介でした。Brian Akerさんのプレゼン面白くて大好きです。なので、聞くことに集中してあんまりメモれてなかったり・・・。 発表資料も公開されている様なのでそれを参考にすると良いと思います。 http://krow.net/talks/5.1%20In-Depth.pdf Business Intelligence / Data Warehousing Table/Index Partitioning 1つのパラメータを複数のセットに分ける パーティションレンジの設定が肝 1024パーティション より簡単に hash partioning プライマリキーでやるべし パーティションは設計が非常に重要 mapされてない場合は一番最後のパーティションに入る 全てがよくなる訳ではない めったに選択されないデータを分割して持つ場合は有効 ただオーバーヘッドが高い
パフォーマンス向上のポイントとして以下の3点についてのお話でした。 Slow Query Log Explain Query Cache 英語のセッションでしたが、内容が基本的なことだったので結構聞き取れた気がします。 チューニングで有名なポイントを挙げられてたのでそんな目新しい話は無かったです。 問題となる点 スループット Slow queries The Slow Query Log 遅いクエリをリストアップ バージョン3.xから組み込み Queryのどの部分がネックになってるかはわからない チェックする点 Execution Time バッチ処理とかと被ってるかも ユーザ トータルの実行時間 Rows in Result Total Rows fetched 5.1で機能拡張 Tableにログとれる RuntimeでのON/OFF Microseconds 時間をzeroに mysq
mysqlbench のインストール方法は、つぎのとおり。 日本 MySQL ユーザ会のサイトから mysqlbench-0.1.tgz をダウンロードして、展開する Makefile を libmysqlclient_r.so があるライブラリパスに、mysql のヘッダーファイルがあるヘッダーファイルパスに変更する make を実行すると、mysqlbench の実行ファイルが生成される Makefile の差分、CentOS 5.2 x86_64 の場合 — Makefile-org 2009-01-13 10:41:03.000000000 +0900 +++ Makefile 2009-01-09 22:09:14.000000000 +0900 @@ -1,8 +1,8 @@ CC = gcc CFLAGS = -O2 -D_REENTRANT -LDFLA
MySQL で、ベンチマークをとるときには mysqlbench というツールが便利だということで、付属の README の内容を勝手に翻訳してみた。 README.mysqlbench の内容 このベンチマークツールは、postgresql-8.0 のソースコード内部に含まれている pgbench をベースにしたツールです。 pgbench では、次のことができます。 – TPC-B をシュミレーションした想定 – サーバに対して大量の接続をしてクエリーを流すこと イメージ: サーバ クライアント | MySQL | <–ネットワーク– | 一度だけ大量の雪像をする | | | <———– | | | | <———– |
MySQLのモニタするのに便利なmytopなんですが、MySQL 5に対して使うと、クエリの割合表示が全部ゼロになってしまったります。 これは、MySQL 5.0.2でSHOW STATUS文が変更され、GLOBALかSESSIONというオプションを指定できるようになったことに起因します。このオプションを省略した際はSESSIONを指定したときと同じ動作となり、SHOW STATUS文で得られるのは自分自身の接続についての情報のみとなります。 mytopはオプションなしのSHOW STATUS文を使っているので、MySQL 5ではmytop自身の接続についての情報しか得られず、その影響として、クエリの割合表示が全部ゼロになってしまったりするわけです。 対応は簡単で、mytopのSHOW STATUSをSHOW GLOBAL STATUSに書き換えればいい(書き換えるとMySQL 4.1以前
How to Optimize Rank Data in MySQL | O'Reilly Media データベースに記録されたスコアを元にランキングを求める際の、パフォーマンスに秀でるテーブルやSQLの設計手法に関する記事。「High Performance MySQL」の著者によるもの。 サイト上で獲得点数のランキングを表示するゲームを作ったことがこれまでに何度もあるんだけど、リアルタイムで順位を求めることがほとんどだった。この記事の中で最もよくないとされる方法。まあ、MySQLではないのだけど。 あるスコアの順位を求めるには基本的に というSQLになる。Oracleのようにrank()関数が使える場合は分からないけど、例えば上位50人のデータを順位付きで取得すると、SQLはひとつで済むけど結局サブクエリで順位を計算する形になるので、パフォーマンス的にはよくなさそうな気がする。 先頭レ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く