GitLab FOSS is a read-only mirror of GitLab, with all proprietary code removed. This project was previously used to host GitLab Community Edition, but all development has now...
![Files · master · GitLab.org / GitLab FOSS · GitLab](https://cdn-ak-scissors.b.st-hatena.com/image/square/6b7441b59bd8eb0ec79e9e5167d112e3fc88854f/height=288;version=1;width=512/https%3A%2F%2Fgitlab.com%2Fuploads%2F-%2Fsystem%2Fproject%2Favatar%2F13083%2Fproject_avatar.png)
こんにちは、サービス開発部の荒引 (@a_bicky) です。 突然ですが、RDBMS の既存のテーブルを見てみたら「何でこんなにインデックスだらけなの?」みたいな経験はありませんか?不要なインデックスは容量を圧迫したり、挿入が遅くなったりと良いことがありません。 そんなわけで、今回はレコードを検索するために必要なインデックスの基礎知識と、よく見かける不適切なインデックスについて解説します。クックパッドでは Rails のデータベースとして主に MySQL 5.6、MySQL のストレージエンジンとして主に InnoDB を使っているので、MySQL 5.6 の InnoDB について解説します。 InnoDB のインデックスに関する基礎知識 インデックスの構造 (B+ 木) InnoDB では B+ 木が使われています。B+ 木は次のような特徴を持った木構造です。 次数を b とすると、
表題の通り、MyNAとJPUGの合同DB勉強会で発表をしたので資料を公開した。 内容の詳細はスライドそのものを見ていただくとして、言いたいことの主旨はこうである。世の中に完璧なデータモデルはないので、NoSQLは当然の如く必要になる。だが、何でもかんでもNoSQLを使えば良いというものではない。むしろアプリケーションが必要としているデータモデルが何かということをよく理解し、本当に必要な場合にこそ、NoSQLを使うべきなのである。つまり「ご利用は計画的に!」ということだ。 大切なのは、様々なデータモデルを理解し、アプリケーションにとってベストな製品を選択するということだ。ベストなのがRDBかも知れないし、そうでないかも知れない。最適なデータモデルを選択した場合に、出来上がったものの性能も最高になるし、開発効率も最も良くなる。データベースの主流はRDBだが、それはリレーショナルモデルがカバーで
MySQL masterDBダウン時のサービス停止時間の短縮をはかるために、MHAについて調査してみました。 通常、運用中の大規模なサービスに、後からHAのアーキテクチャを導入する場合、多くの場合システムの再構築が発生するため、導入のコストは高くなる傾向があります。 予算を確保するため資料をつくって説明にまわり、メンテナンスの為のサービス停止許可を得るためにまた説明にまわり、サーバのセットアップ、データの移行、テスト、リリースと、コストも時間もかかる作業になります。しかしMHAは、既存の環境を入れ替えること無しに導入する事が可能なので、導入コストはとても低いです。 MHAがどういうものか、まだイメージができていない方には、この様に説明することができます。MHAは、masterDBダウン時に、手作業で行っていたslaveの昇格作業をスクリプト化し、監視処理からそのスクリプトを呼ぶことで、ダウ
レプリケーションはMySQLで最もよく使われる機能のひとつだ。レプリケーションは基本的に非同期でデータの複製を行う仕組みになっているのだが、非同期故にどうしても逃れられない問題がある。そのひとつが今回のテーマ、遅延である。というと、MySQLのレプリケーションはすぐに遅延が生じてしまうように感じてしまうかも知れないが、そのようなことはない。ほとんどの場合は即座にスレーブの更新が行われる。 なぜ遅延は発生するのか、どのように遅延が起きていることを調べるのか、どのように回避するのかということを本エントリでは解説したい。うまく遅延と付き合って、MySQLのレプリケーションをより快適に運用してもらえればと思う。 そもそも遅延とは何かMySQLのレプリケーションは非同期で行われる。これは準同期でも同じであり、スレーブにおいて更新が起きるのはマスターよりも一瞬遅れてしまう。これは非同期であるが故に逃れ
1.3 今回の検証に利用するサービス ブログ(mobile)のログイン管理用とスキン情報のデータベースを利用 1.4 使用するDBの詳細情報 DB構成 Master:1台 Slave:3台 ブログモバイルで2台 その他サービスで1台 各データ件数 モバイル登録ユーザー及びログイン情報:役2,000,000件 総スキン数:155件 スキン適用ユーザ数:約1,100,000会員 ピークタイム時のSQL発行回数(Slave1台あたりの発行回数) ブログモバイルのみ Select:58,000/分程度 ブログモバイル以外のサービス Select:20,000/分程度 以下は共通 Insert:60/分程度 Update:900/分程度 Delete:10/分程度 1.5 使用するベンチマークツール super-smack-1.3 ベンチマークで使用するSQLの内容ログイン状態チェックSQL 1件問
2011年はサーバサイド JavaScript の年! サーバサイド JavaScript の本命は node.js! ということで割と普通のウェブアプリケーションを node.js で作るためのチュートリアルを書いてみました。WebSocket とか新しめの話題は結構見ますが、PHP とかで普通のウェブアプリ作ってる人向けのチュートリアルとかあんま見ないような気がしたので、って感じです。 チュートリアルの内容ですが、コード量が少なめで機能的にも分かりやすそうなモノということで、短縮 URL ウェブアプリケーションを作ってみることにしました。bit.ly とか t.co とか nico.ms みたいなアレです。短縮 URL のデータは MySQL に保存します。 結構長文になっちゃったので、先に目次置いときます。 node.js のインストール npm (Node Package Mana
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く