系统技术方案注意点

交易型的类电商业务,最终系统的瓶颈一般都是在数据库操作。在技术方案设计时,一定要注意:
1. 能不用数据库的,就别用数据库,一定不能什么数据想都不想就存到数据库。比如一些非核心、又需要频繁写的数据,就不适合放数据库。这里要注意,不放数据库不代表数据不能持久化,redis/mongo等都能持久化,并且不用数据库是指用户操作不依赖数据库。如果需要的话,数据还是可以通过各种方式异步落到数据库的,或者把历史数据落到数据库。
2. 如果要用数据库,一般要遵循以下原则:
A. 尽可能减少访问次数
a) 所有的读操作,都可以用缓存来解决高并发问题,必要的话还需要多级缓存。对于要求强一致性读操作的业务比如我的资产,要做好缓存更新的一致性策略。
b) 除了缓存,读操作也可以利用从库
c) 减少和数据库交互的次数,比如我们yii框架之前每做一次数据库操作都会产生好几个sql去执行
d) 写操作某些情况下也可以合并写
B. 尽可能减少数据访问(磁盘访问)
a) 确保所有的读写都能用到索引(不适合建索引的特殊情况除外),且让索引尽量高效。区分度越高的字段越适合做索引,越适合放到联合索引最左边
b) 避免扫表,一定要扫的话(比如每天冷备)走从库
c) 只select需要的字段,同时也能减少网络传输的数据量
d) 尽量减少临时表的使用,因为临时表过多就会落到磁盘上。如表连接、子查询、DISTINCT等可能会导致创建临时表
C. 尽可能减少数据库的复杂运算(即内存和CPU的消耗),可以把一些运算放到应用程序甚至客户端来做
D. 做好容量规划,需要的话提前做好水平拆分和垂直拆分


发表评论

电子邮件地址不会被公开。 必填项已用*标注