1. データベースはどのようにロックされますか? 単純な SQL ステートメント
SELECT username
,passwd
FROM g_test
LIMIT 1 FOR UPDATE
通常のクエリの後に FOR UPDATE を追加すると、データベースがロックされますか?
2. FOR UPDATE ロック書き込みを追加すると、このステートメントは DELETE に有効になりますか?
3. MYISAM はテーブル全体をロックしていますか?
4.InnoDB は行ロックですか?
新しい質問
5. データベースがトランザクションを開いてロックを追加したが、何らかの理由で後続の操作が完全に完了せず、コミットもロールバックも行われない場合、トランザクションにタイムアウト メカニズムはありますか?ロックにはタイムアウト機構がありますか?期限切れになると自動的に破棄されます
返信内容:
1. データベースはどのようにロックされますか? 単純な SQL ステートメント
SELECT username
,passwd
FROM g_test
LIMIT 1 FOR UPDATE
通常のクエリの後に FOR UPDATE を追加すると、データベースがロックされますか?
2. FOR UPDATE ロック書き込みを追加すると、このステートメントは DELETE に有効になりますか?
3. MYISAM はテーブル全体をロックしていますか?
4.InnoDB は行ロックですか?
新しい質問
5. データベースがトランザクションを開いてロックを追加したが、何らかの理由で後続の操作が完全に完了せず、コミットもロールバックも行われない場合、トランザクションにタイムアウト メカニズムはありますか?ロックにはタイムアウト機構がありますか?期限切れになると自動的に破棄されます
他の回答者が言ったことは十分に包括的ではないので、あなたのために整理させてください。
まず第一に、さまざまなデータベースメカニズム (特に MySQL などのプラグインストレージエンジンを備えたデータベース) について話す前に、使用するストレージエンジンを宣言する必要があると思います。そうしないと、ここでの質問は無意味であると仮定します。 , 2つの質問はinnoDBストレージエンジンに基づいており、私の理論もinnoDBエンジンに基づいています。
概念を明確にしてください。ロックには次の 2 種類があります:
読み取りロック -> 共有ロック (S)
書き込みロック -> 排他ロック (X)
書き込み操作の排他ロック、
理論的には、 、操作されたオブジェクト (id = 1 の行など) に排他ロックがある限り、この行を操作できるトランザクションを除き、他のトランザクションは、行が行であるかどうかに関係なく、この行に対して操作を実行する権利を持ちません。読み取り操作または書き込み操作
ちなみに、select .. for update は SQL 仕様に属さないので、実際には避けるべきです。
select ..for update は排他的ロック操作を実行しますが、このステートメントはトランザクション内でのみ意味を持ちます。非トランザクション状況で使用すると、ロック操作とロック解除操作が一度に完了し、実際的な意味はありません。もう 1 つの非常に重要な点は、innoDB は REPEATABLE READ および READ COMMITTED の分離レベルでのトランザクション操作で行レベルのロックを直接使用せず、代わりにオプティミスティック メカニズム MVCC を使用することです。つまり、ほとんどの読み取り操作はロックを必要としません。書き込みロックは必要な行のみをロックします 「MVCC について」
1.「更新用の g_test LIMIT 1 からのユーザー名、パスワードの選択」はロックされていますか?
はい、行レベルの排他ロックが追加されます。2.「更新の書き込みロックは削除ステートメントに対して有効ですか?」 さらに更新には書き込みロック(つまり排他ロック)があり、もちろん削除にも有効です(削除は操作できません)が、それでも上記の観点から、REPEATABLE READおよびREAD COMMITTEDのトランザクション操作ではMVCCが使用されますfor update exclusive lock ステートメントを使用した後でも、他のトランザクションが読み取り操作を実行できることに驚かれるかもしれません。
3.「MyISAM はテーブル全体をロックしていますか?」
はい、MyISAM ストレージ エンジンにはテーブル レベルのロックしかありません
4.「InnoDB は行レベルのロックですか?」
完全に正しくありません。innoDB には行レベルのロックとテーブルレベルのロックがありますが、デフォルトでは行レベルのロックになります。
トランザクション自体にはタイムアウト機構はありませんが、テーブルのロックによりトランザクションがタイムアウトした場合はロールバックされます。デフォルトの innodb ロック タイムアウトは 50 秒で、これは変数 innodb_lock_wait_timeout を設定することで実現されます。5.「トランザクションとロックにはタイムアウトメカニズムがありますか?」
MYISAM ロックはテーブル全体を対象とします。InnoDB ロックは 1 行のレコードを対象とした行ロックです。
SELECT username, passwd FROM g_test LIMIT 1 FOR UPDATE は、FOR UPDATE が追加された場合に複数のプロセスが同時に SQL クエリを実行することを防ぎます。 、ロックされるため、別のプロセスがキューに登録され、前のプロセスの実行が完了するまで待機します。つまり、同時実行です。最も重要な点は、ロックはトランザクション内、つまり SQL 実行の中に配置する必要があるということです。最初にトランザクションをオープンします。
InnoDB は 2 フェーズ ロック プロトコルを使用します。ロックはトランザクション実行中いつでも実行できます。ロックはコミットまたはロールバックが実行された場合にのみ解放され、すべてのロックが同時に解放されます。 InnoDB は、必要に応じて分離レベルに基づいて自動的にロックします。これは暗黙的なロックです。
InnoDB は特定のステートメントによる明示的なロックもサポートしています:
select ... 共有モードでのロック (共有ロック)
select ... 更新用 (排他的ロック)
さらに、MySQL はこれをサポートします。サーバー層 lock tables および unlock tables ステートメントは、ストレージ エンジンとは何の関係もありません。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

メモ帳++7.3.1
使いやすく無料のコードエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール
