选择合适的引擎
当设计基于MySQL的应用程序时,要考虑用什么存储引擎来保存数据。如果在设计阶段不考虑这个,你就会在以后的过程中遇到一些困难。你可能发现默认的存储引擎并没有提供一些你需要的功能。如事务管理或者读写的混合需要比MyISAM表锁更好的隔离级别的锁。
因为你可以为每个表都设置存储引擎。你必须清晰的知道每张表的用途和存储的数据。考虑这些也可以帮助你对应用有个更好的了解以及潜在的增长数据。
有了些信息,就可以开始选择引擎了。
一些考虑
虽然有很多因素决定了你使用引擎的种类,但总的来说因素就那么几个。下面列出的是应该主要考虑的因素:
事物
如果你的引擎需要事物处理,InnoDB是稳定,易于集成,证明是没错的选择。然而,我们更期待和它竞争的引擎出现。
如果不需要事物和能使用主要的查询和插入语句,MyISAM是个很好的选择。一些应用的模块适用于它,如日志。
并发
如果最好的满足你的并发性需求取决你的工作量了。如果你仅仅是并发的插入和读取。不管相信与否,MyISAM是最好的了。如果你让这些操作互不干扰,就应该选择一个支持行锁的引擎。
备份
有规律的备份也影响表的引擎选择。如果服务器关闭,并且定期的备份,存储引擎很容易处理。如果你需要在线备份并从一个格式转换为另一个。这个选择就不明智了。以后会详细说这部分。
要考虑多引擎所引起的备份和服务器调整的复杂性。
错误恢复
如果你有很多数据,你要考虑错误恢复的时间。MyISAM相对于InnoDB非常容易崩溃而且从崩溃中恢复的时间非常慢,这就是为什么有的人即使不使用事务处理也要用InnoDB了。
特殊功能
最终,你可能发现有的应用需要依靠一些MySQL存储引擎特殊的功能和优化,举个例子,有的应用程序非常依赖于集群的索引优化。这时候,你只能在InnoDB和solidDB选择了。另一方面,只有MyISAM支持全文索引。如果一个存储引擎遇到了一个或多个苛刻的需求,对于其他并不算是,那么你就要选一个折中的方案或者找到一个好的解决方案。通常你能从看上去不满足你的需求的存储引擎,找到你所需要的。
你不必现在决定选择哪个引擎。在剩下的教程中会接着说各个引擎的优点和缺点。以及架构设计的提示。一般来说,现实中的方案比你知道的要多的多。