标签归档:sql

mssql sqlserver 相关知识学习


摘要:
下文讲述mssql sqlserver 使用中注意事项,如下所示:


1.sql 事务相关知识
开启事务:begin tran
回滚事务:rollback tran
提交事务:commit tran

事务使用注意事项:
事务尽量采用简短,快速运行
事务中尽量避免使用循环
事务中避免多次交叉读取和更新

2.计算机缓存
当计算机内存过小时,查询计划会被自动清除掉
修改表结构、索引时,查询计划会失效
3.sqlserver 锁相关知识
3.1 页锁

       select * from tableName(pageLock)  ---加页锁
      ---在tableName数据读取时,先进行第一页加锁,然后读取数据,数据读取完毕后,再对第二页进行加锁...
    

3.2 行锁

       select * from tableName(rowlock)  ---加行锁
      ---在tableName数据读取时,依次对每行加共享锁,然后读取数据,数据读取完毕后,再对第二行进行加锁...
    

3.3 表级锁

       select * from tableName(tablock)  ---表锁
        ---在tableName数据读取时,对整张表加共享锁,然后读取数据,数据读取完毕后,再释放锁
    

mssql sqlserver 限制当前数据库的最大连接数


摘要:
下文讲述限制mssql sqlserver数据库的最大连接数的相关设置说明,如下所示:
实验环境:sql server 2008 R2


最近数据库服务器经常宕机,目前还无法查询到具体的原因,下文讲述从数据库的最大连接数上入手,减少数据库可能出错的几率,
下文将介绍调整数据库的最大连接数的方法分享

   /*查阅当前数据库引擎的最大连接数*/
   SELECT @@MAX_CONNECTIONS  as [最大连接数]
    go
    
     ---设置数据库引擎的最大连接数
     exec sp_configure ‘show advanced options’, 1 
     exec sp_configure ‘user connections’, 88    ---设置最大连接数为88
      go

mssql sqlserver cpu使用过高可能的原因分析


摘要:
今天运维的同事反馈,sqlserver服务器的cpu过高,经常达到100%,下文讲述可能导致CPU过高的语句,
如下所述:
实验环境:sql server 2008 R2



sql脚本编译和重编译

当sql脚本初次运行时,sql脚本会重编译,重编译过程是sqlserver引擎生成执行计划的过程。sqlserver此时会分析最佳执行路径,分析sql语法,表结构 估算各种执行的时间,此时将会消耗大量的CPU。
当执行计划生成后被缓存到内存后,但当数据量发生变化,结构发生变化,显式指定重编译时,此时执行计划就会被重编译。

sql排序和聚合计算

当我们检索数据时,我们使用order by distinct avg sum max min count等聚合计算时,当我们把数据加载到内存后,我们需对数据进行计算,将数据组合为我们所需的结果,此时会消耗大量的CPU

表格连接join操作

当我们对表进行连接操作时,sqlserver会使用相应的算法对表数据进行相关的计算,然后进行相应的连接操作,此处也是CPU密集操作的地方。