ホームページ バックエンド開発 PHPチュートリアル データベースの読み取りと書き込みの分離ソリューション: PHP プログラミングでのアプリケーション

データベースの読み取りと書き込みの分離ソリューション: PHP プログラミングでのアプリケーション

Jun 23, 2023 am 09:44 AM
応用 PHPプログラミング データベースの読み取りと書き込みの分離

データベースの読み書き分離ソリューション: PHP プログラミングでのアプリケーション

Web アプリケーション開発のプロセスでは、データベースはアプリケーションのさまざまなデータや情報を保存するために使用されるため、その安定性と信頼性は非常に重要です。大規模でトラフィックの多い Web アプリケーションの多くは、データベースのパフォーマンスと信頼性の課題に直面しています。この目的を達成するために、データベースの読み取りと書き込みの分離スキームが導入され、これらの課題に対処しました。この記事では、PHP プログラミングでデータベースの読み取りと書き込みの分離スキームを使用して、アプリケーションのパフォーマンスと信頼性を向上させる方法を説明します。

  1. データベース読み取り/書き込み分離スキームの基本原則

データベース読み取り/書き込み分離とは、データベース サーバーを 2 つの部分に分割することを指します。1 つの部分は読み取りリクエストの処理専用です。 、もう 1 つの部分は、書き込みリクエストを具体的に処理する部分です。これの目的は、データベースのアクセス効率とパフォーマンスを向上させ、データベース サーバーの負荷を軽減することです。

具体的な実装プロセスでは、読み取りと書き込みの分離は通常、マスター/スレーブ バックアップとデュアル マスター レプリケーションの 2 つの方法に分けられます。このうち、マスター/スレーブ バックアップ方式では、読み取りリクエストは複数のスレーブ サーバーに分散され、書き込みリクエストはマスター サーバー上でのみ処理されます。デュアルマスター レプリケーション ソリューションは、読み取りおよび書き込みリクエストを複数のサーバーに均等に分散し、サーバー間のデータ同期を確保する必要があります。

  1. PHP におけるデータベース読み取り/書き込み分離ソリューション

PHP プログラミングでは、通常、アプリケーション データの保存と管理に MySQL データベースが使用されます。以下では、PHP における 2 つの一般的なデータベース読み取り/書き込み分離スキームの適用を紹介します。

2.1 マスター/スレーブ レプリケーション スキーム

マスター/スレーブ レプリケーション スキームを使用する場合、プログラムは SQL ステートメントを作成します。読み取ったSQL文はスレーブサーバーに送信されます。読み取りサーバーと書き込みサーバー間でデータを同期するには、共通のエイリアス「log bin」を持つバイナリ ロギング テクノロジを使用する必要があります。具体的な手順は以下のとおりです。

(1) メインサーバーのバイナリログ機能を有効にする

MySQL 設定ファイル my.cnf に以下の設定情報を追加します。

log-bin= mysql-bin #バイナリログ機能を有効にする
binlog-ignore-db=mysql #特定のデータベースを無視する

##(2) スレーブサーバでバイナリログ機能を有効にする

MySQL 設定ファイル内で次の設定情報を my.cnf に追加します。

log-bin=mysql-bin # バイナリ ログ関数を有効にします

binlog-do-db=dbname # データベースを指定します同期する必要があります

( 3) マスターとスレーブの同期を設定します

スレーブ サーバーで次の SQL ステートメントを実行します:

CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='replication_user_name', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE= 'recorded_log_file_name', MASTER_LOG_POS=recorded_log_position;

(4) コードの実装

PHP プログラムでは、次のようなライブラリを使用できます。 PDO または MySQLi を使用してデータベース サーバーに接続します。コード例は次のとおりです:

//メインの書き込みサーバーに接続します

$dbw = new PDO('mysql:host=master_host_name;dbname=dbname ;charset=utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT = > 1));
//スレーブ読み取りサーバーに接続します
$dbr = new PDO(' mysql:host=slave_host_name;dbname=dbname;charset=utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => 1));
//読み取り操作を実行します
$stmt = $dbr->query('SELECT * FROM table_name');
//書き込み操作を実行します
$sql = 'INSERT INTO table_name (col1,col2) VALUES (:col1, :col2) ';
$stmt = $dbw->prepare($sql);
$stmt->bindValue(':col1', $value1);
$stmt->bindValue(': Col2', $value2);
$stmt->execute();

2.2 ダブル プライマリ レプリケーション スキーム

デュアル プライマリ レプリケーション スキームを使用する場合、プログラムは均等に分散します。 2 つのプライマリ サーバーに対する SQL ステートメントの読み取りと書き込み。スレーブ サーバーがないため、2 つのマスター サーバー間のデータ同期を確保する必要があります。具体的な手順は次のとおりです。

(1) デュアルマスター同期の設定

両方のマスターサーバーで次の SQL ステートメントを実行します。

CHANGE MASTER TO MASTER_HOST='another_master_host_name ', MASTER_USER='replication_user_name', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE='recorded_log_file_name', MASTER_LOG_POS=recorded_log_position;

(2) コード実装

PHP プログラムでは PDO も使用できますまたは MySQLi ライブラリが 2 つのメイン サーバーに接続するまで待ちます。コード例は次のとおりです:

//メイン サーバー 1

$db1 = new PDO('mysql:host=host_name_1;dbname= dbname;charset=utf-8 ', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => 1));
//メインサーバーに接続します 2
$db2 = new PDO( 'mysql:host=host_name_2;dbname= dbname;charset=utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => 1));
//読み取り操作を実行します
$stmt = $db1->query ('SELECT * FROM table_name');
//書き込み操作を実行します
$sql = 'INSERT INTO table_name (col1,col2) VALUES (:col1, :col2)' ;
$stmt = $db2 ->prepare($sql);
$stmt->bindValue(':col1', $value1);
$stmt->bindValue(':col2) ', $value2);
$stmt->execute();

  1. 概要

データベースの読み取り/書き込み分離スキームを適用することで、Web アプリケーションのパフォーマンスと信頼性を向上させることができます。 PHP プログラミングでは、マスター スレーブ レプリケーションとデュアル マスター レプリケーションを使用してデータベースの読み取りと書き込みを分離し、実際の状況に応じて適切なソリューションを選択できます。どのソリューションを採用する場合でも、データベースの読み取り/書き込み分離ソリューションを適切に適用するには、データベース サーバー間の同期、コード内で接続されているサーバー アドレスとポートなどの詳細に注意を払う必要があります。

以上がデータベースの読み取りと書き込みの分離ソリューション: PHP プログラミングでのアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP は行を CSV にフォーマットし、ファイル ポインターを書き込みます PHP は行を CSV にフォーマットし、ファイル ポインターを書き込みます Mar 22, 2024 am 09:00 AM

この記事では、PHP が行を CSV にフォーマットし、ファイル ポインタを書き込む方法について詳しく説明します。非常に実践的だと思いますので、参考として共有します。この記事を読んで何かを得ることができれば幸いです。行を CSV にフォーマットし、ファイル ポインターに書き込む ステップ 1: ファイル ポインターを開く $file=fopen("path/to/file.csv","w"); ステップ 2: fputcsv( ) 関数を使用して行を CSV 文字列に変換するCSV文字列に変換します。この関数は次のパラメータを受け入れます。 $file: ファイル ポインタ $fields: 配列としての CSV フィールド $delimiter: フィールド区切り文字 (オプション) $enclosure: フィールド引用符 (

PHP は現在の umask を変更します PHP は現在の umask を変更します Mar 22, 2024 am 08:41 AM

この記事では、PHP での現在の umask の変更について詳しく説明します。編集者が非常に実用的であると考えたので、参考として共有します。この記事を読んで何かを得ることができれば幸いです。現在の umask を変更する PHP の概要 umask は、新しく作成されたファイルとディレクトリのデフォルトのファイル権限を設定するために使用される PHP 関数です。引数を 1 つ受け取ります。これは、ブロックの許可を表す 8 進数です。たとえば、新しく作成されたファイルへの書き込み権限を禁止するには、002 を使用します。 umask を変更する方法 PHP で現在の umask を変更するには 2 つの方法があります。 umask() 関数を使用する: umask() 関数は現在の umask を直接変更します。その構文は次のとおりです。

iPhoneのホーム画面から削除を元に戻す方法 iPhoneのホーム画面から削除を元に戻す方法 Apr 17, 2024 pm 07:37 PM

ホーム画面から重要なものを削除してしまい、元に戻そうとしていますか?さまざまな方法でアプリのアイコンを画面に戻すことができます。 iPhoneでホーム画面から削除を元に戻す方法 前述したように、iPhoneでこの変更を復元する方法はいくつかあります。方法 1 – App ライブラリのアプリ アイコンを置き換える App ライブラリから直接ホーム画面にアプリ アイコンを配置できます。ステップ 1 – 横にスワイプして、アプリ ライブラリ内のすべてのアプリを見つけます。ステップ 2 – 前に削除したアプリのアイコンを見つけます。ステップ 3 – アプリのアイコンをメインライブラリからホーム画面上の正しい場所にドラッグするだけです。これが応用図です

PHP における矢印記号の役割と実際の応用 PHP における矢印記号の役割と実際の応用 Mar 22, 2024 am 11:30 AM

PHP における矢印記号の役割と実際の応用 PHP では、通常、オブジェクトのプロパティとメソッドにアクセスするために矢印記号 (->) が使用されます。オブジェクトとは、PHP におけるオブジェクト指向プログラミング (OOP) の基本概念の 1 つで、実際の開発においては、矢印記号がオブジェクトを操作する上で重要な役割を果たします。この記事では、矢印記号の役割と実際の応用例を紹介し、読者の理解を深めるために具体的なコード例を示します。 1. オブジェクトのプロパティにアクセスするための矢印シンボルの役割 矢印シンボルは、オブジェクトのプロパティにアクセスするために使用できます。ペアをインスタンス化するとき

PHPはファイルのMD5ハッシュを計算します PHPはファイルのMD5ハッシュを計算します Mar 21, 2024 pm 01:42 PM

この記事では、ファイルの MD5 ハッシュを計算する PHP について詳しく説明します。編集者が非常に実用的であると考えたので、参考として共有します。この記事を読んで何かを得ることができれば幸いです。 PHP はファイルの MD5 ハッシュを計算します MD5 (MessageDigest5) は、任意の長さのメッセージを固定長の 128 ビットのハッシュ値に変換する一方向暗号化アルゴリズムです。ファイルの整合性の確保、データの信頼性の検証、デジタル署名の作成に広く使用されています。 PHP でのファイルの MD5 ハッシュの計算 PHP には、ファイルの MD5 ハッシュを計算するための複数の方法が用意されています: md5_file() 関数を使用します。 md5_file() 関数は、ファイルの MD5 ハッシュ値を直接計算し、32 文字の値を返します。

PHPはキー値を反転した配列を返します PHPはキー値を反転した配列を返します Mar 21, 2024 pm 02:10 PM

この記事では、PHP がどのようにしてキー値を反転した後に配列を返すのかについて詳しく説明します。編集者が非常に実用的であると考えたので、参考として共有します。この記事を読んで何かを得ることができれば幸いです。 PHP キー値フリップ 配列キー値フリップは、配列内のキーと値を交換して、元のキーを値として、元の値をキーとして持つ新しい配列を生成する配列に対する操作です。実装方法 PHP では、次の方法で配列のキーと値の反転を実行できます。 array_flip() 関数: array_flip() 関数は、キーと値の反転操作に特に使用されます。引数として配列を受け取り、キーと値が交換された新しい配列を返します。 $original_array=[

PHPはファイルを指定された長さに切り詰めます PHPはファイルを指定された長さに切り詰めます Mar 21, 2024 am 11:42 AM

この記事では、PHP がどのようにファイルを指定の長さに切り詰めるのかについて詳しく説明します。編集者が非常に実用的であると考えたので、参考として共有します。この記事を読んで何かを得ることができれば幸いです。 PHP ファイルの切り詰めの概要 PHP の file_put_contents() 関数を使用すると、ファイルを指定した長さに切り詰めることができます。トランケーションとは、ファイルの末尾の一部を削除し、ファイルの長さを短くすることを意味します。構文 file_put_contents($filename,$data,SEEK_SET,$offset);$filename: 切り詰められるファイル パス。 $data: ファイルに書き込まれる空の文字列。 SEEK_SET: ファイルの先頭として指定されます

Go 言語の利点と応用シナリオを探る Go 言語の利点と応用シナリオを探る Mar 27, 2024 pm 03:48 PM

Go 言語は、Google によって開発され、2007 年に初めてリリースされたオープンソース プログラミング言語です。シンプルで習得しやすく、効率的で同時実行性の高い言語となるように設計されており、ますます多くの開発者に好まれています。この記事では、Go 言語の利点を探り、Go 言語に適したいくつかのアプリケーション シナリオを紹介し、具体的なコード例を示します。利点: 強力な同時実行性: Go 言語には、同時プログラミングを簡単に実装できる軽量スレッドのゴルーチンのサポートが組み込まれています。 Goroutin は go キーワードを使用して開始できます

See all articles