ホームページ > バックエンド開発 > PHPチュートリアル > MySQL とトランザクション処理が MaxSQL_PHP に等しいチュートリアル

MySQL とトランザクション処理が MaxSQL_PHP に等しいチュートリアル

WBOY
リリース: 2016-07-13 17:25:20
オリジナル
1080 人が閲覧しました

昨年 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 が提供するトランザクションセーフなテーブルにより、データベース更新のプログラミング作業が容易になります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/532068.html技術記事昨年 8 月、OReilly が主催するオープンソース カンファレンスで、MySQL 開発者の Monty Widenius は、現在非常に人気のある MySQL データベースの拡張機能である MaxSQL と呼ばれる新しいプロジェクトを発表しました...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート