2017/09/05 db tech showcase Tokyo 2017 http://www.db-tech-showcase.com/dbts/tokyo
こんにちは、サービス開発部の荒引 (@a_bicky) です。 突然ですが、RDBMS の既存のテーブルを見てみたら「何でこんなにインデックスだらけなの?」みたいな経験はありませんか?不要なインデックスは容量を圧迫したり、挿入が遅くなったりと良いことがありません。 そんなわけで、今回はレコードを検索するために必要なインデックスの基礎知識と、よく見かける不適切なインデックスについて解説します。クックパッドでは Rails のデータベースとして主に MySQL 5.6、MySQL のストレージエンジンとして主に InnoDB を使っているので、MySQL 5.6 の InnoDB について解説します。 InnoDB のインデックスに関する基礎知識 インデックスの構造 (B+ 木) InnoDB では B+ 木が使われています。B+ 木は次のような特徴を持った木構造です。 次数を b とすると、
最近、Elastic BeanstalkやECSと戦っているSREチームの菅原です。 P5をやりたいのにPS3もPS4も持っていないので指をくわえて羨ましがっている毎日です。 この記事では、突然のアクセス増に備えるために、MySQLのスレーブを1〜2時間でスケールアウトできるようにした話を書きます。 MySQL on EC2 クックパッドは周知の通りAWSを利用していますが、主要なデーターベースについてはAmazon RDSではなくMySQL on EC2を使っています。 これは以下のような理由によるものです。 歴史的な経緯: AWS移行当時、RDSが無かった。また、移行後もしばらくはTritonnを使っていたため、RDSを使うことができなかった オンラインメンテナンスの実現: VPCルートテーブルを使った仮想IPとMHA for MySQLを使ってダウンタイムゼロのマスタDBの切り替えを
7. ストレージエンジンによる テーブルスキャンの例 ha_tina::store_lock ha_tina::external_lock ha_tina::info ha_tina::rnd_init ha_tina::extra - ENUM HA_EXTRA_CACHE Cache record in HA_rrnd() ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::rnd_next ha_tina::extra - ENUM HA_EXTRA_NO_CACHE End caching of records (def) ha_t
結論としてはinnodbテーブルの全データ量だそうです。 ここ最近はデータベースサーバのリプレースの案件の担当をしているのですが、サーバのサイジングをしていてふと、「どれくらいメモリあれば足りるんだろう」と疑問に思いました。 よく「サーバの全メモリの50%から70%くらい」とか「80%」くらいとか言われますが、それはどちらかというとスワップしないための限界値を示すものであって、理想値ではないですよね。それでいろいろ調べてみたところ、なかなか日本語で良いまとめがなかったので、まとめてみようと思います。 目次 そもそもinnodb_buffer_poolとは? 使用状況を確認する(SHOW ENGINE INNODB STATUSでの計測) 適切なinnodb_buffer_pool_sizeは?(チューニング方法) そもそもinnodb_buffer_poolとは? InnoDB maint
DBのチューニングはインフラ環境、アプリのつくり等、その時の状況で調整する必要があります。今回はMySQLTunerというMySQLを診断してチューニングをアドバイスしてくれるツールを使って、実際にMySQLのチューニングを行いました。 MySQLTunerは警告項目に関してのみの情報は多いのですが、警告が出ていない項目に関する情報が少ないので、今回の診断結果をもとに詳しく解説していきます。 MySQLTunerのインストール まずはMySQLTunerをインストールしましょう。 MySQLTunerはPerlで作成されており、無料で利用できます。 インストールといっても、「サイトからzipファイルを取得して解凍するだけ!」といった至ってシンプルな作業です。 以下、インストールのサンプルコマンドです。 # cd /usr/local/src/ # wget -O MySQLTuner.zi
Node.js and MySQL are some of the necessary binding needed for any web application that is frequently used by Full Stack developers. MySQL is one of the most popular open-source databases in the world and is efficient as well. Almost every popular programming language like Java and PHP provides drivers to access and perform operations with MySQL. In this Node.js MySQL tutorial, we are going to lea
個人メモです。稼働中のサービスを停止できないけど、スレーブを増やしたい(増殖したい)なんて場合に使える技になります。 マスターのバックアップ まず、スレーブ側のホストでマスターのスキーマ(例では、schema1 schema2のバックアップをとります。この際に、--master-data と --single-transaction は必須です。 --master-data を指定しますと、master側のバイナリログファイルとポジションを取得することができます。 --single-transaction を指定しますと、innodbの場合は、マスターサーバ側のデータベースをロックせずに、dumpすることが可能です mysqldump -h remote_host --databases schema1 schema2 -u myuser -pmypasswd --master-data
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く