什么应该是最好的Mysql数据库引擎当查询像更新,插入,删除几乎没有作出(99%的时间不作出)
数据库有一个批量input主要是数字数据types,select查询是基于条件语句比较数值和返回结果
我应该在这里使用MyISAM吗?
还有一点是数据库将被多个用户同时使用
谢谢
我会通过InnoDB与MyISAM一起出三(3)个主要原因
原因1:MyISAM存储引擎提供了更简单的机制来提高读取性能
MyISAM表只包含三个文件
您可以通过对表格的行格式进行简单的更改来调整MyISAM表格以获得更快的读取速度。
例如,“ MySQL数据库devise和调优 ”一书的第71-73页build议对MyISAM表执行此操作:
ALTER TABLE tblname ROW_FORMAT=Fixed;
这将在内部将所有VARCHAR转换为CHAR。 这也会使MyISAM表大约增加50%,但是由于string长度用VARCHAR进行更严格的检查,而CHAR的长度是固定的,所以增加了读取性能。
作为替代scheme,您可以在MyISAM表上运行myisampack以减lessMyISAM表的大小并创build一个新的只读格式。
这些是您可以在任何MyISAM表上执行的一次性操作。 在InnoDB表上更改行格式由于其聚集的索引布局而变得没有用处(在原因3中进行了解释)
原因#2:MyISAMcaching更简单
MyISAM只caching索引页面。 InnoDBcaching数据和索引页面 。 因此,您可以将MyISAM密钥cachingconfiguration得比InnoDB缓冲池小一些。
原因3:InnoDB携带太多的行李保护数据
InnoDB在启动时具有崩溃恢复function,即使没有任何错误(预防措施)
InnoDB总是对数据行执行MVCC 。 这为从不会从INSERT,UPDATE或DELETE混淆的房子创造额外的房屋清理。
InnoDB始终执行双索引查找,特别是在使用非唯一索引时。 发生这种情况的原因是由于InnoDB的内部rowid索引与聚集索引密切相关 。
你可以绕过InnoDB的启动,在/etc/my.cnf中有以下内容
[mysqld] skip-innodb
MySQL将因此重启得更快。 您也可以删除/ var / lib / mysql / ibdata1,/ var / lib / mysql / ib_logfile0和/ var / lib / mysql / ib_logfile1。
警告
如果数据足够小,请在RAM磁盘上挂载/ var / lib / mysql。 然后,所有的赌注都closures了比较MyISAM InnoDB。
http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/
InnoDB将超越myiasm,如果你设置在内存中运行数据库..也就是说,如果你能适应内存。