SQL SERVER 查询性能优化之分析事务与锁
一、使用工具观察与分析数据库中锁信息 对于并发系统、对于有大量读写数据库操作的业务系统等,当多人同时访问数据库时,最复杂的情况之一就是大量的事务与资源纠缠在一起,相互被锁而彼此等待, 也称为死锁。当数据库中出现很多很多锁时,系统瞬间就无法提供正常服务。此时观察系统资源的使用情况,会发现CPU使用率不高,内存占用量也不高,还有很多未使用的内存,网络带宽也充足,硬盘也不繁忙,通过数据库管理工具查询的话,SQL SERVER中的数据也正常无误,但是使用系统的用户访问此数据库时却要...
数据库比较
各种主流数据库比较 主流数据库 PostgreSQL 支持Windows,Linux,FreeBSD,Mac和Solaris平台 TB级数据库 号称“世界上最先进的开源数据库” oracle 支持所有主流平台运行 完全支持所有工业标准 采用完全开放策略 对开发商全力支持 获得最高认证级别的ISO标准安全认证 性能最高,保持开放平台下TPC-D和TPC-C的世界记录 多层次网络计算 提供GUI和命令行 完全向下兼容,完全没有风险 对硬件要求高 Firebird SQL Server Linux,Unix,MacOS,Windows,Solaris 全功能的,强...
Sql Server编译原理
当 Sql Server 收到任何一个指令,包括:查询、批处理、存储过程、触发器、预编译指令和动态SQL Server语句,要完成语法解析、语义分析,然后再进行"编译",生成能够运行的"执行计划"。在编译的过程中,SQL Server 会根据所涉及的对象的架构、统计信息,以及指令的具体内容,估算可能的执行计划,以及它们的成本,最后选择一个SQL Server认为成本最低的语句。 执行计划生成之后,SQL Server 通常会把它们缓存到内存里,术语统称它们叫“Plane Cache”。以后同样的语句执行,SQL Server就可以使用同样的执行计划,而...
从SQL语句的角度提高数据库的访问性能
最近公司来一个非常虎的DBA,10几年的经验,这里就称之为蔡老师吧,在征得我们蔡老同意的前提下 ,我们来分享一下蔡老给我们带来的宝贵财富,欢迎其他的DBA来拍砖。 目录 1、什么是执行计划?执行计划是依赖于什么信息 2、 统一SQL语句的写法减少解析开销 3、 减少SQL语句的嵌套 4、 使用“临时表”暂存中间结果 5、 OLTP系统SQL语句必须采用绑定变量 6、 倾斜字段的绑定变量窥测问题 7、 begin tran的事务要尽量地小 8、 一些SQL查询语句应加上nolock 9、加nolock后查询经常发生页分裂的表,容易产生跳读或重复...
SQL Server创建约束
SQL Server 2008 如何查看与创建约束 SQL Server中有五种约束类型,分别是 PRIMARY KEY约束、FOREIGN KEY约束、UNIQUE约束、DEFAULT约束、和CHECK约束。查看或者创建约束都要使用到 Microsoft SQL Server Managment Studio。 1. PRIMARY KEY约束 在表中常有一列或多列的组合,其值能唯一标识表中的每一行。这样的一列或多列成为表的主键(Primary Key)。一个表只能有一个主键,而且主键约束中的列不能为空值。 查 看PRIMARY KEY约束可以在object explorer中依次展开Databases –> 选择你要查看的数据库(...
SQL Server查询优化
简介 当查询优化器(Query Optimizer)将T-SQL语句解析后并从执行计划中选择最低消耗的执行计划后,具体的执行就会交由执行引擎(Execution Engine)来进行执行。本文旨在分类讲述执行计划中每一种操作的相关信息。 数据访问操作 首先最基本的操作就是访问数据。这既可以通过直接访问表,也可以通过访问索引来进行。表内数据的组织方式分为堆(Heap)和B树,其中表中没有建立聚集 索引时数据是通过堆进行组织的,这个是无序的,表中建立聚集索引后和非聚集索引的数据都是以B树方式进行组织,这种方式数据是...
SQL Server死锁详解
站长提示:此文章适合细细体会。 简介 死锁的本质是一种僵持状态,是多个主体对于资源的争用而导致的。理解死锁首先需要对死锁所涉及的相关观念有一个理解。 一些基础知识 要理解SQL Server中的死锁,更好的方式是通过类比从更大的面理解死锁。比如说一个经典的例子就是汽车(主体)对于道路(资源)的征用,如图1所示。 图1.对于死锁的直观理解 在图1的例子中,每队汽车都占有一条道路,但都需要另外一队汽车所占有的另一条道路,因此互相阻塞,谁都无法前行,因此造成了死锁。由这个简单的例子可...
MySQL与SQL server触发器的区别
触发器经常用于加强数据的完整性约束和业务规则等。在MySQL与SQL操作中经常会用到,下文中国就为大家讲述MySQL与SQL的触发器的不同写法,希望对大家能够有所帮助。 触发器作用: 当在SQL、MySQL数据库中一张表中插入一条记录时,触动触发器,使同一数据库的另一张表插入相同记录。 在学习的过程中,发现两者的写法是不同的。 1、在SQL中建立两张表sql_test,sql_tem。(两张表的字段是一样的) 复制代码 代码如下: create table sql_test ( id int, name varchar(16) ) create table sql_tem ( id int, name varc...
SQL Server索引高级教程2
SQL Server索引进阶第二篇:深入非聚集索引 索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员因为不恰当的创建索引,最后使得其效果适得其反,可以说“成也索引,败也索引”。 本系列文章来自Stairway to SQL Server Indexes 本系列文章的第一篇介绍了SQL Server的索引,尤其重点介绍了非聚集索引,在我们的第一个例子中展示了使用非聚集索引从一个表中取得一行数据所带来的潜在好处。在...
SQL Server索引高级教程4
索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员因为不恰当的创建索引,最后使得其效果适得其反,可以说“成也索引,败也索引”。 本系列文章来自Stairway to SQL Server Indexes 在上一篇文章中,我们比较了完全相同的查询语句分别在存在聚集索引和非聚集索引的环境下耗费的成本.我们以“逻辑读”作为衡量成本的主要标准。现在就让我们来解释逻辑读作为主要衡量标准的原因...