数据库排错记录

目录

一、 规范

  1. 尽量不要用select *,select 语句最好加上with(nolock)
  2. 数据量大的表必须要有主键,可以是自增ID
  3. 查询语句的条件里面的字段,要建立非聚集索引,一般是时间,唯一码(条码)。如果查询条件过多,需要添加的索引超过了5个,属于表设计有问题。
  4. 创建定时作业每个月都清理半年或者一年前数据和日志
  5. 日志自动增长设置为定值,我们的应用场景设置个50-100MB
  6. 尽量不适用order by
  7. 查询语句尽量精简,不要使用复合语句

二、 优化查询

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)与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品。请重新运行该事务。

解决方法:

  1. 对update和select语句的条件增加索引,保证不会锁表,只会锁行
  2. 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(启动)

相关推荐
数据智能老司机18 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机19 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
松果猿19 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
无名之逆19 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s91236010119 小时前
rust 同时处理多个异步任务
java·数据库·rust
数据智能老司机19 小时前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构
hzulwy20 小时前
Redis常用的数据结构及其使用场景
数据库·redis
程序猿熊跃晖20 小时前
解决 MyBatis-Plus 中 `update.setProcInsId(null)` 不生效的问题
数据库·tomcat·mybatis
Three~stone21 小时前
MySQL学习集--DDL
数据库·sql·学习
Qi妙代码21 小时前
MYSQL基础
数据库·mysql·oracle