数据库排错记录

目录

一、 规范

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

相关推荐
张3蜂11 分钟前
MongoDB BI Connector 详细介绍与使用指南(手动安装方式,CentOS 7 + MongoDB 5.0.5)
数据库·mongodb·centos
春时似衿里31 分钟前
jmeter配置数据库连接步骤
数据库·jmeter
喵喵爱自由40 分钟前
Ubuntu 24.04 Server 版系统安装及配置
数据库·ubuntu
hzzzzzo043 分钟前
微服务保护全攻略:从雪崩到 Sentinel 实战
数据库·微服务·sentinel
J.Kuchiki1 小时前
【PostgreSQL内核学习:表达式】
数据库·postgresql
TDengine (老段)1 小时前
TDengine 特殊函数 MODE() 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
没学上了1 小时前
数据库的连接_qt
数据库
好名字更能让你们记住我1 小时前
MYSQL数据库初阶 之 MYSQL用户管理
linux·数据库·sql·mysql·adb·数据库开发·数据库架构
网硕互联的小客服1 小时前
Mysql服务无法启动,显示错误1067如何处理?
数据库·mysql
哥哥还在IT中1 小时前
mysql分库分表数据量核查问题
数据库·mysql·adb