设计原则

表设计

1.动静分表的使用场合?

动静分表核心在于锁竞争,如何分表后不会显著改善缓解锁竞争,分表后效果不会好。分开来说,如果使用行锁的话,innodb引擎不需要动静分表,因为读写,写写之间都不存在锁竞争;myisam引擎需要分表,因为写操作是表锁,读写会相互竞争,在竞争激烈时,使用动静分表会提高性能;

最佳实践:

1. 如果是Innodb,只有在使用表锁时才考虑动静分离,把锁表操作放在动表中操作,读操作从静表读;

2. 如果是myisam引擎,只有在表的并发量较大,监控显示表锁竞争激烈时才使用;

分表后是否会提高并发量受多个因素影响:

1. 磁盘,cpu,网络,内存是否跑满。

2. 单事物处理时间。分表后单表的索引缓存命中减少,如果减少锁竞争较少的处理时间不能抵消查询索引的时间消耗,可能会适得其反。

如果不是必须使用事务,写并发量大时,可以考虑使用多张myisam表替代一张innodb表,每张myisam表承担一部分写任务,性能也会有所提高。一般单事务处理时间在0.3mm时有必要考虑分表了,具体如何推算请看我的文章。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容