美文网首页
MySQL在新建表时的存储引擎怎么选?

MySQL在新建表时的存储引擎怎么选?

作者: 后厂村村长 | 来源:发表于2021-08-07 19:47 被阅读0次

    当然首选 InnoDB

    写在前面:如果你无法判断,就用InnoDB,默认选项总是比较安全的,尤其是你搞不清楚你究竟需要什么的时候。

    1、除非你用到了无法替代的某些 InnoDB 所不具备的特性,否则应优先考虑InnoDB引擎。

    举个栗子,如果对空间占用很敏感,既不在乎可扩展性和并发能力,也不在乎崩溃后的数据丢失问题,那 MyISAM 就比较合适。比如,日志存储场景,主要是 select 和 insert,几乎不涉及update,那么 MyISAM 比 InnoDB 更合适。

    另如,需要地理空间索引的场景,一般首选MyISAM(注,MySQL5.7之前仅MyISAM支持,之后InnoDB也开始支持)。

    2、为什么首选 InnoDB?

    1)支持 事务。
    2)支持 在线热备份(如果可以定期关闭服务器执行备份,可以忽略这点)。
    3)MyISAM崩溃后发生损坏的概率比InnoDB要高很多,且恢复速度也慢。因此,即使无需事务支持,多数人也选后者,这是一个非常重要的因素。

    附:
    不要轻信“MyISAM比InnoDB快”之类的似乎充满经验性的话。
    首先,这个结论并不是绝对的。比如聚簇索引场景,就可以反杀MyISAM,或者需要访问的数据都可以放入内存的应用场景。
    其次,考虑一下你的数据量级,譬如几十万的数据,那就不用纠结使用哪种引擎。
    最后,有可能你的查询慢只是缺少一个恰当的索引,根源并不在引擎本身,善用explain

    相关文章

      网友评论

          本文标题:MySQL在新建表时的存储引擎怎么选?

          本文链接:https://www.haomeiwen.com/subject/maygvltx.html