エンタープライズプロダクション 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ウェブサーバー環境を構築します

推薦する

Webpackを使用して複数ページのプログラムを構築するための実装手順

webpack を使用してシングルページのプログラムを構築することは非常に一般的ですが、実際の開発で...

純粋な CSS3 でペットの鶏のサンプルコードを実現

最近、CSS3に関する知識や記事をたくさん読んできましたが、CSS3はとても便利に使えると思います。...

Vue ユニットテストに関する予備調査

目次序文なぜユニットテストを導入するのですか?ユニットテストの概要テスト開発パターン1. テスト駆動...

JSはBaidu Newsナビゲーションバーの効果を実現

この記事では、Baidu News Navigation Barの効果を実現するための具体的なJSコ...

フォームを送信した後、別のファイルに移動する

<br />質問:特定のファイルにジャンプするには、HTML でどのように記述すればよい...

Vue実装のカウンターケース

この記事では、カウンター表示を実現するためのVueの具体的なコードを例として紹介します。具体的な内容...

ウェブデザインの仕事に応募する方法

<br />みなさんこんにちは!ここで皆さんとチャットできて光栄です! (*^__^*)...

mysql.data.dll ドライバーのさまざまなバージョンの簡単な分析

ここにmysqlドライバmysql.data.dllがあります知らせ:ここではX86バージョンが多く...

MySQLテーブルパーティショニングプログラムを変更する方法

MySQLテーブルパーティショニングプログラムを変更する方法1. サブテーブルの実装の原則は次のとお...

MySQL SQL文の特殊処理文のまとめ(必読)

1.テーブル全体を更新します。データ行の列の値が空の場合は、別の列フィールドの値と同じにします。 ...

Linux システムにおける時間設定の概要

1. 時間の種類は次のように分けられます。 1. ネットワーク時間(タイムゾーンの設定、ntpサーバ...

MySQL 8.0.22 圧縮パッケージの完全なインストールと構成のチュートリアル図 (テスト済みで効果的)

1. zipインストールパッケージをダウンロードするMySQL サーバー 8.0.22 の圧縮パッ...

Jenkins を通じて None のイメージを定期的にクリーンアップする方法

序文継続的なコード配信のプロセスで、Jenkins を利用して Docker イメージを作成すると、...

MySQLは現在の日付と時刻を取得する関数

現在の日付 + 時刻 (日付 + 時刻) を取得する関数: now() mysql> now(...

ウェブサイトのAboutページの紹介コンテンツの書き方

公式、電子商取引、ソーシャル ネットワーキング、個人のいずれの Web サイトでも、訪問者に貴重な時...