-
- /**
- * mysql の読み取りと書き込みの分離
- * 編集: bbs.it-home.org
- */
- class db
- {
- public function __construct($sql)
- {
- $chesr = strto lower(trim($sql));
- // SQL を判定ステートメントに select キーワードがある場合は読み取りデータベースに接続し、そうでない場合は書き込みデータベースに接続します
- if(substr($chesr,0,6)=='select')
- {
- echo '私は使用していますselect db..< ';
- $link = mysql_connect("127.0.0.1:3306", "root", "") または die("接続できませんでした: " . mysql_error());テスト");
- $ result = mysql_query($sql);
- while ($row = mysql_fetch_array($result, MYSQL_NUM))
- {
- printf("%s %s", $row[0],$row[1] ]);
- }
- echo mysql_get_host_info($link).mysql_get_server_info($link).mysql_get_proto_info($link).mysql_get_client_info().'
' }
- else
- {
- echo '挿入データベースを使用しています..
';
- $link = mysql_connect("127.0.0.2:3306","root","") または die("接続できませんでした: " .mysql_select_db("test") );
- $result = mysql_query($sql);
- echo @mysql_affected_rows($result);
- echo mysql_get_host_info($link).mysql_get_server_info($link).mysql_get_client_info().'
'; }
- }
- }
-
- $d = new db(" update `users` set `select`='fasdf' where `id` =1");
- $d2 = new db(" SELECT * from ` users`");
-
-
- コードをコピー
-
-
データベースの読み書き共有の説明を添付します。
データベースの読み取りと書き込みを分離することで、データベースへの負荷を効果的に軽減できます。
読み取りと書き込みの分離を実現するための 1 つのマスター データベースと複数のスレーブ データベースのアーキテクチャは、一般的に使用されるソリューションです。
マスター データベースは書き込み操作を提供し、スレーブ データベースは読み取り操作を提供します。
実際、データベースへの負荷を分散するには、必ずしも読み取りと書き込みを分離する必要はありませんが、読み取りと書き込みを分離すること自体に多くの利点があります。
例えば:
1. データベースの負荷分散の実装に役立ちます。
2. マスタースレーブデータベースのホットバックアップを実現します。分離されていない場合は、双方向のホット バックアップ戦略を検討する必要があります。
こちらのほうが構成が複雑ですし、トラブルが起きたときも面倒です。
3. 特にデータベース クラスター環境において、データベースの高可用性を維持するのに役立ちます。
4. 最後に、読み取りと書き込みが分離されていることを理解すると、mysql のクエリ速度と安定性にさらに自信が持てるようになります。
|