SQL文の実行
推奨 (無料): SQL
Zero、データベース ドライバー
- MySQL ドライバーは、最下位レベルでデータベースに接続するのに役立ちます。接続が確立されて初めて、その後の対話が可能になります。
1. データベース接続プール
- データベース接続プールには、Druid、C3P0、DBCP が含まれます
- 接続プールを使用すると、スレッドを常に作成および破棄することによるオーバーヘッドは、有名な「プーリング」のアイデアです。スレッド プールであっても、HTTP 接続プールであっても、その存在がわかります。
2. SQL インターフェイス
- MySQL でリクエストを処理するスレッドは、リクエストを取得した後に SQL ステートメントを取得し、それを処理のために SQL インターフェイスに渡します。
3. クエリ パーサー
- #SQL インターフェイスによって渡された SQL ステートメントを解析し、MySQL が理解できる言語に変換します。
4. MySQL クエリ オプティマイザー
- MySQL は、最小コスト原則 # に基づいて、対応するインデックスの使用を選択します。 コスト = IO コスト CPU コスト
- IO コスト: つまり、ディスクからメモリにデータをロードするコストです。デフォルトでは、データ ページを読み取る IO コストは 1 です。 , MySQLはデータをページという形で読み込む、つまり、あるデータを利用する際に、そのデータだけでなく、そのデータに隣接するデータもメモリ上に読み込むという有名なプログラムです。局所性があるため、MySQL は毎回ページ全体を読み取り、1 ページのコストは 1 です。したがって、IO のコストは主にページのサイズに関係します
- CPU コスト: データをメモリに読み込んだ後、データが条件を満たしているかどうかを検出することも必要ですソートやその他の CPU 操作のコストは明らかに、行数に応じて、デフォルトでレコード検出のコストは 0.2 に関連します。 MySQL オプティマイザは、
5 の実行コストが最小となる「IO コスト CPU」インデックスを計算します。ストレージ エンジン
- #クエリ オプティマイザーは、ストレージ エンジン インターフェイスを呼び出して SQL を実行します。これは、実際の
- SQL の実行がストレージ エンジン で完了することを意味します。 データはメモリまたはディスクに保存されます
- SQL が実行されるたびに、そのデータはメモリにロードされます。このメモリは InnoDB の非常に重要なコンポーネントです。 :
- バッファ プール
エグゼキュータは最終的に一連の実行計画に従います ストレージ エンジン インターフェイスを呼び出して SQL の実行を完了します
バッファ プール (バッファ プール) は、非常に重要なメモリ構造です。 InnoDB ストレージ エンジン。キャッシュの役割を果たします。
- バッファ プールとは、初めてクエリを実行するときにクエリ結果をバッファ プールに保存することを意味します。の場合、最初にバッファ プールからクエリが実行されます。検索がない場合は、ディスク上で検索されてから、バッファ プールに配置されます。
- バッファ プールで使用されるデータはロックされます。
-
1. Undo ログ ファイル
: 記録されたデータが変更される前外観
機能: UNDO ログ ファイルを使用してトランザクション ロールバックを完了します:変更されたデータの外観を記録します。
redo は、トランザクションが送信されたかどうかに関係なく、データ変更後の値を記録します。- MySQL 効率を向上させるために、これらの操作は最初にメモリに配置されて完了し、更新されたデータは REDO ログ バッファに記録され、その後、特定の機会にディスクに永続化されます。
-
操作プロセス全体を記録します
bin ログには操作記録全体が記録されます (これはマスター/スレーブレプリケーションにとって非常に重要です)
プロパティ
redo ログ
bin ログ
ファイル サイズ
REDO ログのサイズは固定です (設定で設定することもできます。通常はデフォルトで十分です)
bin ログは、設定パラメータ
を使用して # ごとに設定できます。 max_bin log_size
##bin logファイルのサイズ (ただし、通常は変更することはお勧めしません)。
実装方法
redo ログ
は、
InnoDB エンジン層によって実装されます (つまり、Innodb ストレージが原因で過剰なはい)
bin log
は MySQL レイヤーによって実装されており、すべてのエンジンは
bin loglog
を使用してRecord メソッド
redo ログレコードをループで書き込むメソッドで、最後まで書き込むと最初に戻ってループでログを書き込みます。 bin ログは追加で記録されます。ファイル サイズが指定値より大きい場合、以降のログは新しいファイルに記録されます
利用シナリオ
redo ログ
クラッシュ リカバリに適しています (クラッシュ セーフ) (これは実際には Redis の永続化機能に非常に似ています)
bin ログ
マスター From に適していますレプリケーションとデータリカバリ
以上が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 を使用することです。

背景: 企業のニーズの 1 つは、企業の既存のリンク トラッキング ログ コンポーネントが MySQL の SQL 実行時間の出力をサポートする必要があるということです。リンク トラッキングを実装する一般的な方法は、サードパーティのフレームワークまたはツールによって提供されるインターセプタ インターフェイスまたはフィルタ インターフェイスを実装することです。 MySQL も例外ではなく、実際には、MySQL によって駆動されるインターセプタ インターフェイスを実装しているだけです。 MySQL チャネルにはさまざまなバージョンがあり、バージョンごとにインターセプタ インターフェイスが異なるため、使用する MySQL ドライバのバージョンに応じて応答インターセプタを実装する必要があります。次に、MySQL チャネル 5 と 6 をそれぞれ紹介します8。バージョンの実装。ここでは、Statem を実装する例として MySQL チャネル 5.1.18 バージョンを使用して MySQL5 を実装します。

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

Springboot+Mybatis-plus が SQL ステートメントを使用して複数テーブルの追加操作を実行しない場合、私が遭遇した問題は、テスト環境で思考をシミュレートすることによって分解されます: パラメーターを含む BrandDTO オブジェクトを作成し、パラメーターをバックグラウンドに渡すことをシミュレートします。 Mybatis-plus で複数テーブルの操作を実行するのは非常に難しいことを理解してください。Mybatis-plus-join などのツールを使用しない場合は、対応する Mapper.xml ファイルを設定し、臭くて長い ResultMap を設定するだけです。対応する SQL ステートメントを記述します。この方法は面倒に見えますが、柔軟性が高く、次のことが可能です。
