SQL Server管理过程中踩过的那些坑

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: SQL数据库开发

1、SQL Server 最小存储单元是什么?多大?再上一层存储单元是什么?多大?
答:
页或page,8kb大小,上一层是区,一个区有8个页,共64k。

2、堆表和非堆表的本质区别?
答:堆表没有聚集索引,非堆表有,看具体情况,可以是聚集索引和非聚集索引。

3、SQL Server有多少种索引?尽可能列出来。

答:总的有聚集索引和非聚集索引,另外有覆盖索引和过滤索引。

聚集索引和非聚集索引都是B树结果,区别是聚集索引的叶子节点保存的是表的聚集键,非聚集索引根据所在表的不同,如果在聚集表(表里已经有一个聚集索引),则页子节点保存的是指向聚集索引的聚集键,如果在堆表(没有索引),则叶子节点保存的是RID(即文件号:页号:槽号)。

覆盖索引是非聚集索引的叶子节点也保存了要查询的列,可以用来避免书签查找。过滤索引包含条件的索引,这些索引只针对符合条件的数据进行建立,可以针对命中这些条件的记录提高查询效率。


4、SQL Server有多少个系统库?
答:4个,mater,model,msdb,tempdb。
其实还有两个系统数据库,一个是Resource Database,另一个是distribution(建了复制才有)。

5、如果一个报表存储过程很慢,你的思路是什么?
答:看下执行计划,看看是不是缺少索引,还是统计信息过期,还是具体的查询语句问题。

6、图形化执行计划阅读顺序?
答:从右到左,从下到上。

7、怎么在SSMS中得知某个SQL语句的物理读、逻辑读次数?
答:可以使用SET STATISTICS IO  ON。

8、Profiler/SQL Trace和Extent Event相比,在过滤数据的行为上有什么不同?
答:目前只了解过Profile,可以用它来跟踪SQL语句,区别不知道。

9、有下面一个表:

CREATE TABLE T
(ID INT IDENTITY(1,1),
aqty INT,
bqty INT)

大致数据如下:1 1 2
2 2 3
3 2 1
4 3 5
....
假设数据有几百万,现在有个语句很慢:

SELECT ID
FROM T
WHERE aqty>bqty

列上已经有索引,你能想到根本原因是什么?你会怎么优化?答:表扫描。条件无法使用索引,只能一条条的判断了。而且表扫描也不是最慢的,在有些场景下如果索引和查询使用的不好会导致性能暴跌,甚至不如表扫描。
10、你觉得为什么跨服务器多表关联查询时“可能”性能很差?你能想到哪些可以提升跨服务器查询时性能低下的方法?
答:可以参考下分布性查询或分布性事务

11、如何清空有外键的表的数据?
答:可以尝试取消外键约束,再用truncate后加会外键约束。

12、LDF暴增怎么办?你先查哪个DMV?
答:可以先进行一次完成备份,收缩下日志;空间允许的情况下,先修改日志文件大小,待收缩后,再还原为原来的大小。sys.dm_db_log_space_usage

13、如果某个JOB的所有者是sa,能不能禁用sa?
答:可以的,禁用sa并不会对JOB有什么影响,依然可以正常执行。

14、SSMS修改一个表的一列的数据类型 ,与用T-SQL实现ALTER TABLE 的底层实现区别在哪?
答:一般小表用SSMS可以修改成功,大表会提示超时,只能用T-SQL语句来修改。

15、UNION 和UNION ALL从性能上的区别是什么?
答:UNION会去掉重复数据,UNION ALL不会去掉重复数据,UNION会消耗更多的资源去查找并去掉重复数据。
如果确认两个查询无重复记录用UNION ALL更好些,不需要去重步骤
16、初始安装SQL Server 2008及其以上版本时,SQL Server默认是什么启动账号?
答:network service。

17、不在域中的两台服务器做数据库镜像,与在域环境相比,必不可少的一个操作是什么?
答:设置host文件。必需创建证书。这是镜像在域或非域中最大的区别。

18、事务复制对表最起码有哪个硬性要求?
答:表必须有主键

19、你能不能猜到什么结果?为什么?

DECLARE @demo VARCHAR
SET @demo = '你猜猜会怎样?'
SELECT @demo

答:没有指定VARCHAR长度会显示空白,没有指定varchar长度,默认是长度1,并不是0。中文占两个字节显示,如果是下列语句:

DECLARE @demo VARCHAR
SET @demo = '123'
SELECT @demo

会显示1。
如果使用的是NVARCHAR则默认长度是2。

20、怎么优化这段代码?

USE AdventureWorks
GO
DECLARE @date DATE = '2013-09-30'
SELECT SalesOrderID,
   SalesOrderDetailID,
   ModifiedDate
FROM Sales.SalesOrderDetail
WHERE CONVERT(VARCHAR(20), ModifiedDate, 23) = CONVERT(VARCHAR(20), @date, 23)

答:不应该在条件里使用表达式,应该做如下修改:

USE AdventureWorks
GO
DECLARE @date DATE = '2013-09-30'
SELECT SalesOrderID,
   SalesOrderDetailID,
   ModifiedDate
FROM Sales.SalesOrderDetail
WHERE ModifiedDate = CONVERT(datetime,@date)


21、十万左右的数据要作为临时数据,你用临时表还是表变量?大概说说理由。
答:使用临时表,临时表上可以建立索引,可以使用统计信息来优化。

22、入职后大概工作:

  • 完成大概5~8份文档,所以你需要有一定的文档编写水平。
  • 协助完成数据库源代码管控任务。
  • 逐步接手目前为止8台服务器大概60个数据库,目前只用了事务复制
  • 常规管理包含但可能不仅限于:
       备份还原    处理复制问题    初中级T-SQL优化    数据库日常监控
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
4月前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
1月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
3月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
85 13
|
3月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
3月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
56 6
|
2月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
324 0
|
3月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
247 1
|
3月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
221 3
|
3月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
3月前
|
SQL 存储 关系型数据库
关系型数据库SQL Server学习
【7月更文挑战第4天】
65 2