• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データベースの書き込み・読み込み速度を上げたい。)

データベースの書き込み・読み込み速度を上げたい

このQ&Aのポイント
  • データベースの書き込み・読み込み速度を上げる方法を考えています。CPUの性能を上げることやハードディスクを高速化することなど、ハード面での対処法を検討しています。
  • データベースの処理速度を向上させるためには、CPUの性能を上げることやハードディスクを高速化することが重要です。また、並列処理やSSDの利用なども検討することで、処理を速めることができます。
  • データベースの処理速度を上げるためには、CPUの性能やハードディスクの速度を向上させる必要があります。また、並列処理やSSDの利用、最適なデータベース設計なども検討することが重要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.2

オンメモリはテストでオープンしただけですが、Webで参考になるURLを添付したので参照してみて下さい。 http://d.hatena.ne.jp/mgng/20091104/1257315625 当然、終了時にHDDに書き出さないと消滅するので「オンメモリにするための処理と、終了時にHDDに書き込む処理」を含めてトータルで処理時間を検討しないといけないですが検討する価値はあると思います。 >それぞれにおいて、1時間に数千件の読み書きを行い、 >マシン自体が1時間に処理するデータ量の合計が10000件ほどの場合の 1時間で数千件や1万件程度のデータ操作なら、そんなに気にするほどのことはないように思います。 それにSQLiteは、本格的なデータベースというより開発時のテスト環境的な使い方が最適と思います。 実運用で使った時、ユーザという概念がないことは問題になりませんか?

Definitions
質問者

お礼

お話を伺い、オンメモリを使った方法を検討してみたくなりました。 私の用件にマッチしているかどうかは試してみないことにはわかりませんが、 調べてみる価値はありそうです。 で、この方法の場合、大量のメモリを用意する必要があるようですが、 大量というのは具体的にはどの程度になりますでしょうか。 現在、マシンには2GBのメモリが載っていますが、 32bitマシンであるため、4GBは載らない?かと思います。 このような環境で、オンメモリでの運用は可能だと思われますでしょうか。 次に、SSDを使った方法についてですが、 こちらは、オンメモリの方法を選んだ場合には、候補から除外される類のものでしょうか。 それとも、両者を同時に導入することには価値がありそうでしょうか。 システムをSSDにすることで、OSやXAMPの動きが速くなったり、 最終的に行われる、データベースへの書き込みも速くなりそうですからね。 処理内容にもよるでしょうが、 これらの改善を全て行ったとして、得られるスピードが2倍以上あるといいのですが、 それほど改善されないようだと、正直なところ、悲しくなりそうです。(笑)

その他の回答 (3)

  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.4

>これらの改善を全て行ったとして、得られるスピードが2倍以上あるといいのですが データベースの高速化は、ハードウェア的なのもは想定していない前提条件になります。 簡単に変更できないため。 基本、ハードウェアをデータベース用にチューニングし、その後はデータベースのパラメータやSQL文を検討して高速化するという手順です。 Oracleでの実績でいうと、単純にインストールした状態から、稼動したデータベースに合わせてパラメータのチューニングを行って倍以上に高速化し、その後はインデックスやテーブルを見直して目標の速度に近づけるって感じでチューニングを進めます。 なお、SQLiteでは、パラメータの見直による高速化はあまり期待できないです。 2Gbでどの程度のデータベースがオンメモリ上に展開できるかは、行のサイズによるので・・・実際に展開して確認する方が早いと思います。 当然OSやSQLiteの領域もあるので、1Gbを越すことは無理な気がします。

Definitions
質問者

お礼

またしてもありがとうございます。助かります。 >基本、ハードウェアをデータベース用にチューニングし、その後はデータベースのパラメータやSQL文を検討して高速化するという手順 >2Gbでどの程度のデータベースがオンメモリ上に展開できるかは、行のサイズによるので・・・実際に展開して確認する方が早い こちら、非常に参考になりました! おかげさまで、 すべきこと、できる範囲、それぞれ見えてきた気がします。

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.3

OSはWindowsよりもLinuxの方が良いでしょう ファイルシステムをEXT3にするのであれば ジャーナリングモードでファイルの保存性とトレードオフで速度を調整する事が可能です SQLiteを利用した事がないですが、RAWデバイスを利用するとI/Oのオーバーヘッドを軽減出来ることが多いです。 ボトルネックがどこに出るかによって何が最適かは変わります。 1番はHDDの可能性が高いですが、SQL文によってはCPUがネックになる場合もあります (その場合は、SQL文を書き直すべきですが)

Definitions
質問者

お礼

大変興味深い回答をありがとうございます。 Linuxもいいなと思えてきました。 >1番はHDDの可能性が高いですが、SQL文によってはCPUがネックになる場合も HDDをSSDに、もしくは、読み書きの速そうなHDDに換えてみることには、 少なくともなんらかの価値はありそうですね。 で、気になったのが、 「SQL文によってはCPUがネックになる場合も」 です。 具体例をお聞きしても、おいそれとは出てこないよ、 と言われてしまいそうですが、 もし何かヒントでも頂ければ、とても嬉しく思います。 ちょっと自分でも考えてみました。 SQL文の見方として、以下の4パターンがあるのでしょうか? (1)CPUに優しく、HDDにも優しい (2)CPUには優しいが、HDDには優しくない (3)CPUには優しくないが、HDDには優しい (4)CPUにも、HDDにも優しくない 「SQL文によってはCPUがネックになる場合も」 というのは、 (3)か(4)のパターンということですよね。 で、SQL文をどう書こうと、その目的が同じであれば、 HDDに対して行われる処理、つまり、書き込み、読み込みは、 同じであると思えるので、 (3)のパターンを改善した結果、(2)のパターンになってしまうとは思えず、 また、同様に、 (4)のパターンを(1)のパターンに改善することも無理なのではと考えました。 つまり、 (3)だったら、(1)へ、 (4)だったら、(2)へ、 の改善しか、それぞれできないのかなと思ったわけです。 何か変なことを言っていましたら、すみません。 考え方的に、何かおかしな点があれば指摘して頂けると嬉しいです。 ということで、 いずれにしても、(3)か(4)が疑わしい場合には、 SQL文を改善することで、いくらかマシな(1)か(2)へと昇格でき、 (1)か(2)でさらに処理速度を上げるには、 HDDを改善すれば良いのかなと。 よって、とりあえずは、 HDD、SQL文、CPU、OS を見直してみるのが良さそうですね。

  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.1

>ソフト面(プログラミング言語やコード内容など)というより、ハード面での対処で検討しています。 ・メモリを大量に準備して、全てオン・メモリで運用が最速と思います。 ------------- ・高速なHDDを使う( SSDならよりベター ) ・HDDをRAID0で利用する( 当然、最適なブロックサイズで運用 ) >OSは、Win7の方がWinXPより速い?もっと言えば、Linuxの方が速い? そんなに差はないと思います。 >・HDD容量は無駄に大きなものより、小さなものの方が速い? 比較するなら、アクセス速度(ランダムアクセス)を比較して早いHDDを選択すべき プラッター数やキャッシュ容量によって傾向はありますが、絶対的な指標にはならないと思います。

Definitions
質問者

お礼

回答ありがとうございます。 >全てオン・メモリで運用 データを一時的に使うのではなく、 使った後、記録として残すタイプのDBなのですが、 それでも、この「オンメモリ」の方法は使えますでしょうか? HDDを介さず、メモリだけで処理できれば速そうだなとは思っていましたが、 この方法だと「記録保存」が出来ないだろうと思い、検討候補から除外していました。 >高速なHDDを使う( SSDならよりベター ) SSDだと記録回数の上限値がHDDに比べて小さいらしいのですが、 1時間あたり10000件の読み書きには向いていそうでしょうか。 またよろしければ色々と教えて下さい。

関連するQ&A