• 締切済み

複数同時アクセス

いつもお世話になって申し訳ありません。 どうやらINSERT文でサーバーが落ちてしまいます postgres+PHPの組み合わせで 同じテーブルに同時に複数人(20-30)が INSERT文を実行する場合の処理に 対応しているのでしょうか? テーブルをロックする等の処理をする 必要がないのでしょうか? よろしくお願いします

  • MAGI
  • お礼率23% (6/26)
  • PHP
  • 回答数1
  • ありがとう数10

みんなの回答

  • maro
  • ベストアンサー率47% (95/199)
回答No.1

明示的にトランザクションの宣言はしています? pg_exec($conn,"begin"); ・・・・・ pg_exec($conn,"commit work");

MAGI
質問者

お礼

大変返事が遅れまして申し訳ありません。 maroさんの云うとおりです。 明示的なしていないため 書き込みが出来ないようでした ちなみにテーブルのロックも かけて対応しました どうもありがとう御座います

関連するQ&A

  • 複数のバッチを同時並行で起動したい

    環境:Windows2003Server バッチファイルの中に複数のバッチファイルを呼んでいるのですが、同時並行で実行することは可能でしょうか? サーバにCPUが4つあるのですが一回の実行ではタスクが分散されず1CPUで負荷がかかってしまって対応方法を考えています。複数のバッチに分けてから同時に実行した場合はタスクも複数になる為、処理が分散されるのではないかと思っているのですが・・・。 どなたかアドバイスお願い致します。

  • どういう時にテーブルロックを使用するのでしょうか

    PHPのサンプルにテーブルロックがあったのですが、 使いどころが分からないので、教えてください。 どういう時にテーブルロックを使用するのでしょうか。 サンプルの解説だと、 「LOCK TABLES」構文を使って会員と管理者が同時に実行する可能性がある更新と削除で テーブルをロックします、 とあるのですが、 例えば、:INSERTとかでは、テーブルをロックしなくてよいのでしょうか? これまで、気にしたことはなかったのですが、 例えば、(テーブルロックをしていない)掲示板で、たまたま同時に書き込みをしたり、しても、特に問題ないのでしょうか? どういう時に、テーブルロックをして、 どういう時にテーブルロックをしなくてよいか、分かりません。 例えば、同じ掲示板の機能を保持するサイトが複数あった場合、 テーブルロックというのは、 大体、処理別でこういう風にする、と決まっているようなものなのでしょうか? あるいは、データの持ち方によって、 それこそサイト毎に、実装(どこでロックするか等)はそれぞれ変わってくるようなものなのでしょうか?

    • ベストアンサー
    • MySQL
  • Sybase IQでのINSERT速度改善

    リアルタイムにデータが発生し、Sybase IQ(15.2)のテーブルに随時レコード追加する処理のパフォーマンス改善をしたいです。 Javaでプログラムを書いていて、1スレッドで処理をしていたのですが、レコード総数が多くなってきたせいか処理が重くなってきました。 ですので複数スレッド・コネクションでINSERT文を実行するように修正したところ、以下のエラーが発生しました。 「SQL Anywhere エラー -210 : テーブル名 のローは、ユーザ '別のユーザ' によってロックされています。」 INSERTしているだけなのですが、テーブル全体をロックしているのかエラーが発生してしまいます。 数十件くらいのINSERT文をバッチ処理(executeBatch)で実行するということを、各スレッドで数秒間隔で行っています。UPDATEは一切行いません。 Sybase IQで、複数のコネクションで並列してINSERT文を実行するということはできないのでしょうか? また他に改善方法がありましたら教えてください。

  • 複数のバッチを同時並行で起動したいNo2

    No.2002566で質問した者です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2002566 環境:Windows2003Server バッチファイルの中に複数のバッチファイルを呼んでいるのですが、同時並行で実行することは可能でしょうか? サーバにCPUが4つあるのですが一回の実行ではタスクが分散されず1CPUで負荷がかかってしまって対応方法を考えています。複数のバッチに分けてから同時に実行した場合はタスクも複数になる為、処理が分散されるのではないかと思っているのですが・・・。 ↑ 現在「start C:\xxx\yyy.bat」コマンドで4つ同時並行で実行しておりタスクが分散されて負荷が軽減されています。 が、また問題が発生してしまいました。。 JP1で登録されているのですが上記バッチが終了していないのにもかかわらず次の登録バッチが実行されてしまいます。 対応としては4つのバッチのうち処理が一番重いバッチを「call」で呼ぶことにしています。 理想としては全てのバッチが終了したら親元のバッチを終了させるようにしたいのですが・・。 何かいい方法があればアドバイスお願い致します。

  • 複数の処理を同時に行うには?

    一定の処理を行うクラスAを クラスBから同時に複数(100程度)同時に実行するには どのような記述方法があるのでしょうか? For文でクラスBからクラスAを呼ぶ処理を記述しても ひとつずつしか動作しませんでした… 何かアドバイスお願いします。 環境はVB2005を使用しております。

  • accessでcommitができますか?

    accessで複数のテーブルから1つのテーブルに書き込みをしています。VBAでSQL文を作成しDoCmd.RunSQLでinsertを実行しています。データが多いと遅くなるようです。Commitとか実行できるのでしょうか?そうすれば早くなりますか?ご指導のほどお願いいたします。

  • PHP Mysqli関数でエラー情報を取得する

    はじめまして。 PHPから、Mysqli関数を使用して、5000件のinsert文をMySQLサーバーに投げる処理で困っています。 insert文をセミコロン;で接続して、1つのSQL文にして、executeしています。 あるinsert文でエラーが発生した場合、それ以降のSQL文が実行されずに、PHPに戻ってきてしまいます。マルチクエリの挙動としては、この動きはしょうがないのでしょうか? 5000件のうち、複数のエラー(キー重複や、外部参照キーエラー)があった場合、エラーが起きたデータについてはどのようなエラーであったかが取得でき、それ以降のデータについてはinsertが実行できると言う処理をしたいのですが、このような処理は不可能でしょうか。 ちなみにupdateの場合は、更新対象のデータがなかった場合でもエラーとはならないので5000件文の処理が行われます。 環境は、以下です。 OS:FreeBSD6 PHP:PHP5 MySQL:MySQL5.2 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • SQL ServerとACCESSとのデータのやり取りについて

    下記の仕組みを検討しています。データをSQL Serverに置く。(安全性などを考慮して)Access側にも同じ構造のテーブルを用意してデータの編集・検索表示などをACCESSで行う。更新したデータをSQL Serverの該当テーブルにSQL文を実行して書き込む。書き込み方法は、両者を比較してSQL Server側にないレコードをInsert文にて追加する。(Not Inによるサブクエリを使用) お聞きしたいのは、ここで問題が発生していまして、 (1)単一主キーのテーブルの場合は動作しているが、複数主キーのテーブルの場合に、処理に非常に時間がかかる、もしくはエラーとなること(複数主キーでは処理できないものなのか) (2)上記のようなSQL ServerにデータをおいてAccess側でデータの編集・検索表示などを行う場合の良い仕組みについて 色々とHPを探し回ったのですが、今回のケースにずばり当てはまるものがなく、解決の糸口もなく苦戦しています。わかりにくい質問文になって申し訳ないですが、似たようなご経験の皆様方おられましたらアドバイス頂けないでしょうか。お願い致します。

  • PHPのプログラムが同時に呼び出された場合について

    PHPで同時に同じプログラムが呼び出された時、 WEBサーバでは、同時にプログラムが実行されるのでしょうか? それとも、先に呼び出された処理が終るのを待ってから、 後の処理が実行されるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 複数のテーブルの項目を同時に削除したい

    お世話になります、 Oracleで、delete文で困っています。 関係しあう二つのテーブルtab1,tab2があります。 二つのテーブルから同時に関係する項目を削除する 場合、同時に両方のテーブルの関係する項目を削除する場合どのような文になるのでしょうか、 delete from で複数のテーブルをしてすることはできないし、 delete from (select * from tab1,tab2)というような感じでデリートしても、片方のテーブルしかデリートされません。 よろしくお願いします。