MySQLのMyISAMエンジンとInnoDBエンジンの性能比較


MySQLではMyISAMエンジンとInnoDBエンジンの性能を比較し、基本的にはMyISAMエンジンの代わりにInnoDBを使用することを考慮することができます.
MySQLテーブル構造CREATE TABLE `myisam` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(100) default NULL,
  `content` text,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;

CREATE TABLE `innodb` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(100) default NULL,
  `content` text,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

データ内容$name="heiyeluren";content = 「MySQLは、異なるテーブルのタイプのプロセッサとして複数のストレージエンジンをサポートしています.MySQLストレージエンジンには、トランザクション・セキュリティ・テーブルを処理するエンジンと、非トランザクション・セキュリティ・テーブルを処理するエンジンがあります.MyISAMは、非トランザクション・テーブルを管理します.高速ストレージと検索、および全文検索機能を提供します.MyISAMは、MySQLのデフォルトで別のエンジンを使用するように構成しない限り、すべてのMySQL構成でサポートされています.・MEMORYストレージ・インデックス「メモリ中」テーブルを提供します.MERGEストレージエンジンは、同じMyISAMテーブルを個別のテーブルとして扱うことを可能にする.MyISAMのように、MEMORYとMERGEストレージエンジンは非トランザクションテーブルを処理し、両方のエンジンもデフォルトでMySQLに含まれています.釈:MEMORYストレージエンジンは正式にHEAPエンジンと確定された.・InnoDBおよびBBBストレージエンジンは、トランザクション・セキュリティ・テーブルを提供します.BDBは、そのオペレーティングシステムをサポートするためにリリースされたMySQL-Maxバイナリ配布版に含まれています.InnoDBもデフォルトですべてのMySQL 5.1バイナリ配布版に含まれており、好みに応じてMySQLを構成することで任意のエンジンを許可または禁止することができます.・EXAMPLEストレージエンジンは「ストレージルート」エンジンで、何もしません.このエンジンでテーブルを作成できますが、データが保存されていないか、取得されていません.このエンジンの目的は、MySQLソースコードの一例で、新しいストレージエンジンの作成を開始する方法を示すサービスです.同様に、その主な興味は開発者です.;[挿入データ−1](innodb_flush_log_at_trx_commit=1)MyISAM 1 W:3/s InnoDB 1 W:2119/s MyISAM 10 W:29/s InnoDB 10 W:2092/s MyISAM 100 W:287/s InnoDB 100 W:287/s InnoDB 100 W:テストできなかった[挿入データ−2](innodb_flush_log_at_trx_commit=0)MyISAM 1 W:3/s InnoDB 1 W:3/s MyISAM 10 W:30/s InnoDB 10 W:20/s InnoDB 10 W:29/s MyISAM 100 W:23/s MyISAM 100 W:23/s InnoDB 10 W:23/s InnoDB 100 W:423/s[挿入データ3](innodb_buffer_pool_size=1024 M)InnoDB 1 W:3/s InnoDB 10 W:33/s InnoDB 100 W:607/s[挿入データ4](innodb_buffer_pool_size=256M,innodb_flush_log_at_trx_commit=1,set autocommit=0)InnoDB 1 W:3/s InnoDB 10 W:26/s InnoDB 100 W:379/s[MySQLプロファイル](デフォルトプロファイル)#MySQLサーバInstance Configuration File[client]port=3306[mysql]default-charfault-chark 10 W:379/s[mql]defaacter-set=gbk[mysqld]port=3306 basedir="C:/mysql 50/"datadir="C:/mysql50/Data/"default-character-set=gbk default-storage-engine=INNODB sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"max_connections=100 query_cache_size=0 table_cache=256 tmp_table_size=50M thread_cache_size=8 myisam_max_sort_file_size=100G myisam_max_extra_sort_file_size=100G myisam_sort_buffer_size=100M key_buffer_size=82M read_buffer_size=64K read_rnd_buffer_size=256K sort_buffer_size=256K innodb_additional_mem_pool_size=4M innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=2M innodb_buffer_pool_size=159M innodb_log_file_size=80M innodb_thread_concurrency=8まとめMySQL 5.0では、MyISAMとInnoDBストレージエンジンの性能差はそれほど大きくなく、InnoDBにとって性能に影響を与えるのは主にinnodb_flush_log_at_trx_commitこのオプションは、1に設定すると、データを挿入するたびに自動的にコミットされ、パフォーマンスが急激に低下します.リフレッシュログと関係があるはずです.0に設定すると効率が著しく向上します.もちろん、SQLで「SET AUTOMMIT=0」をコミットしてパフォーマンスを向上させることもできます.また、innodb_を設定することでbuffer_pool_sizeはInnoDBの性能を向上させることができますが、私はテストして特に明らかな向上がないことを発見しました.基本的には、MyISAMエンジンの代わりにInnoDBを使用することを考えることができます.InnoDB自体には、トランザクションサポート、ストレージプロセス、ビュー、行レベルロックなど、多くの良い特徴があります.同時に多くの場合、InnoDBの表現はMyISAMよりずっと強いと信じています.もちろん、myです.cnfの中の配置も比較的に肝心で、良好な配置、効果的にあなたの応用を加速することができます.複雑なWebアプリケーションではなく、重要でないアプリケーションであれば、MyISAMのことを考え続けることができます.この具体的な状況は自分で吟味することができます.ハードウェア構成CPU:AMD 2500+(1.8 G)メモリ:1 G/現代ハードディスク:80 G/IDEソフトウェア構成OS:Windows XP SP 2 SE:PHP 5.2.1 DB : MySQL5.0.37 Web: IIS6