MySQL とトランザクション処理が MaxSQL_PHP に等しいチュートリアル
昨年 8 月、OReilly 主催のオープンソース カンファレンスで、MySQL 開発者の Monty Widenius は、現在人気のある MySQL データベースの拡張バージョンである MaxSQL と呼ばれる新しいプロジェクトを発表しました。最も重要なことは、MaxSQL には Sleepycat ソフトウェアの最新の Berkeley DB ライブラリが組み込まれているため、プログラムは別のテーブル タイプでのトランザクション処理をサポートしていることです。
現在、MaxSQL のバイナリ バージョンを直接インストールすることはできません。MySQL 3.23 ベータ版のソース コードからコンパイルする必要がありますが、この記事を読む頃には、MySQL Web サイトから MaxSQL をダウンロードできるはずです。 最新バージョンを自分でコンパイルしたい場合は、「独自の MaxSQL のコンパイル」の記事を参照してください。そこではコンパイル手順が詳しく説明されています。
トランザクションとは何ですか?
トランザクションセーフなテーブルを追加するには、なぜ新しいプロジェクト名が必要なのでしょうか? MySQL の主な開発者である Monty Widenius には 2 人の子供がおり、1 人は My 、もう 1 人は Max という名前の兄弟であるだけでなく、ライバルの PostgreSQL も存在します。
PostgreSQL については、この号の別の記事「PostgreSQL が電子商取引にレベルを追加する」で、各プロジェクト チームがそれぞれの製品の弱点を克服しているため、PostgreSQL は私たち全員にとって有益な競合相手であると述べられています。 MaxSQL が行うことは、これら 2 つのライバル間のギャップを埋めることです。 MySQL は読み取り操作が高速であるため、主に Web コンテンツを読み取るため、Web 開発者に非常に人気があります。ただし、その一方で、MySQL は ISAM テーブルを使用するため、書き込み操作中にテーブル全体をロックする必要があり、更新および挿入操作が遅くなり、トラフィックが多い場合には大きな問題になります。 1 秒あたりのリクエスト数が大幅に増加すると、書き込み操作がサーバー内でキューに入れられ、Web ページでタイムアウト エラーが発生します。
MaxSQL を使用した後も、通常の高速 ISAM タイプのテーブルを作成することも、特定のテーブルでトランザクション セキュリティ機能を使用する必要がある場合に、新しい BDB タイプの使用を選択することもできます。
BDB テーブルは、書き込み操作中に ISAM よりもはるかに高速です。テーブルレベルのロックを使用しないためです。 さらに、ハードウェア障害が発生した場合には、トランザクション テーブルの処理がログに記録されます。ログにより COMMIT/ROLLBACK 操作が可能になります。たとえば、オンライン ストアで注文すると、その注文は「注文」テーブルの行として記録されます。システムは、「在庫」テーブルの行から対応する在庫数量を減算します。 MySQL の ISAM テーブルを使用する場合、CGI プログラムは次の 6 つの手順を実行する必要があります:
LOCK 在庫表
LOCK 注文表
UPDATE 在庫表
UPDATE 注文表
UNLOCK 在庫表
UNLOCK 注文表
誰かがテーブルをロックすると、この CGI プログラムは待たなければなりません。両方がロックされると、CGI はそれらを更新してロックを解放できます。ステップ 3 が失敗した場合 (サーバーがダウンしているなど)、注文テーブルは更新されず、在庫は減少します。
MaxSQL BDB トランザクションセーフ タイプ テーブルを使用した後は、必要な手順は 4 つだけです:
BEGIN
在庫テーブルを更新
注文テーブルを更新
COMMIT
4 つの手順すべて、ロックが解放されるまで待つ必要はありませんは 1 つのトランザクションです。 BEGIN ステートメントが読み取られるとすぐに、MySQL は COMMIT コマンドが表示されるまでコマンドをバッファに読み取ります。したがって、すべての操作が同時に行われます。予期せぬ操作(ディスクフルや停電)が発生した場合でも、データベースは破壊されません。非トランザクションセーフシステムでは、3 番目のステップが失敗すると、BDB テーブルでデータベースの一貫性が失われ、注文テーブルの操作が失敗すると、MySQL は在庫テーブルの操作を再開するため、不整合は発生しません。起こる。 。
多くの Web サイトは MySQL の初期バージョンを使用してテーブル ロックを実装していますが、MaxSQL を使用すると、それが簡単かつ高速になります。
他にどんな新しい武器がありますか?
BDB テーブルのために MySQL を MaxSQL に変換することに加えて、いくつかの重要な変更もあります。秘密兵器の 1 つはデータベース レプリケーションです。1 台のサーバーをマスター サーバーとして使用し、任意の数のスレーブ サーバーを構成できるため、マスター サーバーへの更新もスレーブ サーバーにコピーされます。このようなシステムを使用するには、CGI スクリプトを変更して、MySQL スレーブ サーバーの存在を認識できるようにします。このスクリプトは、マスター サーバーに接続できない場合にもスレーブ サーバーに切り替えます。
レプリケーションは同期ではないため、このようなシステムは書き込み操作がほとんどないデータベースに対してのみ有効であることに注意してください。誰かがマスター サーバー上でトランザクションを開始し、トランザクションが終了する前にサーバーが停止した場合、マスター サーバーは更新をスレーブ サーバーにコピーする時間がなくなります。このように、このシステムは電子商取引には適していません。また、CGI スクリプトが常にメインサーバーに接続するため、負荷分散されたシステムではありません。
もう 1 つの大きな改善点は、ISAM タイプのテーブルの形式です。デフォルトのテーブル タイプは MyISAM と呼ばれるようになりました。 このタイプのテーブルはテーブルあたり最大 2GB を処理でき、クロスプラットフォームです。 MyISAM ファイルは、変換せずに Linux から Solaris にコピーできます。
結論:
MaxSQL は、高価なビジネス システムの優れた代替品として使用できます。多くのシステムでは、多くのトランザクションを処理する必要がなく、Oracle のインストールが必要です。 MaxSQL が提供するトランザクションセーフなテーブルにより、データベース更新のプログラミング作業が容易になります。

ホット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)

ホットトピック











MySQL クエリのパフォーマンスは、検索時間を線形の複雑さから対数の複雑さまで短縮するインデックスを構築することで最適化できます。 PreparedStatement を使用して SQL インジェクションを防止し、クエリのパフォーマンスを向上させます。クエリ結果を制限し、サーバーによって処理されるデータ量を削減します。適切な結合タイプの使用、インデックスの作成、サブクエリの使用の検討など、結合クエリを最適化します。クエリを分析してボトルネックを特定し、キャッシュを使用してデータベースの負荷を軽減し、オーバーヘッドを最小限に抑えます。

PHP で MySQL データベースをバックアップおよび復元するには、次の手順を実行します。 データベースをバックアップします。 mysqldump コマンドを使用して、データベースを SQL ファイルにダンプします。データベースの復元: mysql コマンドを使用して、SQL ファイルからデータベースを復元します。

MySQLテーブルにデータを挿入するにはどうすればよいですか?データベースに接続する: mysqli を使用してデータベースへの接続を確立します。 SQL クエリを準備します。挿入する列と値を指定する INSERT ステートメントを作成します。クエリの実行: query() メソッドを使用して挿入クエリを実行します。成功すると、確認メッセージが出力されます。

MySQL 8.4 (2024 年時点の最新の LTS リリース) で導入された主な変更の 1 つは、「MySQL Native Password」プラグインがデフォルトで有効ではなくなったことです。さらに、MySQL 9.0 ではこのプラグインが完全に削除されています。 この変更は PHP および他のアプリに影響します

PHP で MySQL ストアド プロシージャを使用するには: PDO または MySQLi 拡張機能を使用して、MySQL データベースに接続します。ストアド プロシージャを呼び出すステートメントを準備します。ストアド プロシージャを実行します。結果セットを処理します (ストアド プロシージャが結果を返す場合)。データベース接続を閉じます。

PHP を使用して MySQL テーブルを作成するには、次の手順が必要です。 データベースに接続します。データベースが存在しない場合は作成します。データベースを選択します。テーブルを作成します。クエリを実行します。接続を閉じます。

Oracle データベースと MySQL はどちらもリレーショナル モデルに基づいたデータベースですが、Oracle は互換性、スケーラビリティ、データ型、セキュリティの点で優れており、MySQL は速度と柔軟性に重点を置いており、小規模から中規模のデータ セットに適しています。 ① Oracle は幅広いデータ型を提供し、② 高度なセキュリティ機能を提供し、③ エンタープライズレベルのアプリケーションに適しています。① MySQL は NoSQL データ型をサポートし、② セキュリティ対策が少なく、③ 小規模から中規模のアプリケーションに適しています。

Golang フレームワークのソース コードを理解することで、開発者は言語の本質を習得し、フレームワークの機能を拡張できます。まず、ソース コードを入手して、そのディレクトリ構造を理解します。次に、コードを読み、実行フローをトレースし、依存関係を理解します。実際の例では、この知識を適用する方法、つまりカスタム ミドルウェアの作成とルーティング システムの拡張方法を示します。ベスト プラクティスには、段階的に学習すること、無意識のコピー&ペーストを避けること、ツールを利用すること、オンライン リソースを参照することが含まれます。
