タグ

2011年5月24日のブックマーク (9件)

  • パーティショニングの使用例 - カーディナリティが低いカラムを使って検索する場合

    MySQL 5.1で追加された機能にパーティショニングがある。これは適切に利用すれば非常に強力な機能であることは間違いないのだが、使いどころが難しい。なぜなら、 インデックスをつけるだけでカバー出来る場合が多い。 パーショニングを使わずに、単にテーブルを分けてしまえばいい。 テーブルが巨大にならないとあまり効果を実感できない。 使い方を間違えると性能が落ちてしまう。 などの問題があるからだろう。 そんなわけで、今日と明日でパーティショニングが役に立つシーンを2つ紹介しようと思う。今日は一つ目、インデックスをつけたいカラムのカーディナリティが低い場合だ。カーディナリティとは日語に訳すと濃度とか訳されるが、要は値の種類(分散具合)のことである。例えば、YesかNoの2つの値しかとらないカラムは非常にカーディナリティが低く、インデックスをつけるととても効率が悪い。インデックスを使って目的の行を

    パーティショニングの使用例 - カーディナリティが低いカラムを使って検索する場合
  • パーティショニングの使用例 - http session情報

    今日もパーティショニングの話の続きである。 パーティショニングが非常にフィットする(たぶん昨日の例よりも)もう一つのケースは、数日間だけ必要なデータを蓄えておくような場合だ。例えば、HTTPセッションやログ情報などが良い例ではないだろうか。そういう場合には、日付を使ってRANGEパーティショニングをするのである。RANGEパーティショニングでももちろんPruningによって性能の向上は出来るのだが、それよりも何よりも高速に不要なパーティションを破棄できるというのが大きい。パーティションの破棄は、内部的にはテーブルのDROPとほぼ同じ扱いなのである。DROPのスピードはストレージエンジンによるが、InnoDBやMyISAM、NDBMySQL Cluster)ならばいくらデータを含んでいても関係なくDROPは一瞬である。テーブルから大量の行を削除すると、フラグメンテーションが発生したり、イン

    パーティショニングの使用例 - http session情報
  • にわかSEの独り言 CentOS 5.6でwingリポジトリを使う時の注意点

    CentOSを中心としたLinuxの話題や、自作rpmのwingリポジトリの情報などを掲載しています。 CentOS 5.6でwingリポジトリを使うための注意点をご紹介します。 まず、既にCentOS 5.6を使用していて、wingリポジトリを使う場合は、通常通り以下のとおりに設定して下さい。 RHEL/CentOS 5.5用 wingリポジトリを公開 - にわかSEの独り言 そして、例によりCentOS 5.0から使用している人は、注意が必要です。 前回のCentOS 5.5からもSambaの新しいバージョンがsamba3xというパッケージ名になっていたりしましたが、今回のCentOS 5.6からPHPphp53というパッケージ名で5.3.3が使えるようになりました。 それにともない、wingリポジトリでは、samba3xで今日現在(2011/4/11)で最新である3.5.8、php

  • 現場指向のレプリケーション詳説

    この文書は、技術評論社刊『WEB+DB PRESS Vol.22』に執筆した記事を技術評論社の 許可を得てWWWで公開しているものです。 このWWW版は校正前の原稿を元にしている点、WWW公開後に必要があれば修正する点で、雑誌版の文章とは異なる部分があります。また、図表も雑誌版とは異なります。 予めご了承ください。 また、この文章が対象しているのはMySQL 4.0系なので、最新のリリース版と比べると説明不足な点などが多々あると思います。 レプリケーションの基をおさえるには、この文書はまだ有益だと思いますが、設定レベルの説明は最新のドキュメントを参照するようにしてください。

  • MySQL レプリケーションのセットアップ手順 - わくわく技術ランド

    想定していること † MySQL5.0 MySQLがすでに稼動中。レプリケーションの設定はしていない 今回MySQLをもう一台増やして2台構成とし、master、slaveの構成にする ※今回と状況が異なる場合は、MySQLのリファレンスマニュアルを読むといいです。 ↑ 1. レプリケーション用ユーザを作成する † レプリケーション用ユーザを作成する 作成するユーザーはスレーブがマスタのバイナリ ログを読み込むときに接続するユーザーとなる。 既存のユーザーでもレプリケーションは可能だが、ユーザ名とパスワードが master.info ファイル内にテキストで保存されるため、安全のためレプリケーションプロセスにだけ権限があるユーザを作成する 設定例(マスタのほうに設定) 192.168.23.0/24 内のネットワークで許可 ユーザー名:repl パスワード:slavepass mysql >

  • mysql5.1のパーティショニングを使う - d2mrの日記

    mysql5.1の新機能であるパーティショニング(PARTITIONING)を使ってみたので使い方やら注意点やらまとめ。 最初にパーティションの区切りの基準になるカラムはプライマリキーじゃないといけないという制約があるのでプライマリキーを変更する。 ALTER TABLE entries DROP PRIMARY KEY, ADD PRIMARY KEY (id, blog_id); 実際にパーティションに分割する ピンポイント数値で分割 ALTER TABLE entries PARTITION BY LIST (blog_id) ( PARTITION p1 VALUES IN (1,3,7), PARTITION p2 VALUES IN (10,11) ); 数値範囲で分割 ALTER TABLE entries PARTITION BY RANGE (blog_id) ( PAR

    mysql5.1のパーティショニングを使う - d2mrの日記
  • railsでのパーティショニング使用 - d2mrの日記

    パーティショニングそのものについてはmysql5.1のパーティショニングを使う - d2mrの日記参照 rails経由でパーティショニングの追加をmigrationファイルに以下のように記述する class AddPartition < ActiveRecord::Migration def self.up # パーティショニングに使う値がプライマリキーでないと怒られるので複合キーに変更する execute("ALTER TABLE entries DROP PRIMARY KEY, ADD PRIMARY KEY (id, updated_at);") # パーティショニングの追加 execute("ALTER TABLE entries PARTITION BY RANGE (TO_DAYS(updated_at)) (PARTITION p200803 VALUES LESS THA

    railsでのパーティショニング使用 - d2mrの日記
  • MySQLサーバ複数起動メモ - Wikimura

  • MySQL5.xにて複数インスタンスを起動する方法

    複数インスタンス起動設定mysqldを1サーバ上で複数起動したい場合、利用するデータベースディレクトリとListenポートを変更し、mysqld_multiコマンドで起動する。詳しくはmysqld_multi –example を参照してください。 1. /etc/my.cnfに複数インスタンスを起動する設定を追加します [mysqld_multi] mysqld=/usr/bin/mysqld_safe mysqladmin=/usr/bin/mysqladmin user=root password=パスワード [mysqld1] datadir=/var/lib/mysql/multi1 socket=/var/lib/mysql/multi1/mysql.sock port=3307 [mysqld2] datadir=/var/lib/mysql/multi2 socket=/v

    MySQL5.xにて複数インスタンスを起動する方法