- ベストアンサー
MySQLで保存できる限界行数
例からなんですが、インターネットの掲示板のデータベースとかでMySQL等を使って保存するやり方があると思います。 しかし、書き込み内容などが増えれば当然保存する量が増えて重くなったりすると思うのですが、mixiや2chなどの大規模なサイトになってくると書き込み内容の量が相当なものになりデータベースの行数も相当なものになると思うのですが、これらのサイトはどういう風にして膨大な書き込み内容などを管理しているのでしょうか?またMySQLはどのくらいの行数までが軽快な動作を保てるのでしょうか? データベースはSQL文一つでデータの検索やソートなどができるし今後も使い続けたいものなので教えてもらえると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
理論的にはディスク容量が許す限り記録可能だと思います。 しかしトラフィックには限界があるわけなので下記のリンクにあるように分散処理するのが一般的でしょうね。 どのくらいで快適に動作するかは環境によって違いますので一概には言えません。
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
「行数の上限」といった制限は、主要なRDBMSの一般的な機能ではありません。 RDBMS側の論理設計上の制限より、OSやディスク容量などの制限に、先に引っ掛かります。そのため、実際に格納可能な行数は、ディスク容量や表の行長などで変動します。 またある程度の規模のシステムでは複数サーバで負荷分散しますから、サーバ数、HDD数などの掛け算で、最終的にどの程度の行を格納できるかが変わってきます。 MySQLのスペース管理については詳しくないですが、主要なRDBMSでは、格納時の空き領域を探す効率的な仕組みを持っています。具体的に言うと、ビットマップなどで空ページを管理しています。 検索については、インデクスが有効利用できる条件(=、BETWEEN、IN、LIKEの前方一致など)であれば、B-TREE構造で母体データ件数が増えても、I/O増は対数の関係なので極端に性能劣化はしません。また、ORDER BYやGROUP BY、DISTINCTでは、検索条件との組み合わせで有効利用できるインデクスを定義していおけばソート抑止できます。
お礼
データベースって言うのはデータ件数が増えてもインデックスを利用している限り使っていてさほど気にするほどのものではないんですね。 ただ以前まで掲示板などを作ってるときデータは全てテキストで管理していたのでMySQLに乗り換えたときその利用しやすさ(検索やソートなども余裕テキスト管理では考えられない)から1つのデータベースに沢山のテーブルを作って色々なものに利用したので果たしてこんな使い方をしてもデータベース1つで大丈夫なんだろうか?などと色々悩んでましたが、今回の質問で目安ですが1つのデータベースを利用するに当たり小規模であればあまり負荷のことは気にせず利用できることがわかりましたので、負荷対策などは負荷と実感できるくらいのものを作ったときに考えていきたいと思います。 ご丁寧な回答ありがとうございました。それでは失礼します。
お礼
回答ありがとうございます。 mixiのデータベースは1つのテーブルで管理してるのでは無くて複数のサーバーと複数のテーブルをつなぎ合わせて管理しているんですね。私自身テーブルの結合などしたことがなくそのくらいの負荷分散をしなければ運営できないようなWEBサービスを持っていませんが、ただMySQLで何かしらのものを作るとすぐに100,1000とデータの量が多くなり、どのくらいまでなら軽快に利用できる範囲なんだろうと今後ユーザー数100,200と増えた場合どうしようなどと悩んでました。参考記事を見るとmixiはユーザー数が1万くらいでようやく負荷対策をはじめたらしいので、と言うことは極小規模なサイトであればちょっとやそっとの負荷を気にすることは無い?ということですね。おおよそ負荷対策をしなければならないサイトの規模などの目安がわかりましたので安心しました。すこし神経質になってました。ありがとうございました。それでは失礼します。