# 無料の学習に関する推奨事項:mysql ビデオ チュートリアル
記事ディレクトリ
1.1 ハードウェアの側面
通常、パーソナル コンピュータの動作が遅いのは、コンピュータのハードウェアの問題 (通常は CPU、メモリ、ディスク IO、など、この問題はサーバーでも発生します。1.2 サーバーシステム
一般にパソコンのオペレーティングシステムは Windows ですが、Windows システムのバージョンが異なればパフォーマンスが異なったり、特定のパラメータの設定により性能が異なったりすることがあります。性能の違い。これはサーバーシステムでも同様であり、パラメータ設定はサーバーのパフォーマンスにも影響します。1.3 データベース ストレージ エンジンの選択
MySQL にはプラグイン ストレージ エンジンがあり、さまざまなビジネス ニーズに応じてさまざまなストレージ エンジンを選択できます。ストレージ エンジンが異なれば、特性も異なります。
MyISAM: トランザクションとテーブル レベルのロックはサポートされません。
InnoDB: トランザクション レベルのストレージ エンジン。行レベルのロックとトランザクション ACID 機能を完全にサポートします。
1.5 データベース構造設計と SQL ステートメント (キーポイント)
データベース構造を設計するときは、データベース上でどのような SQL ステートメントを実行するかを考慮する必要があります。 、テーブル構造をクエリして更新するこの方法でのみ、要件を満たすテーブル構造を設計できます。遅いクエリの場合、これがパフォーマンス低下の主な原因であり、データベース テーブル構造の不合理な設計が原因です。このタイプの SQL は、プロジェクトがオンラインになるとデータベース テーブル構造を変更するのが難しいため、最適化が最も困難です。したがって、データベースのパフォーマンスの最適化に重点を置くのは次のとおりです。
データベース テーブル構造の設計
SQL ステートメントの準備と最適化
以下は各側面の詳細な説明です。
2.1 CPU リソースと利用可能なメモリ サイズ
2.1.1 CPU の選択方法
通常、CPU を選択するとき、CPU の周波数とコア数の両方ができるだけ高いことを望みますが、コストやさまざまな要因により、CPU のみを選択せざるを得なくなることがよくあります。それらの中の一つ。では、最適なソリューションをどのように選択すればよいのでしょうか?したがって、CPU を購入する際には、次のようないくつかの問題に注意する必要があります。2.1.2 メモリ
メモリのサイズは、データベースのパフォーマンスに直接影響します。現在、メモリはディスクよりもはるかに効率的です。したがって、データをメモリにキャッシュすると、サーバーのパフォーマンスが大幅に向上します。
2.1.2.1 一般的に使用される MySQL ストレージ エンジン
一般的に使用されるストレージ エンジンは、MyISAM と InnoDB の 2 つです。
MyISAM:
インデックスはメモリに保存され、データはハード ディスクに保存されます。
InnoDB:
インデックスとデータはメモリに保存されるため、データベースの運用効率が向上します。
2.1.2.3 メモリの選択方法
マザーボードが最大周波数をサポートできるメモリを使用するようにしてください。
2.2 ディスク構成と選択
メモリはデータベースのパフォーマンスに大きな役割を果たしますが、パフォーマンスに対する IO サブシステムの影響を無視することはできません。現在、一般的に次の 4 種類のディスク オプションを使用しています。2.2.1 従来のマシンのハード ドライブの使用
特徴: 大容量のストレージ スペース、低価格、ほとんどの使用されている、最も一般的な、読み取りと書き込みが遅い##2.2.2.1 RAID
RAID とはディスク冗長性 Redundant Arrays of Independent Disks の略で、簡単に言うと、RAID の機能は、複数の小さな容量のディスクを組み合わせて、より大きな容量のディスクのグループにし、データの冗長性を提供してデータの整合性を確保することです。
#2.2.2.2 RAID レベル
##2.2.2.2.1 RAID 0
RAID 0 は最も初期の RAID モードであり、データ ストライピングとも呼ばれます。コンポーネント ディスク アレイの中で最も単純な形式であり、2 台以上のハードディスクのみが必要で、低コストであり、ディスク全体のパフォーマンスとスループットを向上させることができます。 RAID 0は冗長性やエラー回復機能を提供しませんが、実装コストは最も低くなります。ただし、データの回復と信頼性の要素を考慮すると、RAID 0 が最も高価な構成になります。これは、RAID 0 には冗長性がなく、データ損傷の可能性が単一ディスクの場合よりも高いためです。どのディスクでもデータが損傷するとデータが失われるためです。たとえば、3 つのディスクで構成される RAID 0 は、1 つのハードディスクよりも損傷する可能性が 3 倍高くなります。したがって、RAID 0 は、いつでも他のデータベースからクローンを作成できるスタンバイ データベースや、一度だけ使用する必要があるデータベースなど、単一のデータが失われることがない状況に適しています。簡単に言えば、RAID 0 は、ハードディスクを直列に接続して、次のような大きなディスクを形成することです。
また、同時プロセスでは、同等のディスクに達することができます。単一ハードドライブの 3 倍のパフォーマンス。
ディスク ミラーリングとも呼ばれ、その原理は、あるディスクのデータを別のディスクにミラーリングすることです。 1 つのディスクへの書き込み中に、パフォーマンスに影響を与えることなくシステムの信頼性と修復可能性を最大限に確保するために、イメージ ファイルが別の制限されたディスクに生成されます。RAID 0 との違いは、中央に等号が描かれていることです。両方のディスク上のデータは同じであり、優れた冗長性機能を備えていますが、その分コストが増加します。ディスク障害が発生した場合、正常に実行できますが、障害が発生したディスクを交換する必要があり、そうしないとシステムがクラッシュします。
新しいディスクを交換すると、データの同期に時間がかかり、データ アクセスには影響しませんが、システムのパフォーマンスが低下します。RAID 1 は、多くの場合、良好な
read
パフォーマンスを提供し、異なるディスク間でデータを冗長化できるため、データの冗長性が非常に優れています。 RAID 1 は RAID 0 よりも読み取りに優れているため、ログや同様のタスクの保存に適しています。
2.2.2.2.3 RAID 5 - 共通 RAID グループ
各ディスクにはそれぞれ Dp、Cp、Bp、Ap があることがわかります。いずれかのディスクに問題がある場合は、データとパリティ値に基づいてディスクを再計算できます。他の 3 つのディスクのデータ。
RAID 0 および RAID 1 の場合、アレイ構成全体に必要な容量は 1 台のディスクのみであるため、これは最も経済的な冗長構成です。RAID 5 では、保存されたパリティ桁の値を計算するために各書き込みで 2 回の読み取りとディスク間での 2 回の書き込みが必要になるため、書き込みが遅くなります。ただし、ランダム読み取りとシーケンシャル読み取りはどちらも高速です。これは、パリティ ビットを計算する必要がないためです。したがって、RAID 5 は読み取り指向のデータベース サービスに適しています。
RAID 5 で発生する最大の問題は、ディスクに障害が発生した場合です。データを他のディスクに再割り当てする必要があり、ディスクのパフォーマンスに重大な影響を与えるため、次のような場合には RAID 5 を使用するのが最適です。再読。
2.2.2.2.4 RAID 10 - 一般的に使用される RAID グループ
RAID 10 では、1 台のハードディスクが破損すると、読み取りおよび書き込みプロセス中に 2 つの隣接するディスクが同時に読み取られる可能性があるため、パフォーマンスに重大な影響を及ぼします。が破損すると、単一のディスクからのみ読み取りが可能になるため、最悪の場合、パフォーマンスが 50% 低下します。
2.2.3 ソリッド ステート ストレージ SSD および PCIe カードの使用
ソリッド ステート ストレージはフラッシュ メモリとも呼ばれます。
機能:
SSD の機能:
#ソリッドステート ストレージ PCIe カードの機能:
ソリッド ステート ストレージの使用シナリオ
#2.2.4 ネットワーク ストレージ NAS と SAN を使用する
SAN:SAN 装置は光ファイバーでサーバーに接続されており、ブロックインターフェースを介してアクセスされ、サーバーはハードディスクとして使用できます。
SAN の特性:
NAS:NAS デバイスは、NFS や NFS などのファイルベースのプロトコルを介したネットワーク接続を使用します。 SMB でアクセスします。
2.2.4.1 ネットワーク ストレージを使用するシナリオ
2.2.4.2 ネットワーク パフォーマンスの制限
2.2.4.3 ネットワークがパフォーマンスに及ぼす影響
2.3 概要
MySQL に適したオペレーティング システム: Windows、FreeBSD、Solaris、Linux
カーネル関連パラメータ (/etc/sysctl.conf)
net.core.somaxconn = 65535
net.core.netdev_max_backlog=65535
backlog パラメーターは、各ネットワーク インターフェイスで受信されるデータの量を決定します。パケット レートがカーネル プロセッサよりも速い場合、キューに送信できるパケットの最大数、および別のパラメータによって、相手側の接続をまだ取得していないリクエストをキューに保存できるかどうかが決まります。番号。この値を超える接続は破棄される可能性があるため、同時にサイズを大きくしてください。
このパラメータは、TCP 接続処理の待機状態のタイムアウトを制御するために使用されます。比較的頻繁に接続するシステムでは、通常、多数の接続が待機状態にありますが、このパラメータの設定は、接続タイムアウト時間を短縮し、TCP リサイクルを高速化することを目的としています。 TCP 接続に影響を与える次の 2 つのパラメータもあります:、
net.ipv4.tcp_tw_recycle = 1
これら 3 つこれらのパラメータは主にTCPリサイクルを高速化するためのものであり、高負荷システムではTCPコネクションが満杯になるとデータベース500への接続エラーが発生するため、これら3つのパラメータは非常に有用である。、
net.core.wmem_max = 16777216、
net.core.r0mem_default = 87380、
net.core.rmem_max = 16777216
上記の 4 つのパラメータは、TCP 接続の受信および送信バッファ サイズのデフォルト値と最大値を決定します。データベースの場合、これらのパラメータの値を少し大きく調整する必要があります。、
net.ipv4.tcp_keepalive_intvl = 30、
net.ipv4.tcp_keepalive_probes = 3
上記の 3 つのパラメーターは、失敗した接続によって占有される TCP システム リソースの量を減らし、リソースのリサイクルの効率を高めるために使用されます。は、tcp が tcp_keepalive 検出メッセージを送信する時間間隔を表します。秒単位。TCP 接続が有効かどうかを確認するために使用されます。
net.ipv4.tcp_keepalive_intvlは、tcp 接続が応答しないことを検出した後、数秒以内に検出メッセージを再送信するために使用されます。
net.ipv4.tcp_keepalive_probesは、tcp 接続が認識されていることを示します失敗する前に送信する必要がある tcp_keepalive プローブ メッセージの数。これら 3 つのパラメータのデフォルト値は通常のシステムには少し大きすぎるため、ここでは小さな値に変更します。
このパラメータは、Linux カーネル パラメータの中で最も重要なパラメータの 1 つであり、単一の共有メモリ セグメントの最大値を定義するために使用されます。
このパラメータは、メモリが不十分な場合のパフォーマンスに大きな影響を与えます。このパラメータは、仮想メモリが完全にいっぱいでない限り、Linux システム カーネルにスワップ領域を使用しないように指示します。を使用してシステムを表示すると、次のような内容が表示されます。
swapはスワップ パーティションです。オペレーティング システムに十分なメモリがない場合、オペレーティング システムは仮想メモリをディスクのスワップ領域に書き込み、メモリ スワップが発生します。MySQL サービスが配置されている Linux システム上のスワップ パーティションを完全に無効にすると、次の 2 つのリスクが生じます。limit.conf
このファイルは、実際にはプラグイン認証モジュールである Linx PAM の構成ファイルです。より重要なパラメータ設定の 1 つは、開いているファイルの数の制限です。
結論: 開いているファイルの数を 65535 に増やして、十分なファイル ハンドルを開くことができるようにします。注: このファイルへの変更を有効にするには、再起動する必要があります。
ディスク スケジューリング ポリシー (/sys/block/devname/queue/scheduler)
コマンドcat /sys/block/sda/queue/scheduler
を使用して、によって使用されるスケジューリング ポリシーを表示できます。現在のディスク。次のnoop 予想期限 [cfq]
は、システムのデフォルトの cfq スケジューリング ポリシーです。
MySQL データベース サービスでは、cfq は、MySQL の作業プロセス中にキューに不要なリクエストを挿入し、応答時間が低下するため、適切ではありません。
cfq スケジュール戦略に加えて、次の戦略もあります。
noop (エレベーター スケジュール戦略):
Deadline (デッドライン スケジュール戦略):
anticipatory (予測 I/O スケジューリング ポリシー):
次のコマンドを入力して、ディスク スケジューリング ポリシーを変更できます:echo スケジューラ名 > ; / sys/block/sda/queue/scheduler
例:エコー期限 > /sys/block/sda/queue/scheduler
4ファイル システム ペア パフォーマンスへの影響
XFS ファイル システムを使用することをお勧めします。次のパラメータを EXT3 および EXT4 で設定する必要があります:
ファイル システム ペアのマウント パラメータEXT3/4 システム (/etc/fstab ):
data=writeback | requested |journal
writeback
があります。メタデータのみが書き込まれることを意味します。ログを入力するとき、メタデータの書き込みとデータの書き込みは同期されません。これは最も高速な構成であり、InnoDB には元々独自のトランザクション ログがあるため、通常は InnoDB にとって最良の選択です。ordered
はメタデータのみを記録しますが、一貫性の保証を提供します。メタデータを書き込む前に、一貫性を保つためにデータが最初に書き込まれます。このオプションはwriteback
よりもわずかに遅くなりますが、衝突した方が安全です。journal
データが最終ログに書き込まれる前にログに記録されるアトミック ログの動作を提供します。このオプションは明らかに InnoDB には不要であり、3 つのオプションの中で最も遅いです。noatime
、nodiratime
/dev/sda1/ext4
内の構成の一部を次に示します。noatime,nodiratime,data=writeback 1 1
#5 MySQL アーキテクチャ
次に、このシステムの 2 番目の層では、次の図に示すように、ほとんどの mysql コア サービスがこの層にあります。一般的に使用される DDL または DML ステートメントは、このレイヤーで定義されます。ただし、1 つだけ覚えておく必要があるのは、この層はサービス層とも呼ばれるため、すべてのクロスストレージ エンジン機能はこの層に実装されるということです。
私たちの構造システムの 3 番目の層はストレージ エンジン層です。MySQL は非常に優れたオープン ソース データベースであり、一連のストレージ エンジン インターフェイスを定義しています。ストレージ エンジンの要件を満たす限り、MySQL を開発できます。一般的に使用されている InnoDB など、ニーズを完全に満たすストレージ エンジンを考え出します。現在、次の図に示すように、mysql でサポートされているストレージ エンジンが多数あります。
: ストレージ エンジン これはライブラリではなくテーブル用です (ライブラリ内の異なるテーブルは異なるストレージ エンジンを使用できます)
以下では、簡単な説明のために一般的に使用されるストレージ エンジンをいくつか選択します。データベースのパフォーマンスは直接影響しますので、ストレージ エンジンを使用する前に、ストレージ エンジンの特性のいくつかをよく理解していただければ幸いです。
その他の関連する無料学習の推奨事項:mysql チュートリアル(ビデオ)
レベル | 特徴 | 冗長化の有無 | 番号ディスク数 | #Read | Write |
---|---|---|---|---|---|
安価、高速、危険 | No | N | fast | fast | |
高速読み取り、シンプルそして安全 | はい | 2 | 高速 | 低速 | |
セキュリティとコストのトレードオフ | has | N 1 | fast | 最も遅いディスクに応じて | |
高価、高速、安全 | Have | 2N | fast | fast |
以上がビッグデータ学習向けの高度な MYSQLの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。