没有合适的资源?快使用搜索试试~ 我知道了~
一本精心整理的SQL Server精华手册,旨在为广大数据库从业者和学习者提供一份全面而实用的学习指南
需积分: 5 0 下载量 103 浏览量
2024-03-27
22:23:32
上传
评论 1
收藏 674KB PDF 举报
温馨提示
试读
50页
本资源是一本精心整理的SQL Server精华手册,旨在为广大数据库从业者和学习者提供一份全面而实用的学习指南。手册涵盖了SQL Server的基础知识、技巧提升、数据开发、基本函数等多个方面,从入门到精通,助您轻松掌握SQL Server的核心技能。(1)在基础操作部分,手册详细介绍了SQL Server的创建、删除、备份数据库等基本操作,以及表操作、索引创建、视图应用等核心知识,帮助您快速上手SQL Server的日常管理工作。(2)同步技术部分则深入剖析了SQL Server的数据同步复制技术,包括实现步骤和技术要点,帮助您实现数据的实时同步和备份,确保数据的安全性和一致性。(3)手册还整理了大量SQL Server的经典面试题,涵盖了基础知识、技巧应用、常见问题等多个方面,帮助您更好地应对面试挑战,展现自己的专业水平。(4)本手册适用于广大数据库管理员、开发人员、测试人员以及对SQL Server感兴趣的学习者。无论您是初学者还是有一定经验的从业者,都能从中受益,提升自己的SQL Server技能水平。(5)使用场景及目标:对于初学者,本手册可作为入门教材,帮助您快速掌握技巧。
资源推荐
资源详情
资源评论
JasonHuan1123
https://blog.csdn.net/donghuandong/article/details/136759242
1
SQL Server 经典总结大全
一、常见操作
1、TRUNCATE TABLE 语句
删除表数据
TRUNCATE TABLE 语句比 DELET 删除表中的所有行更快。从逻辑上讲,
TRUNCATE TABLE 它类似于 DELETE 没有 WHERE 子句的语句。
TRUNCATE TABLE 语句从表中删除所有行,但表结构及其列,约束,索引等保
持不变。要删除表及其数据,可以使用该 DROP TABLE 语句,但是需谨慎操作。
语法
TRUNCATE TABLE 的基本语法:
use dbname
TRUNCATE TABLE table_name;
delete 的循环删除的基本语法:
declare @onecount int
set @onecount = 100000
print getdate()
while 1=1
begin
delete top (@onecount ) from [eifiredataNewTemp].[dbo].[所有工程当前报警信息]
if(@@ROWCOUNT < @onecount) break;
JasonHuan1123
https://blog.csdn.net/donghuandong/article/details/136759242
2
end
TRUNCATE TABLE vs DELETE
尽管 DELETE 和 TRUNCATE TABLE 似乎具有相同的效果,但是它们的工作方式不同。
这是这两个语句之间的一些主要区别:
• TRUNCATE TABLE 语句删除并重新创建表,并使任何自动增量值都重置为
其初始值(通常为 1);
• DELETE 可让您根据可选 WHERE 子句过滤要删除的行,TRUNCATE TABLE 而
不支持 WHERE 子句则仅删除所有行;
• TRUNCATE TABLE 与 DELETE 相比,它更快并且使用的系统资源更少,因为
DELETE 扫描表以生成受影响的行数,然后逐行删除行,并为每个删除的行在数
据库日志中记录一个条目,而 TRUNCATE TABLE 只删除所有行而不提供任何其他
信息。
提示:如果你只是想删除所有的行,并重新创建整个表,使用 TRUNCATE TABLE。
如果你想删除基于特定条件的行的数量有限,或者您不想要重置自动递增值,则
使用 DELETE。
2、查询数据表数据大小
语法格式:
USE [eifiredataNewTemp];
GO
-- 数据库空间使用情况
EXEC sp_spaceused;
-- 查下文件空间使用情况
SELECT
file_id, name,
[文件大小(MB)] = size / 128.,
[未使用空间(MB)] = (size - FILEPROPERTY(name, N'SpaceUsed')) / 128.
FROM sys.database_files
-- 表空间使用情况
DECLARE @tb_size TABLE(
JasonHuan1123
https://blog.csdn.net/donghuandong/article/details/136759242
3
name sysname,
rows int,
size varchar(100),
data_size varchar(100),
INDEX_size varchar(100),
unused_size varchar(100));
INSERT @tb_size
EXEC sp_msforeachtable '
sp_spaceused ''?'''SELECT * FROM @tb_size order by rows desc, data_size desc
查询效果:
3、占用 CPU 过高的 SQL
3.1 查看当前的数据库用户连接有多少
USE master
GO
--如果要指定数据库就把注释去掉
SELECT * FROM sys.[sysprocesses] WHERE [spid]>50 AND
DB_NAME([dbid])='eifireBigData' --and status = 'suspended'
--SELECT COUNT(*) FROM [sys].[dm_exec_sessions] WHERE [session_id]>50
查询效果:
JasonHuan1123
https://blog.csdn.net/donghuandong/article/details/136759242
4
3.2 查看各项指标是否正常,是否有阻塞,选取了前 10 个最耗 CPU 时间的会
话
SELECT TOP 10
[session_id],
[request_id],
[start_time] AS '开始时间',
[status] AS '状态',
[command] AS '命令',
dest.[text] AS 'sql 语句',
DB_NAME([database_id]) AS '数据库名',
[blocking_session_id] AS '正在阻塞其他会话的会话 ID',
[wait_type] AS '等待资源类型',
[wait_time] AS '等待时间',
[wait_resource] AS '等待的资源',
[reads] AS '物理读次数',
[writes] AS '写次数',
[logical_reads] AS '逻辑读次数',
[row_count] AS '返回结果行数'
FROM sys.[dm_exec_requests] AS der
CROSS APPLY
sys.[dm_exec_sql_text](der.[sql_handle]) AS dest
WHERE [session_id]>50 AND DB_NAME(der.[database_id])='gposdb' ORDER BY
[cpu_time] DESC
查询结果:
JasonHuan1123
https://blog.csdn.net/donghuandong/article/details/136759242
5
3.3 查看具体的 SQL 语句,需要在 SSMS 里选择以文本格式显示结果
--在 SSMS 里选择以文本格式显示结果
SELECT TOP 10
dest.[text] AS 'sql 语句'
FROM sys.[dm_exec_requests] AS der
CROSS APPLY
sys.[dm_exec_sql_text](der.[sql_handle]) AS dest
WHERE [session_id]>50
ORDER BY [cpu_time] DESC
查询结果:
3.4 查看 CPU 数和 user scheduler 数和最大工作线程数,检查 worker 是否
用完也可以排查 CPU 占用情况
--查看 CPU 数和 user scheduler 数目
SELECT cpu_count,scheduler_count FROM sys.dm_os_sys_info
--查看最大工作线程数
SELECT max_workers_count FROM sys.dm_os_sys_info
查询结果:
3.5 查看 worker 是否用完,如果达到最大线程数的时候需要检查 blocking
SELECT
scheduler_address,
剩余49页未读,继续阅读
资源评论
JasonHuan1123
- 粉丝: 954
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功