MySQL データベースで SQL が実行される仕組み
今日は、mysql ビデオ チュートリアル 列を使用して、update ステートメントの実行プロセスを見てみましょう。
" data- style="max-width:90%" data- style="max-width:90%">
mysql> create table demo T (ID int primarty ,c int);复制代码
mysql> update table demo set c = c + 1 where ID = 2;复制代码
最後に、redolog を作成する際に、準備とコミットという 2 つのステップがあることがわかります。これは、よく「2 フェーズ コミット」と呼ばれるものです。
ログに「2 段階の送信」が必要なのはなぜですか?
REDO ログと binlog はそれぞれストレージ エンジンとエグゼキューターのログであるため、2 つの独立したロジックです。2 段階の送信を使用しない場合、どちらを先に送信しても問題が発生します。そしてどれを後で提出するか。上の例を見てみましょう。ID=2 の行の現在の値が 0 であるとします。更新プロセス中に最初のログが書き込まれた後、2 番目のログが書き込まれていない間にクラッシュが発生します。どうなりますか? ?
- 最初に redolog を書き込み、次に binlog
- を書き込みます。 redolog は書き込まれましたが、binlog はまだ書き込まれておらず、MySQL プロセスが異常に再起動したとします。 redolog が書き込まれた後は、システムがクラッシュした場合でもデータを復元できることがわかっているため、MySQL が再起動されると、この行は 1 に復元されます。バイナリログは完了する前にクラッシュするため、現時点ではバイナリログにそのようなステートメントは存在せず、後でログをバックアップするときに、保存されたバイナリログログにはこのステートメントは含まれません。 binlog を介してデータを復元する必要がある場合、binlog はこのステートメントを失っているため、復元された行の値は 0 となり、元のデータベースの値とは異なります。 最初に binlog を書き込み、次にログをやり直します
- 。バグログを書き込んだ後、REDO ログが完了する前にクラッシュが発生し、この時点でデータベースがクラッシュすると、回復後にトランザクションが無効になるため、この行の値は 0 のままですが、更新ステートメントは記録されています。 binlog.log にある、将来データを復元するために binlog を使用する必要がある場合は、追加のトランザクションが発生します。この update ステートメントを実行して、値を 0 から 1 (元のデータベースの 0 とは異なる) に更新します。 「2 フェーズ コミット」を使用しない場合、データベースの状態はログを使用して復元されたデータベースと不一致になることがわかります。データの回復にログを使用する可能性は比較的低いですが、ログの最も一般的な使用法は、フル バックアップとバイナリ ログによって実現される容量拡張時であり、これによりオンラインのマスター/スレーブ データベース間で不整合が発生する可能性があります。
mysql ビデオ チュートリアル
以上がMySQL データベースで SQL が実行される仕組みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HQL と SQL は Hibernate フレームワークで比較されます。HQL (1. オブジェクト指向構文、2. データベースに依存しないクエリ、3. タイプ セーフティ)、SQL はデータベースを直接操作します (1. データベースに依存しない標準、2. 複雑な実行可能ファイル)。クエリとデータ操作)。

「OracleSQLでの除算演算の使用方法」 OracleSQLでは、除算演算は一般的な数学演算の1つです。データのクエリと処理中に、除算演算はフィールド間の比率を計算したり、特定の値間の論理関係を導出したりするのに役立ちます。この記事では、OracleSQL での除算演算の使用法を紹介し、具体的なコード例を示します。 1. OracleSQL における除算演算の 2 つの方法 OracleSQL では、除算演算を 2 つの異なる方法で実行できます。

Oracle と DB2 は一般的に使用される 2 つのリレーショナル データベース管理システムであり、それぞれに独自の SQL 構文と特性があります。この記事では、Oracle と DB2 の SQL 構文を比較し、相違点を示し、具体的なコード例を示します。データベース接続 Oracle では、次のステートメントを使用してデータベースに接続します: CONNECTusername/password@database DB2 では、データベースに接続するステートメントは次のとおりです: CONNECTTOdataba

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

SQL における Identity とは何ですか? 具体的なコード例が必要です。SQL では、Identity は自動インクリメント数値の生成に使用される特別なデータ型です。多くの場合、テーブル内のデータの各行を一意に識別するために使用されます。 Identity 列は、各レコードが一意の識別子を持つようにするために、主キー列と組み合わせてよく使用されます。この記事では、Identity の使用方法といくつかの実用的なコード例について詳しく説明します。 Identity の基本的な使用方法は、テーブルを作成するときに Identity を使用することです。

PHP 開発の実践: PHPMailer を使用して MySQL データベース内のユーザーに電子メールを送信する はじめに: 現代のインターネットの構築において、電子メールは重要なコミュニケーション ツールです。 ECにおけるユーザー登録やパスワードのリセット、注文確認など、メール送信は欠かせない機能です。この記事では、PHPMailer を使用してメールを送信し、メール情報を MySQL データベースのユーザー情報テーブルに保存する方法を紹介します。 1. PHPMailer ライブラリをインストールする PHPMailer は

解決策: 1. ログインしているユーザーがデータベースにアクセスまたは操作するための十分な権限を持っているかどうかを確認し、ユーザーが正しい権限を持っているかどうかを確認します; 2. SQL Server サービスのアカウントに指定されたファイルまたはデータベースにアクセスする権限があるかどうかを確認します。 3. 指定されたデータベース ファイルが他のプロセスによって開かれているかロックされているかどうかを確認し、ファイルを閉じるか解放して、クエリを再実行します。管理者として試してください。Management Studio をなどとして実行します。

MySQL でデータの集計と統計に SQL ステートメントを使用するにはどうすればよいですか?データの集計と統計は、データ分析と統計を実行する際の非常に重要な手順です。 MySQL は強力なリレーショナル データベース管理システムとして、データの集約と統計操作を簡単に実行できる豊富な集約機能と統計機能を提供します。この記事では、SQL ステートメントを使用して MySQL でデータの集計と統計を実行する方法を紹介し、具体的なコード例を示します。 1. カウントには COUNT 関数を使用します。COUNT 関数は最も一般的に使用されます。
