|
本帖最后由 yulihua49 于 2011-11-2 16:08 编辑
yulihua49 发表于 2011-9-20 17:31 ![]()
OLTP复杂SQL用的不多,太过复杂的SQL的确不是DAU的长项。这时,可以调用直接执行语句,或存储过程。
我 ...
最近抽空又做了些功课,还是前边的分页下载服务。
DAU如果每次都去查列属性,列修正,主键列,那它的性能的确比存储过程差(在那个存储过程的功能并不完备的条件下),
存储过程的交易吞吐量大约是2500TPS,而DAU是1800TPS左右。
但是我可以改进,常用的表可以保存一个模板库。这个下载服务收到表名,先在模板库查找,如果没有在从数据库生成。这样改进的结果,在保持程序的柔性的同时,性能大为改观,吞吐量一下提高到5400TPS。
虽然这样对比有失公平,但还是可以说明一些问题。1是存储过程不支持使用模板,就不能用此类招数。2是体现了中间件服务器对数据库引擎的负载分担作用。这个数据库引擎在DAU下只有20%的负载,中间件服务器几乎是100%的CPU负载(瓶颈),可以看到的潜力是,如果有5台中间件服务器,
整个系统的吞吐量有望达到27000TPS的极限,而存储过程(它的数据库引擎CPU负载大约86%)只有大约到2700TPS的潜力。在一个企业里,数据库服务通常是由
昂贵的小型机+磁盘阵列系统实现的,购置或扩充代价昂贵。而中间件服务器则是廉价的PC服务器,可容易配备成阵列。
还是这个想法,每个交易让数据库引擎尽量少干活,让他为更多的交易服务。
|
|