[转]关于Mysql设置等
先是一些主要配置:
mysql的innodb_flush_log_at_trx_commit
innodb_buffer_pool_size
 
 如 果用Innodb,那么这是一个重要变量。相对于MyISAM来说,Innodb对于buffer 
size更敏感。MySIAM可能对于大数据量使用默认的key_buffer_size也还好,但Innodb在大数据量时用默认值就感觉在爬了。 
Innodb的缓冲池会缓存数据和索引,所以不需要给系统的缓存留空间,如果只用Innodb,可以把这个值设为内存的70%-80%。和 
key_buffer相同,如果数据量比较小也不怎么增加,那么不要把这个值设太高也可以提高内存的使用率。 
innodb_additional_pool_size 
 这个的效果不是很明显,至少是当操作系统能合理分配内存时。但你可能仍需要设成20M或更多一点以看Innodb会分配多少内存做其他用途。 
innodb_log_file_size
  对于写很多尤其是大数据量时非常重要。要注意,大的文件提供更高的性能,但数据库恢复时会用更多的时间。我一般用64M-512M,具体取决于服务器的空间。 
innodb_log_buffer_size 
 默认值对于多数中等写操作和事务短的运用都是可以的。如 
果经常做更新或者使用了很多blob数据,应该增大这个值。但太大了也是浪费内存,因为1秒钟总会 
flush(这个词的中文怎么说呢?)一次,所以不需要设到超过1秒的需求。8M-16M一般应该够了。小的运用可以设更小一点。 
innodb_flush_log_at_trx_commit  (这个很管用)  
 抱怨Innodb比MyISAM慢 
100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电
 池供电缓存(Battery backed up 
cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 
盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统
 挂了时才可能丢数据。 
此性能测试只可参考,出自:http://www.cnblogs.com/riky/archive/2008/10/21/1315951.html?login=1
MySQL中MyISAM引擎与InnoDB引擎性能简单测试
 [硬件配置]
 CPU : AMD2500+ (1.8G)
 内存: 1G/现代
 硬盘: 80G/IDE
 
 [软件配置]
 OS : Windows XP SP2
 SE : PHP5.2.1
 DB : MySQL5.0.37
 Web: IIS6
 
 
 [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和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所
 有MySQL  
5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。·EXAMPLE存储引擎是一个“存根”引擎,它不做什么。你可以用这个
 
引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它
 的主要兴趣是对开发者。";
 
 
 [插入数据-1] (innodb_flush_log_at_trx_commit=1)
 MyISAM 1W:3/s
 InnoDB 1W:219/s
 
 MyISAM 10W:29/s
 InnoDB 10W:2092/s
 
 MyISAM 100W:287/s
 InnoDB 100W:没敢测试
 
 [插入数据-2] (innodb_flush_log_at_trx_commit=0)
 MyISAM 1W:3/s
 InnoDB 1W:3/s
 
 MyISAM 10W:30/s
 InnoDB 10W:29/s
 
 MyISAM 100W:273/s
 InnoDB 100W:423/s
 
 [插入数据3] (innodb_buffer_pool_size=1024M)
 InnoDB 1W:3/s
 InnoDB 10W:33/s
 InnoDB 100W:607/s
 
 [插入数据4] (innodb_buffer_pool_size=256M, innodb_flush_log_at_trx_commit=1, set autocommit=0)
 
 InnoDB 1W:3/s
 InnoDB 10W:26/s
 InnoDB 100W:379/s
 
 
 
 [MySQL 配置文件] (缺省配置)
 
[client]
port=3306
[mysql]
default-character-set=gbk
[mysqld]
port=3306
basedir="C:/mysql50/"
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 AUTOCOMMIT =  
0”来设置达到好的性能。另外,还听说通过设置innodb_buffer_pool_size能够提升InnoDB的性能,但是我测试发现没有特别明显
 的提升。
 
 
基本上我们可以考虑使用InnoDB来替代我们的MyISAM引擎了,因为InnoDB自身很多良好的特点,比如事务支持、存储过程、视图、行级锁定等 
等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多,当然,相应的在my.cnf中的配置也是比较关键的,良好的配置,能够有效
 的加速你的应用。
 
 如果不是很复杂的Web应用,非关键应用,还是可以继续考虑MyISAM的,这个具体情况可以自己斟酌。
                    
                
                
            
        
浙公网安备 33010602011771号