在我的生产环境中,我有一个运行在16gig内存上的MySQL服务器实例,每小时处理多达20,000个查询.我的桌子的大小正以每月200万的速度增长.这些数字预计会随着时间的推移而上升,但我不确定何时需要改进架构.
如何能够对这种情况采取主动态度并对未来的系统进行验证?
升级硬件在时间和资本效率方面的购买量是否很大?
在这种情况下,通常的做法是什么,如果我们每3个月将流量增加一倍,那么分片是否会自然发展?还是有其他选择吗?
我如何判断我的系统是否达到峰值,有哪些工具可用于分析数据库?我会用什么指标衡量它?
解决方法:
回答如此庞大的可扩展性问题非常困难.
首先,单台机器上的硬件升级时间不长 – 甚至不是短期选择,因为您似乎计划指数级增长(每3个月x2很大,从每月2M行开始).因此,您必须找到分布式可扩展硬件架构.
然后会想到两个基本选项:
坚持SQL
如果您坚持使用不断增长的表格的SQL存储,则必须在clustering和replication之间进行选择.从我的观点来看,后者通常比前者更具成本效益且更快,但更难以解决.
另一个选择显然是设想在怪物表上使用NoSQL技术.分布式键值存储系统在可伸缩性方面几乎是无成本的,最多是线性的.
另一点是键值与分布式缓存(例如众所周知的Memcached)一起优雅地工作,非常容易在大多数语言中使用API设置,以非常低的成本获得非常好的性能.
标签:mysql,profiling,cluster-computing,data-profiling
来源: https://codeday.me/bug/20190530/1184421.html