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数据库的公司。 语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的! 对于微软系列的工具除了一遍遍尝试还真没有太好的办法 对于微软系列的东西除了一遍遍尝试还真没有太好的办法 如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。 一个是把SQL语句写到客户端,可以使用DataSet进行加工; 作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题! 连做梦都在想页面结构是怎么样的,绝非虚言 大家注意一点。如下面的例子: 如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。 大家注意一点。如下面的例子:
页:
[1]