1. 大型的电商网站数据库要如何设计是一个很广的话题了,我个人是偏管理的,所以只能给一些我的理解
a. 业务上,需要对电商有一定的行业经验,熟悉电商主要的业务模块
b. 了解对方的电商的主要特色,比如淘宝这种,是搭载了多个商家的,Amazon这种,走的是多元化产品(大而全),早期的当当,是专精的模式
c. 根据前面两点,定义数据库模型
d. 描述设计细节上的注意事项,最好是有针对性的举例说明,比如电商中的活动,每个活动都会导致短时间内的大量用户访问,在DB的设计层面,你是如何设计来支持这种情况
2. 关于死锁,简单地来说,就是找问题和分析解决而已,对于找问题,真正的死锁,死锁的进程中肯定有一个程序会报错,所以这个查看程序的错误信息就知道了,如果要知道死锁的详细详细,可以通过Profile的Deadlock graph去跟踪死锁的详细资源,再根据冲突的资源确定解决方法。
a. 业务上,需要对电商有一定的行业经验,熟悉电商主要的业务模块
b. 了解对方的电商的主要特色,比如淘宝这种,是搭载了多个商家的,Amazon这种,走的是多元化产品(大而全),早期的当当,是专精的模式
c. 根据前面两点,定义数据库模型
d. 描述设计细节上的注意事项,最好是有针对性的举例说明,比如电商中的活动,每个活动都会导致短时间内的大量用户访问,在DB的设计层面,你是如何设计来支持这种情况
2. 关于死锁,简单地来说,就是找问题和分析解决而已,对于找问题,真正的死锁,死锁的进程中肯定有一个程序会报错,所以这个查看程序的错误信息就知道了,如果要知道死锁的详细详细,可以通过Profile的Deadlock graph去跟踪死锁的详细资源,再根据冲突的资源确定解决方法。
实际应用中,死锁还是比较少的,通常说的死锁,更多的是阻塞,就是某个程序平时都跑得很快,但突然在一些时间跑得非常慢了,对于这种,可以使用Profile中的 Blocked Process Report 事件去Trace,或者是在出现问题时,通过 sp_who 查询 sql 上的进程,其中 blk 列有具体数字的,表示该进程被 blk 列对应的进程阻塞了,可以分析这两个进程的操作来查询死锁的原因(详细分析时,可以通过sp_lock 确定具体等待的资源)
邹建
http://my.youkuaiyun.com/zjcxc