数据库的正常运行离不开监控,一套完善有效的监控体系可以帮助我们提前发现问题,做出正确决策。
这两天拜读了些内部分享的材料,整理下:
1、承载预估的核心指标:cpu、tps/qps、io利用率((r/s+w/s)*svctm)/1000
cpu包括:利用率、负载
io包括:写量、读量、利用率、平均等待、等待队列长度、读次数、写次数
其他:应用层load耗时、slowquery分数
2、一些优化的思路
成本视角:数据冷热分层,热数据放到内存,低访问的数据下沉到硬盘,降低存储成本。从访问密度入手来评估负载,定期分析冷热数据的淘汰比例是否均匀。
技术视角:主从架构下的并行复制;是否所有db都需要严格遵守ACID?为了更高的回写速度,能不能牺牲持久性?
比如:上周遇到的问题,相同的机型,相同的介质,相同的配置,读写性能差了几十倍。关掉innodb_flush_log_at_trx_commit之后就追平。