目录
- 一、 规范
- 二、 优化查询
- 1) 通过执行计划
- 三、 排查故障
- 1) 网络断连
- 2) 超时登录已断开
- 3) 死锁
- 4) 实例错误
一、 规范
- 尽量不要用select *,select 语句最好加上with(nolock)
- 数据量大的表必须要有主键,可以是自增ID
- 查询语句的条件里面的字段,要建立非聚集索引,一般是时间,唯一码(条码)。如果查询条件过多,需要添加的索引超过了5个,属于表设计有问题。
- 创建定时作业每个月都清理半年或者一年前数据和日志
- 日志自动增长设置为定值,我们的应用场景设置个50-100MB
- 尽量不适用order by
- 查询语句尽量精简,不要使用复合语句
二、 优化查询
1) 通过执行计划
执行语句时,打开执行计划,看在执行时,用的是什么查询方式
速度:表扫描 < 非聚集索引 < 聚集索引
表扫描:全表查询,条件非主键,也没索引
非聚集索引:查询条件的字段建立了非聚集索引
聚集索引:查询条件的字段建立了聚集索引(一般为主键)
三、 排查故障
1) 网络断连
现象:
1、 一般性网络错误。请检查网络文档。
2、 Comn getData. vi"(ERR>0bject x3E500000 is not valid.-) 输入参数无效。例如,输入路径可能包含操作系统不允许用于路径的字符(例如,?或@)。
排查方法:
1、win+R:弹出命令行
2、输入ping [ip] –t,[ip]根据数据库的电脑ip地址来修改
3.、等到软件出现上述网络断连的错误信息时,看是否出现”请求超时”或”无法访问目标网”
4、解决方法:按照网络拓扑图:
① 重压水晶头
② 更换网线
③ 更换交换机
2) 超时登录已断开
1、 需要根据数据库日志来定位具体错误
2、 项目上已发现的错误:
① 日志自动增长过大:数据库的日志文件在安装的时候设置为自动增长,并设置了10%的速率增长。
解决方法:日志自动增长设置为定值,我们的应用场景设置个50-100MB
3) 死锁
现象:
1.1、 事务(进程 ID 115)与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品。请重新运行该事务。
解决方法:
- 对update和select语句的条件增加索引,保证不会锁表,只会锁行
- Update加with(TABLOCKX)
4) 实例错误
现象:
在与SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且SQL Server 已配置为允许远程连接。provider:Named Pipes Provider,error:40-无法打开到SQL Server 的连接)(Microsoft SQL Server,错误:2) 系统找不到指定的文件。
解决方法:
1)首先,打开SQL Server Configuration Manager配置管理器
①右键电脑,选择管理,会弹出计算机管理页面
②依次选择服务和应用程序->SQL Server Configuration Manager->SQL Server-Service -> SQL Server(MSSQLSERVICE)
③右键SQL Server(MSSQLSERVICE)→属性
④在Log On(登录)页面,选为Network service
⑤右键SQL Server(MSSQLSERVICE)->Start(启动)