質問: [PHP+MySQL(MyISAM)] DB更新の速度で悩んでいます。 begin; update A set〜 update A set〜 update A set〜 update A set〜 commit; このupdateとupdateの間に他のユーザーのselectが割り込まれてしまいます。 begin; update A set〜 select B〜 select C〜 select D〜 update A set〜 select D〜 select B〜 select C〜 update A set〜 select B〜 select C〜 select C〜 select B〜 select C〜 update A set〜 commit; updateがすべて完了するまでにタイムアウトしてしまいます。原因はselectの割り込みなのかどうかも不明です。updateの前後でテーブルロック(lock tables)しても(Aのselectがロックできるだけで)無駄のようです。 なにか解決策があれば教えてください。
回答: どのようにLOCKしたのか分かりませんが、上のUPDATEの前に(begin commitのかわりに) ``` LOCK TABLES A WRITE, B WRITE, C WRITE, D WRITE; UPDATE ... UNLOCK TABLES; ``` とされてはいかがでしょうか? (LOCKするテーブルは関係するテーブル「全て」を並べてください) あとはPHP側でpconnectを使っているのであれば、やめてみるとか。