この募集は2018年12月22日に終了しました。

DBに関する不具合について教えてくださいの仕事

DBに関する不具合について教えてくださいに関する仕事・募集案件ページです。クラウドソーシングのランサーズで、データベース設計・構築に関する最適な外注/発注先をお探しの方、副業案件・求人をお探しのフリーランスの方はまず会員登録がおすすめです。

見積もり募集の結果

募集期間

5日間

提案数

4件

当選人数

1 件

(募集人数1人)

実際の発注内容

依頼の予算
1 円 ~ 5,000
実際の支払い金額
6,000 円 ~ 7,000
製作期間
8
実際の受注者
有限会社K・O・S
有限会社K・O・S

ブロンズ 認証済み、受注実績のあるランサーです サーバ構築、運営、パフォーマンスチューニング得意です。仕様書の無いシステム、大歓迎です

  • 希望時間単価 ---
  • 実績 32
  • 評価満足率 87 %
  • プロジェクト完了率 65%
  • 機密保持
  • 本人確認
  • 電話
  • ニックネーム 有限会社K・O・S

当社は携帯の専門メーカーとして2002年に設立を致しました。その間、Docomo,AU,SoftBankの公式サイトのみを開発、運営を行っており、 サイト数は200サイトになります。 従来のガラケーもそうですが、スマートフォンへの対応も問題ありません。 また、キャリアのテストセンターが使えますので、これから発売予定の端末でのテストも行えます ※実績は公式サイトの為、顧客との守秘義務が... 続きを読む

スキル
PHP5
MySQL
JavaScript
Java
Apache
AJAX
... もっと見る
対応可能な依頼のジャンル
ファッション・アパレル
IT・通信・インターネット
... もっと見る
発注者の声

見積もり募集の内容

依頼の目的・背景
phpプログラムでDBをアップデートするプログラムを書いています。
分からない事が出てきたので、質問させてください。

環境は以下の通りです。
PHP 7.0.21 (cli)
CentOS release 6.9 (Final)
mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64) using EditLine wrapper

php PDO で mysql にアクセスしています。
とある長めのトランザクションコードがあります。
そこのコードのロック機構に問題があるようです。

2台のクライアントソフトで、そのトランザクションをほぼ同時に実行すると、応答しなくなって(フリーズ)しばらくすると
SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction
上記のエラーが出力されます。

----------------------------------------------------------------
問題が起きた時のコード

■ クライアント1
begin
select * from bbb where id=123 AND dflg=0 for update;



update bbb set dflg=1 where id=123;
update bbbccc set dflg=1 where bbbid=123; <- ここで止まっていた



commit

■ クライアント2
begin
select * from bbb where id=124 AND dflg=0 for update;



update bbb set dflg=1 where id=124;
update bbbccc set dflg=1 where bbbid=124; <- ここで止まっていた



commit

----------------------------------------------------------------

他にもテーブルやコードはありますが、テーブルロックや行ロックは行っていません。

bbbid=123の対象となる3レコード(仮にbbbccc.id=456,457,458)と、bbbid=124の対象となる3レコード(仮にbbbccc.id=459,460,461)は全く別のレコードとなります。
(ただし、bbbccc.id は連続(456,457,458,459,460,461)ではあります)

(質問①)
なぜ両方のクライアントが止まってしまったのか理解できません。
説明をお願いできればと思います。

(質問②)
select ~ for update に代わり、get_lock , is_used_lock を採用するかもしれません。
get_lock は全く知らないので、その辺りも含めて何度かやり取りさせていただき、質問させていただければと思います。

----------------------------------------------------------------

DBの設計やレコードの情報などは添付ファイルをご覧ください。
(添付ファイル:ss20181217.png)
開発の進捗状況
ランサーに相談して決めたい
開発の継続性
ランサーに相談して決めたい
重視する点
クオリティ、柔軟な対応、こまめな連絡
希望開発言語
MySQL
補足説明
設定なし
添付ファイル
※ 締切後、添付ファイルはクライアントと当選したランサー以外は閲覧できません ( 詳細 )

  • ss20181217.png
会員登録する (無料)