
No.3ベストアンサー
- 回答日時:
現に、コマンドでは応答がすぐに返ってくるとのことですし、
50000行のcsvをサーバのローカル内に生成することについては、
それほどボトルネックにはなっていないと思います。
むしろ、ブラウザダウンロードするファイルのサイズについてですが、
CSV各行100文字あったとして、ファイルサイズは約5Mほどになります。
実運用でどのくらいのファイルサイズになるのかわかりませんが、
当然、ブラウザからのダウンロードも
ユーザーの環境によっては時間がかかるものになってしまうと思います。
ボトルネックはサーバ側WEBプログラムでのCSV作成ではなく
生成されたファイルをダウンロードする部分にあるような気がしています。
もしそうであった場合、シェルのキックに変更しても
実測時間は余り変わらないのではないでしょうか?
現在のプログラムから
A.CSVを生成するプログラムのみを実行して、所要時間を計測
B.出来上がったファイルをサーバ上に配置し、
URLを直接CSVファイルに向けてダウンロードのみの所要時間を計測
といった2ステップを行ってみると、
原因が明確になると思います。
CSVを手に入れさせることが目的であれば、
(1)コマンドでCSVを作成
(2)出来上がったCSVをgzipで圧縮
(3)zipをブラウザからダウンロード
というプロセスを実現したほうがよいかもしれませんね。
詳細な検証まで行ってませんが、
PHPでprintfを
50000回行ってその出力結果をファイル出力にする
というのが時間がかかってます。
5分でダウンロードすると5分でタイムオーバーになり
途中まで書かれたファイルがダウンロードされます。
なーるほど、圧縮すればいいですね。
>CSVを手に入れさせることが目的であれば、
> (1)コマンドでCSVを作成
> (2)出来上がったCSVをgzipで圧縮
> (3)zipをブラウザからダウンロード
>というプロセスを実現したほうがよいかもしれませんね。
No.2
- 回答日時:
クロック数が関係するのかどうかは発行するSQLの複雑度によります。
確実に関係するのはHDDの速度です。
回線を10分かかって転送する位の大容量のファイルを読み書きする速度です。
SQLがそれほど時間がかからないということは単純なSQLかインデックスを使用した検索のみだと思われますので、それほどCPUは使っていないと思います。
それよりも大容量のデータを読み出してそれをCSVで書き出すHDDの性能がほとんどCSV出力時に時間だと思われます。もともとMysqlなんてそんなに高度なことはできないと思っていますので、それほどCPUは食わないのでは?と思います。
Oracle等ではそれなりにCPU性能が影響しますがHDD性能差に比べればそれほど・・・
DB構築の際、一番のポイントはHDDの高速化+分散化かメモリのどちらかで、CPU性能はおまけみたいなものですから・・・
回答ありがとうございました。
ハードよりも、自分のかいたプログラムが悪そうです。(100%)
単純なSQLです。
select * from table;
です。
DBでoracleは、何がすごくてmysqlだと何がだめなのか?
自分は、検討もつきません。
有料か無償ぐらいしか差がわかりません。
分散化の必要性も迫られたことがありません。
これからwildcat-ypさんがおっしゃるような問題に
つきあたるのでしょうか?
No.1
- 回答日時:
そりゃあ、当然、同じスピードではあり得ませんよね?
10分が遅いか早いかはファイルの容量と回線の速度を出してもらわないと何とも言えません。
まあ、それ以前に50000万行(5億行?)のファイルがすぐに出力されるというのも不思議な話ですが?
どんなサーバー使ってるんですか?
ファイルの出力速度もダウンロード速度もある程度は計算で出せるはずです。
回線速度と比較してどのくらい出ているのか調べて、やはり遅いようであれば、ブラウザ等の設定を疑ってみては?
FTPでも遅いのであれば、回線がおかしいのでしょう。
基本的にはHTTPとFTPはそれほど転送速度に差があるとは思えませんので。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- XML PHP.laravelについて 1 2023/07/06 15:26
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Visual Basic(VBA) VBAで出力したCSVファイルの先頭にカンマを挿入したい 5 2022/10/14 12:20
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
- その他(Microsoft Office) VBA CSV出力について 3 2023/04/19 14:14
- PHP 値の取り出し方について教えて下さい。 1 2023/03/31 13:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLPLUSで結果を画面に表示しない
-
AccessからExcelのファイルを起...
-
dmpファイルをインポートせずに...
-
selectした結果の余計な余白を...
-
Oracleでインスタンスを複数に...
-
DB2にspoolコマンドみたいなの...
-
PLSQLでファイルに書き込みをし...
-
AccessでPDFが開けない
-
SQL*PLUSでファイルからDELETE文
-
動的にSPOOLファイルのファイル...
-
レポートをpdfに変換する方法
-
実行したSQLファイルの名前をフ...
-
【Excel】[Expression.Error] ...
-
Batch: フォルダ内の特定のファ...
-
特定のエクセルファイルを起動...
-
Accessデータベースの最適化をE...
-
Accessのmdbを開こうとしたとき...
-
AccessVBAで作成したExcelファ...
-
拡張子が「cda」のファイルを聞...
-
【CSVファイル】先頭の文字列に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLPLUSで結果を画面に表示しない
-
selectした結果の余計な余白を...
-
AccessからExcelのファイルを起...
-
Oracleでインスタンスを複数に...
-
dmpファイルをインポートせずに...
-
ORACLEから各テーブルをCSV形式...
-
ストアドプロシージャの出力に...
-
DB2のコマンドラインexportで複...
-
動的にSPOOLファイルのファイル...
-
SQL*PLUSでファイルからDELETE文
-
『ALTER SYSTEM』と『ALTER DAT...
-
SQLServer2005でSELECTした結果...
-
DB2にspoolコマンドみたいなの...
-
レポートをpdfに変換する方法
-
sqlの出力結果の項目に""をつけ...
-
Accessのレポート出力をWordに...
-
PLSQLでファイルに書き込みをし...
-
mod_plsql使用時のDBMS_OUTPUT....
-
ORACLEのUTL_FILEパッケ...
-
実行したSQLファイルの名前をフ...
おすすめ情報