ホームページ  >  記事  >  データベース  >  MySQLマスタースレーブレプリケーションの負荷分散効果:実測結果と性能比較

MySQLマスタースレーブレプリケーションの負荷分散効果:実測結果と性能比較

WBOY
WBOYオリジナル
2023-09-08 17:24:281643ブラウズ

MySQLマスタースレーブレプリケーションの負荷分散効果:実測結果と性能比較

MySQL マスター/スレーブ レプリケーションは、データベース システムの可用性とパフォーマンスを向上させる、一般的に使用されるデータ バックアップおよび負荷分散ソリューションです。実際のアプリケーションでは、マスター/スレーブ レプリケーションのパフォーマンスを評価および比較することが非常に重要です。この記事では、MySQL マスター/スレーブ レプリケーションの負荷分散効果を実際の測定結果とパフォーマンス比較を通じて説明します。

1. MySQL マスター/スレーブ レプリケーションの原理
MySQL マスター/スレーブ レプリケーションは、1 つの MySQL サーバー (マスター サーバーと呼ばれます) から他の MySQL サーバー (スレーブ サーバーと呼ばれます) にデータをコピーすることによって実現されます。マスター サーバーはバイナリ ログに更新操作を記録し、スレーブ サーバーはバイナリ ログからこれらの更新操作を読み取って実行します。このようにして、マスター/スレーブ レプリケーションは自動データ同期を実現し、障害回復機能と負荷分散機能を提供します。

2. 実験環境と方法
この実験では 1 台のマスター サーバーと 3 台のスレーブ サーバーを使用しました。マスターサーバーとスレーブサーバーの構成は次のとおりです。

マスターサーバー:

  • CPU: Intel Core i5-8250U
  • メモリ: 8GB
  • ハードディスク : 256GB SSD
  • オペレーティング システム: Ubuntu 18.04 LTS
  • MySQL バージョン: 8.0.20

スレーブ サーバー:

  • CPU: Intel Core i3-7100U
  • メモリ: 4GB
  • ハードディスク: 128GB SSD
  • オペレーティング システム: Ubuntu 18.04 LTS
  • MySQL バージョン: 8.0.20

実験方法は次のとおりです:

  1. マスター サーバー上にデータベースを作成し、そこに 100 万個のテスト データを挿入します。
  2. マスター サーバーとスレーブ サーバー間の関係を構成するレプリケーション関係により、スレーブ サーバーがマスター サーバーに接続して更新を受信できるようになります。
  3. スレーブ サーバー上のデータベースにクエリを実行し、クエリ時間を記録します。
  4. マスター サーバーでレプリケーションを停止し、スレーブ サーバーに再度クエリを実行して、クエリ時間を記録します。
  5. ##実際の測定結果を分析し、パフォーマンスを比較します。
  6. 3. 実際の測定結果と性能比較
まず、スレーブサーバーに対してクエリを実行し、クエリ時間を記録します。次のクエリ コード例があるとします:

import time
import mysql.connector

# 连接数据库
cnx = mysql.connector.connect(user='user', password='password',
                              host='192.168.0.1', database='test')
cursor = cnx.cursor()

# 查询数据
starttime = time.time()
query = "SELECT * FROM table"
cursor.execute(query)
endtime = time.time()

# 输出查询结果和查询耗时
for row in cursor:
    print(row)
print("Query Time:", endtime - starttime)

# 关闭连接
cursor.close()
cnx.close()

上記のクエリ コードを 3 台のスレーブ サーバーで実行し、クエリ時間を記録します。結果は次の表に示すとおりです。

サーバーからの

クエリ時間 (秒)13.21923.34233.187
次に、マスター サーバー上のレプリケーションを停止し、スレーブ サーバーに再度クエリを実行し、クエリ時間を記録します。結果を次の表に示します。

サーバーからの送信

クエリ時間 (秒)11.26221.297# 比較すると、マスター/スレーブ レプリケーションの場合、クエリに時間がかかり、平均で約 3 秒かかることがわかります。レプリケーションを停止すると、クエリ時間が大幅に短縮され、平均して約 1 秒になります。これは、マスター/スレーブ レプリケーションがクエリのパフォーマンスに一定の影響を与えることを示しています。 IV. 結論と要約上記の測定結果とパフォーマンスの比較を通じて、次の結論を導き出すことができます:
##3 1.278

MySQL マスター/スレーブ レプリケーションはクエリに一定の影響を与えます。マスター/スレーブ レプリケーション これにより、クエリ時間が増加します。

レプリケーションを停止すると、クエリのパフォーマンスが大幅に向上し、クエリ時間が短縮されます。

    したがって、MySQL マスター/スレーブ レプリケーション ソリューションを設計および適用する場合は、データ バックアップとロード バランシングの要件、およびクエリ パフォーマンスの影響を包括的に考慮する必要があります。高い同時実行性または高いクエリ パフォーマンス要件があるシナリオでは、レプリケーションを停止するか、他の負荷分散ソリューションを使用してシステムのスループットと応答速度を向上させることにより、クエリ パフォーマンスを最適化することを検討できます。

以上がMySQLマスタースレーブレプリケーションの負荷分散効果:実測結果と性能比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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