ホームページ  >  記事  >  データベース  >  MySQL ストアド プロシージャとトランザクションの簡単な紹介

MySQL ストアド プロシージャとトランザクションの簡単な紹介

小云云
小云云オリジナル
2017-11-22 10:42:171997ブラウズ

ストアド プロシージャは、受信パラメータに応じて (またはそうでない場合も)、単一の SQL ステートメントよりも複雑な関数を実行します。これはデータベース サーバーに保存され、コンパイルは 1 回だけ必要です。再度使用する場合は再度コンパイルする必要はありません。主にストアドプロセスを制御します。
トランザクションは、全体としての一連のデータ変更操作です。トランザクションに含まれる操作が失敗するかユーザーによって中止されると、ユーザーはトランザクション本体内のすべての操作の取り消しを制御し、トランザクションの開始前の状態に戻すことができます。
トランザクション内の操作は全体として完了したか、まったく完了していないかのいずれかです。これにより、データの整合性が確保されます。
Mysql では、MyISAM ストレージ エンジンはトランザクションをサポートしませんが、InnoDB はトランザクションをサポートします。
どちらもデータベースにおいて非常に重要な知識です。

ストアドプロシージャ:

利点:

1. 高速実行。特に、より複雑なロジックの場合、ストアド プロシージャは作成時にのみコンパイルされるため、通常は SQL を再コンパイルする必要がなく、ネットワーク トラフィックの消費が削減されます。ステートメントは実行されるたびにコンパイルされるため、ストアド プロシージャを使用するとデータベースの実行速度が向上します。 。

2. 作業効率を向上させます。プログラムの作成は簡単で、ストアド プロシージャ呼び出しクラスを使用すると、ストアド プロシージャの呼び出しに必要なコードは 1 ~ 2 行だけです。

3. 標準化されたプログラム設計、アップグレードと保守が簡単。

4. システムのセキュリティを向上させます。特定のユーザーのみが指定したストアド プロシージャを使用する権限を持つように設定できます。

データ量が少ないプロジェクトやお金に関係のないプロジェクトはストアドプロシージャなしでも正常に動作します。 mysql のストアド プロシージャはまだ実際にテストされていません。正式なプロジェクトの場合は、SQL Server または Oracle のストアド プロシージャを使用することをお勧めします。データを扱う場合、その処理はプログラムよりもはるかに高速になります。

欠点:

プログラム関数の一部がデータベースに移動され、CVM の 3 層構造設計が破壊されます。

トランザクション:

トランザクション内にストアド プロシージャが存在することもあります。

ストアド プロシージャを使用するのが適切なのはどのような場合ですか?

1. ビジネスで複数のテーブルを同時に処理する場合は、ストアド プロシージャを使用する方が適切です。

2. 一部のレポート処理など、複雑なデータ処理にはストアド プロシージャを使用します。

3. 複数の条件と複数のテーブルを結合してクエリを実行し、ページング処理を実行します。

どのような場合にトランザクションを使用するのが適切ですか?

トランザクションを使用するたびに、一定量のオーバーヘッドが発生します。さらに、トランザクションによってテーブルの一部の行がロックされる場合があります。したがって、不要なトランザクションはパフォーマンスの低下につながる可能性があります。ここにはルールがあり、操作で必要な場合にのみトランザクションを使用します。たとえば、データベースの一部のレコードをクエリするだけの場合、または単一のクエリを実行する場合、宣言は暗黙的なトランザクションにすでにカプセル化されているため、ほとんどの場合、明示的なトランザクションは必要ありません。ただし、前述したように、トランザクションによって実際に操作が高速化される可能性があるため、複数のステートメントを更新する場合には非常に重要です。同様に、数ミリ秒を節約するか、データの整合性を危険にさらすかの選択がある場合、正しい答えは、データをクリーンな状態に保ち、それらのミリ秒を気にしないことです。

さらに、トランザクションを使用する前に注意する必要があります。トランザクションはできるだけ短くしてください。ステートメントが返されたデータに依存している場合を除き、トランザクション内で SELECT リターンを使用することは避けてください。 SELECT ステートメントを使用する場合は、必要な行のみを選択することで、可能な限り最高のパフォーマンスを維持しながら、あまりにも多くのリソースをロックすることがなくなります。アーキテクチャ上の語順の場合は、トランザクションからすべての SELECT ステートメントを削除します。これは、トランザクションが処理中に操作されたすべてのデータ行をロックし、他の同時 SQL ステートメントの実行に影響を与えるためです。

上記は MySQL ストアド プロシージャとの違いです。皆様のお役に立てば幸いです。

関連する推奨事項:

ストレージ プロセスの詳細な紹介

mysql ストレージ プロセスを使用する理由mysql ストアド プロシージャの紹介

異なるデータベース テーブルを同時に操作する、サポートするか、mysql ソリューション

以上がMySQL ストアド プロシージャとトランザクションの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。