ホームページ データベース mysql チュートリアル MySQL データベース最適化の概要 (写真とテキスト)

MySQL データベース最適化の概要 (写真とテキスト)

Mar 25, 2019 am 11:26 AM
java mysql ubuntu

この記事の内容は、MySQL データベースの最適化に関する紹介 (写真とテキスト) です。一定の参考価値があります。必要な友人が参照できます。お役に立てれば幸いです。

データベースの最適化は、システムのボトルネックを特定し、MySQL データベース全体のパフォーマンスを向上させることを目的とする一方で、ユーザーの応答速度を向上させるためには、合理的な構造設計とパラメーターの調整が必要です。同時に、システムがより大きな負荷を提供できるように、システム リソースをできる限り節約します (関連する推奨事項: MySQL チュートリアル)

1. 最適化の概要

MySQL データベース最適化の概要 (写真とテキスト)

2. 最適化

著者は、最適化をソフト最適化とハード最適化の 2 つのカテゴリに分類しており、ソフト最適化には一般にデータベースの操作が含まれ、ハード最適化にはサーバー ハードウェアの操作が含まれます。

2.1 ソフト最適化

2.1.1 クエリ ステートメントの最適化

1. まず、EXPLAIN または DESCRIBE (略称: DESC) コマンドを使用して分析できます。クエリ文の実行情報。
2. 例:

DESC SELECT * FROM `user`
ログイン後にコピー

Display:

MySQL データベース最適化の概要 (写真とテキスト)

インデックスや

2.1.2 サブクエリの最適化

MySQL では、サブクエリの代わりに JOIN を使用してみてください。サブクエリにはネストされたクエリが必要であるため、一時テーブルが作成されます。クエリをネストするときに作成されます。一時テーブルの作成と削除にはシステムのオーバーヘッドが大きく、結合クエリでは一時テーブルが作成されないため、ネストされたサブクエリよりも効率が高くなります。

2.1.3 インデックスの使用

インデックスによりデータベース クエリの速度が向上します。最も重要な方法の 1 つです。インデックスについては、著者の記事「MySQL データベース インデックス」を参照してください。導入についてはさらに詳しく説明されています。インデックスを使用する際の 3 つの主要な注意事項がここに記録されています:

    #LIKE キーワード一致 「%」で始まる文字列はインデックスを使用しません。
  1. クエリでインデックスを使用する前に、OR キーワードの両方のフィールドにインデックスを付ける必要があります。
  2. 複数列のインデックスを使用します。 左端の一致を満たす必要があります。
2.1.4 テーブルの分解

多くのフィールドを含むテーブルの場合、一部のフィールドの使用頻度が低い場合は、次の位置で分離する必要があります。

2.1.5 中間テーブル

多数の接続クエリを必要とするテーブルの場合は、中間テーブルを作成することで、接続にかかる時間を短縮できます。

2.1.6 冗長フィールドの追加

中間テーブルの作成と同様に、冗長性を追加することにより、接続クエリが削減されます。

2.1.7 テーブルの分析、テーブルのチェック、テーブルの最適化

テーブルの分析では、主にテーブル内のキーワードの分布を分析します。テーブルのチェックでは、主にテーブルにエラーがあるかどうかを確認します。テーブルの最適化では、主にテーブル領域の無駄を排除します。

テーブルの分析: ANALYZE TABLE user などの ANALYZE キーワードを使用します;

MySQL データベース最適化の概要 (写真とテキスト)Op: 実行された操作を示します

Msg_type: 情報の種類 (ステータス、情報など) 、メモ、警告、エラー
Msg_text: 情報を表示します。

Check table: CHECK TABLE user [option]

オプションは MyISAM でのみ有効です、などの CHECK キーワードを使用します。合計 5 つのパラメータ値:

QUICK: 行をスキャンせず、間違った接続をチェックしません。

FAST: 正しく閉じられていないテーブルのみをチェックします。

CHANGED: 前回のチェック以降に変更されたテーブルと、正しく閉じられていないテーブルのみをチェックします。

MEDIUM: 行をスキャンして、削除された接続が有効であることを確認し、キーワードのチェックサムも計算します。

EXTENDED: 最も包括的なチェック、各行の包括的なキーワード Search.

テーブルの最適化: OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE user;# などの OPTIMIZE キーワードを使用します。

##LOCAL|NO_WRITE_TO_BINLOG はすべて、ログに書き込まないことを意味します。テーブルの最適化は VARCHAR に対してのみ行われ、BLOB および TEXT が有効です。ファイルの断片化は OPTIMIZE TABLE ステートメントによって排除でき、読み取り専用ロックが追加されます

2.2 ハード最適化

2.2.1 ハードウェア3点セット

1. マルチコアかつ高周波数のCPUを構成します。

2. 大きなメモリを構成し、メモリを増やしてキャッシュ容量を増やすと、ディスク I/O 時間が短縮され、応答速度が向上します。

3. 高パフォーマンスのメモリを構成します。高速ディスクまたは合理的に分散されたディスク: 高速ディスクは I/O を向上させ、分散ディスクは並列操作の能力を向上させることができます。

2.2.2 データベース パラメータの最適化

データベース パラメータを最適化すると、並列処理の能力が向上します。リソース使用率が向上し、MySQL サーバーのパフォーマンスが向上します。MySQL サービスの構成パラメータはすべて my.cnf または my.ini にあります。パフォーマンスに大きな影響を与えるパラメータは以下にリストされています。

key_buffer_size: インデックス バッファsize

table_cache: 同時に開くことができるテーブルの数

query_cache_size と query_cache_type: 前者はクエリ バッファ サイズ、後者は前のパラメータのスイッチです。0 はバッファを使用しないことを意味し、1 はバッファを使用することを意味しますが、クエリ内で SQL_NO_CACHE を使用して意味を表すことができます。バッファを使用しないことを意味します。2 は、クエリ内で明確に指定されている場合、つまり SQL_CACHE にのみバッファを使用する必要があることを意味します。

sort_buffer_size: 並べ替えバッファ

Portal:続きパラメータ

2.2.3 サブデータベースとサブテーブル

##データベースの負荷が高すぎるため、最初の問題は、ピーク時にシステムのパフォーマンスが低下する可能性があることです。過度のデータベース負荷はパフォーマンスに影響を与えます。もう 1 つは、過度の圧力によりデータベースがクラッシュした場合はどうすればよいでしょうか?したがって、この時点では、システムをデータベースとテーブルに分割し、読み取りと書き込みを分離する、つまり、1 つのデータベースを複数のデータベースに分割し、複数のデータベース サービスにデプロイする必要があります。このとき、データベースはメイン データベースとして機能します。書き込みリクエストを処理します。次に、各マスター ライブラリが少なくとも 1 つのスレーブ ライブラリをマウントし、スレーブ ライブラリが読み取り要求を処理します。

MySQL データベース最適化の概要 (写真とテキスト)

2.2.4 キャッシュ クラスター

ユーザーの数がますます増えている場合は、この時点でマシンを追加し続けることができます。たとえば、システム レベル。マシンを追加すると、より多くの同時リクエストを処理できます。その後、データベース レベルでの書き込み同時実行性がますます高くなると、データベース サーバーが拡張され、サブデータベースとテーブルのシャーディングによってマシンが拡張され、データベース レベルでの読み取り同時実行性がますます高くなると、容量が増加します。拡張され、さらにスレーブ データベースが追加されます。しかし、ここには大きな問題があります。データベース自体は、実際には大量の同時リクエストを処理するために使用されていないため、一般的に言えば、1 台のデータベース マシンが実行する同時実行数は 1 秒あたり数千のオーダーであり、データベースで使用されるマシンは比較的高構成で比較的高価なマシンでは、コストが非常に高くなります。単純にマシンを追加し続けるのは実際には間違っています。したがって、キャッシュは通常、高同時実行性のアーキテクチャに組み込まれており、キャッシュ システムは高い同時実行性を実現するように設計されています。したがって、1 台のマシンが実行する同時実行の量は 1 秒あたり数万、場合によっては数十万に達し、高同時実行の実行能力はデータベース システムの実行能力よりも 1 ~ 2 桁高くなります。したがって、書き込みが少なく読み取りが多いリクエストに対して、システムのビジネス特性に応じてキャッシュ クラスターを完全に導入できます。具体的には、データベースに書き込むときに、データのコピーが同時にキャッシュ クラスターに書き込まれ、キャッシュ クラスターが読み取りリクエストのほとんどを処理するために使用されます。この場合、キャッシュ クラスタリングを通じて、より少ないマシン リソースを使用して、より高い同時実行性をホストできます。

MySQL データベース最適化の概要 (写真とテキスト)#結論

完全で複雑な高同時実行システム アーキテクチャには、さまざまな複雑な自己開発インフラストラクチャ システムが必ず含まれます。あらゆる種類の絶妙なアーキテクチャ デザイン。したがって、小さな記事が他の人にインスピレーションを与える効果をもたらすことはせいぜいですが、データベース最適化のアイデアについてはそれだけです。


以上がMySQL データベース最適化の概要 (写真とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

MySQL対その他のプログラミング言語:比較 MySQL対その他のプログラミング言語:比較 Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

関数と正規表現を含むJavaScriptオブジェクトをデータベースに安全に保存して復元するにはどうすればよいですか? 関数と正規表現を含むJavaScriptオブジェクトをデータベースに安全に保存して復元するにはどうすればよいですか? Apr 19, 2025 pm 11:09 PM

フロントエンド開発においてJSONで機能と正規表現を安全に処理することができますが、JavaScriptが必要です...

MySQLの外国キーの目的を説明してください。 MySQLの外国キーの目的を説明してください。 Apr 25, 2025 am 12:17 AM

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

SQL対MySQL:2つの関係を明確にします SQL対MySQL:2つの関係を明確にします Apr 24, 2025 am 12:02 AM

SQLはリレーショナルデータベースを管理するための標準言語であり、MySQLはSQLを使用するデータベース管理システムです。 SQLは、CRUD操作を含むデータベースと対話する方法を定義しますが、MySQLはSQL標準を実装し、ストアドプロシージャやトリガーなどの追加機能を提供します。

mysqlとmariadbを比較対照します。 mysqlとmariadbを比較対照します。 Apr 26, 2025 am 12:08 AM

MySQLとMariaDBの主な違いは、パフォーマンス、機能、ライセンスです。1。MySQLはOracleによって開発され、Mariadbはフォークです。 2. Mariadbは、高負荷環境でパフォーマンスを向上させる可能性があります。 3.MariaDBは、より多くのストレージエンジンと機能を提供します。 4.MySQLは二重ライセンスを採用し、MariaDBは完全にオープンソースです。既存のインフラストラクチャ、パフォーマンス要件、機能要件、およびライセンスコストを選択する際に考慮する必要があります。

Javaの文脈では、「プラットフォームの独立」とはどういう意味ですか? Javaの文脈では、「プラットフォームの独立」とはどういう意味ですか? Apr 23, 2025 am 12:05 AM

Javaのプラットフォームの独立性とは、書かれたコードがJVMが変更なしでインストールされた任意のプラットフォームで実行できることを意味します。 1)JavaソースコードはBytecodeにコンパイルされ、2)BytecodeはJVMによって解釈および実行されます、3)JVMは、プログラムが異なるオペレーティングシステムで実行されることを確認するために、メモリ管理とガベージコレクション機能を提供します。

See all articles