首页 / 软件开发 / .NET编程技术 / 改进.NET应用程序的性能和可伸缩性(四)-SQL Server性能
改进.NET应用程序的性能和可伸缩性(四)-SQL Server性能2011-12-17 博客园 蛙蛙池塘向上扩容和平面扩容Optimize the application before scaling up or scaling out.在你进行向上扩容和平面扩容前优化你的应用。译注:你可以减少无效的锁,使用参数化查询,增加合适的索引等操作来提高磁盘,内存和CPU的利用 率。Address historical and reporting data.处理历史和用于报表的数据。译注:一个运行时间很长的系统肯定有很多历史数据,在现网库里一直保存这些数据,肯定会给线上 的应用带来负面影响,查询一个小库和查询一个大库的开销差别很大,所以一般应该把历史数据的一部分 分到不同的区里,历史数据是只读的,甚至可以放到另外的只读数据库里。用于报表的数据也是,大多都 是历史数据,可以建立单独的数据仓库去存放他们,不要和现网库放在一起。Scale up for most applications.对大多数应用进行向上扩容。译注:如果你在处理了历史数据和报表数据后还有更好的硬件,那就先添加这些新的硬件,比如更快 的CPU和硬盘,更大的内存等,但添加了新的硬件后记着修改你的SQLSERVER的配置以适应这些新硬件,比 如要打开/3G开关以使用更多的内存。Scale out when scaling up does not suffice or is cost-prohibitive.在你向上扩容仍不满足或者向上扩容成本太高的时候使用横向扩容。译注:横向扩容的时候可能需要对一些表进行水平分区,使这些分区到不同的机器上,而这种办法可 能需要在多台机器间用SQLSERVER的复制功能复制数据。而且使用大量的PC server做成的联合服务器在在 灾后恢复和容灾上也更加复杂,你需要权衡引入这些复杂性和花钱买硬件哪个更值得。SchemaDevote the appropriate resources to schema design.给予适当的资源用来进行schema设计。译注:在进行架构设计前一定要花费足够的时间和投入足够的资源来进行业务逻辑收集,设计及测试 数据模型,如果上线之后再修改数据模型代价将非常高。Separate online analytical processing (OLAP) and online transaction processing (OLTP) workloads.分割OLAP和OLTP负载。译注:OLAP的特点是经常执行一些长时间的查询,OLTP的特点是都是小而多的事务,一般在1秒中就得 返回,长时间运行的查询分析,报表查询和即席查询会阻碍插入和其它OLTP的事务。如果需要同时支持两 种类型的工作,考虑创建一个报表服务器来支持OLAP和报表,可以使用SSAS来支持这些工作。Normalize first, denormalize later for performance.先遵守范式设计数据库,然后再不遵守范式来优化性能。译注:遵循范式设计数据库可以让数据库减少冗余,但写出来的查询语句却很复杂,带有很多join等 ,而且会降低性能,有时候为了防止一些常用的查询跨表查询,会在多个表里存放相同的数据,以提高性 能,但这违反了范式。