25.尽量避免使用游标,由于游标的效率较差,假设游标操作的数据超过1万行,那么就应该考虑改写。
26.使用基于游标的方法或暂时表方法之前,应先寻找基于集的解决方式来解决这个问题,基于集的方法通常更有效。
27.与暂时表一样。游标并非不可使用。对小型数据集使用 FAST_FORWARD 游标通常要优于其它逐行处理方法。尤其是在必须引用几个表才干获得所需的数据时。
在结果集中包括“合计”的例程通常要比使用游标运行的速度快。假设开发时 间同意,基于游标的方法和基于集的方法都能够尝试一下。看哪一种方法的效果更好。
28.在全部的存储过程和触发器的开始处设置 SET NOCOUNT ON ,在结束时设置 SET NOCOUNT OFF 。无需在运行存储过程和触发器的每个语句后向client发送 DONE_IN_PROC 消息。
29.尽量避免大事务操作,提高系统并发能力。
30.尽量避免向client返回大数据量,若数据量过大,应该考虑相应需求是否合理。
实际案例分析:拆分大的 DELETE 或INSERT 语句,批量提交SQL语句
假设你须要在一个的站点上去运行一个大的 DELETE 或 INSERT 查询,你须要非常小心。要避免你的操作让你的整个站点停止相应。由于这两个操作是会锁表的。表一锁住了,别的操作都进不来了。
Apache 会有非常多的子进程或线程。
所以,其工作起来相当有效率,而我们的server也不希望有太多的子进程。线程和链接。这是极大的占server资源的事情,尤其是内存。
假设你把你的表锁上一段时间,比方30秒钟,那么对于一个有非常高访问量的站点来说,这30秒所积累的访问进程/线程,链接,打开的文件数,可能不仅仅会让你的WEB服务崩溃,还可能会让你的整台server马上挂了。
所以,假设你有一个大的处理。你一定把其拆分,使用 LIMIT oracle(rownum),sqlserver(top)条件是一个好的方法。以下是一个mysql演示样例:
while(1){//每次仅仅做1000条
mysql_query(“delete from logs where log_date <= ’2015-11-01’ limit 1000”);
if(mysql_affected_rows() == 0){//删除完毕,退出。break;
}//每次暂停一段时间。释放表让其它进程/线程访问。
usleep(50000)
}
Facebook 开源库 Pop 的 GitHub 主页:facebook/pop · GitHub,介绍:Playing with Pop (i)
Canvas 项目主页:Canvas - Simplify iOS Development,介绍:Animate in Xcode Without Code
拿 Canvas 来和 Pop 比事实上不大合适,虽然两者都自称「库」,可是「库」这个词的含义有所差别。本质上 Canvas 是一个「合集」而 Pop 是一个「引擎」。
先说 Canvas。
Canvas 的目的是「Animate in Xcode Without Code」。开发人员能够通过在 Storyboard 中指定 User Defined Runtime Attributes 来实现一些 Canvas 中预设的。也就是他站点上能看到的那些。可是除了更修改画的 delay 和 duration 基本上不能调整其它的参数。
Pop 就不一样了。
假设说 Canvas 是对 Core Animation 的封装。Pop 则是对 Core Animation(以及 UIDynamics)的再实现。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-76433-10.html
这是在中国不是在美国