数据库访问层全用存储过程好不好?

crystalgirl_200 2008-06-13 03:37:54
今天领导让我看个数据库,看看哪里有问题,好不好
结果我一看,天啊,数据库里没有一个视图,却有上千个存储过程,我估计数据库访问层都封在存储过程里了
其中绝大部分都是一句sql,这样做好吗?完全把sql封在数据库里,一个库里有上千个存储过程,这样是不是反而慢了
asp.net的网站,标准的三层架构--表现层,逻辑层,数据访问层,有大概100多个表,这个情况
大家帮我分析下这种架构好吗
...全文
349 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
coldfusion2 2010-04-12
  • 打赏
  • 举报
回复
很正常

1存储过程的好处多不胜举,使用存储过程本身肯定是无可厚非的。
2关于一条select也一个存储过程,个人觉得很正常,存储过程的意义本身就不是为了简化sql,而是将数据层与逻辑层彻底分离。
3关于是否方便管理,这就看存储过程写的是否规范,命名是否有规律,相关开发文档是否齐全了,如果书写规范不好,即使写在代码里,同样也不方便管理。
utpcb 2008-06-17
  • 打赏
  • 举报
回复
今天领导让我看个数据库,看看哪里有问题,好不好
结果我一看,天啊,数据库里没有一个视图,却有上千个存储过程,我估计数据库访问层都封在存储过程里了

-- 如果不考虑数据库移植等问题,和ORM等设计的话,存储过程还是值得推荐的,很多国外的大系统都会使用相当数量的存储过程来替代业务逻辑层的复杂计算,
类似的Oracle里面很多包也是一个原理,通常存储过程可以直接调用和数据库相关的一些系统存储过程来实现一些业务上的加密或者逻辑控制等等,效率也会
有很大的提高.

其中绝大部分都是一句sql,这样做好吗?

-- 这个就要看需要,如果都是一些简单的SQL,写在存储过程里面是预编译,比你写成嵌入式SQL要稍微好一些,而且维护起来,如果只是数据表结构的改动,只需要维护相应的sp即可,维护工作相对较小,

完全把sql封在数据库里,一个库里有上千个存储过程,这样是不是反而慢了

-- 存储过程的多少不会影响数据库的性能的.初次建库除外,初次建库是存储过程的预编译会占用一定的时间.

asp.net的网站,标准的三层架构--表现层,逻辑层,数据访问层,有大概100多个表,这个情况
大家帮我分析下这种架构好吗

-- 还凑合吧,

PS:
如果一个库里面没有主键或者很少的索引外键之类的,
对数据库的增删改查有影响,
能够建的,尽量建好.

苦行僧说的很好就这些!


--在这个库里只有两个db_owner的用户,这样做不对吧,是不是应该把权限单独给出来??
这个要看你的应用程序使用者的对象了
wangjingxin1981 2008-06-17
  • 打赏
  • 举报
回复
个人认为影响不大
crystalgirl_200 2008-06-16
  • 打赏
  • 举报
回复
在这个库里只有两个db_owner的用户,这样做不对吧,是不是应该把权限单独给出来??
Lacsky 2008-06-14
  • 打赏
  • 举报
回复
可是使用存储过程和使用ORM技术如:NHibernate哪一个更好呢?怎么选择呢?
Andy-W 2008-06-14
  • 打赏
  • 举报
回复
进来关注,学习
zero8500 2008-06-14
  • 打赏
  • 举报
回复
关注 学习
lff642 2008-06-14
  • 打赏
  • 举报
回复
学习.
hery2002 2008-06-14
  • 打赏
  • 举报
回复
今天领导让我看个数据库,看看哪里有问题,好不好
结果我一看,天啊,数据库里没有一个视图,却有上千个存储过程,我估计数据库访问层都封在存储过程里了

-- 如果不考虑数据库移植等问题,和ORM等设计的话,存储过程还是值得推荐的,很多国外的大系统都会使用相当数量的存储过程来替代业务逻辑层的复杂计算,
类似的Oracle里面很多包也是一个原理,通常存储过程可以直接调用和数据库相关的一些系统存储过程来实现一些业务上的加密或者逻辑控制等等,效率也会
有很大的提高.

其中绝大部分都是一句sql,这样做好吗?

-- 这个就要看需要,如果都是一些简单的SQL,写在存储过程里面是预编译,比你写成嵌入式SQL要稍微好一些,而且维护起来,如果只是数据表结构的改动,只需要维护相应的sp即可,维护工作相对较小,

完全把sql封在数据库里,一个库里有上千个存储过程,这样是不是反而慢了

-- 存储过程的多少不会影响数据库的性能的.初次建库除外,初次建库是存储过程的预编译会占用一定的时间.

asp.net的网站,标准的三层架构--表现层,逻辑层,数据访问层,有大概100多个表,这个情况
大家帮我分析下这种架构好吗

-- 还凑合吧,

PS:
如果一个库里面没有主键或者很少的索引外键之类的,
对数据库的增删改查有影响,
能够建的,尽量建好.
ITMiner 2008-06-14
  • 打赏
  • 举报
回复
封装存储过程主要还是更安全
duanzhi1984 2008-06-13
  • 打赏
  • 举报
回复
那不是很慢吗?
看来你要优化下你的数据库了
crystalgirl_200 2008-06-13
  • 打赏
  • 举报
回复
这个库越来越奇怪,索引少得可怜,一个已经有上百万条数据的表没有索引
晓风残月0110 2008-06-13
  • 打赏
  • 举报
回复
帮你up
晓风残月0110 2008-06-13
  • 打赏
  • 举报
回复
帮你up
晓风残月0110 2008-06-13
  • 打赏
  • 举报
回复
首选支持都是proc
都使用proc可能会慢些(程序速度也不是在使用几个proc上提升的),
但是在后期维护上有绝对的优势(这很重要)

--其中绝大部分都是一句sql
尽量写通用的proc,便于开发,并形成规范
-晴天 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 changweishao 的回复:]
1000多个存储过程,其中绝大部分都是一句sql,这样有些不太好吧!
1,维护起来是个问题;
2,全部的操作都放在服务器端操作,对服务器的压力蛮大的。
[/Quote]

从客户端向服务器请求数据,不还是服务器端的事情?!
nzperfect 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lff642 的回复:]
存储过程,触发器.我一般都使用存储过程来代替触发器的功能,所以我建议使用存储过程.

外键我一般都不用,一般都是程序上控制那些数据用户一定要输入.那个不能为空....
[/Quote]

agree。
nzperfect 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wgzaaa 的回复:]
视图我是不用,都用存储过程我看也是有病,管理就是麻烦事,不打开都不知道啥意思,数据库文件也会增大,虽然不知道影响有多大,至少感觉是在脱裤子放屁。
[/Quote]

无语。。。
nzperfect 2008-06-13
  • 打赏
  • 举报
回复
正常,我们的系统没有视图,全部是存储过程,上W。
你要是orm思想开发,肯定不行了。

各有好处吧
开发重要的是规范,只要规范,就可以。
changweishao 2008-06-13
  • 打赏
  • 举报
回复
1000多个存储过程,其中绝大部分都是一句sql,这样有些不太好吧!
1,维护起来是个问题;
2,全部的操作都放在服务器端操作,对服务器的压力蛮大的。
加载更多回复(9)
所有需求全部来自生产实际,源自生产,贴近实战,提高技能。 生产案例生产库A是一台2012年的数据库服务器,存储是戴尔sc8000数据量有20T。数据库版本是11.2.0.3,该数据库是单实例数据库。使用操作系统目录存储,没有使用ASM存储。需要进行数据库服务器和存储迁移。迁移到新服务器和新存储。迁移到新的rac环境,使用本地方式进行升级。 目标:我们需要迁移数据库A到新服务器,新存储。 源库A数据库版本11.2.0.3数据库类型单实例数据存储使用操作系统目录存储,非ASM存储容量20TosRhel6 目标库B数据库版本19.19数据库类型Rac数据存储ASM容量21TOsRhel7 难点。1-数据库服务器需要进行替换2-存储需要进行替换3-容量大,存储没有多余空间,只能才有原地升级方式4-版本跨度大,需要从11203->11204->1919单实例->1919-pdb-rac. 具体步骤1-源服务器数据库命令行创建11203数据库软件2-源服务器数据库命令行创建11203数据库实例3-在目标服务器克隆源库11.2.0.3数据软件。并且在目标服务器搭建源库的dg库。4-开始真正的割接,割接的时候没有业务的。激活11203dg为主库。5-升级11203到112046-升级11204到19.197-配置19.19单实例数据库为rac数据库中的某个pdb。Over. 针对以前学员提出文档不全的意见,其实文档都是有的,都已经上传到百度网盘。这次实战课程整理文档如下:0-创建源库11203单实例1-通过克隆方式在目标服务器rac上面创建11203数据库软件2-在目标库rac数据库上面创建11203的单实例的dg3-目标库rac安装11204单实例软件和升级11203到112044-11204升级到19c数据库

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧