阅读目录
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化。
本系列主要是针对T-SQL的总结。
【T-SQL基础】06.透视、逆透视、分组集
【T-SQL基础】07.数据修改
【T-SQL基础】09.可编程对象
----------------------------------------------------------
【T-SQL进阶】01.
----------------------------------------------------------
【T-SQL性能调优】02.Transaction Log的使用和性能问题
【T-SQL性能调优】03.执行计划
【T-SQL性能调优】04.死锁分析
持续更新......欢迎关注我!
概述:
本篇主要是对SQL中事务和并发的详细讲解。
一、事务
1.什么是事务
为单个工作单元而执行的一系列操作。如查询、修改数据、修改数据定义。
2.语法
(1)显示定义事务的开始、提交
1 2 3 4 |
|
(2)隐式定义
如果不显示定义事务的边界,则SQL Server会默认把每个单独的语句作为一个事务,即在执行完每个语句之后就会自动提交事务。
3.事务的四个属性ACID
(1)原子性Atomicity
1.事务必须是原子工作单元。事务中进行的修改,要么全部执行,要么全都不执行;
2.在事务完成之前(提交指令被记录到事务日志之前),系统出现故障或重新启动,SQL Server将会撤销在事务中进行的所有修改;
3.事务在处理中遇到错误,SQL Server通常会自动回滚事务;
4.少数不太严重的错误不会引发事务的自动回滚,如主键冲突、锁超时等;
5.可以使用错误处理来捕获第4点提到的错误,并采取某种操作,如把错误记录在日志中,再回滚事务;
6.SELECT @@TRANCOUNT可用在代码的任何位置来判断当前使用SELECT @@TRANCOUNT的地方是否位于一个打开的事务当中,如果不在任何打开的事务范围内,则该函数返回0;如果在某个打开的事务返回范围内,则返回一个大于0的值。打开一个事务,@@TRANCOUNT=@@TRANCOUNT+1;提交一个事务,@@TRANCOUNT-1。
(2)一致性Consiitency
1.同时发生的事务在修改和查询数据时不发生冲突;
2.一致性取决于应用程序的需要。后面会讲到一致性级别,以及如何对一致性进行控制。
(3)隔离性Isolation
1.用于控制数据访问,确保事务只访问处于期望的一致性级别下的数据;
2.使用锁对各个事务之间正在修改和查询的数据进行隔离。