目前的业务场景如下:
有一个账单数据库mysql的,每天从信息源单位交换一个城市的水电煤账单数据,每天的量非常大(最高一天有20w,一个星期有100w,一个月有400多w),目前程序已经运行了大半年了,数据库里面的数据是越来越多已达到两千多万,后面肯定会更多。但是就现在的查询,统计,和正常的插入效率而言,已经越来越低了。
目前数据库采用的是pxc集群方式,版本是PerconaXtraDBCluster-5.6.20-25.7
请问在保持同等的数据增长的情况下如何实现性能调优。不管是从程序层面还是mysql层面,都可以。
1.先把慢的SQL搞定(重点是索引)
2.MySQL,集群,操作系统的设置
2.我确定没有多少优化空间了,是不是表结构设计得不合理,重构是否能保证数据不损失,且划算?
4.我们需要更多的硬件资源!
按月分表考虑考虑
楼上所说的分表策略是互联网企业通用的做法,想对业务改动不大,可以在datasource层分表,基本不影响业务代码,现在当当刚开源了一个组件sharding-jdbc,应该不错;也可以用支持mysql的中间件比如cobar、mycat、oneproxy,这种不用改代码,但是运维上要麻烦些;分表后数据迁移是必不可少的工作,代码改动其实真的不大
按照先后顺序
1 加索引、改写sql
2 加缓存。memcache、redis之类
3 主从复制、读写分离
4 垂直拆分。例如一个表的字段过多,拆成两个一个主表和一个附加表,常用的字段放到主表中,少用的字段放到附加表中。
5 水平拆分。
纯属个人理解。