关于网站update数据问题,网站的并发比较高~~

zsyok 2015-07-04 01:46:42
如果我要 update 大约10~2条条记录 大约有 4个字段要更新,那么我把这十条记录拼成一个字段串去更新
a1,b1,c1,d1|a2,b2,c2,d2|a3,b3,c3,d3.......
在数据库存取过程里 里切来然后 while ... update
这样效率高点,还是在程序里,单条去UPDATE ?
前题系统的网站并发比较高。。

或者有什么好的其它方法?
...全文
279 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
myangelo 2015-08-21
  • 打赏
  • 举报
回复
update 语句当字符串传入,然后一次运行··
shizhusz110 2015-07-05
  • 打赏
  • 举报
回复
简单的update真没有必要去刻意要求,真的连单个update就经受不起,要么更新条件问题,要么系统就要处于设计架构有问题。 数据库操作逻辑尽量简单,不要开启大的事务。
zsyok 2015-07-04
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
其实我讨论了DBA的角度,和现在的架构师的角度。没有哪一个是错误的,关键是有时候其实需要舍掉一些“并没有犯错的”做法,才能提升效率。而这个说法会得罪许多保守的读书人,所以我只能比较含蓄地说。
什么项目,都是在变化的,没有什么架构可以经得起时间,业务的变化,而不去改变的。 什么都没有最快,和最好,只有更好。要推翻一个项目重头再来,是伤不起的。 编程艺术,却没有人给你这么多时间去做研发这玩儿。
ygflydream 2015-07-04
  • 打赏
  • 举报
回复
把 update 语句弄成一个 sql 一次提交过去 update ......; update ......; update......;update......;
  • 打赏
  • 举报
回复
其实我讨论了DBA的角度,和现在的架构师的角度。没有哪一个是错误的,关键是有时候其实需要舍掉一些“并没有犯错的”做法,才能提升效率。而这个说法会得罪许多保守的读书人,所以我只能比较含蓄地说。
  • 打赏
  • 举报
回复
引用 4 楼 zsyok 的回复:
[quote=引用 2 楼 sp1234 的回复:] 异步的业务工作流、最终一致性,大数据计算,等等类似的概念,都是解决这类架构的办法。但是说到抠在“优化sql语句,使用存储过程”等角度,肯定是没有错误的。这就好像有人用c#,有人硬说“c#没有c语言效率高(仅指写一个数学计算程序)”,这也是没有错的,关键是未必适用于架构师。如果架构是就是“用c语言来代替c#语言,用存储过程来代替从应用服务器执行多条sql语句”这类做法,那么可能也就只会见到一丁点改进,而等着竞争对手的公司直接超越自己的公司吧。
之前把很多操作都堆给数据库处理,导致并发一多,数据库就瓶颈了,卡得不行~~现在把数据库的代码,迁出让程序处理~ [/quote] 你不是说他们没时间做设计嘛。可是重新设计工作流程,分解一些数据库事务,这都所需要从“根上”先把一个满脑子只有DBA技巧的人改造成一个程序设计师的。
ajianchina 2015-07-04
  • 打赏
  • 举报
回复
我的理解是在默认隔离级别下,高并发update会阻塞其他事务访问这些数据,这可能是导致效率低下的关键因素。这里有两篇文章,你可以大概看看,作者分为了两篇来讲的,看是否能找到自己的解决方案。 http://blog.csdn.net/lishehe/article/details/42279147 http://blog.csdn.net/lishehe/article/details/42303457
zsyok 2015-07-04
  • 打赏
  • 举报
回复
引用 5 楼 ajianchina 的回复:
楼主把你们的系统构架、硬件及网络环境这些东西都说一下,P神才能给你干货。
使用asp.net 3.5 硬件就是租用整台服务器,2M宽带
ajianchina 2015-07-04
  • 打赏
  • 举报
回复
楼主把你们的系统构架、硬件及网络环境这些东西都说一下,P神才能给你干货。
zsyok 2015-07-04
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
异步的业务工作流、最终一致性,大数据计算,等等类似的概念,都是解决这类架构的办法。但是说到抠在“优化sql语句,使用存储过程”等角度,肯定是没有错误的。这就好像有人用c#,有人硬说“c#没有c语言效率高(仅指写一个数学计算程序)”,这也是没有错的,关键是未必适用于架构师。如果架构是就是“用c语言来代替c#语言,用存储过程来代替从应用服务器执行多条sql语句”这类做法,那么可能也就只会见到一丁点改进,而等着竞争对手的公司直接超越自己的公司吧。
之前把很多操作都堆给数据库处理,导致并发一多,数据库就瓶颈了,卡得不行~~现在把数据库的代码,迁出让程序处理~
zsyok 2015-07-04
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
在一个“很老的”DBA看来,最有理由的说法就是“网络访问速度问题”造成的速度差距。比如说一个“事务”有三条可执行语句
tran.Begin();
comm.Execute("insert ......");
comm.Execute("update ......");
tran.Commit();
那么你去看那些老的(现在可能已经被淘宝的大公司挤出去了)的老DBA的技术博客,他们会举出这样的数据事实,就是update语句在某些应用服务上的执行时间是2秒钟,造成了事务长时间加锁,而同样的语句在数据服务器本地访问则只需要20毫秒。 这个结论对不对呢?应该说没有错误。这就说明如果跨服务器的通讯不稳定或者速度慢(例如两个IDC机房之间),那么就要尽量少选择或者尽量不选择具有“事务操作”的算法逻辑。或者将一些核心的功能以SOA的方式在离数据库服务器最近(甚至就是本地)的服务器上发布,其它应用服务器去调用。而不要在其它的通讯延迟较高的应用服务器上去远程访问关系数据库系统。 而NoSql由于没有事务,这方面完全不纠结。 但是为什么这些DBA往往都被大公司清理掉了呢?因为他们是传统关系数据库的卫道士,一些系统所需要的“最终一致性”特性需要新的业务观念来实现。所以这里的“其它方法”就是学习最3、4年越来越流行的新思维、新架构。
我们都是一天到晚做项目,没什么时间学别的新技术。 能够指教一下那个效率高点?
  • 打赏
  • 举报
回复
异步的业务工作流、最终一致性,大数据计算,等等类似的概念,都是解决这类架构的办法。但是说到抠在“优化sql语句,使用存储过程”等角度,肯定是没有错误的。这就好像有人用c#,有人硬说“c#没有c语言效率高(仅指写一个数学计算程序)”,这也是没有错的,关键是未必适用于架构师。如果架构是就是“用c语言来代替c#语言,用存储过程来代替从应用服务器执行多条sql语句”这类做法,那么可能也就只会见到一丁点改进,而等着竞争对手的公司直接超越自己的公司吧。
  • 打赏
  • 举报
回复
在一个“很老的”DBA看来,最有理由的说法就是“网络访问速度问题”造成的速度差距。比如说一个“事务”有三条可执行语句
tran.Begin();
comm.Execute("insert ......");
comm.Execute("update ......");
tran.Commit();
那么你去看那些老的(现在可能已经被淘宝的大公司挤出去了)的老DBA的技术博客,他们会举出这样的数据事实,就是update语句在某些应用服务上的执行时间是2秒钟,造成了事务长时间加锁,而同样的语句在数据服务器本地访问则只需要20毫秒。 这个结论对不对呢?应该说没有错误。这就说明如果跨服务器的通讯不稳定或者速度慢(例如两个IDC机房之间),那么就要尽量少选择或者尽量不选择具有“事务操作”的算法逻辑。或者将一些核心的功能以SOA的方式在离数据库服务器最近(甚至就是本地)的服务器上发布,其它应用服务器去调用。而不要在其它的通讯延迟较高的应用服务器上去远程访问关系数据库系统。 而NoSql由于没有事务,这方面完全不纠结。 但是为什么这些DBA往往都被大公司清理掉了呢?因为他们是传统关系数据库的卫道士,一些系统所需要的“最终一致性”特性需要新的业务观念来实现。所以这里的“其它方法”就是学习最3、4年越来越流行的新思维、新架构。

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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