因胸联盟 发表于 2015-1-16 20:12:24

绝无经由的MySQL中MyISAM引擎与InnoDB引擎功能对照

根据Evans的调查报告,“MySQL的使用在未来将继续呈成长趋势。”MySQL表布局
CREATETABLE`myisam`(
`id`int(11)NOTNULLauto_increment,
`name`varchar(100)defaultNULL,
`content`text,
PRIMARYKEY(`id`)
)ENGINE=MyISAMDEFAULTCHARSET=gbk;
CREATETABLE`innodb`(
`id`int(11)NOTNULLauto_increment,
`name`varchar(100)defaultNULL,
`content`text,
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=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也默许被包含在一切MySQL5.1二进制分发版里,你能够依照喜欢经由过程设置MySQL来同意或克制任一引擎。・EXAMPLE存储引擎是一个“存根”引擎,它不做甚么。你能够用这个引擎创立表,但没无数据被存储于个中或从个中检索。这个引擎的目标是服务,在MySQL源代码中的一个例子,它演示申明怎样入手下手编写新存储引擎。一样,它的次要乐趣是对开辟者。”;
[拔出数据-1](innodb_flush_log_at_trx_commit=1)
MyISAM1W:3/s
InnoDB1W:219/s
MyISAM10W:29/s
InnoDB10W:2092/s
MyISAM100W:287/s
InnoDB100W:没敢测试
[拔出数据-2](innodb_flush_log_at_trx_commit=0)
MyISAM1W:3/s
InnoDB1W:3/s
MyISAM10W:30/s
InnoDB10W:29/s
MyISAM100W:273/s
InnoDB100W:423/s
[拔出数据3](innodb_buffer_pool_size=1024M)
InnoDB1W:3/s
InnoDB10W:33/s
InnoDB100W:607/s
[拔出数据4](innodb_buffer_pool_size=256M,innodb_flush_log_at_trx_commit=1,setautocommit=0)
InnoDB1W:3/s
InnoDB10W:26/s
InnoDB100W:379/s
(缺省设置)
#MySQLServerInstanceConfigurationFile

port=3306

default-character-set=gbk

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
总结:
能够看出在MySQL5.0内里,MyISAM和InnoDB存储引擎功能不同并非很年夜,针对InnoDB来讲,影响功能的次要是innodb_flush_log_at_trx_commit这个选项,假如设置为1的话,那末每次拔出数据的时分城市主动提交,招致功能急剧下落,应当是跟革新日记有干系,设置为0效力可以看到分明提拔,固然,一样你能够SQL中提交“SETAUTOCOMMIT=0”来设置到达好的功能。别的,还传闻经由过程设置innodb_buffer_pool_size可以提拔InnoDB的功能,可是我测试发明没有出格分明的提拔。
基础上我们能够思索利用InnoDB来替换我们的MyISAM引擎了,由于InnoDB本身良多优秀的特性,好比事件撑持、存储历程、视图、行级锁定等等,在并发良多的情形下,信任InnoDB的体现一定要比MyISAM强良多,固然,响应的在my.cnf中的设置也是对照关头的,优秀的设置,可以无效的减速你的使用。
假如不是很庞大的Web使用,非关头使用,仍是能够持续思索MyISAM的,这个详细情形能够本人推敲。
硬件设置
CPU:AMD2500+(1.8G)
内存:1G/古代
硬盘:80G/IDE
软件设置
OS:WindowsxpSP2
SE:php5.2.1
DB:MySQL5.0.37
Web:IIS6
这是无法比较的,因为基于云的数据库提供了不同的模式。关键是要通过围绕云计算产品来包装其他增值服务以适应不断变化的市场条件:这就是DBaaS。

老尸 发表于 2015-1-18 18:38:10

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

简单生活 发表于 2015-1-25 13:39:42

从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。

变相怪杰 发表于 2015-2-2 22:18:52

需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。

若相依 发表于 2015-2-8 14:00:15

对于微软系列的东西除了一遍遍尝试还真没有太好的办法

冷月葬花魂 发表于 2015-2-25 17:22:12

记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。

乐观 发表于 2015-3-8 00:58:56

至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。

飘灵儿 发表于 2015-3-15 19:32:09

总感觉自己还是不会SQL

第二个灵魂 发表于 2015-3-22 03:11:35

换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
页: [1]
查看完整版本: 绝无经由的MySQL中MyISAM引擎与InnoDB引擎功能对照