MYSQLの最適化について全面的に詳しく説明します。

1986 ワード

まず、最も一般的な基本的なシステムのボトルネックについて説明します。
1、ハードディスクの検索。近代的なディスクの平均時間は通常10 msより小さいので、理論的には毎秒約1000回の検索ができます。このようなディスクでデータを検索すると最適化が難しいです。一つの方法はデータを複数のディスクに分布させることです。
2、IO読み書き。ディスクについては、一般転送10-20 M/sと同様に、複数のディスクから並列に読み書きできるように最適化しています。
3、CPU周期。私たちはデータをメモリに読み込んで処理し、必要な結果を得る必要があります。表はメモリに対して比較的小さい時によくある制限要素です。しかし、メーターに対しては、速度は通常問題ないです。
4、メモリ帯域幅。CPUが必要とするデータがCPUキャッシュを超えると、メインキャッシュ帯域幅はメモリのボトルネックとなる。
それにmysqlの設計上のボトルネックを教えてください。
MyISAMはMySQLのデフォルトのデータベースエンジン(5.5版以前)で、初期のISAMによって改良されました。性能は素晴らしいですが、code errorをサポートしないという欠点があります。トレーン。しかし、ここ数年の発展の下で、MySQLもInnoDB(別のデータベースエンジン)を導入して、code errorを強化します。同時に違反処理のメカニズムを併発して、次第にMyISAMに取って代わります。
各MyISAMデータテーブルは、ハードディスクに記憶されている3つのファイルから構成されており、各ファイルはデータテーブル名をファイル名とし、異なる拡張子と組み合わせてファイルタイプを区別しています。
fram-データテーブル定義、このファイルはMyISAMエンジンの一部ではない。
MYD--本当のデータを保存します。
.MYI-インデックス情報を保存します。
1、InnoDBは取引記録ファイル(Transaction Log)によってプログラムの崩壊(crash)を回復したり、予期せぬ退出によるデータエラーを回復したりすることができる。MyISAMはエラーが発生した場合、インデックスを再構築するために完全にスキャンしなければなりません。またはハードディスクに書き込まれていないエラーを修正します。InnoDBの復旧時間は大体固定されていますが、MyISAMの復旧時間はデータ量の多さに比例します。対照的に、データ量が増加するにつれて、InnoDBはより良い安定性を持っている。
2、MyISAMはオペレーティングシステムによって読み取りと書き込みのキャッシュを管理しなければならないが、InnoDBは自分の読み書きキャッシュ管理機構がある。InnoDBは修正されないcode error!すぐにオペレーティングシステムに移行しますので、場合によっては、InnoDBのデータアクセスはMyISAMよりも効率的です。
3、InnoDBは現在MyISAMから提供された圧縮とterse row formasをサポートしていないので、ハードディスクとキャッシュに対する使用量が大きいです。したがって、MySQLは5.0版から始まり、もう一つの負荷が軽いフォーマットを提供します。彼は約20%のシステム負荷を減らすことができます。圧縮機能は今後の新版で発売する予定です。
4、完全互換ACID(code error!)InnoDBは自動的に数本連結しますが、code errorがあります。生成時には、少なくともハードディスクに1回書き込む必要がありますので、ハードディスクやディスクのアレイのいくつかについては、毎秒200回のcode errorが発生します。処理上限より高い性能を望み、code errorを維持します。の完全性は、フロッピーディスクキャッシュとバッテリーサポートを使用する必要があります。もちろんInnoDBは性能に対して衝撃が少ないモードを数種類提供していますが、これに対してもcode errorを低減します。の完全性。MyISAMはこの問題がないですが、それは先進的なのではなく、code errorをサポートしていないからです。
(InnoDBは、MySQLのデータベースエンジンの一つで、MySQL ABのためにbinaryを発行する基準の一つです。InnoDBはInnobase Oyが開発し、2006年5月に甲骨文が買収合併した。従来のISAMとMyISAMに比べ、InnoDBの最大の特徴はACID対応のトランザクション機能であり、PostgreSQLに似ている。