MySQL のデータベース パフォーマンスに影響を与える要因の説明

MySQL のデータベース パフォーマンスに影響を与える要因の説明

データベースのパフォーマンスに関する話

面接では、「データベースにどのくらい精通していますか?」など、データベースに関する話題がある程度議論されます。データベースのパフォーマンスが最もテストされるのはいつですか?一般的には、大量のデータを読み書きするときです。電子商取引の大規模なプロモーション活動は、各データベースのパフォーマンスをテストする時期です。

Web サーバーの場合、データ量が多い場合は、水平方向に拡張するだけで単一サーバーの負荷を軽減できます。しかし、データベース サーバーの場合はそれほど簡単ではありません。水平方向に簡単に拡張できず、データベースの整合性と一貫性の原則にも違反します。では、データベース アーキテクチャはどのように構築すればよいのでしょうか。

大規模なプロモーション活動では、どんなに商品が優れていても、企画が成功していても、安定したデータベースやサーバー環境がなければ、すべて無駄になってしまいます。

データベースアーキテクチャの例

図に示すように、マスターサーバーとスレーブサーバーの間にはマスタースレーブレプリケーションコンポーネントがありません。つまり、マスターサーバーに障害が発生した場合、マスターサーバーを切り替えることは困難です。これにより、DBAはスレーブサーバーから最新のデータを持つスレーブサーバーを選択し、それをマスターサーバーに昇格させ、他のスレーブサーバーを同期する必要があります。このプロセスの時間コストも非常に大きくなります。

さらに、ビジネスボリュームが大きい場合、スレーブ サーバーの数が多すぎると、メイン サーバーのネットワーク カードに一定の負担がかかります。

クラスター監視情報を使用すると、データベースのパフォーマンスに影響を与えるものを把握できます。

答えは「はい」です。一般的に言えば、主な理由は QPS と TPS、同時実行性 (同時接続数との混同を避けるため、同時に処理されるリクエストの数)、ディスク IO、読み取り操作が多すぎることです。

ここで提案があります: メイン データベースのデータをバックアップしないこと、少なくとも大規模なアクティビティの前にそのような計画をキャンセルすることが最善です。

データベースに影響を与える要因

  • SQLクエリ速度
  • サーバーハードウェア
  • ネットワークカードのトラフィック
  • ディスクIO

超高QPSとTPS

リスク: 非効率的な SQL (QPS: 1 秒あたりに処理されるクエリ数)

高いCPU使用率と高い同時実行性

リスク: 同時接続数が多い (データベース接続数がいっぱい (max_connections のデフォルトは 100))

リスク: CPU 使用率が非常に高くなる (CPU 枯渇によるダウンタイム)

ディスクIO

リスク: ディスク IO パフォーマンスが突然低下する (より高速なディスク デバイスを使用する)

リスク: ディスクパフォ​​ーマンスを大量に消費するその他のスケジュールされたタスク (スケジュールされたタスクを調整する)

ネットワークカードのトラフィック

リスク: ネットワーク カードの IO がいっぱいです (1000Mb/8=100MB)

データベースに接続できない状況を回避する方法:

1. スレーブサーバーの数を減らす
2. 階層キャッシュを実行する
3. クエリに「select *」を使用しない
4. ビジネスネットワークとサーバーネットワークを分離する

以下もご興味があるかもしれません:
  • MySQL の集計関数 count の使用法とパフォーマンスの最適化テクニック
  • MySQLクエリのパフォーマンスに影響を与える大きなオフセットの理由と最適化の詳細な説明
  • MySQL挿入パフォーマンスを最適化する方法の例
  • MySQL パフォーマンスの包括的な最適化方法リファレンス、CPU、ファイルシステムの選択から mysql.cnf パラメータの最適化まで
  • MySQL と MariaDB の違いについての簡単な説明 (MariaDB と MySQL のパフォーマンス比較)
  • 数千万のデータを扱うMySQLのページングクエリのパフォーマンスを最適化する
  • MySQL ページングパフォーマンスの調査
  • MySQL バッチ SQL 挿入パフォーマンス最適化の詳細な説明
  • MySQL の重要なパフォーマンス インデックスの計算と最適化方法の概要

<<:  Linux の総合システム監視ツール dstat の詳細な例

>>:  Vue が DingTalk の出勤カレンダーを実装

推薦する

CSS3を使って歌詞進行テキストカラー塗りつぶし変更の動的効果を実装するアイデアの詳細な説明

音楽を再生すると、曲が進むにつれて歌詞が徐々に色づきます。色は単語ごとに変わるのではなく、左から右へ...

子要素の margin-top によって親要素が移動する問題の解決方法

問題の説明今日、ページ スタイルを変更していたときに、子要素にmargin-top設定したのに、子要...

easycomモードでUNI-APPコンポーネントを呼び出す際に習得する必要がある実践的なスキル

この記事は議論の出発点となることを目的としています。詳細なドキュメントと easycom の仕様につ...

MySQL 5.7.17 のインストールと使用方法のグラフィックチュートリアル

MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...

Vue はファジークエリを実装します - MySQL データベースデータ

目次1. 需要2. 実装3. 結果1. 需要入力ボックスにデータを入力し、入力結果に基づいてデータベ...

MySQL 8.0 における MySQL のインストールと新しいパスワード認証方法の詳細な説明

1. はじめにOracle が MySQL 8.0GA をリリースしました。海外での GA はリリー...

あなたをエキスパートに見せるための 13 個の JavaScript ワンライナー

目次1. ランダムなブール値( true / false )を取得する2. 指定された日付が営業日で...

Linux でリモート MySQL データベースを手動で展開する方法の詳細な説明

1. mysql をインストールします。次のコマンドを実行して、YUM ソースを更新します。 rpm...

IDEA の Maven プロジェクトで MySQL 8.0 に接続して使用する方法に関するチュートリアル

まず、私の基本的な開発環境を見てみましょう。オペレーティングシステム: MacOS 10.13.5 ...

MySQLデータ復旧のさまざまな方法の概要

目次1. はじめに2. 直接回復2.1 mysqldumpバックアップの完全リカバリ2.2 xtra...

インデックスは MySQL クエリ条件で使用されますか?

雇用主から MySQL クエリ条件でインデックスが使用されるかどうかを尋ねられた場合、どのように答え...

Docker で PostgreSQL を実行し、いくつかの接続ツールを推奨する

1 はじめに PostgreSQL は、非常に充実した機能を備えたフリーソフトウェアのオブジェクトリ...

3次元画像配置効果を実現する純粋なCSSのサンプルコード

1. 要素の幅/高さ/パディング/マージンのパーセンテージ基準要素の幅/高さ/パディング/マージンの...

Linux サーバー上で複数の SVN リポジトリを構成するプロセスの詳細な説明

1. 指定されたディレクトリにリポジトリを作成し、ディレクトリ全体を保存してください。この記事のサン...

JS 非同期コードユニットテストの魔法 Promise

目次序文プロミスチェーンMDN エラー連鎖デフォルト処理略語非同期待機序文この記事を書いた理由は、ユ...