更新と選択に関するテーブル ロックの問題 (mysql myisam)

WBOY
リリース: 2016-06-23 13:42:00
オリジナル
1566 人が閲覧しました

申し訳ありませんが、ページにアクセスすると、まずテーブル B からランダムな単語の ID (フィールド: now_id) を見つけてから、テーブル A に移動してランダムな単語を見つける必要があります。

このランダムな単語のID(now_id)をテーブルBから選択すると、now_id+1が生成されます。

しかし、今の問題は、瞬間的に膨大な数のアクセスがあったため、テーブル B の更新が完了する前に再度選択されてしまう可能性があることです。 。 。非常に混乱していますが、更新があるので、更新が完了した後に選択を実行する必要はありませんか? 更新により自動的に書き込みロックが追加され、更新が完了した後に選択を実行する必要があります。

次に、ブロックを発生させずに、選択する前に更新できるようにしたいと思います。 。

$sql = "select * from fan_keyword where id=(select fval from hao_fan_temp where fkey='keyword_produce_id' limit 1)";$result  = mysql_query($sql);$arr	 = mysql_fetch_assoc($result);if(!empty($arr)){	$keyname = $arr['name'];	$idd	 = intval($arr['id']) + 1;}else{	$sql = "select * from fan_keyword limit 1";	$result  = mysql_query($sql);	$arr	 = mysql_fetch_assoc($result);	$keyname = $arr['name'];	$idd	 = intval($arr['id']) + 1;}	$sql1 = "update hao_fan_temp set fval='$idd' where fkey='keyword_produce_id'";	mysql_query($sql1) or exit('auto_produce: 保存当前抽取的词ID失败');
ログイン後にコピー


ディスカッションへの返信 (解決策)

選択時に読み取りロックがあるはずですが、同時に他のプロセスの読み取り操作をブロックするわけではないので、まだ前のデータを読み取ります

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!