SQL防止数据脏读脏写
SQL防止数据脏读脏写 最近开发了一个公安机关的分布式系统,在系统中要求若干个人同时可以对数据库进行读写操作。这时出现了一些联想问题: 1 当多于1人的用户对同一条记录进行写操作时,先写入的用户的数据必定会被后写入的用户的数据override掉,这个问题如何解决? 2 希望看比某一条记录更新的(在这条记录修改后,才进行修改和添加的)所有记录,如何实现(ID不连续,记录时常有更新)? 3 希望看到本行记录的最新版本,如果有新版本就读到数据集,如果没有就不读到数据集?(行版本戳) -------------------...
SQL日志统计
select distinct diary.userid , a.name, sum(case when diary>=1 then 1 else 0 end) as '写日志' from diary inner join a on a.id=diary.userid group by diary.userid,a.id,a.name 说明:当你的diary大于1时,也设为1,如果没有写,那么为0 ,这样用sum进行汇总也就求出了结果。 ID 姓名 日志数 1 zzl 2 2 zql 2 3 zzd 1 4 gy 4
SQL语句优化技巧(5)
项目完成了,现在进入了维护阶段,一切都很平静。。。 突然有一天,老板来了个需求,要求用户有一个新的功能,即会员可以为好友推荐,进行本网站,当推荐的人真的来本网站注册后,并进行了邮件确认后,同时要给那个会员一些好处,比如,送它积分。 这个需要无疑要牵动用户表,这可如何是好,是在原表基础上改,还是。。。 首先如如果在原表上改,牵动太大,所以就想到了面向对象的“开闭原则”,在不改变原表的同时,添加一个附加表,即和原表有相同的主键,并且是一对一的关系(有时,...
SQL语句优化技巧(4)
数据库实训:适当数据库冗余 在上一篇文章中,告诉了大家数据库的三大范式,最基础的莫过于数据表中不能有冗余了,但今天主要说的已经“冗余”,而且,有时候冗余并非都是坏事! 如,以下是一个大家伙,用户表user_info,它里面有用户的地址ID,如cityid,可能还有用户扩展表的信息,用户积分表的信息等等,这些信息至少需要三个表关联才能得到我们所需要的信息,而实际情况往往比这个还要复杂的多。 这时,一种数据冗余的思想产生了,它相当于是用空间来换时间,即数据库在磁盘上占用的空间多了,但查询的性能提高了...
SQL语句优化技巧(3)
我们做软件开发的,大部分人都离不开跟数据库打交道,特别是 ERP开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行。如果数据量大,人员流动大,那么我们还能保证下一段时间系统还能顺畅的运行吗?我们还 能保证下一个人能看懂我们的存储过程吗?那么我结合公司平时的培训和平时个人工作经验和大家分享一下,希望对大家有帮助。 要知道SQL语句,我们有必要知道SQL Server查询分析器怎么执行我们的SQL语句的。我们很多人会看执行计划,或者用Profiler来监视和调优查询语句或者存储过程慢的原因,但是如 果...
SQL语句优化技巧(2)
1、应用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;通过 搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;能够分 开的操作尽量分开处理,提高每次的响应速度;在数据窗口使用SQL时,尽量把使 用的索引放在选择的首列;算法的结构尽量简单;在查询时,不要过多地使用通配 符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECT COL1,COL2 FROM T1;在可能的情况下尽量限制尽量结果集行数如:SELECT TOP 300 COL1,COL2,COL3 FROM T1,因为某些情况下用户是不需要那么多的...
实现SQL Server 2005同步备份
SQL Server 2005实现同步备份 数据库复制: 简单来说,数据库复制就是由两台服务器,主服务器和备份服务器,主服务器修改后,备份服务器自动修改。 复 制的模式有两种:推送模式和请求模式,推送模式是主服务器修改后,自动发给备份服务器,请求模式是,备份服务器自动去请求,个人开始也比较重视去测试两个 模式的差别,但是测试发现,其实两个模式差别不是很大,在当今的服务器配置中,没必要考虑这么多,虽然会有一些差别,但是可在可以忽略的范围之内,建议直 接选择推送模式,因为配置起来相对简单 数据库...
对于SQL Server数据类型选择的一点思考
对于SQL Server数据类型选择的一点思考 简介 SQL Server每个表中各列的数据类型的选择通常显得很简单,但是对于具体数据类型的选择的不同对性能的影响还是略有差别。本篇文章对SQL Server表列数据类型的选择进行一些探索。 一些数据存储的基础知识 在SQL Server中,数据的存储以页为单位。八个页为一个区。一页为8K,一个区为64K,这个意味着1M的空间可以容纳16个区。如图1所示: 图1.SQL Server中的页和区 如图1(PS:发现用windows自带的画图程序画博客中的图片也不错)可以看出,SQL Server中的...
什么是数据库镜像、数据库快照、数据库复制
什么是数据库镜像、数据库快照、数据库复制? 数据库镜像--数据库快照--数据库复制是数据库开发人员耳熟能详的一些名词了,那么他们究竟有什么好处和优势呢?举个很简单的例子,一个统计往往会对一个操作比较频繁的数据库造成很大的影响,例如数据库有1000w的数据,你sum一下,那估计这个程序需要 卡N秒,这样就对其他操作造成了非常大的影响,如果有一个一模一样的镜像,那么就算造成N+N秒,对于主数据库也是没有影响的,在这里简单说一下各个操作的优势和缺点,欢迎拍砖 ①:数据库镜像:最低要求:2005以上版本...