数据库排错记录

目录

一、 规范

  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(启动)

相关推荐
夜泉_ly3 小时前
MySQL -安装与初识
数据库·mysql
qq_529835354 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New6 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6756 小时前
数据库基础1
数据库
我爱松子鱼6 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo6 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser7 小时前
【SQL】多表查询案例
数据库·sql
Galeoto8 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)8 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231118 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql