Mysql 中 MyISAM 和 InnoDB 的区别有哪些
InnoDB 支持事务、外键、行级锁
MyISAM 表锁
InnoDB 是聚集索引,MyISAM 是非聚集索引
MyISAM:支持 FULLTEXT类型的全文索引
InnoDB:不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。
MyISAM:如果执行大量的SELECT,MyISAM是更好的选择。
InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。
如何进行分库分表
分库
根据业务垂直切分的策略
把某个业务的DB按照规则横向切分之后,当然也会引入新的问题。切分的规则在很多情况下用的最多的就是哈希取余
分表
横向切分
业务垂直切分
数据表垂直切分之后,原来一次查询有可能会变为连表的Join查询,在一定程度上会有性能损失
表拆分之后如果遇到有order by的操作,数据库就无能为力了,只能由业务代码或者数据库中间件来完成了