谈谈账户系统的系统性能设计
数据库优化
对于这个部分相信每个公司都有自己的数据库规范,一般来说根据自己公司的规范做好应该不会有太大问题。这里应该包括有命名的规范、索引的设计、sql的开发设计、sql的优化、数据库的切分等。
这里先说几个点,后续这里另外写独立的文章。
我们在开发的过程中应该尽量避免下面几点:
- 超过255字节字段
- 内置函数:数据库的资源是十分宝贵的,比如一些date之类的函数,能尽量在业务层处理完就在- - 业务层处理。不用放到数据层处理
- 存储过程:存储过程有很多好处,预编译提高了相应的效率。但是不利于移植。这一点见仁见智。
- 触发器:在实际的工作经历中,触发器的效率是比较低下的,避免使用。
- 长事务:避免占用资源
- 多表联合查询:尽量业务层处理
- 批量查询:批量处理属于慢服务,不应该和快服务混合在一起。有条件的话建议批量查询有独立的数据库进行支撑。
读写分离&&快慢分离
在金融系统中是可以将一些服务切分为快服务和慢服务的。例如:
- 快服务:实时支付、转账、提现等等操作
- 慢服务:账单查询、对账、protal上的一些统计查询(当日交易、当月交易等)
对于上述的情况,一般来说,我们可以进行主备机方案、将实时系统的数据同步到慢服务的库中,慢服务的独立出来,这样不会占用实时服务的资源。