第二个灵魂 发表于 2015-1-16 22:36:06

MYSQL编程:将一个更新分别为几个批次

任何规模的组织都可能受益于外包服务,并在一个标准化和优化的平台上统一其数据库管理任务。基于其本身的特性,DBaaS提供了敏捷和高效的数据库服务,它可以支持多变的需求。问:我想以一次5,000行的体例批量更新一个年夜型表,但我不晓得如何支解数据。该表不包括增量数字或整数主键。如何才干在坚持优秀功能的同时完成数据更新呢?
答:假如晓得哪些行还没有被更新,您可使用复杂的谓词来扫除已更新的行,ROWCOUNT设置能够匡助您批量支解数据。以下的代码清单申明了怎样利用该设置:
SETROWCOUNT1000
WHILE(1=1)BEGIN
BEGINTRANSACTION
UPDATE...set...,MyLastUpdate=date,...WHERE
MyLastUpdate<date
--更新1000未更新行
IF@@ROWCOUNT=0
BEGIN
COMMITTRANSACTION
BREAK
END
COMMITTRANSACTION
END
在指定的行数前往后,ROWCOUNT将使SQLServer中断查询处置。这项手艺很有效,由于它制止了大批更新而至的并发射中;更新中的行数越少,更新义务使其他用户不克不及会见该数据的大概性就越小。分离事件日记备份,这一办法还可使您的事件日记的巨细降至最低。
假如没有辨认已更新行的机制,您可使用游标遍历一切数据并提交每一个x值。可是,游标占用服务器资本的工夫一般要多于基于汇合的语句。
―MicrosoftSQLServer开辟团队
”由于MySQL已经是一个运行了众多知名Web2.0网站的数据,包括Craigslist、Digg、Wikipedia和Google等,或许我们可以说每一个Web2.0公司实质上是一个使用MySQL数据库的公司。

小魔女 发表于 2015-1-17 12:24:31

语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!

再见西城 发表于 2015-1-17 17:55:40

对于微软系列的工具除了一遍遍尝试还真没有太好的办法

愤怒的大鸟 发表于 2015-1-21 05:38:23

对于微软系列的东西除了一遍遍尝试还真没有太好的办法

透明 发表于 2015-1-30 08:49:06

如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。

飘灵儿 发表于 2015-2-6 09:16:56

一个是把SQL语句写到客户端,可以使用DataSet进行加工;

飘飘悠悠 发表于 2015-2-15 21:33:05

作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!

乐观 发表于 2015-3-4 14:05:11

连做梦都在想页面结构是怎么样的,绝非虚言

老尸 发表于 2015-3-11 20:00:44

大家注意一点。如下面的例子:

山那边是海 发表于 2015-3-19 10:53:58

如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。

若相依 发表于 2015-3-27 20:53:13

大家注意一点。如下面的例子:
页: [1]
查看完整版本: MYSQL编程:将一个更新分别为几个批次