- ベストアンサー
データベースの制限や負荷について
- データベースの数、テーブルの数、データの数には制限があるのか?
- データベースの数やテーブルの数は作成しても問題ないのか?
- データベースの数やテーブルの数が増えるとサーバの負荷やスピードに影響するのか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1回答者です。 数十万件以上の規模の母体から1件のデータを取り出すような場合、普通はインデクスを定義します。 インデクスはB-TREE構造であり、有効なインデクス設計をすれば「=」条件などではインデクスを縦に辿れるので、母体のデータ数が増えても極端に性能や負荷が変わることはありません。 かなり大雑把ですが、インデクスを縦に辿って検索できる場合のI/O回数は次のような感じです。 (log A*2)/(log B)+1 A:母体データ件数 B:一つのインデクスページで管理できるキー数 なお、インデクスを縦に辿れないような検索を行うなら、話は違ってきます。 複数表に分割格納した場合、目的のデータがどの表にあるかは、どの様な仕組みで判断しようと考えているのでしょうか? もしDBMSに任せるならUNIONで結合するといった方法がが考えられますが、単一表の検索に比べオーバヘッドが発生します。 DB設計は検索などの操作だけでなく、バックアップなどの運用方法も合わせて検討する必要があります。
その他の回答 (2)
- onosuke
- ベストアンサー率67% (310/456)
>データベースについて学習中 とのことですが、 質問内容からすると、 データベースの構築や利用の方法 を現在学習中といったところでしょうか? データベースのエキスパートを目指すならば まず第一に、 データベースソフトウェアの動作の仕組み というものを学習した方が良いですよ。 基礎知識として、持っておくべき事を知らない為に あてずっぽうで、変な質問を投げているように見受けられます。
- chukenkenkou
- ベストアンサー率43% (833/1926)
データベース数やテーブル数には、当然、上限はあります。具体的な数値までは把握していませんが、通常の使い方で上限に引っ掛かることは、まずないと思います。 二つめの質問は、曖昧すぎます。 トータルで1万件あるデータの中から、1件だけを検索するのですか? それを1表に格納していた場合と、3表に分割した場合を聞きたいのでしょうか? 1件検索するといっても、インデクスがなかったり、インデクスを有効利用できない条件なら、データ部を舐めまわす事になります。 もっと具体的な内容で質問しなければ、適切な回答もできません。
補足
ありがとうございます。 商品などのデータを入れる予定ですが、例えば一つのデータベースで一つのテーブルを作成し、その中に全てのデータを入れていくのがいいか、それともいくつかテーブルを作って分けたり、データベースを作って分けたりの方がいいかと思いました。 >トータルで1万件あるデータの中から、1件だけを検索するのですか? >それを1表に格納していた場合と、3表に分割した場合を聞きたいのでしょうか? 説明不足ですいません。 例えば、testデータベースにtest1テーブルがあったとします。その中に、100万件のデータがあり、その中から一つのデータを取り出す場合。 または、testデータベースにtest1,test2,test3・・・test10というテーブルがありそれぞれのテーブルに10万件のデータが入っていたとします。test2の中に目的のデータが入っているので、それを取り出す場合。 私が思ったのは、データ数が多くなると一つのデータを取り出すのに時間もかかるし、負荷もかかると思ったので、出来るだけデータ数が少ない方から一つのデータを取り出す方がいいかと・・・。なので、その方法として一度テーブルで分けてしまえば、それぞれのテーブルに入っているデータが少なくなるので、データを取り出すのに時間も負荷も下がるかなと思ったのですが・・・。
お礼
丁寧にお答えいただきありがとうございます。 私の場合、一つのテーブルから一つのデータを取り出す場合で、インデックスを定義して利用しております。ですので、特に負荷が高くなるといった事はないようですね。 一応、テーブルをいくつかに分ける方法でもテストを行ってみたいとは思ってますが、一つのテーブルでも問題ない事がわかり、安心しました。 本当にありがとうございました。