MYSQLについてですが、今はデータベースのFILEサイズは20MBで、快適すが毎日大きくなります。それが20GBくらいのデータベースのFILE SIZEになるとアクセス速度は目にわかるくらい遅くなるのですか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/11/03 05:13:55
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:horonict No.2

回答回数257ベストアンサー獲得回数51

ポイント36pt

検索を高速化するための「インデックス」がメモリ上で処理されているうちは、レコード(ID)が増えても検索速度が目立って低下することはありません。

逆に、良い設計がなされているデータベースであれば、インデックスがあふれるようなことは発生しませんので、レコード(ID)が増えても検索速度が極端に遅くなることはないと考えていただいて結構です。

id:shotomo

メモリ上で処理というのはパソコンのメモリーを増設すればOKですか?MYSQL Administratorでのグラフでわかることですか?

2009/11/02 14:34:45

その他の回答3件)

id:palo No.1

回答回数124ベストアンサー獲得回数14

ポイント23pt

DBサイズが大きくなると一般的には遅くなります(いろんな条件は関わってきますが)。

 

データベース中のテーブルには、

検索を高速化するためにインデックス(索引)が作られます。

インデックスがメモリ中で効果的に使われている間は、高速に検索が行われます。

 

DBサイズが大きくなったときに、下のような状況では検索速度の低下が顕著になります。

o メモリ不足

o テーブル数が多い

o 複雑なSQLによる検索が多い

o 問い合わせ数が多い

id:shotomo

初心者ですみません。本当に考えていただきありがとうございます。

ではテーブル数は増やさないし、複雑な検索はないです。ごく単純。

ただIDの数がどんどん多くなるだけでは基本的にあまり変わらない

で理解していいですか?

2009/11/02 09:00:28
id:horonict No.2

回答回数257ベストアンサー獲得回数51ここでベストアンサー

ポイント36pt

検索を高速化するための「インデックス」がメモリ上で処理されているうちは、レコード(ID)が増えても検索速度が目立って低下することはありません。

逆に、良い設計がなされているデータベースであれば、インデックスがあふれるようなことは発生しませんので、レコード(ID)が増えても検索速度が極端に遅くなることはないと考えていただいて結構です。

id:shotomo

メモリ上で処理というのはパソコンのメモリーを増設すればOKですか?MYSQL Administratorでのグラフでわかることですか?

2009/11/02 14:34:45
id:chuken_kenkou No.3

回答回数722ベストアンサー獲得回数54

ポイント22pt

追記型のテーブルということでしょうか?

過去のデータを削除するタイミングは、あるのですよね?

インデクスを定義していて、「=」条件や範囲条件などのインデクスを有効利用できる検索なら、母体データ件数が増えても極端に性能劣化しません。

しかし、インデクスを活用できずテーブルスキャン(表のデータ部で探す)が発生するような検索では、母体データ件数が増えることで性能も大幅に劣化してしまいます。

また、検索対象データが多い場合で、order by、group by、distinctなどのソートが必要な処理を、インデクスを利用して「作業ファイルを用いたソート」を抑止できるかどうかで、大きく性能さが出ます。

また、インデクスのキーの更新(insert、delete、updateでのキー更新)が頻繁に行われる場合、インデクスが肥大化し効率的にサーチできなくなるため、よい性能を確保したいなら、定期的なインデクスの再構築が必要になります。

id:shotomo

過去のデータを削除をしないようにしたいです。ので今はさくさく動いているのですが、レコードが増えて行くと未来が心配になりました。

考えていただきありがとうございました。

2009/11/02 19:51:46
id:takipon No.4

回答回数175ベストアンサー獲得回数10

ポイント22pt

サーバのメモリ、CPUによって大きく変わりますが、基本的にDBの容量が増え、サーバに負荷がかかれば遅くなります。

id:shotomo

了解です

2009/11/03 05:13:09
  • id:palo
    シンプルな構成のデータベースでも、
    レコード数が多くなると、インデックスのサイズも大きくなります。
    そのために、ある時点でインデックスを利用するためのメモリが
    不足する状態になって検索速度が低下します。
     
    下のような条件が関わりますので一概にどの時点というのは言えないです。
    o 利用するインデックスの数
    o インデックスのタイプ(整数、文字列などの違い)
  • id:t-wata
    クエリとテーブルの設計をちゃんとやったなら、「遅くなったらどこに問題があるか解析しよう」という姿勢でも問題ないと思いますよ。
    データ量が1000倍に増えても、インデックスを使うクエリの実行速度は目で見てわかるような劣化はないはずです。
    また、クエリのフェッチサイズを適切に調整し、十分なメモリがあるなら、大量にヒットするようなクエリ実行でも目に見えるほどの劣化はないです。
    なのでデータ量が増えて遅くなるクエリと遅くならないクエリに分かれるはずで、遅くなったクエリだけ解析して対策すればいいわけです。
    (遅くなるのが必然で避けようが無いクエリもあるでしょうけど)
  • id:palo
    t-wata さんが書かれている「遅くなったらどこに問題があるか解析しよう」はもっともだと思います、
     
    ちなみに、MySQLの "SHOW TABLE STATUS;" を使えば、
    レコードの平均サイズやインデックスのサイズを確認できます。
    ためしに手元の 800KB 程度のテーブルのインデックスサイズを確認すると、100KB 程度でした。
    文字列にインデックスをつけると意外と大きいです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません