人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【データベースのパフォーマンス】1億件近いデータベースに対して分析処理をするのに、個人レベルで最速の処理をしようとすると、どのようなソリューションが適切ですか?

1億件(40GB以上)が入っているテーブルに対して、参照及び更新の処理をしようと考えています。
現状、MySQL5.1+SATA HDD(7200rpm)をRAID0+1で構築+Windows XP+3GB memoryの構成で処理しています。

現状、処理を実行すると、相当遅くなります。インデックスが効かない処理もありますので、莫大な時間が掛かります。

多角的に分析したいので、なるべく短時間に1億件の分析が終わると大変助かります。
個人レベル(コストは30万以下、最大でも50万以下)で、もっとも早く処理ができる方法論をアドバイス頂けると大変助かります。

ちなみに、Windows以外ではLinuxとFreeBSDが使えます。

宜しくお願いします。

●質問者: sakata0819
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:FreeBSD HDD Linux SATA Windows
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● kn1967
●150ポイント

■OS

WindowsXPのままであれば実質、ファイルキャッシュの調整くらいしか出来ないので

Linux or FreeBSDでMySQLを動作させるのに必要最低限の構成でセットアップする。

32bit よりも 64bitのほうが望ましい。

セキュリティソフトやネットワークも邪魔になるのでスタンドアローンで動作させるのが望ましい。


■MySQL

テーブルは出来るだけ分けたい所。理想はファイルキャッシュに収まるサイズ。

インデックスが効かない処理に合わせられないか、非正規化はどうかなど再考。

エンジンはトランザクション不要であるならばMyISAMを選択。

InnoDBよりもMyISAMのほうがデータ容量を半減できるのでディスクアクセスの面でも有利。

あとはファイルキャッシュやソートキャッシュなどは極力大きく取り、ログは最低限だけ出力。

etc・・・細かくは下記などを参照。

MySQL :: MySQL 5.1 リファレンスマニュアル :: 6 最適化


■ハードディスク

OS用HDD1台 + DB用高速SSD1台

(PCI-Express接続の超高速SSDもあるけど高価なのでSATA接続のSSD)


■CPU、メモリ、ビデオカード

Core i7

メモリはトリプルチャネルで詰めるだけ

メモリのパフォーマンスを確保したいのでチップセット内臓ビデオではなく別付けとする。


以上、とりあえず費用は最小限。最初の回答として、たたき台としてお使いください。

※ コメント欄開いていれば、コメント欄に書いたのだけど開いてなかったので回答で失礼。

◎質問者からの返答

詳しいご説明どうもありがとうございます。

昔は、パソコン雑誌を頻繁に買っていたのですが、今仕事が忙しくて最近の技術情報に疎くなっていますので助かります。

>32bit よりも 64bitのほうが望ましい。

メモリーの上限が実質ないので64bitを検討したいのですが、何があったときに切り分けが難しいので躊躇しています。

> InnoDBよりもMyISAMのほうがデータ容量を半減できるのでディスクアクセスの面でも有利。

> あとはファイルキャッシュやソートキャッシュなどは極力大きく取り、ログは最低限だけ出力。

データ容量を半減できるのは知りませんでした。どうもありがとうございます。

> OS用HDD1台 + DB用高速SSD1台

SSDとSAS(15000rpm)だとどちらが速いでしょうか?

SSDでRAIDを組んで4台くらいストライピングするというのもいいですね。

多分、自分の処理は、ディスクアクセスがネックになるので、それが一番速くする方法でしょうか。

>Core i7

申し遅れました。現在、それを積んでいます。

とても、参考になりました。ありがとうございます。


2 ● karla
●200ポイント ベストアンサー

まず重要なのは何がボトルネックになっているのか?です。

これが明確にならないと最小の投資で最大の効果は得られません。



過去に似たような事を試した時には、ディスクと解析処理がボトルネックになったため下記の対策をしました。

一時的な処理向けですので日々の運用には向いていません。



また、プライオリティは下がりますが

といった対応も考えられます。



最後に解析処理の見直しは効果がありました。

具体的には

といったような内容です。

◎質問者からの返答

とても参考になりました。


3 ● kempe
●30ポイント

1台でやろうとせず、複数台で構成された Hadoop と HBase に移して処理してみてはいかがでしょうか?

http://codezine.jp/article/detail/2448?p=1

◎質問者からの返答

ありがとうございますた。ただ、少し大がかりのような気がします。


4 ● 我意亜
●30ポイント

これからアプリを組むのならこんなのもアリでしょうか。

amazonが提供するクラウドを利用するものです。

使ったCPU時間分の課金になります。

なので、解析処理をする頻度によっては割高になってしまうと思います。

http://kzk9.net/blog/2009/04/reviewing_amazon_elastic_map_reduce...

◎質問者からの返答

面白そうですね。個人でもこのようなシステムが使えるようになったのですね。参考になります。


5 ● QuestR2
●30ポイント

>1億件(40GB以上)が入っているテーブル

1テーブルになってるものを10テーブルに単純に分ける。

これに伴い、現状の処理を書き換えないと駄目ですが、

確実に早くなります。

予算があるのなら、MySQL5.1からORACLEに変えたほうがやっぱり早いです。

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ