タグ

ブックマーク / mixiengineer.hatenablog.com (7)

  • MySQLのInnoDBでのデッドロック - mixi engineer blog

    こんにちは、mixi開発部にてアプリケーション開発をしていますyouheiです。 今回は、MySQL-5.0.45のInnoDBで連番を管理するテーブルのパフォーマンス測定をしていたのですが、その際に少し変わったデッドロック問題に遭遇しましたので、そのあたりをネタとして書いてみたいと思います。 まずは、今回使用したデータベースのスキーマは下記のようなものです。 CREATE TABLE num ( id bigint unsigned NOT NULL default '0' ) Engine=InnoDB; AUTO_INCREMENTは使用していません。 そこに1レコードだけ登録します。 INSERT INTO num (id) values (1); そして実際連番を取得する際には、 UPDATE num SET id = LAST_INSERT_ID(id+1); といったクエリを

    MySQLのInnoDBでのデッドロック - mixi engineer blog
  • mixi Engineers’ Blog » Lua on Tyrant: DBサーバにLLを組み込む

    遅めの夏休みで那須塩原に行ってきたmikioです。牧場でアルパカに触ってきたのですが、めちゃかわいかったです。さて今回は、Tokyo Tyrant(TT)にスクリプト言語Luaの処理系を組み込んで使う方法について解説します。 つか、Luaって何? Lua(公式サイトによると「るーあ(LOO-ah)」と発音)という言語の名前は聞いたことがあっても、数あるマイナー言語のひとつと思って特に気にかけていない人も多いと思います。私もそうでした。しかし、今では、C言語使いの第2言語・第3言語として使うにはとても有望な言語だと思っています。 Luaに関する日語の情報はまだ多くはないのですが、以下のサイトを順に読むとだいたいの雰囲気が掴めると思います。 Lua で組んでみる Lua 5.1 リファレンスマニュアル Luaは言語仕様が小さいので、とても習得しやすいです。上記のリファレンスマニュアルだけ読め

    mixi Engineers’ Blog » Lua on Tyrant: DBサーバにLLを組み込む
    yzx
    yzx 2011/06/23
  • 軽量データクラスタリングツールbayon - mixi engineer blog

    逆転検事を先日クリアして、久しぶりに逆転裁判1〜3をやり直そうか迷い中のfujisawaです。シンプルなデータクラスタリングツールを作成しましたので、そのご紹介をさせていただきます。 クラスタリングとは クラスタリングとは、対象のデータ集合中で似ているもの同士をまとめて、いくつかのグループにデータ集合を分割することです。データマイニングや統計分析などでよく利用され、データ集合の傾向を調べたいときなどに役に立ちます。 例えば下図の例ですと、当初はデータがゴチャゴチャと混ざっていてよく分からなかったのですが、クラスタリングすることで、実際は3つのグループのデータのみから構成されていることが分かります。 様々なクラスタリング手法がこれまでに提案されていますが、有名なところではK-means法などが挙げられます。ここでは詳細については触れませんが、クラスタリングについてより詳しく知りたい方は以下の

    軽量データクラスタリングツールbayon - mixi engineer blog
  • データベースの動的デフラグ - mixi engineer blog

    ノートPCの冷却ファンがうるさいのを対処しようとしてWebで調べたら、そのファンの設計者が「静音性へのこだわり」を語ったページにたどり着いて複雑な心境のmikioです。今回は、Tokyo Cabinet(TC)の最新バージョンで実装された動的デフラグ機能について長々と説明します。 断片化とデフラグ 任意のサイズのデータを管理する記憶装置においては、利用可能領域の断片化(fragmentation)の問題が常につきまといます。ファイルシステム上で任意のサイズのファイルを管理する際にも、データベースファイル内で任意のサイズのレコードを管理する際にも、C言語のmalloc/free関数群でメモリの管理をする際にも、様々なレイヤで断片化が起きうるのです。なぜなら、データを削除もしくは移動した際の空き領域を再利用するにあたって、その領域と同じサイズのデータが常に入ってくるとは限らないからです。特にデ

    データベースの動的デフラグ - mixi engineer blog
  • はじめよう!コンピューターミュージック - mixi engineer blog

    iPhoneゲームの買い過ぎでついにアプリが7ページ目に突入してしまった bonar こと中野恭兵です。今のお気に入りは手軽に遊べる"frenzic"と格派ファンタジーパズル"Aurora Feint" 。最高です。 普段はアプリケーション開発グループ ミュージック開発チームに所属していまして、仕事中は常に mixi Radio 付けっぱなしなわけですが(マイブームは"Monica Uranglass(音が出ます)")、やっぱりコンピューターがある以上、聴くだけでなく自分でも作ってみたいと思うものです。 僕自身弾ける楽器が何もなく、音楽的な教養も無いのですが、まずは最初の一歩を踏み出したいと思い少し調べてみました。 音とは何か 音楽はいろんな音の複雑な合成物なので、音とは何かという部分から考える必要があります。 ご存知の通り、音とは空気の振動です。振動とはつまり一定の周期を持った規則的な

    はじめよう!コンピューターミュージック - mixi engineer blog
    yzx
    yzx 2009/04/27
  • mixi Engineers’ Blog » mixiのスモールワールド性の検証

    初めまして、mixi開発部のfujisawaです。 マイミクシィの友人関係を使って、mixiのスモールワールド性について調べましたので、その結果について書きたいと思います。 スモールワールド性とは スモールワールド性とは、人間関係のネットワークなどでよく見られる性質で、文字通り「世間は狭い(It's a small world!)」ということを表しています。「知り合いを6人介するだけで、世界中の人々と間接的につながることができる」という『6次の隔たり(Six Degrees of Separations)』という言葉でもよく知られています。 一般にスモールワールドは以下の特徴を持っています。 誰に対しても少ない人数を介するだけで到達できる(平均距離が小さい) 自分の友人同士が友人関係にあることが多い(クラスタ性が高い) 1の距離とは、ネットワーク中のノードをたどった回数、すなわち友人を介し

    mixi Engineers’ Blog » mixiのスモールワールド性の検証
    yzx
    yzx 2008/02/20
  • mixi Engineers’ Blog » 新RSS Crawlerの裏側

    このブログでは初めましての長野雅広(kazeburo)です。mixi開発部・運用グループでアプリケーションの運用を担当しています。 12月12日よりmixiのRSSのCrawlerが改善され、外部ブログの反映が今までと比べ格段にはやくなっているのに気付かれた方も多いかと思います。この改善されたRSS Crawlerの裏側について書きたいと思います 以前のCrawlerについて 以前のCrawlerは cronからbrokerと呼ばれるプログラムを起動 brokerはmember DBから全件、idをincrementしながら取得し、外部ブログが設定されていればcrawlerを起動(fork) crawlerはRSSを取得しDBに格納して終了 このような設計になっていました。 この設計の問題として、member DBを全件走査するという無駄な動作と、一件一件crawlerを起動するためオーバ

    mixi Engineers’ Blog » 新RSS Crawlerの裏側
    yzx
    yzx 2007/12/22
  • 1