こんにちは。
現在某KD○I系列のレンタルサーバー屋で専用サーバーを借りていますが PostgreSQLのデータINSERTの速度がありえないぐらい遅く
サーバー屋にさいさん文句を言っていますが これが仕様ですといってらちがあきません。
どれぐらい遅いか?というと1万行のデータをphpPgAdminからインサートするのに4分近くかかります。
ちなみにうちで適当に作ったVMでの実行だと10秒程度、あまりにらちあかなくて頭着てロリポップで試してみても35秒でした
(まぁロリポップはMySQLですが)
なおデータが複雑だから、、、というわけではなく以下のようなシンプルな構成にしても同様です。
testid varchar(10)
testvalue varchar(10)
ネットワークやハードウェアの障害かとも思いましたが phpMyAdminからMySQLに流し込む分には5秒程度で終わりますし
特定のサーバーの問題かと思い ほかのサーバーでも試してもらいましたが結果は同じでした。
かなり文句を言って向こうのサポートと喧嘩状態になりながら 最終的に向こうからの回答は以下の感じで は?という感じです。
********************(一部伏字)
検証結果にて判明致しましたが、仮想化環境ではディスク自体が
仮想化されている為か、INSERT の結果にはご指摘いただいたように非常に素早い結果を得ることが出来ました。これは、弊社にて別途ご提供中のVPS の*****で要したのは 5 秒前後という結果でございました。
しかしながら、仮想化ではない通常のサーバでは、Disk への書き込み部分が
ボトルネックとなるようで、上位プランの筐体を利用しての動作検証でも、
数十秒程度の速度向上が得られた程度にて、著しい成果を得ることは、
出来ませんでした。
大変申し訳ございませんが、Postgre SQL の設定ではなくご提供しております
オペレーティングシステムのファイルシステムを含めたデータ処理方法などに起因する動作結果となります為、弊社では本速度を仕様としてご案内させていただきます。
********************
1万件で4分が仕様だそうですので 50件インサートするのに約1秒かかり
現在構築中のアンケートシステムでは一人50問程度使うので
10人同時にアクセスしたら最大10秒待たされるわけで とても使い物になりません。
年間100万以上の予算を組んだサーバーでまさかロリポップにも劣る速度になるとはホント驚きです。
ルート権限もなくSSHでログインすることもできないのでログもろくに見られない状態なのですが 上記のような現象に心当たりがあったり解決方法をご存知の方おられませんでしょうか?
本来であれば別のサーバー屋と契約したいところなのですが OPENの日時考えると他のサーバー屋で再契約するには社内の稟議の問題もあり難しいです。
なんで客である自分がこんなこと調べないといけないんだーと かなり憤ってますが そうはいってもサーバー屋が原因であれプロジェクト失敗すれば私の心証も悪くなってしまいますし なんとか避けたいです。
何か心当たりがあれば教えてください。
よろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>レンタルサーバー屋で専用サーバーを借りていますが
>仮想化環境ではディスク自体が
レンタルしているのは専用サーバか?
それともVPSか?
それとも専用サーバをレンタルしてその中で質問者が
VPSを構築しているのか?
No.3
- 回答日時:
PostgreSQL データベースで大量データの登録・削除を行う場合、
適時 vacuum や vacuum full しないと極端に遅くなりますよ。
動作検証のため、大量データの登録・削除を繰り返している
ようでしたら、一度 vacuum full してみてはいかがでしょうか。
ありがとうございます。
新規契約したばかりのサーバーなのでバキュームするまでもない、と思っていて試していなかったので 試しにかけてみました。
が、残念ながら数分かわる状況は変わらず、でした、
ありがとうございました
No.2
- 回答日時:
こんにちは、
僕は、pg_dumpのインサートに下記で解決しました。
※ 余談ですが、pg_dumpのコピーコマンドでは遅延は発生しません。
postgresqlを停止して、fsyncを on → off 変更後postgresqlを起動する。
インサート完了後、off → on にしてpostgresqlを再起動して使用しています。
参考URL:http://decide.cocolog-nifty.com/blog/2009/03/pg_ …
情報ありがとうございます。
ただ今回はPostgresに初期データを流し込むことではなく
動的にデータを登録するアンケートシステムの登録速度が問題なのでこの方法での対処は難しそうです。
しかし このファイルへの書き込みも遅い原因の一因なのは間違いないですが 上の1万行のSQL文って全部で500kbぐらいなんですよね。
いくら1万回にわけて書き込んでいるとは言え 500kb分のデータ書き込みにそこまでかかる、ってのも何か納得いかないものがあります。。。
SQLの文法除いた 純データは1行10バイト以内だし 1万行でも100kb
インデックス作ったってせいぜい倍の200kbぐらいだろうし・・・
No.1
- 回答日時:
ありえるとすれば、このあたりでしょうか。
http://www.fiberbit.net/user/kunyami/postgresql/ …
phpPgAdminからの更新であれば、おそらく1行毎にコミットされているので、
毎回ディスクへの書き込みを実行していると遅くなるかもしれません。
同じ設定でも、仮想環境の場合はハードディスクへの書き込み自体を
キャッシュしておいてディスク自体には遅延書き込みを行う場合があるので、
パフォーマンスが圧倒的に違う というのも納得できます。
ありがとうございます。
なるほど。
設定がどうかは確認できませんが 確かに作成したプログラムもトランザクションありで実行すると心なしか実行速度があがったように思われます。
高アクセスが予想され 最悪サーバーダウンなどで完了しなくても一部だけでも登録できれれば、と今回はあえてトランザクションは使わずに実装したのですが そういうことならトランザクション使う方法での実行も検討してみる価値がありますね。
ただトランザクション使っても心なし早くはなるけれど たかが50件のインサートに0.5秒ぐらいはかかってるので 改善は見られるものの根本的な解決をはかるには サーバー側に設定を変えてもらうよう検討してもらうのが一番ですが・・・
情報ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- VPN フリー wi-fi は安全ですか 自宅での wi-fi VPNを使用したら良い? 2 2022/05/31 04:12
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- 物理学 『Maxwellの悪魔は永久機関の夢を見るか?』 10 2022/05/16 07:58
- Gmail SPFレコードとDNSサーバーについて、gmailを設定できるかどうか 2 2023/06/10 23:55
- サーバー Webサイト構築フリーランスの案件受注について 1 2022/03/27 18:16
- ASP・SaaS イントラネットを構築したい 2 2022/04/24 11:08
- サーバー メールサーバーについて詳しい方、メールサーバーの管理業務経験のある方、教えてください。 3 2022/11/12 18:24
- 教育・文化 高校生です。将来政治家になって犯罪率を0.0%代にしたいのですが、可能だと思いますか? ㅤ 大まかな 8 2022/08/27 18:51
- 会社・職場 社会人4年目 仕事ができない どうすればいい? タイトルの通り全く仕事が出来ず、今後どうしようか等悩 7 2022/06/25 18:49
- 物理学 特殊相対性理論を、完全否定に成功~ガンマの数式は、成立しない。 2 2023/03/08 19:30
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別サーバーのDB同士を結合する...
-
SQLServerでViewの参照・・・
-
dtexecコマンドを使ってDTSパッ...
-
異なるサーバーにファイルをエ...
-
リンクサーバ(PostgreSQL)に...
-
Oracle 8i コンマ(,)を含むデ...
-
OracleJDK17をインストールすれ...
-
SQLサーバー接続 特定のPCがWin...
-
エクセルのグループボックス枠...
-
バッチからメンテナンスプラン...
-
SQLで同じDBに対し2つのコネク...
-
Excel-VBAの「しばらくお待ちく...
-
ACCESS ADOでupdateが効かない
-
GROUP BYでエラーが発生
-
SQLのエラー(~付近に不適切な...
-
ノートンの解約(「ライセンス...
-
データベースのOPEN,CLOSEについて
-
SQLserverのIF文について
-
sqlcmdでクエリの実行結果をバ...
-
エクセルマクロで指定範囲内の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(SQLSERVER) 別サーバーへテー...
-
異なるサーバーにファイルをエ...
-
dtexecコマンドを使ってDTSパッ...
-
MySQLに良いCPUスペックは?
-
別サーバーのDB同士を結合する...
-
SQLServerでViewの参照・・・
-
2つのPCの SQL Server のテー...
-
FreeBSD+PostgreSQLでありえな...
-
リンクサーバ(PostgreSQL)に...
-
SQLサーバーのテーブルでサーバ...
-
SQLサーバーでの正規表現メタ文...
-
Oracle 8i コンマ(,)を含むデ...
-
SQLサーバー接続 特定のPCがWin...
-
SQLのエラー(~付近に不適切な...
-
GROUP BYでエラーが発生
-
Access2010 accdbのエラー「ODB...
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
SQL Loaderを使いたい
-
NAT-KUのノートパソコンは?
-
エクセルマクロで指定範囲内の...
おすすめ情報