以下是任务背景描述: 小李是一家销售图书及音像制品的公司的DBA,负责管理公司的各种系统的后台SQL
Server数据库,随着公司业务的发展,公司CRM(自己公司定制开发的系统)系统中会员的数量越来越大,每月以10万的用户数量在增长,目前CRM系统中已经存储了有1000万条用户数据库及相关信息。
公司的业务运作方式是,通过一个拥有30个座席的呼叫中心,来根据客户的信息,给客户打电话销售相关产品;客户可以免费获得产品阅读和使用,但使用3个月后需要付款;整个发货,收货,收款等业务依靠定制的CRM系统来完成。
企业IT具体环境配置:
1 公司有一台Web服务器,运行着公司的门户及网上定购系统,负责接受网上的在线订单;另外还运行着公司的基于Web的CRM系统,和呼叫中心相连;
2 另外一台web服务器,运行着用户社区;
3 有2台SQL
Server数据库服务器,一台对应CRM的用户库;另外一台对应着社区用户数据库;2库之间有关系,社区用户库中,有一部分会员是CRM系统中的用户;
在第一季任务中提到:
1 随着用户数据量的增加,CRM系统及其它使用用户库的系统越来越慢,做一个查询有时需要等2-3分钟才能看到结果。
网友好色如歌给出了3条建议:
1 监测DB运行情况,看看运行负载的压力在哪个方面
如果是I/O压力,可能程序里对数据库的访问是不是太频繁了,可以分析一下应用程序的代码,可以考虑使用缓存机制存放只读数据、频繁访问的数据;
2 如果是CPU占用太大,说明SQL执行效率有问题,需要记录下最耗费资源的sql,然后一个个分析;看看是不是索引没有建好,比如建的索引没有被命中;
3 可以再分析应用程序,看看数据呈现的分页、看看数据读取的效率;可以把OLTP和OLAP的访问用户库的功能分拆开来。
其中首先应该检查的是应用程序的性能,检查这一点时,也请同时注意分析SQL语句的性能。就是先判断每个应用页面中调用的SQL语句的执行时间。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1384/viewspace-624495/
,如需转载,请注明出处,否则将追究法律责任。