mssql里事务的详解
整理转贴
一、事务的属性
事务具有acid属性:即 atomic原子性, consistent一致性, isolated隔离性, durable永久性
原子性:事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全回滚,全部不保留
一致性:事务完成或者撤销后,都应该处于一致的状态
隔离性:多个事务同时进行,它们之间应该互不干扰.应该防止一个事务处理其他事务也要修改的数据时,不合理的存取和不完整的读取数据
永久性:事务提交以后,所做的工作就被永久的保存下来
二、事务并发处理会产生的问题
丢失更新:当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题、每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。
脏读:当第二个事务选择其它事务正在更新的行时,会发生未确认的相关性问题。 第二个事务正在读取的数据还没有确认并且可能由更新此行的事务所更改。
不可重复读:当第二个事务多次访问同一行而且每次读取不同的数据时,会发生不一致的分析问题。不一致的分析与未确认的相关性类似,因为其它事务也是正在更改第二个事务正在读取的数据。 然而,在不一致的分析中,第二个事务读取的数据是由已进行了更改的事务提交的。而且,不一致的分析涉及多次(两次或更多)读取同一行,而且每次信息都由其它事务更改;因而该行被非重复读取。
幻像读:当对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,会发生幻像读问题。 事务第一次读的行范围显示出其中一行已不复存在于第二次读或后续读中,因为该行已被其它事务删除。同样,由于其它事务的插入操作,事务的第二次或后续读显示有一行已不存在于原始读中。
三、事务处理类型
自动处理事务:系统默认每个t-sql命令都是事务处理 由系统自动开始并提交
隐式事务:当有大量的ddl 和dml命令执行时会自动开始,并一直保持到用户明确提交为止,切换隐式事务可以用set implicit_transactions.为连接设置隐性事务模式.当设置为 on 时,set implicit_transactions 将连接设置为隐性事务模式。当设置为 off 时,则使连接返回到自动提交事务模式
用户定义事务:由用户来控制事务的开始和结束 命令有: begin tran, commit tran,rollback tran 命令
分布式事务:跨越多个服务器的事务称为分布式事务,sql server 可以由dtc microsoft dist
相关文档:
select语句前加:
declare @d datetime
set @d=getdate()
并在select语句后加:
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
转自:动态网制作指南 www.knowsky.com
这是简易的查看执行时间的方法。
===========================================(一下内容转自:CSDN)
MSSQL Server中通过查 ......
--字段添加说明
EXEC sp_addextendedproperty 'MS_Description', '要添加的说明', 'user', dbo, 'table', 表名, 'column', 列名
--删除字段说明
EXEC sp_dropextendedproperty 'MS_Description', 'user', dbo, 'table', 表名, 'column', 字段名
--查看字段说明
SELECT
[Table Name] = i_s.TAB ......
How is MSSQL using memory?
http://www.sqlhacks.com/Administration/Memory-Usage
Memory is one the most important factor affecting MSSQL performance.
As an administrator, you should be monitoring the memory
regularly. When Microsoft SQL Server runs out of memory, it will use
virtual memory: ie: ......
Sql2005中使用ow_number() partition进行分组实验,
SQL:
select * from stu
select id,row_number() over (partition by snm order by id) from stu
结果:
id snm
----------------
111 111V
111 111W
222 222N
333 3123
444 3123
555 3123
666 3232
777 3232
--分组后的结果
id &n ......
php教程 调用mssql存储过程实例应用
用mssql_init语句用于初始化存储过程,而后调用mssql_bind语句指定存储过程参数,最后调用mssql_execute执行存储过程。
*/
//连接mssql数据库教程服务器
$link = mssql_connect("127.0.0.1", "sa", "sa") or die("Can't connect sql server");
mssql_sele ......