Mysql の高同時実行ソリューションには、1. SQL ステートメントの最適化、2. データベース フィールドの最適化、3. キャッシュの追加、4. テーブルのパーティション分割、5. 読み取りと書き込みの分離と垂直分割、6. モジュールの分離 (水平)スライスなど
高同時実行性におけるボトルネックのほとんどはバックグラウンドにあり、mysql を保存するための通常の最適化計画は次のとおりです:
(1)コード内のSQL文の最適化
(2) データベースフィールドの最適化、インデックスの最適化
(3) キャッシュ、redis/memcacheなどの追加
(4) マスター-スレーブ、読み取り/書き込み分離
(5) パーティション テーブル
##(6) 垂直分割、分離モジュール##(7) 水平分割
##(6)##ビデオ コースの推奨事項 →
: 数千万のデータ同時実行ソリューション (理論的実践)1. 方法 1 と方法 2 は、効率を向上させる最も簡単かつ最速の方法です。すべてのステートメントがインデックスにヒットするため、最も効率的です。ただし、SQL を最適化するためにインデックスを構築すると、インデックスがオーバーフローしてしまい、数千万以上のテーブルの場合、インデックスを維持するコストが大幅に増加し、データベースのメモリ オーバーヘッドが増加します。 2. データベースフィールドの最適化。かつて先輩プログラマが、テーブルフィールドの設計において、日付型がvarchar型として設計されていることに気づき、標準化されていないにもかかわらず、書き込まれたデータの検証ができず、インデックス作成の効率も異なっていた
3. キャッシュは、読み取り、書き込み、および更新頻度が比較的低いビジネス シナリオに適していますが、それ以外の場合は、キャッシュの反対意見が少なく、ヒット率は高くありません。キャッシュは通常、主にインターフェイスの処理速度を向上させ、同時実行性によって引き起こされる DB の負荷や、それによって引き起こされるその他の問題を軽減するために使用されます。
4. パーティショニングはテーブルではありません。結果は依然として 1 つのテーブルですが、保存されたデータ ファイルは複数の小さなブロックに分割されます。テーブル データが非常に大きい場合、一度にメモリにロードできないことや、大きなテーブル データを維持できないという問題を解決できます。
5. 垂直分割はテーブルを列ごとに複数のテーブルに分割し、ディスク IO の負荷を軽減するためにメイン テーブルの拡張データとテキスト データを分離するのが一般的です。
6. 水平分割. 水平分割の主な目的は、単一テーブルの同時読み取りおよび書き込み機能 (負荷はさまざまなサブテーブルに分散されます) とディスク IO パフォーマンス (非常に大きな . MYD ファイルはさまざまな小さなテーブルに分散されます).テーブルの .MYD ファイル)。 1,000 万レベルを超えるデータがない場合、なぜそれを解体する必要があるのでしょうか? 単一のテーブルのみを最適化することも可能であり、同時実行性がそれほど高くない場合は、パーティション化されたテーブルで通常要件を満たすことができます。したがって、通常の状況では、水平分割は最後の選択であり、設計中に段階的に進める必要があります。
以上がmysql が高度な同時実行をどのように処理するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。