ストレージ エンジンのスループットの向上: MySQL での MaxScale アプリケーションのケース

WBOY
リリース: 2023-07-27 22:05:02
オリジナル
1071 人が閲覧しました

ストレージ エンジンのスループットの向上: MySQL での MaxScale アプリケーションのケース

はじめに:
ビッグ データと高い同時実行性の現在の環境では、データベースのスループットを向上させる方法が問題になっています。多くの企業と開発者が直面する問題。一般的に使用されるオープンソースのリレーショナル データベースとして、MySQL のパフォーマンスの最適化は常に大きな注目を集めています。この記事では、MaxScale ツールを使用して MySQL データベースのスループットを向上させる方法と、具体的な適用事例を紹介します。

1. MaxScale の概要
MaxScale は、データベースのパフォーマンス、信頼性、スケーラビリティを向上させるために MariaDB Company によって立ち上げられたオープンソースのデータベース エージェント ツールです。これはデータベースとクライアントの間の中間層として機能し、データベース要求の分散とルーティングを担当します。 MaxScale には、アプリケーションを変更せずにデータベースのスループットを向上させる、ロード バランシング、フェイルオーバー、キャッシュ、クエリ ルーティング、クエリ フィルタリングなどの機能があります。

2. MySQL での MaxScale アプリケーションのケース
オンライン電子商取引プラットフォームがあり、多数のユーザーが毎日商品を閲覧、注文、支払いを行っていると仮定します。データベースに対する読み取りおよび書き込みの負荷が高いため、MaxScale ツールを通じてデータベースのスループットを向上させることを期待しています。

  1. MaxScale のインストール
    まず、MaxScale をインストールする必要があります。 MaxScale の最新バージョンは、公式 Web サイトからダウンロードしてインストールできます。インストール プロセス中に、MySQL データベースの接続情報の指定など、プロンプトに従って構成する必要があります。
  2. MaxScale の構成
    構成ファイルは MaxScale インストール ディレクトリにあり、デフォルトは /etc/maxscale.cnf です。ファイルを開いたら、データベースのリスニングポートの指定やユーザー認証情報の設定など、いくつかの設定を行う必要があります。以下は簡単な構成例です。
[maxscale]
threads=4
log_info=1

[monitor]
module=mysqlmon
servers=primary,secondary
user=maxscale_user
passwd=maxscale_password

[listener]
type=server
service=db_service
protocol=MySQLClient
port=3306

[db_service]
type=service
router=readconnroute
servers=primary,secondary
user=db_user
passwd=db_password

[primary]
type=server
address=127.0.0.1
port=3306
protocol=MySQLBackend

[secondary]
type=server
address=127.0.0.2
port=3306
protocol=MySQLBackend
ログイン後にコピー

構成ファイルでは、まずデータベースのステータスを監視するための monitor モジュールを定義します。次に、データベース接続リクエストをリッスンするための listener モジュールが定義されます。次に、db_service モジュールが定義されます。これは、データベース関連のパラメーターと接続プール情報を定義するために使用されます。最後に、マスター データベースとスレーブ データベースにそれぞれ対応する 2 つの server モジュールが定義されます。実際の状況に応じて、対応するパラメータを変更します。

  1. MaxScale の開始
    構成が完了したら、次のコマンドを実行して MaxScale を開始できます:
maxscale -f /etc/maxscale.cnf
ログイン後にコピー
  1. パフォーマンスのテスト
    上記を完了します。ステップ 最後に、同時リクエストによるデータベース スループットの向上に対する MaxScale の効果をテストできます。以下は簡単なテスト コードの例です。
import pymysql
import time
from concurrent.futures import ThreadPoolExecutor

def query_data():
    conn = pymysql.connect(host='127.0.0.1', user='maxscale_user', password='maxscale_password', database='test')
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM table')
    rows = cursor.fetchall()
    conn.close()

def concurrent_test():
    start = time.time()
    executor = ThreadPoolExecutor(max_workers=100)
    futures = []

    for _ in range(1000):
        future = executor.submit(query_data)
        futures.append(future)

    executor.shutdown()

    for future in futures:
        result = future.result()

    end = time.time()
    print('Total time:', end - start)

if __name__ == '__main__':
    concurrent_test()
ログイン後にコピー

上記のコードでは、Python の concurrent.futures モジュールを使用して同時リクエストを実装します。 max_workers パラメータとサイクル数を調整することで、さまざまな同時実行状況をシミュレートできます。

テストを通じて、MaxScale を使用した後、データベースのスループットが以前と比べて大幅に向上していることがわかりました。これは、MaxScale がリクエストをさまざまなデータベース ノードに自動的に分散して負荷分散を実現し、データベースの処理能力を向上させることができるためです。

結論:
MaxScale ツールを使用すると、アプリケーションを変更せずに MySQL データベースのスループットを向上させることができます。 MaxScaleは、ロードバランシング、フェイルオーバー、キャッシュ、クエリルーティング、クエリフィルタリングなどの機能を備えており、実際のアプリケーションシナリオに合わせて設定、調整が可能です。同時実行性の高い環境では、MaxScale を合理的に使用すると、データベースのパフォーマンスと信頼性を向上させることができます。

参考資料:

  1. MaxScale 公式 Web サイト: https://mariadb.com/products/skysql/maxscale
  2. MaxScale ドキュメント: https://mariadb. com/kb/en/mariadb-maxscale-21/
  3. MySQL 公式 Web サイト: https://www.mysql.com/

以上がストレージ エンジンのスループットの向上: MySQL での MaxScale アプリケーションのケースの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート