エンタープライズプロダクション MySQL 最適化入門

エンタープライズプロダクション MySQL 最適化入門

Oracle、DB2、SQL Server などの他の大規模データベースと比較すると、MySQL には独自の欠点がありますが、これによって人気が下がることはありません。一般の個人ユーザーや中小企業にとって、MySQL が提供する機能は十分すぎるほどであり、また、MySQL はオープンソースソフトウェアであるため、総所有コストを大幅に削減できます。

企業は本番環境で MySQL をどのように最適化するのでしょうか?

参考回答:

a: ハードウェアの最適化:

1. 64ビットCPU、少なくとも4つのCPUを使用し、L2キャッシュが大きいほど良い
2. メモリは大きい必要があります。32〜64G では 1〜2 個のインスタンスを実行でき、96〜128G では 3〜4 個のインスタンスを実行できます。
3. 機械式ディスクには回転速度が15000以上のSASディスクを使用し、可能であればSSDを使用する
4. RAIDカードにRAID10を使用する
5. 複数のネットワークカード、ギガビット以上
6. データベースには仮想化を使用しないでください。スレーブハードウェアはマスターよりも優れている必要があります。

b: オペレーティングシステムの最適化

1. オペレーティングシステムとしてx86_64を選択し、xfsファイルシステムを使用してみます。
2. ディスクストレージパラメータを最適化する
3. カーネルパラメータを最適化する
4. ネットワーク等の最適化

c: MySQL アーキテクチャの最適化

1. メモリサイズに基づいて複数のインスタンスを実行するようにサーバーを構成する
2. マスタースレーブレプリケーションでは混合モードを使用します。データセンター間で同期しないようにしてください。データセンター間で同期する必要がある場合は、リモート書き込みとローカル読み取りを使用するようにしてください。
3. マスターとスレーブのレプリケーション間のデータの違いを定期的にチェックして修復する
4. ビジネス分割、検索機能は実行に MySQL データベースを使用しません。一部の高同時実行性と一般的なセキュリティが求められるビジネスでは、memcache、redis などの NoSQL を使用します。
5. ユーザーログインや製品クエリのために、memcacheなどのデータベースフロントエンドにキャッシュを追加する
6. 動的データを静的化し、ファイル全体を静的化し、ページフラグメントを静的化する
7. データベース クラスターの読み取り/書き込み分離、1 つのマスターと複数のスレーブ、dbproxy によるクラスターの読み取り/書き込み分離
8. 1 つのテーブルが 800 万を超える場合は、手動で (ログイン、製品、注文) をテーブルとデータベースに分割するなど、データベースとテーブルが分割されます。
9. データベースからバックアップを選択し、別々のテーブルとデータベースでデータベースのバックアップを実行します。

d: MySQLデータベースレベルの最適化

1. my.cnfパラメータを最適化する
2. 文字セット、文字列の長さ、短いインデックスの作成、複合インデックスの複数使用など、データベース テーブルの設計を最適化します。
3. SQL ステートメントを最適化し、遅いステートメントの数を減らします。

e: データベース管理プロセスとシステムの最適化

1. ヒューマンプロセス: 開発 -> コア運用・保守/DBA
2. テストプロセス: イントラネットIDCテストはオンラインで実行されます
3. クライアント管理、PHPMYADMIN

f: MySQL データベースのセキュリティ最適化

1. データベースは外部ネットワークの設定が禁止されています
2. データベース ファイルのアクセス許可を最適化します。
3. 許可されたユーザーの権限を制限し、専用のデータベースと専用ユーザーを使用するようにしてください。
4. 開発者の運用データベースに対する操作権限を制限する
5. SQL文のインジェクションを防ぐ

要約する

エンタープライズプロダクションの MySQL 最適化の紹介に関するこの記事はこれで終わりです。皆様のお役に立てれば幸いです。興味のある方は、Oracle ページング クエリ パフォーマンス最適化コードの詳細な説明、ORACLE SQL ステートメント最適化テクノロジの重要なポイントの分析、C/C++ コンパイラ最適化の紹介などを参照してください。ご質問がある場合は、いつでもメッセージを残していただければ、編集者がすぐに返信いたします。

以下もご興味があるかもしれません:
  • MySQL 最適化ツールについての簡単な説明 - 遅いクエリ
  • MySQL でテーブルを最適化するときに発生する「テーブルはすでに最新です」という問題の解決方法
  • MySQL データベースのパフォーマンス最適化のための 21 のベスト プラクティス

<<:  ubuntu16.04でNFSサービスを構築する方法

>>:  Ubuntu16.04はphp5.6ウェブサーバー環境を構築します

推薦する

HTML テーブルタグチュートリアル (13): 内部境界スタイル属性ルール

RULES を使用すると、テーブルの内部境界のスタイルを制御できます。基本的な構文<TABLE...

MySQL 8.0 の binlog の詳細な説明

1 はじめにバイナリ ログは、データを持つ、またはデータを変更する可能性がある SQL ステートメン...

JSは円形のプログレスバーのドラッグとスライドを実装します

この記事の例では、円形のプログレスバーのドラッグアンドスライドを実現するための具体的なJSコードを紹...

MySQL 整合性制約の定義と例のチュートリアル

目次整合性制約整合性制約の定義整合性制約の分類主キー制約単一の主キーと複合主キーの違い主キーフィール...

Vue Router の 10 の高度なヒントのまとめ

序文Vue Router は、Vue.js の公式ルーティング マネージャーです。 Vue.js の...

Vueは、センシティブな単語フィルタリングコンポーネントを検出するためのさまざまなアイデアを実装しています。

目次前面に書かれた要件分析 v1アイデア1: インターセプションメソッドを使用して入力ボックスの入力...

js SMS認証コード入力ボックスを手動で実装する

序文この記事では、私が手動で実装したフロントエンドの一般的な SMS 認証コード入力コンポーネントと...

CSS を使用して等アスペクト比のアダプティブ コンテナを実装する方法

最近、モバイル ページを開発しているときに、ページの幅が 100% の場合、高さは幅の半分になり、携...

JavaScript配列の一般的なメソッドの詳細な説明

目次元の配列を変更しない方法1. 連結文法:パラメータ:戻り値: 2. 参加する文法:パラメータ:戻...

トップナビゲーションバーメニューを作成するためのHTML+CSS

ナビゲーションバーの作成:技術要件: CS HTMLタグ達成目的:ナビゲーションバーメニューの作成コ...

Linux ディスクのマウント、パーティション分割、容量拡張操作を実装する方法

基本概念操作の前に、まずいくつかの基本的な概念を理解する必要がありますディスクLinux システムで...

モバイル端末の適応に関する簡単な説明

序文フロントエンド コードの記述では、「互換性」という言葉から逃れることはできません。過去の PC ...

Linux で Tomcat を実行するいくつかの方法の説明

Linux での Tomcat の起動とシャットダウンLinux システムでは、コマンド操作を使用し...

行の高さと垂直方向の配置に関する包括的な理解

前の単語line-height、font-size、vertical-align は、インライン要素...

MySQL で大量のデータ (数千万) を素早く削除するためのいくつかの実用的なソリューションの詳細な説明

著者は最近、仕事でパフォーマンスのボトルネックの問題に遭遇しました。MySQL テーブルには毎日約 ...