我们项目组目前从事的项目开发是B/S结构的,使用的是SQL Server数据库,我们把所有的数据处理都放在了存储过程里面,对于一个表来说至少要写三个存储过程,插入,编辑,删除,比较复杂的查询还有很多,目前系统存在400多表,但是存储过程已经达到1000多了,我不知道这样是否影响性能,但是领导要求,必须减少存储过程的数量,我想知道这样大型的数据库,比较有经验的公司是如何处理的,怎样要保证数据库性能等设计思路,希望大家帮忙!

解决方案 »

  1.   

    存储过程多肯定会影响系统性能的啊,
    原理例如你调用存储过程,系统必须去查找这个存储过程。建议能用SQL语法解决的,例删除一条数据之类的最好用语句而不要使用存储过程。
      

  2.   

    理论上,查找存储过程对性能几乎没有影响,因为不过是在议长有索引的1000行的表找出一条记录。要说存储过程对性能的影响,只需要关注内存的分配问题,sql server使用的内存几乎都是在内存池分配,在内存池内分配的主要对象类型是:系统级数据结构 
    这些是支持 SQL Server 实例全局数据(如数据库描述符和锁表)的数据结构。高速缓冲存储器 
    这是数据页读入的缓冲区页池。过程高速缓存 
    这是包含所有当前在实例中执行 Transact-SQL 语句的执行计划的页池。日志高速缓存 
    每个日志都有一个缓冲区页高速缓存用于读写日志页。日志高速缓存与高速缓冲存储器分开管理以减少日志和数据缓存区之间的同步。这将产生快速可靠的代码。连接环境 
    每个连接都有一组数据结构记录连接的当前状态。这些数据结构包含查询和存储过程的参数值、游标定位信息、当前引用的表等项目。这里需要注意 高速缓冲存储器、过程高速缓存、日志高速缓存 这三个的大小是和具体的数据库以及硬件条件相关的,而且是争用的,对性能有较大影响。
      

  3.   

    我們公司在做Webserver的時候,簡單的刪除增加編輯,都是寫在程序裡的.
    一般存儲過程只用來處理一些數據,有些東西甚至都放到前台程序搞定,
    其實如果你調那麼多存儲過程,將來別的人接手,維護起來倒有點吃力了:)
      

  4.   

    把插入,编辑,删除操作写进一个存储过程,sp附带一个参数判断他是做何操作:插入,修改,删除.
    不过这样带参数的话可能就会很多.应用程序调用sp以及维护都会比较麻烦
      

  5.   

    复杂的SQL文才用存储过程吧,简单的语句也用就不太合理了,存储过程是要占资源的