![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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で結果を画面に表示しない
-
selectした結果の余計な余白を...
-
拡張子が「cda」のファイルを聞...
-
Becky!で「メールサーバーへの...
-
VBAでCSVファイルが使用中かど...
-
Excelでmdbファイルが簡単に開...
-
Symfowareでの動的SQL
-
DBCC CHECKDBのエラーについて
-
ACCESS で 項目名を出力せずに...
-
警告音について
-
AccessのMDBファイルを開く際に...
-
EXCEL 年月日表から月数をカウ...
-
datファイルをAccessでイ...
-
(Excelマクロ)datファイルをエ...
-
100万行のCSVを10万行ずつのフ...
-
アクセスmdbファイルがショート...
-
ADOを使ったDBアクセス後のメモ...
-
突然の「Microsoft Excelは動作...
-
DBをエクセル表に出力
-
エラー3109:MSysObjectsのデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLPLUSで結果を画面に表示しない
-
selectした結果の余計な余白を...
-
AccessからExcelのファイルを起...
-
動的にSPOOLファイルのファイル...
-
dmpファイルをインポートせずに...
-
DB2のコマンドラインexportで複...
-
ORACLEから各テーブルをCSV形式...
-
ストアドプロシージャの出力に...
-
Oracleでインスタンスを複数に...
-
PLSQLでファイルに書き込みをし...
-
レポートをpdfに変換する方法
-
mod_plsql使用時のDBMS_OUTPUT....
-
Accessのレポート出力をWordに...
-
SQLServer2005でSELECTした結果...
-
sqlplusの操作をシェル上で
-
sqliteはExcelと連携できますか?
-
batファイルからsql文実行
-
SQL*PLUSで 定期的にSQLを発行...
-
プロファイラを裏で実行継続す...
-
mysqlのCSV出力について
おすすめ情報