引擎的选择

2020-05-13  本文已影响0人  dongdog

对于如何选择存储引擎,可以简答的归纳为一句话:“除非需要用到某些INNODB 不具备的特性,并且没有其他办法可以替代,否则都应该选择INNODB 引擎”。例如:如果要用到全文索引,建议优先考虑INNODB加上Sphinx的组合,而不是使用支持全文索引的myisam。当然,如果不需要用到InnoDB的特性,同时其他引擎的特性能够更好的满足需求,也可以考虑一下其他存储引擎。举个例子,如果不在乎可扩展能力和并发能力,也不在乎崩溃后的数据丢失问题,却对InnoDB的空间占用比较敏感,这种场合下选择MyISAM就比较合适。

除非万不得已,否则建议不要混合使用多种存储引擎,否则可能带来一系列负责的问题,以及一些潜在的bug和边界问题。存储引擎层和服务器层的交互已经比较复杂,更不用说混合多个存储引擎了。至少,混合存储引擎对一致性备份和服务器参数配置都带来了一定的困难。

比较点 MyISAM innoDb BDB Memory Archive
适合场景 操作和插入 安全 - 访问/变化频繁,没必要入库 访问/变化频繁,没必要入库
适用用于 帖子/信息/新闻/商品 账户/余额/订单/积分 - 用户在线状态 用户在线状态
插入速度 非常高
事务 - 支持 支持 - -
全文索引 支持 - - - -
锁机制 表锁 行锁 页锁 表锁 行锁
以上重点 --------------------------- ------------------------- ------ ----------------------------------- ----------------------------------
崩溃恢复 - - -
热线备份 最优
存储限制 64TB
B数索引 支持 支持 支持 支持 -
哈希索引 - 支持 - 支持 -
集群索引 - 支持 - - -
数据缓存 - 支持 - 支持 -
索引缓存 支持 支持 - 支持 -
数据压缩 支持 - - - 支持
空间使用 N/A 非常低
内存使用
上一篇 下一篇

猜你喜欢

热点阅读